Comment parler MIDI

Dec 04 2022
J'ai initialement écrit cet article en mai 2019, mais je l'ai déplacé ici après avoir abandonné mon ancien site Web. Prendre plaisir! Table des matières Appendice I : Messages de mode de canal Appendice II : Tableau de hauteur MIDI Appendice III : Assignations CC standard Appendice IV : Messages de changement de banque Appendice V : Ressources supplémentaires Le MIDI est ancien, mais très utile.

J'ai initialement écrit cet article en mai 2019, mais je l'ai déplacé ici après avoir abandonné mon ancien site Web. Prendre plaisir!

Contenu

  1. Qu'est-ce que le MIDI
    1.1 Ce que le MIDI n'est pas
  2. Comment ça marche
    2.1 Séparer les messages
    2.2 Octets d'état et octets de données
  3. Types de message
    3.1 Note désactivée / Note activée (0x8n, 0x9n)
    → 3.1.1 À propos des numéros de hauteur MIDI
    3.2 Changement de commande (0xBn)
    3.3 Pitch Bend (0xEn)
    3.4 Pression de touche polyphonique et pression de canal (0xAn, 0xDn)
    3.5 Changement de programme (0xCn )
    3.6 Système (0xFn)
  4. À propos de l'hexadécimal
  5. Exemple appliqué : la Cinquième Symphonie de Beethoven
  6. Leçon bonus : statut d'exécution

Appendice I : Messages de mode de canal
Appendice II : Tableau de hauteur MIDI
Appendice III : Assignations CC standard
Appendice IV : Messages de changement de banque
Appendice V : Ressources supplémentaires

Le MIDI est ancien, mais très utile. Il pilote les claviers que vous voyez au Guitar Center, contrôle des éléments tels que l'éclairage et la pyrotechnie lors de concerts¹, et a été utilisé pour marquer pratiquement tous les films au cours des dernières décennies.

Si vous êtes un musicien moderne, une connaissance pratique du MIDI est essentielle. Si vous êtes le genre de personne qui lit des articles de blog comme ceux-ci, il y a de fortes chances que vous ayez déjà une certaine expérience de travail avec celui-ci ; cependant, je pense qu'il est utile de savoir non seulement comment l'utiliser, mais aussi comment le lire, au niveau bit par bit. Traduire et assembler vos propres messages MIDI peut sembler intimidant au début, mais c'est en fait très facile, et je pense que c'est une compétence importante pour tout compositeur moderne. Cela revient à savoir comment fonctionnent les microphones en tant qu'ingénieur du son.

Cet article servira d'introduction et de guide complets aux messages MIDI tels qu'ils s'appliquent à la production musicale. Ce que ce guide n'est pas est un tutoriel sur la composition MIDI, ou comment utiliser l'éditeur MIDI dans votre DAW. Cependant, ce guide est absolument destiné aux compositeurs, car vous constaterez qu'une connaissance fondamentale du MIDI vous aidera beaucoup lors de la détermination de vos outils MIDI plus avancés (et compliqués). Commençons.

Le Prophet 600 a été l'un des premiers synthés à prendre en charge le MIDI.

1. Qu'est-ce que le MIDI

J'aime commencer à enseigner les choses depuis le début. Cependant, si vous savez déjà ce qu'est le MIDI et ce qu'il fait, n'hésitez pas à passer à Comment ça marche , où nous plongerons directement dans les détails. Sinon, révisons.

MIDI est un acronyme qui signifie "Musical Instrument Digital Interface". Essentiellement, c'est un moyen pour les ordinateurs de décrire et de transmettre des performances musicales les uns aux autres. En fait, c'est le chemin. Si vous êtes né après les années 80, alors probablement tous les claviers ou boîtes à rythmes que vous avez vus utilisent le MIDI. Alors que de nombreuses tentatives ont été faites pour réviser ou remplacer le MIDI au fil des ans, les fabricants et les développeurs d'instruments ne semblent vraiment pas se soucier d'utiliser autre chose.

Avec MIDI, vous pouvez :

  • Enregistrez des performances musicales et éditez-les avec une précision chirurgicale
  • "Patchez" une performance sur n'importe quel instrument avec peu ou pas de travail
  • Générer ou reséquencer de manière procédurale des performances
  • Organisez des performances d'ensemble avec une seule connexion
  • Effectuez un mixage rudimentaire, complet avec "l'automatisation"

Et c'est si la partition est même jouée . Alors que les orchestres virtuels des années 80 sonnaient ridiculement faux, les instruments modernes sonnent si bien que les auditeurs occasionnels ne peuvent même pas faire la différence. Et ça a tout changé. Dans les films et les émissions de télévision à petit budget, la bande originale utilisera souvent des orchestres MIDI dans la version finale, et le public n'en est pas plus avisé. Et étonnamment, de tels outils sont disponibles pour les musiciens à presque tous les niveaux de revenu.

1.1 Ce que le MIDI n'est pas

Avant de continuer, je veux dissiper quelques idées fausses que les nouveaux arrivants ont parfois. Cela ne prendra pas longtemps.

Premièrement, le MIDI ne fait pas de la musique : il indique simplement aux autres appareils comment faire de la musique. Mais il peut aussi faire d'autres choses. Par exemple, dans les logiciels vidéo professionnels, les messages MIDI sont utilisés pour contrôler des éléments tels que les paramètres d'animation. De nombreuses surfaces de contrôle de studio utilisent le MIDI pour contrôler le logiciel de mixage, et ce piano de joueur fantaisiste l'utilise pour déclencher des actionneurs robotiques. Le point que j'essaie de faire valoir est que même si les données MIDI sont principalement utilisées pour contrôler des instruments virtuels, elles peuvent vraiment être utilisées pour n'importe quoi et ne "sonnent" pas comme quoi que ce soit en elles-mêmes.

Les outils qu'un compositeur MIDI utilise résument le code informatique en quelque chose de plus facile à visualiser. (Capture d'écran de Nuendo 8)

Deuxièmement, les données MIDI ne sont pas seulement des « partitions pour ordinateurs », aussi utile que puisse être l'analogie. Alors que la partition de musique occidentale est le support qui a encodé toute la musique la plus expressive de l'histoire, la vérité est qu'elle laisse une place considérable à l'interprétation - et les ordinateurs ne gèrent pas très bien l'ambiguïté.

Au lieu de cela, le MIDI est probablement mieux considéré comme un langage de programmation et votre éditeur MIDI comme un environnement de programmation visuel. Les éditeurs MIDI représentent les commandes MIDI sous forme de formes sur des rouleaux de piano, au lieu de ce qu'elles sont réellement : des instructions numériques glorifiées. Et comme tous les langages de programmation, le MIDI est sujet à toutes sortes de bogues et de pépins. Par exemple, si un message « note activée » n'est pas correctement associé à une « note désactivée », la note continue de jouer indéfiniment, car les ordinateurs n'ont pas le bon sens de s'arrêter.

Quoi qu'il en soit, je suis fatigué d'écrire cette introduction. Décollons toutes ces couches d'abstraction et apprenons, à un niveau fondamental, comment parler MIDI.

2. Comment ça marche

Comme à peu près tout dans les ordinateurs, le MIDI se résume à un tas de uns et de zéros. Chaque chiffre est appelé un bit (abréviation de "chiffre binaire") et huit d'entre eux forment un octet . Lorsque vous jouez d'un piano numérique, des messages MIDI sont générés en interne et envoyés au générateur de sons de l'instrument, où ils sont interprétés et convertis en son audible. Si vous jetez un coup d'œil au signal, les messages générés pourraient ressembler à ceci :

C'est la forme binaire d'une simple performance MIDI : les quatre premières notes de la Cinquième de Beethoven. Si vous deviez enregistrer cette séquence et la répéter sur un autre instrument MIDI exactement comme elle a été livrée, le résultat serait une copie identique de la performance. Si vous mangiez avec le timing, vous changeriez le rythme de la performance. Tout le reste de la performance est encodé dans les données elles-mêmes.

C'est plutôt intéressant de se rendre compte que les compositeurs de nos jours passent essentiellement leur temps à créer, éditer et peaufiner ce qui se résume à une livraison chronométrée de numéros. Quoi qu'il en soit, décomposons la tâche d'interprétation de ce gâchis, une étape à la fois.

2.1 Séparer les messages

La première chose à savoir sur les messages MIDI est qu'ils s'étendent presque toujours sur plus d'un octet. Cela a du sens si vous considérez qu'il n'y a que 256 nombres uniques de 8 bits, et nous avons probablement besoin d'encoder beaucoup plus d'informations que cela pour décrire quelque chose d'aussi expressif qu'un événement musical.

Donc, si vous recevez un message en plusieurs petits paquets, peut-être tous en même temps, comment savez-vous où se termine un message et où commence le suivant ? De manière réaliste, si vous savez combien d'octets attendre par message et que vous commencez par le haut, vous devriez pouvoir les distinguer, tant qu'aucun d'entre eux n'est perdu lors de la transmission. Cependant, MIDI nous offre un moyen infaillible d'analyser chaque message : en dédiant le premier bit de chaque octet à la cause.

RÈGLE 1 : Si le premier bit d'un octet MIDI est un 1 , alors l'octet est un octet d'état , qui marque la première partie d'un message MIDI. Si le premier bit est un 0 , alors c'est un octet de données , qui forme le corps du message.

Facile. Chaque fois qu'un octet commence par un 1 , nous savons que nous lisons le début d'un nouveau message et nous pouvons interpréter les octets suivants de concert avec le premier. Utilisons cette règle pour décomposer les performances MIDI ci-dessus en messages discrets.

Maintenant que nous examinons quelque chose d'un peu plus ordonné, vous remarquerez peut-être que quelques modèles apparaissent. D'une part, il n'y a que deux versions uniques de chaque octet. Sachant que ces messages représentent les quatre premières notes de la Cinquième Symphonie de Beethoven, pouvez-vous deviner ce qu'ils signifient ?

2.2 Octets d'état et octets de données

L'octet d'état d'un message MIDI sert d'en-tête, et est donc la partie la plus importante. Il nous dit ce que fait le message et comment interpréter les octets de données suivants. Ce que les octets de données encodent dépend du message, mais ils fourniront généralement des informations importantes pour l'exécution du message. Si l'octet d'état indique "sauter", les octets de données peuvent vous indiquer la hauteur.

Étant donné que le premier bit de chaque octet est réservé pour distinguer les deux types d'octets, il n'y a que sept bits utilisables par l'un ou l'autre. Voici comment ils sont utilisés :

RÈGLE 2 : Les bits 2, 3 et 4 d'un octet d'état identifient son type de message . Les bits 5 à 8 identifient le canal MIDI auquel il s'adresse. Les octets de données remplissent différentes fonctions selon le type de message.

Trois bits pour déterminer le type de message et quatre pour le numéro de canal signifient qu'il existe huit types de messages distincts et 16 canaux possibles. Les octets de données peuvent contenir n'importe quelle valeur comprise entre 0 et 127 . Alors que l'écrasante majorité des messages utilisent deux octets de données, ce nombre peut en fait différer selon les besoins du message. Par exemple, les messages de "changement de programme" n'ont besoin que d'un octet de données, et les messages "système exclusif" peuvent avoir un nombre arbitraire.

Si vous avez déjà travaillé avec le MIDI, vous connaissez probablement déjà les canaux MIDI. Mais au cas où vous ne l'êtes pas, chaque connexion MIDI peut commander jusqu'à 16 voix. L'octet d'état spécifie dans ses quatre bits les moins significatifs à laquelle de ces voies le message s'adresse.³

3. Types de messages

Le tableau suivant identifie les différents types de messages MIDI et leur utilisation des octets de données. Nous allons explorer chacun dans les sous-sections suivantes.

3.1 Note désactivée / Note activée (0x8n, 0x9n)

Ce sont les messages MIDI les plus élémentaires et les plus faciles à comprendre. Lorsque vous voulez jouer une note, envoyez un message « note on », et lorsque vous voulez la terminer, envoyez un message « note off ». Ces messages utilisent deux octets de données : le premier identifie la hauteur que vous souhaitez contrôler et le second identifie une vélocité. ⁴ Une « note on » avec une vélocité de 0 ne produit aucun son et équivaut à un message « note off ».

Considérations :

  • L'existence de messages "note on" à vélocité nulle signifie que les messages "note off" sont totalement inutiles. La norme MIDI stipule spécifiquement que les messages « note off » et « note on » à vélocité nulle sont équivalents et doivent être traités de la même manière. Par conséquent, un appareil peut déclencher des notes différemment d'un autre.
  • Alors que les émetteurs n'ont besoin d'utiliser qu'une seule méthode de non-déclenchement des notes, les récepteurs doivent être capables de gérer les deux.
  • Bien qu'une valeur de vélocité n'ait pas beaucoup de sens dans un message « note off », elle fait toujours partie du message et doit être envoyée. La valeur est inutilisée et est supprimée.

Les numéros de hauteur sont mappés sur les touches du piano essentiellement un à un. Cependant, comme il existe 128 valeurs possibles et seulement 88 touches de piano, le MIDI prend en charge 40 demi-tons introuvables sur le piano. 19 d'entre eux sont situés au-dessus de la note la plus haute, C7, et les 21 autres sont en dessous de la note la plus basse, A-1. La plage de hauteur MIDI est plus ou moins centrée sur le do moyen, qui est la note numéro 60.

Sachez que les fabricants ne sont pas tous d'accord sur les nombres d'octave. La notation scientifique de la hauteur, utilisée par les musiciens analogiques, identifie le Do le plus bas du piano comme C1 , ce qui fait du Milieu C C4 . Les programmeurs, d'autre part, commencent souvent à compter avec 0, donc pour eux, le C le plus bas est C0 , et le C moyen est C3 . C'est la notation que j'utilise habituellement, car c'est ce que tous mes outils MIDI utilisent. Cependant, quel que soit le système que vous utilisez, Middle C est toujours le numéro de note 60.

Dans l'Appendice II , je fournis un tableau pour la conversion vers et depuis les numéros de hauteur MIDI.

3.2 Changement de commande (0xBn)

Les messages « Control change » sont utilisés pour modifier les contrôleurs continus d'un canal . Un contrôleur continu est analogue à une voie d'automatisation ; il permet un contrôle continu sur différents aspects des performances d'un canal.

Le premier octet de données identifie le numéro CC (0–119) , et le second lui attribue une valeur (0–127) .

Considérations :

  • Contrairement à son nom l'indique, les données du contrôleur continu ne sont pas continues. Au lieu d'interpoler en douceur entre les valeurs comme le fait l'automatisation, la valeur actuelle d'une voie CC ne peut changer que par étapes discrètes. Pour passer progressivement à une autre valeur, vous devez envoyer un grand nombre de messages de « changement de commande », incrémentant ou décrémentant la valeur à une vitesse contrôlée.
  • La spécification MIDI définit ce à quoi la plupart des 120 CC sont destinés à être utilisés, bien que très peu d'appareils en observent plus qu'une poignée. Je fournis un tableau de tous les CC à l'annexe III .
  • Les huit derniers numéros CC (120–127) ne représentent en fait pas du tout les CC. Au lieu de cela, ils représentent une catégorie spéciale de messages appelés messages en mode canal . Les messages en mode canal sont des commandes spécialisées qui affectent l'ensemble de l'appareil qui les reçoit. En pratique, vous n'aurez pas trop à vous en préoccuper, mais je donne plus d'informations à leur sujet en Annexe I .
  • Les numéros CC 0 et 32 ​​sont utilisés par de nombreux appareils à des fins de sélection de patch. En savoir plus à ce sujet dans l' annexe IV .

Plie la hauteur vers le haut ou vers le bas. Euh.

Le pitch bend se comporte un peu comme un CC. En fait, la plupart des éditeurs MIDI traitent le Pitch Bend comme si c'était juste un autre CC. Cependant, une valeur CC de 7 bits, avec 128 valeurs possibles, n'offre pas une résolution suffisante pour vendre un effet de pitch bend. Nos oreilles sont incroyables pour résoudre la hauteur de hauteur, et donc même lorsque nous approchons d'une nouvelle hauteur de 1/128e à la fois, cela ne semble pas lisse et organique.

Pour obtenir une résolution plus fine, les messages de "pitch bend" utilisent deux octets de données pour transmettre une seule grande valeur. Fondamentalement, si vous écrasez sept bits d'un message et sept bits d'un autre, vous pouvez assembler une seule valeur de 14 bits, augmentant votre résolution d'un facteur de 2⁷, ou 128.

Maintenant, au lieu de 128 valeurs possibles pour notre pitch bend, nous avons un énorme 16 384 - plus qu'assez d'étapes pour créer un effet de pitch bend fluide. La moitié droite est fournie par le premier octet de données (l'octet le moins significatif, ou LSB) et la moitié gauche est fournie par le second (l'octet le plus significatif, ou MSB).

Considérations :

  • La force du pitch bend (combien de demi-tons vers le haut ou vers le bas représente un pitch bend au maximum) diffère d'un instrument à l'autre. Il est souvent paramétrable.
  • Le pitch bend est "centré" à 8192 (où il n'y a pas de changement de hauteur).
  • Les pitch bends affectent toutes les notes jouées sur un canal, tout comme le font les CC.
  • La programmation avec les MSB et les LSB est mieux faite avec des opérateurs au niveau du bit. Je ne vais pas les passer en revue ici, mais j'ai fourni quelques ressources dans l'annexe V si vous voulez en savoir plus.

Certains contrôleurs MIDI, tels que l' Akai MPK225 , disposent de quelque chose appelé aftertouch . Les contrôleurs Aftertouch sont sensibles non seulement à la vélocité de chaque touche enfoncée, mais également sensibles en permanence à la pression avec laquelle les touches sont maintenues.

L'aftertouch se décline en deux variétés : l'aftertouch de canal et l'aftertouch polyphonique . L'aftertouch de canal, également connu sous le nom de pression mono , mesure la pression sur l'ensemble du clavier, tandis que l'aftertouch polyphonique mesure la pression indépendamment pour chaque touche. En raison du coût matériel inférieur, l'aftertouch de canal est le plus courant des deux. Les messages de pression de canal n'utilisent qu'un seul octet de données, qui représente le niveau de pression global. Les messages de pression de touche polyphoniques en utilisent deux : le premier signale la hauteur (en utilisant les numéros de hauteur standard) et le second signale sa pression.

Considérations :

  • L'aftertouch polyphonique est le seul contrôle qui peut être réglé indépendamment pour chaque hauteur. Toutes les autres commandes (en plus de l'activation ou de la désactivation de la note) affectent l'ensemble du canal.
  • Une extension du MIDI, appelée "MIDI Polyphonic Expression" (MPE), est conçue pour permettre aux CC et au pitch bend d'être également appliqués polyphoniquement. MPE n'est pas très courant, mais a été popularisé par des appareils comme le ROLI Seaboard . J'ai fourni des liens vers des ressources qui le couvrent à l'annexe V .

Si vous n'utilisez pas beaucoup de matériel MIDI externe, vous n'utiliserez probablement pas ce type de message trop souvent. Un message de « changement de programme » ordonne à un appareil de charger un nouveau programme (un nouveau patch ou préréglage). Il n'utilise qu'un seul octet de données, qui spécifie l'index du patch.

Ce type de message est très utile lors de la composition avec des appareils MIDI externes. Tant que votre matériel prend en charge les préréglages, votre projet ou session peut gérer leur sélection et leur chargement : il suffit de séquencer les messages de « changement de programme » appropriés au début.

Considérations :

  • Les instruments avec plus de 128 préréglages stockent généralement leurs patchs dans plusieurs banques . Pour rappeler des programmes stockés dans d'autres banques, les CC 0 et 32 ​​sont réutilisés dans des messages de "sélection de banque". Dans l'Appendice IV , j'explique comment cela fonctionne.
  • Grâce à une planification intelligente des messages de changement de programme, il est possible pour un seul appareil d'utiliser plus de 16 patchs différents en une seule pièce, tant qu'ils ne jouent pas simultanément. Bien que pour être réel, vous devriez probablement diviser les choses en captures séparées si vous devez extraire autant de voix d'un seul appareil.
  • Cubase et Nuendo offrent un support natif pour les messages de changement de programme dans l'inspecteur de piste MIDI. Je ne sais pas combien d'autres DAW prennent en charge cela.

Les messages système sont un sujet avancé que je ne vais pas aborder ici. Ils méritent vraiment un article à eux seuls. Ils sont utilisés pour toutes sortes de choses; transferts de données géants (appelés « dumps »), synchronisation d'horloges, transmission de timecode, etc.

À l'avenir, je rédigerai peut-être un guide des messages système, mais pour l'instant, ne vous en souciez pas. Sachez simplement qu'ils existent et ne sont généralement pas utilisés dans la composition MIDI.

4. À propos de l'hexadécimal

Avant de continuer, nous devrions parler de tous ces 0x que j'ai utilisés dans la section précédente. Le préfixe 0x vous indique qu'un nombre est en hexadécimal.⁵ En plongeant dans vos manuels d'outils et d'appareils MIDI avancés, vous remarquerez que les messages MIDI sont presque toujours représentés en hexadécimal au lieu de binaire ou de base dix. Cela peut sembler contre-intuitif au premier abord - je veux dire, si vous voulez convertir un nombre binaire, pourquoi ne pas simplement convertir en base dix lisible par l'homme ?

La réponse est que c'est juste plus pratique. Bien que je pense que le binaire est la meilleure façon de commencer à apprendre le MIDI, c'est assez lourd à utiliser. Étaler chaque octet sur huit chiffres rend la lecture et l'écriture une corvée, et comme tout en binaire n'est que des uns et des zéros, il est facile de perdre sa place lors de la lecture de longues séquences.

L'inversion d'un bit dans un nombre binaire ne peut affecter qu'un seul chiffre de sa représentation hexadécimale.

Ainsi, les programmeurs au niveau du bit travaillent généralement en hexadécimal. Il réduit chaque octet à seulement deux chiffres, et comme 16 est une puissance de 2, chaque bit que vous modifiez n'affecte qu'un chiffre en hexadécimal. Cela vous permet de considérer chaque chiffre hexadécimal comme son propre nombre à quatre bits. Si vous vouliez travailler au niveau du bit sur une représentation décimale, vous deviez convertir l'octet entier en binaire et inversement.

Il n'y a que quelques éléments à garder à l'esprit lorsque vous travaillez avec MIDI en hexadécimal.

  • En raison de la façon dont les bits sont regroupés en hexadécimal, vous pouvez savoir à quel canal MIDI un octet d'état s'adresse en ne regardant rien de plus que le chiffre hexadécimal de droite.
  • Si le chiffre de gauche d'un octet est 0x7ou moins, vous savez qu'il s'agit d'un octet de données, et de même, vous savez qu'un octet commençant par 0x8ou plus est un octet d'état.
  • La valeur maximale de l'octet de données, 127, est 0x7F en hexadécimal.

5. Exemple appliqué : la Cinquième Symphonie de Beethoven

La dernière fois que nous nous sommes arrêtés sur cet exemple, nous venions de décomposer le binaire brut en messages discrets. Ça ressemblait à ça :

Pour rendre cela plus facile à comprendre, convertissons-le en hexadécimal. Je laisserai les octets d'état en rouge et les octets de données en bleu.

Sachant ce que nous savons maintenant, nous reconnaissons que les 0x9 et 0x8 en tête des octets d'état identifient les messages respectivement comme "note on" et "note off". Le chiffre de droite de l'octet nous indique qu'ils ciblent le canal MIDI 1.⁶

Voici à quoi ressemblent les performances avec les octets d'état traduits.

Dans les types de messages "note on" et "note off", le premier octet de données code une hauteur et le second code une vélocité. La valeur de vélocité n'est qu'un nombre. Pour déterminer la hauteur, nous devons nous référer à une table de notes MIDI . Et rappelez-vous, les vélocités "note off" ne sont pas utilisées.

Finissons la traduction :

C'est ça! Ce sont les instructions MIDI traduites codant les quatre premières notes de la Cinquième de Beethoven. Dum dum dum duuum !

Sachant ce que vous savez maintenant, vous pouvez créer et décoder manuellement des messages MIDI courants. Des outils plus avancés, tels que les transformateurs MIDI et les éditeurs logiques, vous sont maintenant ouverts. Cependant, il y a toujours plus à apprendre. Si vous êtes un gourmand de connaissances, j'ai fourni quelques ressources que vous pouvez utiliser pour étudier le MIDI plus en profondeur dans l'annexe V .

6. Leçon bonus : état de fonctionnement

Il existe des offres de raccourcis MIDI pratiques que je n'ai pas mentionnées jusqu'à présent dans un souci de simplicité. Voici comment cela fonctionne : une fois que vous avez envoyé un octet d'état, vous n'avez pas besoin d'en envoyer un autre jusqu'à ce qu'il diffère du précédent. Le dernier octet d'état reçu reste en quelque sorte « activé », et sert à interpréter tous les octets de données à suivre. C'est ce qu'on appelle l'état d'exécution .

Considérez la chaîne d'octets suivante :

Ce que vous voyez est exactement la même performance de la Cinquième de Beethoven que nous avons traduite dans l'exemple appliqué, mais avec presque tous les octets d'état manquants. Cependant, en raison de Running Status, cette performance est tout aussi valable que la première. Une fois que nous avons envoyé l'octet d'état 0x90, il devient l'état d'exécution, et chaque paire d'octets qui suit peut être traitée comme si elle était précédée de son propre « 0x90».

Cela nous permet de supprimer de nombreux octets d'état répétés, ce qui peut raccourcir considérablement nos flux MIDI. À l'époque où les ordinateurs étaient plus lents et les débits en bauds plus restrictifs, c'était incroyablement utile. Aujourd'hui, cependant, les ordinateurs sont si rapides que l'utilisation de Running Status n'apporte pas vraiment d'amélioration notable des performances. Cependant, j'en parle toujours, car si vous vous retrouvez à faire de la programmation MIDI, vous devriez être prêt à voir des octets d'état omis ici et là.

Notez que parce que les « notes activées » à vélocité nulle comptent comme des « notes désactivées », nous pouvons à la fois commencer et terminer les notes sans interrompre l'état de fonctionnement ; au moins, jusqu'à ce que nous ayons besoin d'envoyer un changement de contrôle ou un message à un canal différent.

  1. Cela se fait avec une extension MIDI appelée MIDI Show Control.
  2. "Ce que vous voyez est ce que vous obtenez".
  3. Les numéros de canaux MIDI commencent par 1, tandis que leur représentation ici commence par 0. Une valeur de 0 signifie le canal 1 et une valeur de 15 signifie le canal 16.
  4. La vélocité peut être considérée comme la « force » avec laquelle une note est frappée.
  5. Une autre notation courante consiste à faire suivre le numéro d'une lettre majuscule "H", comme dans "78H".
  6. N'oubliez pas que même si le nombre dans le message est un zéro, il correspond au canal 1 car nous commençons à compter les nombres à 0 et les canaux à 1.

Annexe I : Messages du mode canal

Les messages de « mode de canal » sont des commandes spéciales qui modifient le comportement d'un appareil entier en changeant son mode MIDI . Eh bien, en quelque sorte.

En pratique, les messages « mode canal » sont juste utilisés pour activer ou désactiver certaines fonctionnalités et envoyer certaines commandes. Ce que MIDI énumère comme "modes" ne sont essentiellement que des configurations différentes des bascules Omni et Poly. Pour être honnête, je ne pense pas que les "modes" soient une façon très appropriée de penser à ces commandes ; mais je vais au moins expliquer ce que font les commandes.

Les messages en mode canal n'ont pas leur propre type de message. Au lieu de cela, ce qui aurait été les huit derniers numéros de contrôleur continu (CC 120–127) sont réutilisés. Les messages du mode canal sont les suivants :

Pour qu'un appareil réponde aux messages du mode canal, il doit les recevoir sur son canal de base . Le canal de base d'un appareil est le seul canal MIDI sur lequel les messages de mode de canal sont considérés comme valides. Pour de nombreux appareils, ce canal est configurable. De cette façon, les messages du mode canal peuvent cibler des appareils spécifiques au sein d'une connexion en guirlande.

Ce qui suit est un résumé rapide de chaque message de mode de canal. L'annexe V contient des ressources pour une étude plus approfondie.

  • All Sound Off (« CC » 120) : coupe tous les sons que l'instrument produit actuellement, y compris les effets de chute de note et de réverbération.
  • Réinitialiser tous les contrôleurs (« CC » 121) : Règle tous les CC, les contrôleurs de commutateur, le pitch bend et les effets d'aftertouch sur leurs valeurs par défaut. La valeur à laquelle revient chaque contrôleur dépend du contrôleur et est définie dans la spécification MIDI.
  • Local Control (« CC » 122) : Déconnecte le clavier d'un synthétiseur de son générateur de sons. Cela vous permet d'utiliser un synthétiseur comme contrôleur MIDI tout en séquençant pour lui. Réglez sur 0x00pour désactiver le contrôle local et 0x7Fpour le réactiver.
  • All Notes Off (« CC » 123) : Le « bouton panique ». All Notes Off équivaut à envoyer des messages « note off » pour chaque hauteur sur chaque canal. C'est pratique pour résoudre les notes bloquées. Les notes déclenchées localement ne sont pas affectées.
  • Mode Omni Off/On (“CC's” 124, 125): Lorsque le mode Omni est activé, chaque canal répondra à chaque message entrant, quel que soit le canal indiqué dans l'octet d'état.
  • Mono Mode / Poly Mode (“CC's” 126, 127): Force une voix ou des voix à un comportement monophonique ou polyphonique. Si la valeur « mode mono activé » est réglée sur 0x00, alors le canal de base, et tous les canaux au-dessus, seront réglés sur le mode mono. Pour toute autre valeur n , les canaux n à n+m-1 seront mis en mode mono (où m est la valeur du deuxième octet de données). Un message "mode poly activé" remettra tous les canaux en mode poly.

Appendice III : Affectations CC standard

La spécification MIDI définit les utilisations standardisées des CC, que j'ai copiées ici. Tous les numéros CC sont définis, à l'exception de : 3, 9, 14, 15, 20–31, 85–90 et 102–119 . Les CC les plus largement pris en charge sont Modulation ( 0x01), Foot Controller ( 0x04), Channel Volume ( 0x07), Pan ( 0x0A), Expression ( 0x0B) et Sustain ( 0x40).

Consultez les ressources de l'annexe V si vous souhaitez en savoir plus sur ces CC.

Annexe IV : Messages de changement de banque

Les synthétiseurs modernes peuvent stocker et rappeler beaucoup, beaucoup plus de préréglages que ce qui peut être adressé par un seul message de changement de programme. Pour contourner ce problème, les fabricants classent souvent leurs programmes dans des banques . Chaque banque a un maximum de 128 préréglages et une adresse unique de 7 ou 14 bits.

Pour rappeler un patch d'une banque différente, vous devez d'abord envoyer un message de « sélection de banque » avec son adresse. Après cela, envoyez un message de changement de programme comme d'habitude, et le patch chargé proviendra de la nouvelle banque.

Comme vous l'avez peut-être remarqué, ce sont en fait des messages de "changement de contrôle" pour les CC 0 et 32 ​​. Pour les adresses 7 bits, seul CC 0 est utilisé. Pour les adresses 14 bits, CC 0 représente un MSB et 32 ​​un LSB. Si vous avez besoin d'une introduction sur les MSB et les LSB, il y en a une dans la section Pitch Bend de l'article principal.

Qu'un appareil utilise des adresses 7 bits ou 14 bits est un peu arbitraire, et vous devrez consulter votre manuel pour savoir lequel utiliser lors de la communication avec votre appareil.

Annexe V : Ressources supplémentaires

  • L'Association MIDI : L'Association MIDI est le principal dépositaire d'informations sur ou liées à la technologie MIDI. L'inscription est gratuite, et une fois que vous l'avez fait, vous pouvez télécharger la spécification détaillée complète du MIDI 1.0 ici .
  • Bitwise Operation (Wikipedia) : Je sais, je sais, Wikipedia n'est pas une bonne ressource principale, mais j'aime cet article car il est neutre en termes de langage et ne contient pas de publicités. Étudiez les décalages de bits arithmétiques et le OU au niveau du bit, qui sont utiles lorsque vous travaillez avec des MSB et des LSB.
  • Qu'est-ce que le MPE ? : Un article dans la base de données de support de ROLI traitant de l'expression polyphonique MIDI, qui est utilisée dans les contrôleurs multidimensionnels comme les produits Seaboard. MPE a été officiellement adopté par la MIDI Manufacturer's Association en janvier 2018, et un lien de téléchargement vers la spécification est disponible ici .
  • Modes MIDI (Electronic Music Interactive v2, University of Oregon): Cette page offre un bon aperçu concis des quatre modes MIDI standard. Cela fait partie d'un cours en ligne plus long sur la musique électronique.
  • MIDI CC List (Nick Fever) : Une liste des CC standard avec des explications plus élaborées. Si vous avez encore besoin de plus d'informations après avoir parcouru la liste de Nick, reportez-vous à la spécification détaillée complète du MIDI 1.0, que vous pouvez télécharger ici .
  • Messages communs du système MIDI , messages en temps réel du système MIDI et message exclusif du système MIDI (RecordingBlogs Wiki) : excellentes introductions à chaque type de message système.
  • Numéro de paramètre enregistré MIDI (RecordingBlogs Wiki): Un aperçu des numéros de paramètre enregistrés, qui peuvent être considérés comme une extension des CC. Une fois que vous aurez compris les RPN, les NRPN (numéros de paramètres non enregistrés) vous seront également accessibles.