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

Paso 2: Un bosquejo simple

Se trata de un simple bosquejo demuestran comportamiento básico y comprobar que funcionan las cosas.

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

Primero un repaso rápido: cuando ejecutas esto debería ver (en la ventana de mensaje de procesamiento IDE, o en una ventana de terminal, dependiendo de cómo se ejecuta) una lista de salidas y entradas MIDI disponibles. En mi caso yo he conectado un teclado MIDI de QuNexus que le sucede a dado como entrada número 3, por lo que es el valor que asigna a midiDevice. (No importa qué dispositivo de salida seleccionado para solo lo establece en 1.)

El dibujo aparece una ventana que va a cambiar tonos de gris basado en la velocidad de cualquier MIDI no lo envía.

Si no está utilizando el dispositivo que envía velocidad variable y los efectos visuales no es terriblemente interesantes. Seguirá viendo aunque los detalles de una variedad println.

Lo que está sucediendo en este sketch

Primero para arriba necesita importar la biblioteca de MidiBus (themidibus) pero también una librería de Java (javax.sound.midi.MidiMessage) para que su código puede hacer referencia a objetos de MidiMessage (como ocurre en este dibujo).

Dependiendo de qué desea hacer con los métodos disponibles a través de MidiBus necesita importar otros archivos Java MIDI, pero para este ejemplo solo que uno va a hacer.

En la configuración el bosquejo inicializa el MidiBus instancia myBus. Cuando se crea una nueva instancia de una clase de MidiBus debe pasar en una referencia al dibujo actual (también conocido como esto), el índice del aparato para escuchar y el índice del dispositivo para enviar a.

Si quieres ver qué dispositivos están disponibles puede llamar MidiBus.list() que imprime (a STDOUT) las listas de MIDI de entrada y salida de dispositivos. El número que aparece a la izquierda de un elemento es el número de índice que se utiliza al crear la instancia del MidiBus.

Si quería ser realmente inteligente usted podría envolver esta en una especie de GUI (tal vez usando ControlP5) para que los dispositivos puedan establecer o cambiados después de que el bosquejo se inicia. En la práctica, sin embargo, los dispositivos están probable que cambiar de una carrera a la siguiente y les código basta probablemente para la mayoría de los casos. Otra opción es que tu bosquejo cargar estos valores desde un archivo de configuración de modo que si necesita cambiarlas es un poco más fácil de hacer.

Una vez que se ha creado una instancia de MidiBus y una ventana de dibujo adecuado, es tiempo para esperar algún MIDI de entrada.

Una variable global, currentColor, está en lugar para mantener el valor de escala de grises para el fondo del dibujo. Sorteo todos hace es utilizar este valor en la ventana de color. Sin embargo, si va a enviar notas MIDI el dibujo de los cambios de la ventana. ¿Dónde está ocurriendo el cambio?

MidiBus proporciona unos métodos de devolución de llamada. Estos son métodos que se invocan automáticamente bajo varias condiciones. Este esquema utiliza midiMessage, que se llama automáticamente cada vez que llega un mensaje MIDI.

Hay dos versiones de midiMessage; el otro tiene sólo un argumento para el mensaje MIDI. Este esquema utiliza una versión que incluye el sello de tiempo y el MIDI bus nombre para mostrar algunos de los detalles de MIDI que usted puede conseguir.

Tú decides lo que ocurre en este método. Para este boceto el código agarra algo de información acerca del mensaje de MIDI imprime y luego mira a la velocidad de nota. Si la velocidad es mayor que cero entonces ese valor se duplicó y asignado a currentColor.

¿Por qué omitir valores de cero? La especificación MIDI define mensajes para "Nota sobre" y "note off". Pero algunos dispositivos no molesten con "note off", en lugar de otro envía una "Nota sobre" el mensaje con una velocidad de cero.

Cuando primero estaba escribiendo este esbozo simplemente agarré la velocidad y utilizarla y vio que la pantalla fue negro a cuanto saqué mis dedos de las teclas de QuNexus. Viendo el println salida vi lo que estaba sucediendo: cero velocidad para "note off".

Cómo manejar esto depende de usted; sólo ten en cuenta que puede suceder.

Así que esto es absolutamente el bosquejo simple pero demuestra una idea clave: el bosquejo espera señales externas, responde a esas señales mediante la actualización de algunas variables, y cada pasada de sorteo utiliza el estado actual de las variables para hacer algo.

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