Secuencias de comandos de procesamiento con MIDI (3 / 12 paso)

Paso 3: Configuración y conseguir inteligente

Si escribes bastantes bocetos de procesamiento que dependen algunos ajustes iniciales que necesita ajustar para diferentes ejecuciones es probable hacer lo que hice y funcionan de cierta manera para cargar dicha configuración desde un archivo de configuración. Sospecho que este es el tipo de codificación que cae en la categoría de "¿Qué tan difícil puede ser?" ya que no creo que molestaba incluso a buscar una solución existente. En cambio hice algo muy sencillo y había ajustado con el tiempo.

Mi primera clase de configuración cargado un archivo de texto de los datos / carpeta y el nombre analizado: valor cadenas en un HashMap. Trabajó muy bien para la mayoría de las cosas. Grandes en las entradas solo elemento simple, pero no tan bueno si desea definir una lista de valores.

Llegué a saber si podría utilizar YAML o JSON para que un archivo de texto podría representar estructuras más complejas. Resulta que el proceso te da JSON incorporado manejo. Perfecto.

Para el bosquejo de MIDI se actualizó la configuración para utilizar JSON. Carga un archivo JSON y obtener los valores sobre todo es fácil pero no totalmente transparente. Usted puede conseguir en diferentes tipos de datos usando getInt, getString, getFloat, etc., pero si quieres agarrar una lista de artículos necesita getJSONArray y entonces necesita sacar cada elemento como el tipo correcto.

Para esta configuración he decidido que en la mayoría de los casos será cualquier lista de elementos del mismo tipo. Así que añadido getStrings, getFloats y getInts.

Ahora en vez de poner los índices de dispositivos en mi bosquejo podría utilizar un archivo de configuración. JSON no es tan simple como nombre: valor, pero no está demasiado lejos de eso. Un poco overkill para archivos cortos, muy útiles para datos estructurados más complejos.

Me voy a los detalles en ese código aquí. Puedes leer más sobre ello aquí.

Ese primer esbozo de la demostración demostró una forma de crear un objeto MidiBus. Hay otra manera, y no sólo es más amigable pero se presta a la mejor configuración. MidiBus permite especificar qué dispositivos a utilizar por su nombre. El nombre tiene que coincidir en lo que se muestra en la lista de dispositivos disponibles, que tal vez necesite ejecutar primero MidiBus.list para ver lo que está ahí.

Una vez que sabes los nombres de las cosas el archivo de configuración puede usar texto legible en lugar de números crípticos.

También puede pasar un nombre para el bus para que después, cuando se invoca a midiMessage, su código puede (si quieres) se comportan forma diferente según el origen del mensaje.

Ahora el bosquejo de la versión parcial de programa (menos el código de Configgy.pde) tiene este aspecto:

 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; } } 

El archivo config.jsi (en los datos / carpeta) es este:

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

Tendrás que ajustarlo a lo que tienes disponible para utilizar los dispositivos.

Cuando se ejecuta el dibujo, se cargará su archivo de configuración y el código intentará llenar un ArrayList con instancias MidiBus basadas en los nombres de dispositivo proporcionado.

Tenga en cuenta que en este ejemplo el uso de una lista de matrices: el código no es molestando con las variables de instancia específicas para cada instancia de microbús; Este código no siempre hacer referencia a esas instancias.

El controlador de eventos midiMessage se llama no importa cuál de estos dispositivos está enviando el mensaje. El controlador se pasa el nombre de autobús así que usted puede, si lo desea, tiene el código de tomar diferentes medidas dependiendo de la fuente del mensaje MIDI.

Si te estás preguntando por qué molestarse agregar los casos de autobuses a una lista si nunca van a ser utilizados, la razón es que, sin algún tipo de asignación persistente los casos desaparecerá una vez que ha completado la instalación. Una vez que se han ido, ya no será llamado al controlador de eventos de mensaje MIDI.

Si usted quería el código para hacer referencia a cualquiera de estos casos podría considerar usar un HashMap para sostenerlas para que pudiera recuperar dispositivos específicos por nombre.

Artículos Relacionados

Fotocélula de reaccionar a la luz como un ojo. un proyecto de introducción para el uso de procesamiento con Arduino

Fotocélula de reaccionar a la luz como un ojo. un proyecto de introducción para el uso de procesamiento con Arduino

En este proyecto se puede ver un ejemplo sencillo del uso de procesamiento para hacer una representación gráfica de los datos que un arduino recibe como entrada de un sensor. En este caso una célula fotoeléctrica.Después de obtener una imagen de ojo
¿No coser bufanda de secuencia de comandos

¿No coser bufanda de secuencia de comandos

coser es genial y divertido y maravilloso y todo eso, pero a veces, no sólo desea preparar algo rápido y fácil, sin preocuparse si vas a coser sus costuras al revés y revés? Porque todos tenemos esos días. Diseñar algo bonito siempre no requiere cose
Pasos de instalación de servidor para ejecutar PHP medios compartir secuencias de comandos en 2015

Pasos de instalación de servidor para ejecutar PHP medios compartir secuencias de comandos en 2015

¿Gustaría que tener un Youtube como sitio de los medios de comunicación? Hay un puñado de scripts PHP que hacer precisamente eso. Algunos o algunas o libre. Sin embargo estos scripts todos dependen más vieja versión del software y Linux para funciona
Cómo utilizar autohotkey y escribir secuencias de comandos básicos para él.

Cómo utilizar autohotkey y escribir secuencias de comandos básicos para él.

En este instructable, usted aprenderá cómo utilizar autohotkey y cómo crear secuencias de comandos básicos.Paso 1: Descargar e instalar Autohotkey En primer lugar, debe ir aquí y descargar Autohotkey. Instalación y puesta en marcha.Paso 2: Vamos a ap
Ilustrador de secuencias de comandos para un láser de corte gira cartera

Ilustrador de secuencias de comandos para un láser de corte gira cartera

Adobe Illustrator no es sólo una interfaz gráfica. también puede aceptar scripts en un lenguaje llamado JSX, que es muy similar a Javascript. Para este proyecto, tomamos ventaja de las capacidades de secuencias de comandos de Javascript para hacer un
Cómo agregar secuencias de comandos a RSBot

Cómo agregar secuencias de comandos a RSBot

Hola,hoy mostrará usted cómo agregar un script a RSBot.Esto es muy simple y no tendrá ese tiempo.Paso 1:1) se reúnen artículos necesarios Se necesita lo siguiente:1) Java Development Kit - DL -
Secuencias de comandos de visual basic trucos (2)

Secuencias de comandos de visual basic trucos (2)

visual basic scripting de secuencia de comandos que tiene el potencial para hacer cualquier función física que cuenta con una computadora. voy mostrando dos trucos de vbsVBS por cierto, son guardados como w/e.vbs (en el sentido de w/e decirlo que qui
Edison de Intel ejecutar secuencia de comandos Python

Edison de Intel ejecutar secuencia de comandos Python

Bienvenida,En este instructable te enseñaré cómo conectarse a la placa Intel Edison por SSH y cómo crear y ejecutar un script de Python básico. Así que vamos a empezar!Paso 1: Componentes necesariosHardware:Necesita un equipo que ejecuta Windows 7 o
Cómo editar secuencias de comandos en la parte de la nube

Cómo editar secuencias de comandos en la parte de la nube

este instructable cubrirá los conceptos básicos de cómo hacer que un objeto e Inserte un guión existente.Paso 1: Construcción básica Parte de nube scripts están escritos en Javascript y actualmente se colocan en cualquier objeto creado mediante las h
Juego de guerra de secuencia de comandos por lotes

Juego de guerra de secuencia de comandos por lotes

Este es un juego de guerra de secuencia de comandos por lotes.Usted juega como un soldado en misiones¡ ACTUALIZACIÓN!Ahora se trata de la versión 1.2.Actualizaciones:. Añadido nivel 2.. Capacidad agregada a nombre de uno mismo.Se actualizarlo una vez
Procesamiento con un GPS GeoExplorer3 post

Procesamiento con un GPS GeoExplorer3 post

recoger características con cualquier sistema de posicionamiento Global (GPS) puede ser beneficiosa e interesante. Mayoría de la gente encuentre unidades GPS después de todo los recogida de datos y el procesamiento es completa. Estamos aquí para most
Control de dispositivos por comando de voz con arduino y android

Control de dispositivos por comando de voz con arduino y android

Este ible servirá preguntas como, cómo a los dispositivos de control por comandos de voz, reconocimiento de voz disponible en android.Todos los dispositivos androides viene con el reconocimiento de voz incorporado. Esto puede ser usado para convertir
¿Cómo? Bluetooth HC-05 módulo de comandos AT. Con botón y sin botón.

¿Cómo? Bluetooth HC-05 módulo de comandos AT. Con botón y sin botón.

¡ Hola mundo! Hoy hice un Tutorial sobre el módulo de Bluetooth HC-05 de múltiples fuentes.Porque hay diferentes tipos de módulos de HC-05. Y para algunos les funciona y para algunos no.Así que intento que mi mejor hacer uno que funcione para todos.P
Cómo controlar un juego sencillo de procesamiento con Arduino

Cómo controlar un juego sencillo de procesamiento con Arduino

Hola a todosEn este Instructable, veremos cómo crear un "enlace" entre un esquema de procesamiento y una tarjeta de Arduino. En este ejemplo, se utilizará un módulo de ultrasonidos para el control de un avión en un simple juego. De nuevo, este t