aboutsummaryrefslogtreecommitdiffstats
path: root/lv2/midi.lv2
diff options
context:
space:
mode:
Diffstat (limited to 'lv2/midi.lv2')
-rw-r--r--lv2/midi.lv2/manifest.ttl9
-rw-r--r--lv2/midi.lv2/midi.meta.ttl153
-rw-r--r--lv2/midi.lv2/midi.ttl365
3 files changed, 527 insertions, 0 deletions
diff --git a/lv2/midi.lv2/manifest.ttl b/lv2/midi.lv2/manifest.ttl
new file mode 100644
index 0000000..f141936
--- /dev/null
+++ b/lv2/midi.lv2/manifest.ttl
@@ -0,0 +1,9 @@
+@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+
+<http://lv2plug.in/ns/ext/midi>
+ a lv2:Specification ;
+ lv2:minorVersion 1 ;
+ lv2:microVersion 10 ;
+ rdfs:seeAlso <midi.ttl> .
+
diff --git a/lv2/midi.lv2/midi.meta.ttl b/lv2/midi.lv2/midi.meta.ttl
new file mode 100644
index 0000000..7efdb01
--- /dev/null
+++ b/lv2/midi.lv2/midi.meta.ttl
@@ -0,0 +1,153 @@
+@prefix dcs: <http://ontologi.es/doap-changeset#> .
+@prefix doap: <http://usefulinc.com/ns/doap#> .
+@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
+@prefix midi: <http://lv2plug.in/ns/ext/midi#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+
+<http://lv2plug.in/ns/ext/midi>
+ a doap:Project ;
+ doap:license <http://opensource.org/licenses/isc> ;
+ doap:name "LV2 MIDI" ;
+ doap:shortdesc "A normalised definition of raw MIDI." ;
+ doap:maintainer <http://drobilla.net/drobilla#me> ;
+ doap:created "2006-00-00" ;
+ doap:developer <http://lv2plug.in/ns/meta#larsl> ,
+ <http://drobilla.net/drobilla#me> ;
+ doap:release [
+ doap:revision "1.10" ;
+ doap:created "2019-02-03" ;
+ doap:file-release <http://lv2plug.in/spec/lv2-1.16.0.tar.bz2> ;
+ dcs:blame <http://drobilla.net/drobilla#me> ;
+ dcs:changeset [
+ dcs:item [
+ rdfs:label "Fix incorrect range of midi:chunk."
+ ]
+ ]
+ ] , [
+ doap:revision "1.8" ;
+ doap:created "2012-10-14" ;
+ doap:file-release <http://lv2plug.in/spec/lv2-1.2.0.tar.bz2> ;
+ dcs:blame <http://drobilla.net/drobilla#me> ;
+ dcs:changeset [
+ dcs:item [
+ rdfs:label "Use consistent label style."
+ ] , [
+ rdfs:label "Add midi:binding and midi:channel predicates."
+ ] , [
+ rdfs:label "Add midi:HexByte datatype for status bytes and masks."
+ ] , [
+ rdfs:label "Remove non-standard midi:Tick message type."
+ ] , [
+ rdfs:label "Add C definitions for message types and standard controllers."
+ ] , [
+ rdfs:label "Fix definition of SystemExclusive status byte."
+ ]
+ ]
+ ] , [
+ doap:revision "1.6" ;
+ doap:created "2012-04-17" ;
+ doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ;
+ dcs:blame <http://drobilla.net/drobilla#me> ;
+ dcs:changeset [
+ dcs:item [
+ rdfs:label "Add class definitions for various message types."
+ ] , [
+ rdfs:label "Document how to serialise a MidiEvent to a string."
+ ] , [
+ rdfs:label "Merge with unified LV2 package."
+ ]
+ ]
+ ] , [
+ doap:revision "1.4" ;
+ doap:created "2011-11-21" ;
+ doap:file-release <http://lv2plug.in/spec/lv2-midi-1.4.tar.bz2> ;
+ dcs:blame <http://drobilla.net/drobilla#me> ;
+ dcs:changeset [
+ dcs:item [
+ rdfs:label "Update packaging."
+ ] , [
+ rdfs:label "Improve documentation."
+ ]
+ ]
+ ] , [
+ doap:revision "1.2" ;
+ doap:created "2011-05-26" ;
+ doap:file-release <http://lv2plug.in/spec/lv2-midi-1.2.tar.bz2> ;
+ dcs:blame <http://drobilla.net/drobilla#me> ;
+ dcs:changeset [
+ dcs:item [
+ rdfs:label "Add build system for installation."
+ ] , [
+ rdfs:label "Switch to ISC license."
+ ]
+ ]
+ ] , [
+ doap:revision "1.0" ;
+ doap:created "2010-10-04" ;
+ doap:file-release <http://lv2plug.in/spec/lv2-midi-1.0.tar.gz> ;
+ dcs:blame <http://drobilla.net/drobilla#me> ;
+ dcs:changeset [
+ dcs:item [
+ rdfs:label "Initial release."
+ ]
+ ]
+ ] ;
+ lv2:documentation """
+
+This specification defines a data type for a MIDI message, midi:MidiEvent,
+which is normalised for fast and convenient real-time processing. MIDI is the
+<q>Musical Instrument Digital Interface</q>, a ubiquitous binary standard for
+controlling digital music devices.
+
+For plugins that process MIDI (or other situations where MIDI is sent via a
+generic transport) the main type defined here, midi:MidiEvent, can be mapped to
+an integer and used as the type of an LV2 [Atom](atom.html#Atom) or
+[Event](event.html#Event).
+
+This specification also defines a complete vocabulary for the MIDI standard,
+except for standard controller numbers. These descriptions are detailed enough
+to express any MIDI message as properties.
+
+"""^^lv2:Markdown .
+
+midi:MidiEvent
+ lv2:documentation """
+
+A single raw MIDI message (a sequence of bytes).
+
+This is equivalent to a standard MIDI messages, except with the following
+restrictions to simplify handling:
+
+ * Running status is not allowed, every message must have its own status byte.
+
+ * Note On messages with velocity 0 are not allowed. These messages are
+ equivalent to Note Off in standard MIDI streams, but here only proper Note
+ Off messages are allowed.
+
+ * "Realtime messages" (status bytes 0xF8 to 0xFF) are allowed, but may not
+ occur inside other messages like they can in standard MIDI streams.
+
+ * All messages are complete valid MIDI messages. This means, for example,
+ that only the first byte in each event (the status byte) may have the
+ eighth bit set, that Note On and Note Off events are always 3 bytes long,
+ etc.
+
+Where messages are communicated, the writer is responsible for writing valid
+messages, and the reader may assume that all events are valid.
+
+If a midi:MidiEvent is serialised to a string, the format should be
+xsd:hexBinary, for example:
+
+ :::turtle
+ [] eg:someEvent "901A01"^^midi:MidiEvent .
+
+"""^^lv2:Markdown .
+
+midi:statusMask
+ lv2:documentation """
+
+This is a status byte with the lower nibble set to zero.
+
+"""^^lv2:Markdown .
+
diff --git a/lv2/midi.lv2/midi.ttl b/lv2/midi.lv2/midi.ttl
new file mode 100644
index 0000000..4a0e8c9
--- /dev/null
+++ b/lv2/midi.lv2/midi.ttl
@@ -0,0 +1,365 @@
+@prefix atom: <http://lv2plug.in/ns/ext/atom#> .
+@prefix ev: <http://lv2plug.in/ns/ext/event#> .
+@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
+@prefix midi: <http://lv2plug.in/ns/ext/midi#> .
+@prefix owl: <http://www.w3.org/2002/07/owl#> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+
+<http://lv2plug.in/ns/ext/midi>
+ a owl:Ontology ;
+ rdfs:label "LV2 MIDI" ;
+ rdfs:comment "A normalised definition of raw MIDI." ;
+ rdfs:seeAlso <midi.meta.ttl> .
+
+midi:ActiveSense
+ a rdfs:Class ;
+ rdfs:subClassOf midi:SystemRealtime ;
+ rdfs:label "Active Sense" ;
+ rdfs:comment "MIDI active sense message." ;
+ midi:status "FE"^^xsd:hexBinary .
+
+midi:Aftertouch
+ a rdfs:Class ;
+ rdfs:subClassOf midi:VoiceMessage ;
+ rdfs:label "Aftertouch" ;
+ rdfs:comment "MIDI aftertouch message." ;
+ midi:statusMask "A0"^^xsd:hexBinary ;
+ midi:chunk [
+ midi:byteNumber 0 ;
+ midi:property midi:noteNumber
+ ] , [
+ midi:byteNumber 1 ;
+ midi:property midi:pressure
+ ] .
+
+midi:Bender
+ a rdfs:Class ;
+ rdfs:subClassOf midi:VoiceMessage ;
+ rdfs:label "Bender" ;
+ rdfs:comment "MIDI bender message." ;
+ midi:statusMask "E0"^^xsd:hexBinary ;
+ midi:chunk [
+ midi:byteNumber 0 ,
+ 1 ;
+ midi:property midi:benderValue
+ ] .
+
+midi:ChannelPressure
+ a rdfs:Class ;
+ rdfs:subClassOf midi:VoiceMessage ;
+ rdfs:label "Channel Pressure" ;
+ rdfs:comment "MIDI channel pressure message." ;
+ midi:statusMask "D0"^^xsd:hexBinary ;
+ midi:chunk [
+ midi:byteNumber 0 ;
+ midi:property midi:pressure
+ ] .
+
+midi:Chunk
+ a rdfs:Class ;
+ rdfs:label "Chunk" ;
+ rdfs:comment "A sequence of contiguous bytes in a MIDI message." .
+
+midi:Clock
+ a rdfs:Class ;
+ rdfs:subClassOf midi:SystemRealtime ;
+ rdfs:label "Clock" ;
+ rdfs:comment "MIDI clock message." ;
+ midi:status "F8"^^xsd:hexBinary .
+
+midi:Continue
+ a rdfs:Class ;
+ rdfs:subClassOf midi:SystemRealtime ;
+ rdfs:label "Continue" ;
+ rdfs:comment "MIDI continue message." ;
+ midi:status "FB"^^xsd:hexBinary .
+
+midi:Controller
+ a rdfs:Class ;
+ rdfs:subClassOf midi:VoiceMessage ;
+ rdfs:label "Controller" ;
+ rdfs:comment "MIDI controller change message." ;
+ midi:statusMask "B0"^^xsd:hexBinary ;
+ midi:chunk [
+ midi:byteNumber 0 ;
+ midi:property midi:controllerNumber
+ ] , [
+ midi:byteNumber 1 ;
+ midi:property midi:controllerValue
+ ] .
+
+midi:HexByte
+ a rdfs:Datatype ;
+ owl:onDatatype xsd:hexBinary ;
+ owl:withRestrictions (
+ [
+ xsd:maxInclusive "FF"
+ ]
+ ) ;
+ rdfs:label "Hex Byte" ;
+ rdfs:comment "A hexadecimal byte, which has a value <= FF." .
+
+midi:MidiEvent
+ a rdfs:Class ,
+ rdfs:Datatype ;
+ rdfs:subClassOf ev:Event ,
+ atom:Atom ;
+ owl:onDatatype xsd:hexBinary ;
+ rdfs:label "MIDI Message" ;
+ rdfs:comment "A single raw MIDI message." .
+
+midi:NoteOff
+ a rdfs:Class ;
+ rdfs:subClassOf midi:VoiceMessage ;
+ rdfs:label "Note Off" ;
+ rdfs:comment "MIDI note off message." ;
+ midi:statusMask "80"^^xsd:hexBinary ;
+ midi:chunk [
+ midi:byteNumber 0 ;
+ midi:property midi:noteNumber
+ ] , [
+ midi:byteNumber 1 ;
+ midi:property midi:velocity
+ ] .
+
+midi:NoteOn
+ a rdfs:Class ;
+ rdfs:subClassOf midi:VoiceMessage ;
+ rdfs:label "Note On" ;
+ rdfs:comment "MIDI note on message." ;
+ midi:statusMask "90"^^xsd:hexBinary ;
+ midi:chunk [
+ midi:byteNumber 0 ;
+ midi:property midi:noteNumber
+ ] , [
+ midi:byteNumber 1 ;
+ midi:property midi:velocity
+ ] .
+
+midi:ProgramChange
+ a rdfs:Class ;
+ rdfs:subClassOf midi:VoiceMessage ;
+ rdfs:label "Program Change" ;
+ rdfs:comment "MIDI program change message." ;
+ midi:statusMask "C0"^^xsd:hexBinary ;
+ midi:chunk [
+ midi:byteNumber 0 ;
+ midi:property midi:programNumber
+ ] .
+
+midi:QuarterFrame
+ a rdfs:Class ;
+ rdfs:subClassOf midi:SystemCommon ;
+ rdfs:label "Quarter Frame" ;
+ rdfs:comment "MIDI quarter frame message." ;
+ midi:status "F1"^^xsd:hexBinary .
+
+midi:Reset
+ a rdfs:Class ;
+ rdfs:subClassOf midi:SystemRealtime ;
+ rdfs:label "Reset" ;
+ rdfs:comment "MIDI reset message." ;
+ midi:status "FF"^^xsd:hexBinary .
+
+midi:SongPosition
+ a rdfs:Class ;
+ rdfs:subClassOf midi:SystemCommon ;
+ rdfs:label "Song Position" ;
+ rdfs:comment "MIDI song position pointer message." ;
+ midi:status "F2"^^xsd:hexBinary ;
+ midi:chunk [
+ midi:byteNumber 0 ,
+ 1 ;
+ midi:property midi:songPosition
+ ] .
+
+midi:SongSelect
+ a rdfs:Class ;
+ rdfs:subClassOf midi:SystemCommon ;
+ rdfs:label "Song Select" ;
+ rdfs:comment "MIDI song select message." ;
+ midi:status "F3"^^xsd:hexBinary .
+
+midi:Start
+ a rdfs:Class ;
+ rdfs:subClassOf midi:SystemRealtime ;
+ rdfs:label "Start" ;
+ rdfs:comment "MIDI start message." ;
+ midi:status "FA"^^xsd:hexBinary .
+
+midi:Stop
+ a rdfs:Class ;
+ rdfs:subClassOf midi:SystemRealtime ;
+ rdfs:label "Stop" ;
+ rdfs:comment "MIDI stop message." ;
+ midi:status "FC"^^xsd:hexBinary .
+
+midi:SystemCommon
+ a rdfs:Class ;
+ rdfs:subClassOf midi:SystemMessage ;
+ rdfs:label "System Common" ;
+ rdfs:comment "MIDI system common message." .
+
+midi:SystemExclusive
+ a rdfs:Class ;
+ rdfs:subClassOf midi:SystemMessage ;
+ rdfs:label "System Exclusive" ;
+ rdfs:comment "MIDI system exclusive message." ;
+ midi:status "F0"^^xsd:hexBinary .
+
+midi:SystemMessage
+ a rdfs:Class ;
+ rdfs:subClassOf midi:MidiEvent ;
+ rdfs:label "System Message" ;
+ rdfs:comment "MIDI system message." ;
+ midi:statusMask "F0"^^xsd:hexBinary .
+
+midi:SystemRealtime
+ a rdfs:Class ;
+ rdfs:subClassOf midi:SystemMessage ;
+ rdfs:label "System Realtime" ;
+ rdfs:comment "MIDI system realtime message." .
+
+midi:TuneRequest
+ a rdfs:Class ;
+ rdfs:subClassOf midi:SystemCommon ;
+ rdfs:label "Tune Request" ;
+ rdfs:comment "MIDI tune request message." ;
+ midi:status "F6"^^xsd:hexBinary .
+
+midi:VoiceMessage
+ a rdfs:Class ;
+ rdfs:subClassOf midi:MidiEvent ;
+ rdfs:label "Voice Message" ;
+ rdfs:comment "MIDI voice message." ;
+ midi:statusMask "F0"^^xsd:hexBinary .
+
+midi:benderValue
+ a rdf:Property ,
+ owl:DatatypeProperty ,
+ owl:FunctionalProperty ;
+ rdfs:label "bender value" ;
+ rdfs:range xsd:short ;
+ rdfs:comment "MIDI pitch bender message (-8192 to 8192)." .
+
+midi:binding
+ a rdf:Property ,
+ owl:ObjectProperty ;
+ rdfs:range midi:MidiEvent ;
+ rdfs:label "binding" ;
+ rdfs:comment "The MIDI event to bind a parameter to." .
+
+midi:byteNumber
+ a rdf:Property ,
+ owl:DatatypeProperty ;
+ rdfs:label "byte number" ;
+ rdfs:domain midi:Chunk ;
+ rdfs:range xsd:unsignedByte ;
+ rdfs:comment "The 0-based index of a byte which is part of this chunk." .
+
+midi:channel
+ a rdf:Property ,
+ owl:DatatypeProperty ,
+ owl:FunctionalProperty ;
+ rdfs:label "MIDI channel" ;
+ rdfs:range xsd:unsignedByte ;
+ rdfs:comment "The channel number of a MIDI message." .
+
+midi:chunk
+ a rdf:Property ,
+ owl:ObjectProperty ;
+ rdfs:range midi:Chunk ;
+ rdfs:label "MIDI chunk" ;
+ rdfs:comment "A chunk of a MIDI message." .
+
+midi:controllerNumber
+ a rdf:Property ,
+ owl:DatatypeProperty ,
+ owl:FunctionalProperty ;
+ rdfs:label "MIDI controller number" ;
+ rdfs:range xsd:byte ;
+ rdfs:comment "The numeric ID of a controller (0 to 127)." .
+
+midi:controllerValue
+ a rdf:Property ,
+ owl:DatatypeProperty ,
+ owl:FunctionalProperty ;
+ rdfs:label "MIDI controller value" ;
+ rdfs:range xsd:byte ;
+ rdfs:comment "The value of a controller (0 to 127)." .
+
+midi:noteNumber
+ a rdf:Property ,
+ owl:DatatypeProperty ,
+ owl:FunctionalProperty ;
+ rdfs:label "note number" ;
+ rdfs:range xsd:byte ;
+ rdfs:comment "The numeric ID of a note (0 to 127)." .
+
+midi:pressure
+ a rdf:Property ,
+ owl:DatatypeProperty ,
+ owl:FunctionalProperty ;
+ rdfs:label "key pressure" ;
+ rdfs:range xsd:byte ;
+ rdfs:comment "Key pressure (0 to 127)." .
+
+midi:programNumber
+ a rdf:Property ,
+ owl:DatatypeProperty ,
+ owl:FunctionalProperty ;
+ rdfs:label "program number" ;
+ rdfs:range xsd:byte ;
+ rdfs:comment "The numeric ID of a program (0 to 127)." .
+
+midi:property
+ a rdf:Property ,
+ owl:ObjectProperty ,
+ owl:FunctionalProperty ;
+ rdfs:label "property" ;
+ rdfs:domain midi:Chunk ;
+ rdfs:range rdf:Property ;
+ rdfs:comment "The property this chunk represents." .
+
+midi:songNumber
+ a rdf:Property ,
+ owl:DatatypeProperty ,
+ owl:FunctionalProperty ;
+ rdfs:label "song number" ;
+ rdfs:range xsd:byte ;
+ rdfs:comment "The numeric ID of a song (0 to 127)." .
+
+midi:songPosition
+ a rdf:Property ,
+ owl:DatatypeProperty ,
+ owl:FunctionalProperty ;
+ rdfs:label "song position" ;
+ rdfs:range xsd:short ;
+ rdfs:comment "Song position in MIDI beats (16th notes) (-8192 to 8192)." .
+
+midi:status
+ a rdf:Property ,
+ owl:DatatypeProperty ,
+ owl:FunctionalProperty ;
+ rdfs:label "status byte" ;
+ rdfs:range midi:HexByte ;
+ rdfs:comment "The exact status byte for a message of this type." .
+
+midi:statusMask
+ a rdf:Property ,
+ owl:DatatypeProperty ,
+ owl:FunctionalProperty ;
+ rdfs:label "status mask" ;
+ rdfs:range midi:HexByte ;
+ rdfs:comment "The status byte for a message of this type on channel 1." .
+
+midi:velocity
+ a rdf:Property ,
+ owl:DatatypeProperty ,
+ owl:FunctionalProperty ;
+ rdfs:label "velocity" ;
+ rdfs:range midi:HexByte ;
+ rdfs:comment "The velocity of a note message (0 to 127)." .
+