aboutsummaryrefslogtreecommitdiffstats
path: root/lv2/midi.lv2
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2022-07-07 18:59:32 -0400
committerDavid Robillard <d@drobilla.net>2022-07-17 18:14:00 -0400
commit1eccbe4355685b322194df72b5de2382d5290b3b (patch)
tree0677b5c2f577a5024c351a164527f4bdd91a639b /lv2/midi.lv2
parentd4a970f6962dda28133290194832b726b566ddab (diff)
downloadlv2-1eccbe4355685b322194df72b5de2382d5290b3b.tar.xz
Rearrange source tree to be directly usable by dependants
This allows the LV2 source distribution to be used as an include path for compilers and an LV2_PATH for applications, at the expense of self-contained bundles. That's a nice idea, but it made LV2 itself weird and annoying to depend on. This rearranges things so that directories in the source tree correspond more closely to installation directories. To make this possible, the "aux" directory in the documentation output has been changed to "style", to avoid the reserved name "aux" on Windows.
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)." .
+