H Controlador MIDI USB en Arduino Desde el sandbox. Configurar el programa FL Studio para trabajar con datos midi externos. Diagrama de conexión de Arduino a dispositivos MIDI

A algunos músicos con conocimientos de electrónica, o ingenieros electrónicos a los que les gusta tocar música, les gustaría conectar su dispositivo MIDI a Arduino, pero no saben cómo hacerlo correctamente. Este proyecto ayudará a comprender este problema.


Primero, entendamos un poco qué es el MIDI. MIDI significa Interfaz Digital de Instrumentos Musicales o en ruso interfaz digital instrumentos musicales. EN código transmitido Esta interfaz puede cifrar los parámetros de volumen, clave, tempo y otras características de los instrumentos musicales. Los datos MIDI generalmente se transmiten a través de buses de cinco pasos con conectores redondos DIN 41524, también de cinco pines, como se muestra en el diagrama siguiente. Velocidad estándar transmisión de datos de tales interfaz serie es 31,25 kbit/s. La transmisión se realiza de forma unidireccional, es decir, en un sistema vinculado a MIDI instrumentos musicales Por ejemplo, los sintetizadores solo pueden transmitir datos a una unidad principal, como una consola de sonido envolvente o una computadora. Recuerde que los datos MIDI no son audio digitalizado, sino comandos y valores, como notas, parámetros de sonido, etc.


Componentes requeridos

  • Conector DIN/MIDI de 5 pines – 1 ud.
  • Optoacoplador 4n35 o equivalente – 1 ud.
  • Diodo IN914 o equivalente – 1 ud.
  • Resistencia 220 Ohm – 1 ud.
  • Resistencia 560 Ohm (posibles 220 y 230 en secuencia) – 1 ud.
  • Placa de montaje – 1 ud.
  • Arduino – 1 ud.
  • Cable MIDI – 1 ud.
  • Dispositivo MIDI – 1 ud.

Esquema Conexiones Arduino a dispositivos MIDI




El diagrama creado con fritzing muestra con cierto detalle las conexiones de los componentes. Aquí todo está conectado de forma bastante sencilla y sencilla. En el corazón del circuito vemos un chip óptico. aislamiento galvánico. Este optoacoplador es necesario para el aislamiento galvánico de la línea MIDI del circuito Arduino. Sin él, puedes quemar la entrada de Arduino. EN en este caso Se tomó un optoacoplador de la serie 4n35, compuesto por un LED y un fototransistor, pero en su lugar servirá cualquier otro optoacoplador de características similares;


Tenga cuidado al conectar el diodo, observe la polaridad. este esquema fue creado teniendo en cuenta los estándares y características de la interfaz MIDI. El diagrama del circuito original se puede encontrar aquí http://www.midi.org/techspecs/electrispec.php


Código (boceto para Arduino)


Este es un script de interacción MIDI simple que utiliza la biblioteca MIDI.h (script MIDI CALLBACK). Comprueba si ha llegado la señal NoteOn (nota) y pasa al área de procesamiento adecuada. Puede pegar su código en esta área.


#incluir MIDI_CREATE_DEFAULT_INSTANCE(); void handleNoteOn(canal de bytes, paso de bytes, velocidad de bytes) ( // lugar para su código cuando se recibe una señal) void handleNoteOff(canal de bytes, paso de bytes, velocidad de bytes) ( // lugar para su código cuando no hay señal) configuración vacía() ( MIDI.setHandleNoteOn(handleNoteOn); MIDI.setHandleNoteOff(handleNoteOff); MIDI.begin(MIDI_CHANNEL_OMNI); ) bucle vacío() ( MIDI.read; )

Hace mucho que quiero despertar al compositor que llevo dentro y empezar a crear el mío propio. musica electronica. Sin embargo, estaba (por decirlo suavemente) desanimado. precios altos en controlador midi s. Pero después de buscar en Internet, se me ocurrió la idea de crear mi propio controlador, usando ArduinoUno y pinturas conductoras!

Empecemos)

Paso 1: Selección de piezas

Puedes desviarte ligeramente del material presentado y el controlador MIDI que ensamblaste seguirá funcionando (por “desviarte ligeramente” quiero decir que puedes instalar una resistencia con un valor ligeramente diferente o dejar uno de los pines desconectado).

De la electrónica necesitamos:

  • 1 Arduino Uno con cable USB;

  • 1 frasco de pintura conductora;

  • 1 placa de montaje de 5x7 cm;

  • 3 botones;

  • resistencias con una resistencia de 2,2 kOhm;

  • 1 LED;

  • resistencias con una resistencia de 10 kOhm;

  • 1 sensor LDR;

  • resistencias con una resistencia de 4,7 kOhm;

  • 1 jersey;

  • 12 resistencias de 2,7 MΩ;

  • 30 alfileres;

  • 12 alfileres doblados;

  • 12 adaptadores;

  • 12 clips.

Además de la electrónica, también necesitarás las siguientes herramientas:

  • Soldador y soldadura;
  • cortadores de alambre;
  • Soporte para soldar piezas (tercera mano);
  • Multímetro;
  • Varios alambres y/o alambre metálico fino.

Paso 2: soldar los pines

Comencemos a crear el tablero soldando los pines. vamos a publicar pasadores doblados en el centro de la primera fila del tablero. Posteriormente servirán como pines "sensibles" a los que se conectará el teclado.

Después de instalar los pasadores, observe que los pasadores cortos sobresalen del tablero. Los presionamos para que quede todo al ras. Ahora los soldamos e inmediatamente verificamos las conexiones en busca de cortocircuitos.

Nota: No suelde los pines por mucho tiempo, de lo contrario se calentarán y derretirán el plástico.

Para siguiente etapa, coloque los peines rectos en las ranuras arduino. Instalemos la placa encima de los pines que se insertan en el Arduino. esta acción solicitud requerida poco esfuerzo porque los pines no están perfectamente alineados con los agujeros del tablero.

Una vez que haya instalado correctamente el tablero en los pasadores, asegúrese de que los pasadores estén al ras con el borde superior del tablero. Después de lo cual se pueden soldar.

Paso 3: soldar los puentes

Ahora retiremos la placa del Arduino y le damos la vuelta. reverso. Soldemos los puentes a los que luego se unirán los componentes. Hay dos maneras de hacer esto:

  • Llene todos los orificios necesarios con soldadura y luego conéctelos entre sí.
  • Utilice alambre fino.

Te aconsejo que utilices el segundo método porque es más sencillo y rápido. Si elige este método, coloque el cable en el tablero como se muestra en la imagen.

  • El punto rojo significa soldar el cable en el agujero.
  • Punto amarillo: conecte el cable delgado al pin en el otro lado del tablero (como en la tercera imagen).

Como puedes ver, estropeé un poco la esquina inferior izquierda cuando apliqué demasiada soldadura, ¡así que ten cuidado!

Consejo: si no tienes un cable fino, utiliza trozos de los cables de las resistencias que estás utilizando.

Paso 4: suelde las resistencias capacitivas táctiles

Instalamos los componentes, a saber 2.7 MOhmresistencias, que realizará funciones sensoriales-capacitivas.

Nota: Si quieres saber más sobre fundamentos teóricos y aplicación práctica de los sensores táctiles capacitivos, le aconsejo que lea los siguientes enlaces:

coloquemos uno 2.7 MOhmresistor desde la parte inferior del pasador doblado más a la derecha y empuje las patas a través de los agujeros (como en la primera imagen). Ahora volteemos el tablero y empujemos un cable de resistencia hacia el siguiente orificio (como se muestra en la segunda imagen). Suelde la pata inferior de la resistencia al orificio y la pata superior de la resistencia al terminal pin. Luego adjuntaremos 7 cm de alambre en este pin (como se ve en la tercera imagen).

Repitamos el proceso con todas las resistencias y cables, soldándolos en su lugar. Las patas inferiores de las resistencias deben formar una conexión larga.

Consejo: Elija colores alternos para los cables; esto facilitará las conexiones en pasos posteriores.

Paso 5: soldar los botones

Empecemos colocando los botones y resistencias en el tablero, como en la primera y segunda imagen. En mi caso usé 2.2 resistencias kOhm, pero puedes usar cualquier resistencia con un valor entre 2kOhm y 10KOhm.

Démosle la vuelta al tablero y soldemos todo en su lugar. La imagen 3 explica cuál varias conexiones tendrás que hacer:

  • punto azul: indica la pata del botón que debe soldarse al tablero;
  • punto rosa: indica la pata de la resistencia, que debe soldarse a la placa;
  • la línea roja significa que debes soldar dos puntos en una conexión;
  • la línea negra indica el cable que irá desde una pata del botón a través del orificio en el tablero, que luego se conectará al pin del otro lado.

Si todo está soldado correctamente, los dos botones más a la izquierda te permitirán cambiar de octava., mientras que la mayoría botón derecho permitiráSensor LDR.

Paso 6: Suelde el LDR y el LED

Una vez soldados los botones, continuamos instalando el LDR, LED y las resistencias correspondientes. Antes de hacer esto, sería prudente experimentar con los valores de las resistencias que irán al LED. Quizás mi calificación sea demasiado alta para encender su LED. Experimenta un poco para encontrar valor correcto resistor.

Consejo: cualquier resistencia entre 330ohmios y 5kOhmiosvoluntad buena decisión por 5milímetrosCONDUJO.

Ahora organizaremos el LED, LDR y las resistencias ( 4.7 K paraLDR) V. en los lugares correctos. Démosle la vuelta al tablero y soldemos todo. La tercera imagen explicará las diferentes conexiones que deben realizarse:

  • los puntos marrones son pines LDR que deben soldarse a la placa;
  • el punto rosa es la pata de la resistencia que debe soldarse a la placa;
  • los puntos naranjas son pines de LED que deben soldarse a la placa;
  • franja roja: debe soldar dos puntos en una conexión;
  • la raya negra es el cable que irá desde la salida de la resistencia a través del orificio de la placa, que luego se conectará al pin.

Nota: Antes de soldar el LED, asegúrese de que la polaridad del LED sea correcta. Positivo salida LED debe estar conectado a una resistencia y el terminal negativo a tierra.

Paso 7: prueba todas las conexiones

Ahora es un buen momento para comprobar si las conexiones de los botones, LDR y LED están soldadas correctamente. Esta es la última oportunidad para corregir los errores, le aconsejo que descargue el código adjunto y ejecute el programa. y descargar Código_de_dispositivo_de_prueba_arduino a la placa Arduino.

Si todo es exitoso y se completa la prueba, puede pasar al siguiente paso. De lo contrario, verifique nuevamente las conexiones soldadas en la placa. Es mejor tener un multímetro a mano, lo digo por mi amarga experiencia.

Paso 8: Terminar el tablero

Comencemos instalando los cables en los agujeros, como se ve en la primera imagen. Es conveniente utilizar dos cables de diferentes colores para este paso.

Démosle la vuelta al tablero y cortemos los cables a la longitud requerida. Sueldelos a los pines que van a los conectores Arduino. Antes de empezar a usar Controlador MIDI, primero debe probar sus conexiones utilizando un boceto de prueba. Sube el boceto, abre puerto serie y toque los pines "sensibles" del tablero. Si ve el texto "La nota x está activa" para cada pin cuando lo toca, todos los pines están funcionando correctamente.

Paso 9: convierta Arduino a un dispositivo MIDI

Una vez que la placa esté lista, es hora de convertir el Arduino en un controlador MIDI que será reconocido por programas de música como Ableton y Fl Studio o incluso otros dispositivos MIDI. El proceso consta de dos pasos:

  1. Cambie el firmware actual del Arduino Uno a programas compatibles con MIDI;
  2. Sube el boceto MIDI a Arduino.

Empecemos por el primer punto. Según la condición, se carga en Arduino. firmwarePuerto serie USB, que permite al Arduino intercambiar mensajes con la PC y IDE de Arduino. Con un nuevo programa DualMoco, se agregará un segundo modo, que permitirá a Arduino actuar como dispositivos midi.

Usaremos el programa FLIP y seguiremos las instrucciones para cambiar el firmware de Arduino. Encontrará un archivo de trabajo en el archivo de la carpeta Firmware: el archivo DualMoco.hex.

Después de descargar nuevo firmware, vuelva a conectar Arduino a la PC. Si todo va bien, el Arduino IDE no debería detectar el Arduino porque nuevo programa está en modo ( midimodo). Abierto programa de musica que sea capaz de grabar MIDI y comprobar que el Arduino lleva el nombre midi/ MOCOparaLUFA se mostró encima de la configuración MIDI, como puede ver en la primera imagen.

Paso 10: hacer los preparativos finales

Peculiaridad DualMoco es que tiene un segundo modo - Puerto serie USB, que le permite cargar bocetos desde el IDE de Arduino, como con el firmware normal. Para poner el Arduino en el segundo modo, conecte dos pines ISCP juntos como se muestra en las imágenes 1 y 2. Puede utilizar un trozo de cable o un pequeño cable de puente como se muestra en las imágenes. Ahora desconecta Cable USB durante unos segundos desde el Arduino y vuelva a conectarlo, el Arduino debería aparecer en el IDE de Arduino.

Nota: Cuando desee cambiar del modousb-puerto serieVmodo MIDI, retire el puente dePines ISCP como se muestra en la tercera imagen y vuelva a conectarArduino a PC.

Es hora de subir el boceto actual al Arduino, Arduino_Final_Código. Descárgalo, convierte Arduino a USBpuerto serie modo y descargar el código. Si es necesario sintonia FINA valor umbral, experimente con los valores LÍMITE Y RES. Una vez que todo funcione como se esperaba, cambie línea actual 17, pág:

midiMode booleano = falso; // si midiMode = false, Arduino actuará como un dispositivo USB a serie

midiMode booleano = verdadero;// si midiMode = true, Arduino actuará como un dispositivo MIDI nativo.

Después de ingresar el código últimos cambios, es hora de probar un programa de música que admita dispositivos MIDI. Primero, cambiemos el Arduino al modo MIDI, para esto:

  1. Carguemos el código final en Arduino.
  2. Retiremos el cable USB del Arduino.
  3. Cambie el Arduino al modo MIDI quitando el puente de los pines ISCP.
  4. Instalemos el cable USB en Arduino.

Si todo ha ido bien, abre el programa de música y empieza a tocar los pines. Los sonidos mágicos deben sonar...

Paso 11: Suelde los clips en los puentes.

Una vez que la placa Arduino esté completamente completa, es hora de centrarse en el teclado y cómo conectarlo a la placa. Hay un millón de formas de hacer esto, pero elegí clips que se sujetarían a papel pintado (son fáciles de asegurar y se pueden reutilizar).

El proceso de soldar clips a cables es bastante simple:

  1. Corta el enchufe de un lado del cable;
  2. Pelamos el aislamiento del cable 5 mm;
  3. Suelde el cable pelado a un clip;
  4. Repita para los 12 clips.

Nota: Las grapas no deben estar recubiertas con ningún revestimiento (pintura o plástico).

Paso 12: pintar la plantilla

Aunque puedes jugar en Arduino teclado midi con solo tocar los clips, es mucho más divertido hacer tu propia plantilla y usarla. Coloreé la plantilla impresa. La plantilla está en el archivo del proyecto.

Colorear la plantilla es bastante sencillo, sólo asegúrate de dejar espacio entre líneas y utilizar los colores adecuados, de lo contrario no funcionará. Una vez que la pintura se haya secado, coloque clips en las "teclas" y podrá comenzar a hacer música.

¡Gracias por su atención!)

No era controlable por el usuario, PERO aprendimos una lección esencial: cómo enviar una señal midi desde un Arduino desde un puerto midi a nuestra computadora.

Hoy aprenderemos cómo hacer un archivo . Puede controlarse mediante perillas (potenciómetros), faders, botones o, en el ejemplo del que hablaremos, interruptores.

En primer lugar, quiero agradecer a Bharat de Randumb por brindarme esta información. Asegúrese de visitar su sitio para ver más proyectos increíbles.

Primero, Empezaremos haciendo funcionar este controlador midi. a través de usb de serie. Una vez que lo consigas funcionando perfectamente, podrás aplicar las habilidades aprendidas en mi artículo anterior sobre el envío de señales midi.

¡Déjame saber qué piensas de esta compilación en la sección de comentarios a continuación!

Curso recomendado: El curso de controlador MIDI DIY. Si quieres convertirte en un maestro en hacer tu propio Controlador personalizado, ¡este es el curso para ti! Equipado con 11 módulos llenos de acción que incluyen imágenes descargables, esquemas, código de muestra y bibliotecas. Incluso si eres un músico aficionado que no sabe nada sobre circuitos o programación, este curso lo explica en un sentido comprensible.

Qué necesitas

El hardware necesario es bastante básico. Si eres Si va a convertir este proyecto a midi completo, también necesitará algunos puertos midi.

En este ejemplo usamos interruptores, ¡pero siéntete libre de usar cualquier otra cosa! Los botones funcionan exactamente igual.

Un LED, una placa de pruebas y un gabinete son opcionales. Si todavía estás en la fase experimental de tu caos midi, puedes salirte con la tuya sin ellos.

Hardware

  • ArduinoUno
  • 2x interruptores, potenciómetros, botones o atenuadores
  • Cables de repuesto
  • (Opcional) LED
  • (Opcional) Tabla de pan
  • (Opcional) Gabinete

Software

  • IDE de Arduino ( Enlace)
  • Convertidor de serie a MIDI ( Enlace)
  • Midi YOKE Puerto MIDI virtual ( Enlace)
  • MIDI-OX (para monitorear señales midi) ( Enlace)

esquemas

Aquí está el diagrama de este proyecto. Tenga en cuenta que el esquema variará si decide implementar un puerto midi en este proyecto.

En el esquema se utiliza una placa de pruebas. Aunque figura como un artículo opcional, recomiendo comprar uno. Son baratos y facilitan muchísimo la creación de prototipos.

Código

#define LED 13 // pin LED en la placa Arduino

#definir interruptor1 10 // 1er interruptor

#definir switch2 9 // 2do interruptor

#definir MIDI_COMMAND_CONTROL_CHANGE 0xB0

#definir MIDI_COMMAND_NOTE_ON 0x90

#definir MIDI_COMMAND_NOTE_OF 0x80

int switch1LastState = 0;

int switch1CurrentState = 0;

int switch2LastState = 0;

int switch2CurrentState = 0;

// el formato del mensaje a enviar Vía serial

comando uint8_t;

canal uint8_t;

void flashLed(byte num) ( // Función de parpadeo básica

para (byte i=0;i

escritura digital (LED, ALTO);

escritura digital (LED, BAJO);

pinMode(LED, SALIDA);

pinMode(interruptor1,ENTRADA);

pinMode(interruptor2, ENTRADA);

Serie.begin(115200);

t_midiMsg midiMsg1; // mensaje MIDI para el Switch 1

t_midiMsg midiMsg2; //mensaje MIDI para el interruptor 2

switch1CurrentState = digitalRead(switch1);

switch2CurrentState = digitalRead(switch2);

si (switch1CurrentState == 1)(

if(cambiar1ÚltimoEstado == 0)(

midiMsg1.msg.command = MIDI_COMMAND_CONTROL_CHANGE;

midiMsg1.msg.canal = 1;

midiMsg1.msg.data2 = 1;

midiMsg1.msg.data3 = 0; /* Velocidad */

/* Enviar notas el */

Serial.write(midiMsg1.raw, tamaño de(midiMsg1));

switch1LastState = switch1CurrentState;

si (switch2CurrentState == 1)(

if(cambiar2ÚltimoEstado == 0)(

midiMsg2.msg.command = MIDI_COMMAND_CONTROL_CHANGE;

midiMsg2.msg.canal = 2;

midiMsg2.msg.data2 = 2;

midiMsg2.msg.data3 = 0; /* Velocidad */

/* Enviar notas el */

Serial.write(midiMsg2.raw, tamaño de(midiMsg2));

switch2LastState = switch2CurrentState;

Convirtiendo tu Arduino en un dispositivo midi real

Como mencioné anteriormente, puedes aplicar mis conocimientos para convertir este proyecto en un verdadero controlador midi.

Bharat tenía una forma interesante de convertir tu Arduino en un dispositivo midi sin la necesidad de un puerto midi.

Así es como funciona:

Básicamente, haremos que Arduino se muestre como un dispositivo midi HID.

Esto es posible instalando firmware midi en el chip Atmeg8u2 ​​de tu Arduino. Tenga en cuenta que utilizar este método será complicado si planea regresar y revisar su código. Tendría que reinstalar el firmware anterior y luego volver al firmware midi nuevamente.

Notas finales

¡¡voilá!!

Esperemos que a estas alturas tu controlador midi esté funcionando completamente.

No dude en dejar un comentario a continuación si no puede hacer que su controlador midi Arduino funcione correctamente. ¡Estaré encantado de responder!

La mayoría de los artículos en Internet tratan sobre la fabricación de teclados, controladores, controles remotos, etc. se basan en el uso de conectores MIDI, cuya conexión a un ordenador moderno puede resultar problemática. Las tarjetas de sonido más antiguas tenían un puerto de juego al que se podía conectar un joystick o un dispositivo MIDI:

Sin embargo, todas las placas base nuevas vienen con un controlador de sonido incorporado y las tarjetas de sonido a menudo carecen de la capacidad de conectar dispositivos MIDI.
Todo lo que queda es comprar un teclado MIDI moderno, una consola de DJ, etc. con una salida USB para conectar a una computadora, o comprar/soldar un adaptador, o comprar una tarjeta de sonido especial con la capacidad de conectar dispositivos MIDI. Comprar, por supuesto, no es un problema, pero no vinimos a este sitio para eso, ¿verdad?

En este artículo quiero mostrar cómo puedes usar un controlador Arduino económico para hacer un teclado MIDI simple con una conexión USB para 8 teclas y una rueda de desplazamiento.

Entonces usé:
Controlador Arduino UNO
8 uds. botones
8 resistencias 10 kOhm
codificador rotatorio 25LB22-Q
tablero y puentes

El diagrama de conexión es el siguiente:

Para conectarme, utilicé la opción más simple: 1 tecla - 1 entrada. Sin embargo, con un mayor número de teclas, diferentes controladores, etc. Puede que no haya suficientes entradas, por lo que tendrás que utilizar la lectura de datos ya sea a través de entradas analógicas (agregando resistencias de diferentes valores) o mediante multiplexación. Sin embargo, si conecta varias teclas a la entrada analógica, pueden surgir problemas al leer el estado cuando se presionan varias teclas simultáneamente. Por tanto, en mi opinión, la multiplexación es una opción más aceptable.

softwarearduino

No consideraré la estructura de los datos MIDI, porque... esto se describe en el artículo:

El codificador está conectado a las entradas de interrupción de hardware; no consideraré una descripción de cómo trabajar con él, porque... El programa es sencillo y está extraído del sitio web oficial de Arduino.

En este proyecto, el codificador se utiliza como rueda de desplazamiento para cambiar la rueda de modulación, pero se puede reasignar para otros fines (inflexión de tono, etc.).

Los datos MIDI del codificador, del Arduino, se envían con la siguiente línea:
noteOn(0xB0, 0x01, codificador0Pos);
donde 0xB0 es el mensaje del controlador (cambio de control)
0x01 - código del controlador (en nuestro caso Modulación)
encoder0Pos: valor del controlador (en nuestro caso 0-127).
Al cambiar los códigos de los controladores, puede utilizar la rueda de desplazamiento (codificador) para una variedad de controladores.

También vale la pena mencionar Pitch Bend. De la especificación MIDI se deduce que es necesario enviar un mensaje de tres bytes: 0xE0 (código Pitch Bend), MSB (byte alto), LSB (byte bajo).

Los dos bytes externos almacenan un valor de paso de 14 bits que puede oscilar entre 0...16383 (0x3FFF). El medio es 0x2000, todo lo que esté por encima de este valor cambia el tono hacia arriba; si es más bajo, el tono cambia hacia abajo.
En el código del programa, comenté las líneas si de repente quieres usar Pitch Bend en lugar de modulación (la mitad del valor, descomposición en 2 bytes, etc.)

El código de detección de pulsación de tecla incluye tres estados: se presiona una tecla, se mantiene presionada una tecla y se suelta una tecla. Esto se hizo para poder transmitir el valor de la duración de la pulsación de una tecla. Si esto no es necesario, puede dejar solo un estado (presionar una tecla), el programa en este caso se simplificará significativamente.
Para manejar el estado de cada una de las ocho claves, se utiliza el siguiente código:

If (buttonState_C == HIGH && note_C_send_on == false) // Tecla presionada ( noteOn(0x90, note_C, 0x7F); note_C_send_on = true; // Comando Note On enviado note_C_send_off = false; // Comando Note Off no enviado) else if (buttonState_C == HIGH && note_C_send_on == true) // Si se mantiene presionada la tecla ( noteOn(0x00, note_C, 0x7F); note_C_send_on = true; note_C_send_off = false; ) si no (buttonState_C == LOW && note_C_send_off == false) // Si se suelta la tecla ( noteOn(0x90, note_C, 0x00); note_C_send_on = false; note_C_send_off = true; encoder0Pos = 0; // Devuelve la posición de la rueda a cero) ....... ..... .. ... .... // Función para enviar un mensaje MIDI al puerto serie void noteOn(int cmd, int pitch, int speed) ( Serial.write(cmd); Serial.write(pitch); Serial. escribir (velocidad); retraso (20);

Tenga en cuenta que si se utiliza Pitch Bend, entonces será necesario devolver encoder0Pos no a cero, sino a 0x2000 (o es mejor configurar define al comienzo del programa).

Entonces, se ensambla el circuito, se carga el boceto en el controlador, iniciamos Serial Monitor, cambiamos la velocidad de transmisión a 115200 y presionamos las teclas o giramos el codificador y miramos los valores.
Si todo está bien, pasa a la siguiente parte. Diré de inmediato que para mí resultó ser el más problemático, y si no hubiera encontrado un convertidor USB -> Midi virtual, este artículo no habría existido.

Software para PC (Windows)

Para recibir datos a través de USB virtuales Puerto COM desde Arduino y transferirlos a cualquier programa secuenciador MIDI que necesites. utilidad especial: Serial MIDI Converter V2D (sitio de oficina)

El programa es multiplataforma, a mí me funcionó bajo Windows 7 x64, aunque con algunos problemas.

Lo lanzamos, seleccionamos Puerto USB, velocidad en baudios (115200) y puerto de entrada MIDI y puerto de salida MIDI.

Ahora, todos los datos MIDI que llegan al puerto COM virtual USB 12 se redirigen al puerto MIDI Yoke 6 (para crear puertos MIDI virtuales, usé programa midi Yugo). Puede redirigirlos a Microsoft GS Wavetable Synth y otros puertos.
El programa debe estar encendido en todo momento. Cuando presiona las teclas o gira la perilla del codificador, el indicador Serial RX en la parte inferior debería parpadear.

Para mostrar visualmente los datos MIDI entrantes desde el puerto, encontré muy útil el programa MIDI-OX (sitio de la oficina):

Tenga en cuenta que en la configuración de Dispositivos MIDI debe configurar el puerto de entrada MIDI.

Ahora, cuando presione teclas de notas o gire la rueda, verá datos MIDI en Monitor-Output.

Eso. Con la ayuda de software y hardware, pudimos hacer en el controlador Arduino más simple Teclado MIDI con transferencia de datos a una computadora para su posterior procesamiento, por ejemplo en Cubase, c. incluido en tiempo real.
Residencia en este proyecto puedes crear una consola de DJ, un teclado MIDI completo, etc.

A continuación puede descargar el boceto INO, Serial MIDI Converter V2D, MIDI-OX y MIDI Yoke




Arriba