diff options
Diffstat (limited to 'lv2/midi.lv2')
-rw-r--r-- | lv2/midi.lv2/manifest.ttl | 9 | ||||
-rw-r--r-- | lv2/midi.lv2/midi.meta.ttl | 153 | ||||
-rw-r--r-- | lv2/midi.lv2/midi.ttl | 365 |
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)." . + |