Script de traitement avec le MIDI (3 / 12 étapes)

Étape 3: Configuration et obtenant intelligent

Si vous écrivez suffisamment croquis de traitement qui dépendent des paramètres initiaux que vous devrez régler pour les différentes exécutions, vous êtes susceptible de faire ce que j’ai fait et travailler sur un moyen de charger ces paramètres depuis un fichier de configuration. Je soupçonne que c’est le genre de codage qui tombe dans la catégorie « comment dur est-il possible? » car je ne pense pas que j’ai même pris la peine de chercher une solution existante. Au lieu de cela, j’ai fait quelque chose de vraiment simple et ajusté au fil du temps.

Mon premier cours de Config a chargé un fichier texte de données / dossier et nom : valeur analysée cordes dans une table de hachage. Cela a fonctionné assez bien pour la plupart. Idéal pour les entrées unitaire simples, mais pas très bon si vous voulez définir une liste de valeurs.

Je dois me demandais si je pouvais utiliser YAML ou JSON afin qu’un fichier texte pourrait représenter des structures plus complexes. S’avère que traitement vous donne JSON intégré de manutention. Parfait.

Pour le croquis de MIDI la configuration a été mise à jour pour utiliser JSON. Chargement d’un fichier JSON et d’obtenir les valeurs sont surtout facile, mais pas tout à fait transparente. Vous pouvez obtenir à différents types de données à l’aide de getInt, getFloat, getString, etc, mais si vous souhaitez récupérer une liste d’éléments vous avez besoin getJSONArray et puis il faut tirer sur chaque élément dans le type approprié.

Pour cette Config, j’ai décidé que dans la plupart des cas, une liste d’éléments sera du même type. J’ai donc ajouté getStrings, getFloats et getInts.

Maintenant, au lieu de mettre les indices périphériques dans mon croquis, je pourrais utiliser un fichier de configuration. JSON n’est pas aussi simple que de nom : valeur, mais il n’est pas trop loin de celui. Un peu exagéré pour fichiers courts, très pratiques pour les données structurées plus complexes.

Je n’obtiendrai pas dans les détails sur ce code ici. Vous pouvez en savoir plus à ce sujet ici.

Cette première esquisse de démonstration a montré comment créer un objet de MidiBus. Il y a une autre façon, et il n’est pas seulement plus convivial mais se prête à la meilleure configuration. MidiBus vous permet de spécifier quels appareils utiliser par nom. Le nom doit correspondre à ce qui est affiché dans la liste des périphériques disponibles, vous devrez peut-être d’abord exécuter MidiBus.list pour voir ce qu’il y a.

Une fois que vous connaissez les noms des éléments du fichier de configuration pouvez utiliser texte lisible au lieu de nombres cryptés.

Vous pouvez également transmettre un nom pour le bus afin que plus tard, lorsque midiMessage est appelé, votre code peut (si vous le souhaitez) se comportent différemment suivant la source du message.

Maintenant, l’esquisse de la démo (moins le code pour Configgy.pde) ressemble à ceci :

 import java.lang.reflect.Method; import themidibus.*; import javax.sound.midi.MidiMessage; Configgy config; int currentColor = 0; ArrayList devices = new ArrayList(); void setup() { size(480, 320); config = new Configgy("config.jsi"); String[] deviceNames = config.getStrings("devices"); println("Unavailable Devices"); println( join(MidiBus.unavailableDevices(), "\n")); println("-----------------------------------------------------"); String[] available_inputs = MidiBus.availableInputs(); for (int i = 0;i < available_inputs.length;i++) { for(int x=0; x < deviceNames.length; x++) { println("Check for device " + deviceNames[x] + " against " + available_inputs[i] ); if (available_inputs[i].indexOf(deviceNames[x]) > -1 ) { println("* * * * Add device " + deviceNames[x] + " * * * * "); devices.add( new MidiBus(this, deviceNames[x], 1, deviceNames[x]) ); } } } if (devices.size() < 1 ) { println("Failed to assign any of the desired devices.\nExiting."); exit(); } } 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; } } 

Le fichier config.jsi (stockées dans les données / dossier) est la suivante :

 devices:["QuNexus", "01. Internal MIDI"] 

Vous devrez régler cela à quelque appareils dont vous disposez à utiliser.

Lorsque vous exécutez l’esquisse, votre fichier de configuration sera chargé et le code tentera d’y transférer un ArrayList MidiBus instances basées sur les noms de périphérique vous avez fourni.

Notez que, dans cet exemple, l’utilisation d’un ArrayList, signifie que le code n’est pas déranger avec des variables d’instance spécifiques pour chaque instance de MidiBus ; Ce code ne jamais faire référence à ces instances.

Le gestionnaire d’événements midiMessage est appelé n’importe lequel de ces appareils est d’envoyer le message. Le nom d’autobus est passée au gestionnaire d’afin que vous puissiez, si vous le souhaitez, avoir le code de prendre des mesures différentes selon la source du message MIDI.

Si vous vous demandez pourquoi s’en faire ajouter les instances de l’autobus à une liste si ils ne vont jamais à utiliser, la raison est que, sans une sorte de cession persistante ces instances disparaîtra une fois l’installation terminée. Une fois qu’ils sont partis, le gestionnaire d’événements de message MIDI est n’est plus appelé.

Si vous ne voulez pas le code pour faire référence à aucun de ces cas alors vous pouvez envisager d’utiliser une table de hachage pour les tenir de sorte que vous pouvez extraire des périphériques spécifiques à nom.

Articles Liés

Comment contrôler un croquis de traitement avec deux entrées Arduino

Comment contrôler un croquis de traitement avec deux entrées Arduino

Ce tutoriel va vous montrer comment construire un circuit de base Arduino qui permet de contrôler un fun ball couleur croquis dans le traitement.Vous aurez besoin :1 x carte Arduino (j'utilise un Uno)1 x planche à pain1 Photo de x-résistance1 x 10 k
Comment faire un synthétiseur sonore Arduino avec interface MIDI

Comment faire un synthétiseur sonore Arduino avec interface MIDI

Avec ce synthétiseur, vous pouvez faire Arduino reproduire des formes d'ondes totalement personnalisés. En raison de l'interface MIDI, il peut être connecté à n'importe quel instrument qui disposent et jouer avec le son souhaité.Étape 1: matériauxArd
Poux des volailles - quoi, pourquoi, qui, quand et où ? Traitement avec des huiles, prévention avec le régime. Poulets biologiques

Poux des volailles - quoi, pourquoi, qui, quand et où ? Traitement avec des huiles, prévention avec le régime. Poulets biologiques

J'aurais aimé avoir droit à cette pièce « beaucoup de choses que vous ne voulais pas savoir sur les poux, mais un jour peut être heureux que vous avez fait ».Par la suite instructable, j'essaie de condenser deux des articles que j'ai écrit sur le pou
Cellule photoélectrique réagit à la lumière d’un œil. un projet d’introduction pour l’utilisation de traitement avec Arduino

Cellule photoélectrique réagit à la lumière d’un œil. un projet d’introduction pour l’utilisation de traitement avec Arduino

Dans ce projet, vous pouvez voir un exemple simple d'utilisation le traitement afin de faire une représentation graphique de données qu'un arduino obtient comme un détecteur de. Dans ce cas, une cellule photoélectrique.Après obtenant une image de le
Comment couper Bullnose de perles en plaques de plâtre avec un Mider

Comment couper Bullnose de perles en plaques de plâtre avec un Mider

c'est comment nous couper des billes de cloison sèche rond qui se rencontrent dans un angle de 90 degrés. Nous allons utiliser un outil appelé un « Mider » à l'occasion de nos lignes afin d'avoir nos coins sans lacunes où ils se rencontrent. S'il exi
Gars : Comment traiter avec les filles sur internet.

Gars : Comment traiter avec les filles sur internet.

Après un membre ici s'est plaint des attaques et mesquin blagues sur le fait qu'elle était une fille sur ce site, j'ai pensé que cela pourrait être une bonne idée... Le thread d'origine.Donc voilà, un guide traitant des femmes sur l'internet, sans fa
Comment contrôler un jeu simple de traitement avec Arduino

Comment contrôler un jeu simple de traitement avec Arduino

Bonjour à tousDans ce Instructable, nous allons voir comment créer un « lien » entre une esquisse de traitement et une carte Arduino. Dans cet exemple, un module à ultrasons sera utilisé pour contrôler un avion dans un jeu simple. Encore une fois, ce
Post-traitement avec un GPS GeoExplorer3

Post-traitement avec un GPS GeoExplorer3

collecte des caractéristiques avec n'importe quelle unité de système de positionnement Global (GPS) peut être utile et intéressant. La plupart des gens rencontrent les unités de GPS après tout les collecte de données et le traitement est terminé. Nou
Voiture R/C contrôles de traitement avec les modules XBee

Voiture R/C contrôles de traitement avec les modules XBee

cette instructable est une modification de ma présentation à la communauté Processing Chicago au laboratoire de visualisation électronique (EVL), Université de l'Illinois à Chicago le 1er octobre 2012. Dans la rubrique desSérie de la bibliothèque de
À l’aide de traitement avec Ember

À l’aide de traitement avec Ember

Une des choses qui m'intéresse le plus sur braise, est le fait que les fichiers d'entrée sont une pile de png. Cela signifie que l'on peut nourrir essentiellement les images imprimante sans la nécessité d'organe solide modélisation, LSE ou trancher !
Traiter avec pâte à Pizza

Traiter avec pâte à Pizza

pâte à Pizza peut être délicat, avouons-le. Dérouler avec un rouleau à pâtisserie peut produire une pizza acceptable bien que plat, et si vous avez trop travailler la pâte sera simplement d'étirement retour comme un élastique (pas de mention avoir du
Simple astuce de Dernière Minute ou sac de bonbons traiter avec motif

Simple astuce de Dernière Minute ou sac de bonbons traiter avec motif

rendre cette dernière minute facile truc sac de bonbons en aucun temps du tout !  Utilisez ce modèle super simple, feutres, colle et un peu de couture pour concocter un sac de friandise pour votre soir de l'Halloween.  Si vous n'avez pas une machine
Traiter avec un froid

Traiter avec un froid

je me suis réveillé hier ne se sentant pas bien, et j'ai vite compris, j'ai eu un rhume. Hiver et le printemps sont les capitols froids de l'année, afin de vous préparer à ce qui est à venir, voici quelques conseils pour traiter un rhume !Étape 1: sy
Traiter avec Raw bords de tissu de toile de jute

Traiter avec Raw bords de tissu de toile de jute

si vous avez déjà travaillé avec toile de jute, vous remarquerez que parfois simplement en découpant la forme de votre chemin de table, napperon ou petit tapis toujours ne fait pas l'affaire. Parce que les bords ne sont pas cousus, ils vont être effi