MIDI: Difference between revisions

From Xenharmonic Wiki
Jump to navigation Jump to search
Mention OSC
Oof, fix references
Line 11: Line 11:
*'''[https://www.midi.org/midi-articles/midi-polyphonic-expression-mpe MIDI Polyphonic Expression]''' ('''MPE''') - Allows controlling multiple parameters independently for each note, including pitch-bend.
*'''[https://www.midi.org/midi-articles/midi-polyphonic-expression-mpe MIDI Polyphonic Expression]''' ('''MPE''') - Allows controlling multiple parameters independently for each note, including pitch-bend.
*'''[https://www.midi.org/midi-articles/details-about-midi-2-0-midi-ci-profiles-and-property-exchange MIDI 2.0]''' - Allows for setting the pitch of each note independently, using the "[https://amei.or.jp/midistandardcommittee/MIDI2.0/MIDI2.0-DOCS/M2-104-UM_v1-0_UMP_and_MIDI_2-0_Protocol_Specification.pdf#page=34 Pitch 7.9]" attribute (which overrides the default pitch).
*'''[https://www.midi.org/midi-articles/details-about-midi-2-0-midi-ci-profiles-and-property-exchange MIDI 2.0]''' - Allows for setting the pitch of each note independently, using the "[https://amei.or.jp/midistandardcommittee/MIDI2.0/MIDI2.0-DOCS/M2-104-UM_v1-0_UMP_and_MIDI_2-0_Protocol_Specification.pdf#page=34 Pitch 7.9]" attribute (which overrides the default pitch).
([[Wikipedia:Open Sound Control|Open Sound Control]] (OSC) is sometimes suggested as a microtonal replacement for MIDI,<ref>{{Cite web|title=OSC question|url=https://groups.google.com/g/microtools/c/Gh1fFbCb6XI/m/aSssQIHAXEkJ|website=groups.google.com|access-date=2023-02-03}}</ref><ref>{{Cite web|title=linux-audio-dev: Re: [linux-audio-dev] Common synthesizer interf|url=https://ccrma.stanford.edu/mirrors/lalists/lad/2005/05/0016.html|website=ccrma.stanford.edu|access-date=2023-02-03}}</ref> however it is an open-ended communication protocol, without even a de facto standard for sending notes, so the protocol must be customized for each synthesizer/output.<ref>{{Cite web |title=Home · fabb/SynOSCopy Wiki |url=https://github.com/fabb/SynOSCopy |access-date=2022-12-31 |website=GitHub |language=en |quote=one of the reasons OSC has not replaced MIDI yet is that there is no connect-and-play … There is no standard namespace in OSC for interfacing e.g. a synth}}</ref><ref>{{Cite web |last=Supper |first=Ben |date=October 24, 2012 |title=We hate MIDI. We love MIDI. |url=https://focusritedevelopmentteam.wordpress.com/2012/10/24/we-hate-midi-we-love-midi/ |access-date=2023-01-01 |website=Focusrite Development |language=en |quote=OSC suffers from a superset of this problem: it’s anarchy, and deliberately so. The owners of the specification have been so eager to avoid imposing constraints upon it that it has become increasingly difficult for hardware to cope with it. … More severely, there is an interoperability problem. OSC lacks a defined namespace for even the most common musical exchanges, to the extent that one cannot use it to send Middle C from a sequencer to a synthesiser in a standardised manner}}</ref><ref>{{Cite web |title=OSC-Namespace and OSC-State: Schemata for Describing the Namespace and State of OSC-Enabled Systems |url=https://www.nime.org/proceedings/2014/nime2014_300.pdf |quote=OSC also introduces new obstacles. First, since there is no fixed set of messages, each participating server needs to know what messages it can send to the servers it intends to communicate with. Currently the OSC standard does not provide for a means of programmatically discovering all messages a server responds to}}</ref>)
([[Wikipedia:Open Sound Control|Open Sound Control]] (OSC) is sometimes suggested as a microtonal replacement for MIDI,<ref>[https://groups.google.com/g/microtools/c/Gh1fFbCb6XI OSC question]</ref><ref>linux-audio-dev: [https://ccrma.stanford.edu/mirrors/lalists/lad/2005/05/0016.html Re: <nowiki>[linux-audio-dev]</nowiki> Common synthesizer interface -or- microtonal alternative to MIDI?]</ref> however it is an open-ended communication protocol, without even a de facto standard for sending notes, so the protocol must be customized for each synthesizer/server.<ref>[https://github.com/fabb/SynOSCopy Home · fabb/SynOSCopy Wiki], GitHub, "one of the reasons OSC has not replaced MIDI yet is that there is no connect-and-play … There is no standard namespace in OSC for interfacing e.g. a synth"</ref><ref>[https://focusritedevelopmentteam.wordpress.com/2012/10/24/we-hate-midi-we-love-midi/ We hate MIDI. We love MIDI.] Ben Supper, October 24, 2012, Focusrite Development, "OSC lacks a defined namespace for even the most common musical exchanges, to the extent that one cannot use it to send Middle C from a sequencer to a synthesiser in a standardised manner"</ref><ref>[https://www.nime.org/proceedings/2014/nime2014_300.pdf OSC-Namespace and OSC-State: Schemata for Describing the Namespace and State of OSC-Enabled Systems], "there is no fixed set of messages, each participating server needs to know what messages it can send to the servers it intends to communicate with."</ref>)
 
== References ==

Revision as of 21:46, 3 February 2023

MIDI (Musical Instrument Digital Interface) is a standard communications protocol for connecting musical instruments, computers, and related audio devices for playing, editing, and recording music.

In the xenharmonic space, it is used for transmitting scores as .mid files, and for driving synthesizers from keyboards/instruments or scores.

Each MIDI link supports 16 channels (numbered 1–16, but encoded as 0–15), with 128 pitches each (numbered 0–127). In typical applications, these pitches are assigned to 12edo pitches from C−1 (8.2 Hz) to G9 (12.5 kHz), and the channels are used for different instruments. Pitch bend messages allow the pitch to be varied with more precision than a semitone, but apply the same bend to all notes sent on a channel.

There are a variety of hacks/extensions that allow for varying amounts of xenharmonicity:

  • Channel Rotation - This technique uses all 16 channels for a single instrument, rotating between them for subsequent notes, so that each note can have an independent pitch bend applied to it. For polyphonic music with long sustain of each note, this can still result in audible pitch bend collisions, however.
  • MIDI Tuning Standard (MTS) - Allows for both a bulk tuning dump message, giving a tuning for each of 128 notes, and a tuning message for individual notes as they are played.
  • MIDI Polyphonic Expression (MPE) - Allows controlling multiple parameters independently for each note, including pitch-bend.
  • MIDI 2.0 - Allows for setting the pitch of each note independently, using the "Pitch 7.9" attribute (which overrides the default pitch).

(Open Sound Control (OSC) is sometimes suggested as a microtonal replacement for MIDI,[1][2] however it is an open-ended communication protocol, without even a de facto standard for sending notes, so the protocol must be customized for each synthesizer/server.[3][4][5])

References

  1. OSC question
  2. linux-audio-dev: Re: [linux-audio-dev] Common synthesizer interface -or- microtonal alternative to MIDI?
  3. Home · fabb/SynOSCopy Wiki, GitHub, "one of the reasons OSC has not replaced MIDI yet is that there is no connect-and-play … There is no standard namespace in OSC for interfacing e.g. a synth"
  4. We hate MIDI. We love MIDI. Ben Supper, October 24, 2012, Focusrite Development, "OSC lacks a defined namespace for even the most common musical exchanges, to the extent that one cannot use it to send Middle C from a sequencer to a synthesiser in a standardised manner"
  5. OSC-Namespace and OSC-State: Schemata for Describing the Namespace and State of OSC-Enabled Systems, "there is no fixed set of messages, each participating server needs to know what messages it can send to the servers it intends to communicate with."