MIDI 2.0 – “Back to the future”

Umberto Sorbo

Dopo più di 30 anni dalla sua nascita, MIDI 1.0 si aggiorna finalmente alla sua versione 2.0! Nonostante la specifica finale non sia ancora stata rilasciata pubblicamente, alcune interessanti feature sono comunque state annunciate.


Si apre ora una fase di “prototipazione”, durante la quale, le aziende della Midi Association testeranno la nuova specifica e proporranno eventuali modifiche, per arrivare tra un anno alla sua versione definitiva.
Il MIDI 2.0 è basato su tre principi base : bidirezionalità, retro compatibilità, espandibilità del MIDI 1.0 quando possibile.
Vediamo nel dettaglio tutte le novità.

Nuovi Messaggi

Sono inoltre disponibili nuove tipologie di messaggi e maggior risoluzione in bit degli esistenti.
Un nuovo messaggio MIDI, detto Universal Packet, può contenere messaggi voce canale MIDI 1.0 oppure messaggi voce canale MIDI 2.0, sistemi esclusivi, un nuovo formato di sistema esclusivo e 3 nuovi tipi di messaggi che aggiungono funzionalità sia al MIDI 1.0 che al MIDI 2.0.

Tabella Midi 2.0 e Midi 1.0

Cavi e connettori

Siamo partiti dal mitico connettore DIN a 5 poi e nel corso degli anni abbiamo visto nuovi cavi e connettori fino a giungere all’USB.
MIDI 1.0 è stato un protocollo “agnostico” a livello di trasporto.

Cosa ci riserva il futuro? E’ chiaro che MIDI 2.0 punta a USB come primo target e tutto sarà basato sul nuovo messaggio “Universal Packet”.
Quindi è possibile che il MIDI 2.0 funzioni su protocolli di trasporto diversi da quelli del MIDI 1.0? A quanto pare no, a meno che non siano rilasciate nuove specifiche.

Timing

Il timing dei messaggi MIDI 2.0 dovrebbe essere più affidabile, è stato infatti introdotto il nuovo messaggio di “Jitter Timestamp” (quest’ultimo è la variazione di uno o più parametri di un segnale elettrico che può creare errori nella forma d’onda dello stesso).
Con il messaggio di Jitter Timestamp sarà possibile registrare una performance con un timing più preciso o inviare messaggi a device che ha una circuiteria non proprio perfetta.

Risoluzione

Il MIDI 2.0 può fornire più risoluzione?

Sì, i messaggi MIDI 1.0 sono solitamente a 7 bit (14 bit è possibile ma non sono ampliamente implementati perché ci sono solo 128 messaggi di control change).
Nel MIDI 2.0, come abbiamo visto prima, la velocity è a 16 bit e abbiamo 128 messaggi di control change, 16.384 Controller, 16.384 Controller assegnabili, Poly /channel pressure e Pitch Bend sono a 32 bit.

Sarà più semplice il controllo microtonale e l’utilizzo di scale non occidentali in quanto è possibile il controllo diretto di ogni singola nota.

16 Gruppi di 16 Canali

Il MIDI ha 16 gruppi/porte e ogni gruppo/porta possiede 16 canali. Su ogni gruppo i device possono scegliere di usare MIDI 1.0 oppure 2.0 (non è possibile usarli simultaneamente nello stesso gruppo).

MIDI-CI : The Midi Capability Inquire

Alla auto-configurazione dei device è stata data grande importanza, il nome di questa parte della specifica si chiama MIDI-CI “The Midi Capability Inquire”, ossia la possibilità di dialogare in una maniera più standardizzata di quanto avviene oggi.
Con il MIDI 1.0 per utilizzare appieno le caratteristiche di un MIDI Device, serve un software/hardware che implementi tutte le sue specifiche spesso proprietarie.
Con l’uso di Profilo e Property, MIDI-CI permette ai device di interrogarsi per capire cosa sanno fare e in che modo.

MIDI-CI: Profilo

Tutto si basa sul concetto di “Profilo”, esso è un insieme di regole che definisce come devono interagire due device per scambiarsi i dati.
Ogni profilo possiede un insieme di dati (property definite nelle relative specifiche) che possono essere gestiti o meno dal device.
E’ definita una procedura per scambiarsi il tipo di protocollo di comunicazione ed il numero di profili gestiti e nel caso in cui un device non risponda, viene assunto che esso sia un device MIDI 1.0

MIDI-CI- Profilo

MIDI-CI: Property

Le property permettono lo scambio di proprietà dei device MIDI, ad esempio il nome del prodotto, le impostazioni, le patch ed altri dati.
Questo permette di standardizzare hardware e software in maniera più semplice evitando il proliferare di soluzioni proprietarie.

Esempio

Un Sequencer che utilizza MIDI-CI è in grado di ottenere la lista delle patch, qualunque sia la tastiera collegata, anche se non ne conosce marca e modello.

Esempio di profilo per Arduino

Nell’ambito dell’Arduino Day 2019 che ho organizzato con il gruppo “Music Maker Lab”, ho implementato il MIDI CI con Arduino, per capire se la specifica fosse utilizzabile per la creazione di un device MIDI 2.0, oppure se ci fossero ancora delle parti da completare.
Anche se al momento non sono ancora state pubblicate le specifiche sui profili, ho provato a definirne uno per un board Arduino.
Scopo di questi profilo è stato quello di permettere ad un sistema (ad esempio un computer o un’altra board) di conoscere le caratteristiche della board: nome, led, periferiche collegate, ecc..
Ho quindi definito come property il nome della board, di quanti led dispone ed il loro stato.
Utilizzando le procedure ed i comandi descritti dalla specifica sono riuscito perfettamente nella “scoperta” delle property offerte e nella set/reset di esse.

Esempio di “profilo” per Arduino

Conclusioni

Le specifiche del Midi 2.0 non sono ancora definite, ma si assiste ad una specifica molto interessante che permetterà di sfruttare meglio software e hardware, ottenendo una interazione più forte tra i device.
Tecnicamente basterà un aggiornamento del firmware per passare a Midi 2.0 e dove non possibile con una soluzione software, sarà sicuramente disponibile qualche “scatoletta” che farà da traduttore da e verso il nuovo protocollo musicale!

Buon midi a tutti!

Ing. Umberto Sorbo

MIDI – back to the future

After more than 30 years MIDI 1.0 is finally updated to its 2.0 version!

Although the final specification has not yet been publicly released, some interesting features have been announced.

A “prototyping” phase is now opening, during which the Midi Association companies will test the new specification and propose any changes, to arrive in one year to its final version.

MIDI 2.0 is based on three basic principles: bidirectionality, backwards compatibility, MIDI 1.0 expandability whenever possible.

Let’s see all the news in detail.

New Messages

There are also new types of messages and greater bit resolution of existing ones.

A new MIDI message, called Universal Packet, can contain MIDI 1.0 channel voice messages or MIDI 2.0 channel voice messages, exclusive systems, a new exclusive system format and 3 new message types that add functionality to both MIDI 1.0 and MIDI 2.0

Cables and Connectors

We started from the mythical DIN 5 connector then and over the years we have seen new cables and connectors up to the USB.
MIDI 1.0 was an “agnostic” protocol at the transport level.

What does the future have to offer? It is clear that MIDI 2.0 points to USB as the first target and everything will be based on the new message “Universal Packet”.
So is it possible that MIDI 2.0 will work on transport protocols other than those of MIDI 1.0? Apparently not, unless new specifications are released.


Timing

The timing of MIDI 2.0 messages should be more reliable, in fact the new “Jitter Timestamp” message has been introduced (the latter is the variation of one or more parameters of an electrical signal that can create errors in the signal waveform).
With the Jitter Timestamp message it will be possible to record a performance with a more precise timing or send messages to a device that has not perfect circuitry.


Resolution

Can MIDI 2.0 provide more resolution?

Yes, MIDI 1.0 messages are usually 7-bit (14 bit is possible but not widely implemented because there are only 128 control change messages).
In MIDI 2.0, as we have seen before, the velocity is 16 bits and we have 128 control change messages, 16,384 controllers, 16,384 assignable controllers, Poly / channel pressure and Pitch Bend are 32 bits.

The microtonal control and the use of non-western scales will be easier as it is possible to directly control every single note.

16 groups / 16 channels

MIDI has 16 groups / ports and each group / port has 16 channels. On each group the devices can choose to use MIDI 1.0 or 2.0 (it is not possible to use them simultaneously in the same group).

MIDI-CI : The Midi Capability Inquire

Great importance  has been given  to the self-configuration of the devices, the name of this part of the specification is called MIDI-CI “The Midi Capability Inquire”, that is the possibility to dialogue in a more standardized way than is the case today.
To fully utilize the features of a MIDI device with MIDI 1.0, you need software / hardware that implements all its often proprietary specifications.
With the use of Profile and Property, MIDI-CI allows devices to question themselves to understand what they can do and how.

MIDI-CI : Profiles

Everything is based on the concept of “Profile”, it is a set of rules that defines how two devices must interact to exchange data.
Each profile has a set of data (property defined in the relative specifications) that can be managed or not by the device.
A procedure is defined to exchange the type of communication protocol and the number of profiles managed and in the event that a device does not respond, it is assumed that it is a MIDI 1.0 device.

MIDI-CI: Property

Properties allow the exchange of properties of MIDI devices, for example the product name, settings, patches and other data.
This makes it easier to standardize hardware and software by avoiding the proliferation of proprietary solutions.

Example

A Sequencer that uses MIDI-CI is able to obtain the list of patches, whatever the connected keyboard, even if it does not know the brand and model

Profile for Arduino

As part of the Arduino Day 2019 that I organized with the “Music Maker Lab” group, I implemented MIDI CI with Arduino, to see if the specification could be used to create a MIDI 2.0 device, or if there were still some parts to complete.
Even though the profile specifications have not yet been published, I tried to define one for an Arduino board.
The purpose of this profile was to allow a system (for example a computer or another board) to know the characteristics of the board: name, LEDs, connected peripherals, etc.
I have therefore defined as the property the name of the board, how many LEDs it has and their status.
Using the procedures and the commands described by the specification I succeeded perfectly in the “discovery” of the property offered and in the set / reset of them.

Conclusions

The Midi 2.0 specifications are not yet defined, but there is a very interesting specification that will allow to better exploit software and hardware, obtaining a stronger interaction between the devices.
Technically a firmware update will be enough to switch to Midi 2.0 and where not possible with a software solution, there will surely be some “box” that will act as a translator to and from the new musical protocol!

Condividi questo articolo!
Musicista ed Ingegnere Elettronico. Inizia gli studi musicali con il pianoforte per poi studiare violoncello presso il Conservatorio di San Pietro a Majella. Si è dedicato alla musica da Camera. Nel corso degli anni, si è esibito in vari ensemble e ha gestito la propria orchestra giovanile di 20 membri, con la quale ha diretto circa 80 concerti in cinque anni, da Roma al sud Italia. Questa esperienza ha arricchito la sua comprensione dell'esecuzione musicale e della gestione orchestrale. Come compositore, ha avuto il piacere di creare colonne sonore per film e musica per installazioni artistiche, arricchendo progetti visivi e multimediali con partiture originali ed evocative. La sua competenza nelle tecnologie musicali ha portato a collaborazioni con importanti aziende del settore, dove ha contribuito allo sviluppo e al perfezionamento di diversi prodotti. Si dedica all'esplorazione della sinergia tra creatività e intelligenza artificiale, esaminando come queste tecnologie possano interagire e arricchire il panorama musicale.
Nessun commento