Étape 2: Une simple esquisse
Il s’agit d’un simple croquis pour montrer le comportement de base et de vérifier que les choses fonctionnent.
// SimpleMidi.pde import themidibus.*; //Import the library import javax.sound.midi.MidiMessage; MidiBus myBus; int currentColor = 0; int midiDevice = 3; void setup() { size(480, 320); MidiBus.list(); myBus = new MidiBus(this, midiDevice, 1); } void draw() { background(currentColor); } void midiMessage(MidiMessage message, long timestamp, String bus_name) { int note = (int)(message.getMessage()[1] & 0xFF) ; int vel = (int)(message.getMessage()[2] & 0xFF); println("Bus " + bus_name + ": Note "+ note + ", vel " + vel); if (vel > 0 ) { currentColor = vel*2; } }
Première un rapide tour d’horizon : lorsque vous exécutez ceci vous devriez voir (dans la fenêtre de message Processing IDE, ou dans une fenêtre de terminal, selon la façon dont vous l’exécutez) une liste des disponibles de MIDI entrées et de sorties. Dans mon cas, j’ai joint un clavier MIDI QuNexus qui arrive à monter sous le numéro d’entrée 3, c’est la valeur que j’ai assignée à midiDevice. (Je n’aime pas ce périphérique de sortie est sélectionnée pour je l’ai juste mis à 1.)
Le dessin apparaît une fenêtre qui va changer de nuances de gris basée sur la vitesse de quelque MIDI pas vous l’envoyer.
Si vous n’utilisez pas l’appareil qui envoie à vitesse variable les visuels ne seront pas terriblement intéressants. Vous verrez toujours les détails println assorties cependant.
Ce qui se passe dans ce sketch
Tout d’abord vers le haut, vous devez importer la bibliothèque de MidiBus (themidibus) mais aussi une bibliothèque de Java (javax.sound.midi.MidiMessage) afin que votre code peut faire référence à des objets MidiMessage (comme il arrive dans cette esquisse).
Selon ce que vous voulez faire avec les méthodes disponibles par l’intermédiaire de MidiBus, vous devrez importer les autres fichiers MIDI Java, mais pour que cet exemple seulement que l'on va faire.
Dans le programme d’installation l’esquisse Initialise le MidiBus instance myBus. Lorsque vous créez une nouvelle instance d’une classe de MidiBus vous devez passer une référence à l’esquisse de cours (AKA cela), l’indice de l’appareil pour écouter et l’indice de l’appareil pour envoyer à.
Si vous voulez voir quels périphériques sont disponibles, vous pouvez appeler MidiBus.list() qui imprime (vers STDOUT) listes des disponible MIDI d’entrée et de sortie des dispositifs. Le numéro qui apparaît à gauche d’un élément est le numéro d’index que vous utilisez lors de la création de votre instance de MidiBus.
Si vous voulez être vraiment intelligent vous pourriez cette place envelopper dans une sorte de GUI (éventuellement à l’aide de ControlP5) afin que les dispositifs peuvent être définies ou modifiées après que l’esquisse est démarrée. En pratique, cependant, les appareils sont peu susceptibles de changer d’un seul passage à l’autre et coder en dur les est probablement suffisant pour la plupart des cas. Une autre option est d’avoir votre croquis charger ces valeurs d’un fichier de configuration de sorte que lorsque vous avez besoin de les changer, c’est un peu plus facile à faire.
Une fois qu’une instance de MidiBus a été créée, et une fenêtre de dessin adapté, il est temps d’attente pour certains MIDI d’entrée.
Une variable globale, currentColor, est en place pour contenir la valeur de gris pour le fond de croquis. Tirage tous fait sert cette valeur à la couleur de la fenêtre. Pourtant, si vous envoyez des notes MIDI sur le croquis la fenêtre change. Où se produit le changement ?
MidiBus fournit quelques méthodes de rappel. Voici les méthodes qui sont appelées automatiquement dans diverses conditions. Cette esquisse utilise midiMessage, qui est appelée automatiquement chaque fois qu’un message MIDI arrive.
Il existe deux versions de midiMessage ; l’autre a juste un argument pour le message MIDI. Cette esquisse utilise une version qui inclut l’heure et le nom de bus MIDI juste pour montrer certains détails MIDI que vous pouvez obtenir.
Vous décidez ce qui se passe dans cette méthode. Pour ce croquis le code attrape quelques infos sur le message MIDI et imprime et ressemble alors à la vélocité de la note. Si la vitesse est supérieure à zéro, puis cette valeur est doublée et assignée à currentColor.
Pourquoi passer des valeurs de zéro ? La norme MIDI définit des messages pour "note on" et "note off". Mais certains appareils ne vous embêtez pas avec « note off », plutôt message envoi une « note on » avec une vitesse nulle.
Quand j’ai écrit tout d’abord ce sketch, j’ai simplement attrapé la vitesse et utilisé et vu que l’écran est devenu noir par dès que j’ai pris mes doigts sur les touches QuNexus. Je regarde le println sortie j’ai vu ce qui se passait : zéro vitesse pour « note off ».
Comment vous gérer c’est à vous ; juste être conscient que cela peut arriver.
Donc c’est tout à fait le croquis simple mais montre une idée-force : l’esquisse attend des signaux externes, répond à ces signaux en mettant à jour certaines variables, et chaque passage du tirage au sort utilise l’état actuel de ces variables pour faire quelque chose.