Arduino MIDI Foot Pedal Keyboard: 8 pasos

Arduino MIDI Foot Pedal Keyboard: 8 pasos

Tabla de contenido:

Anonim

El origen

Mi papa es musico Él puede tocar una multitud de instrumentos. Sin embargo, él solo tiene dos brazos, PERO también tiene piernas! Fue entonces cuando decidimos reutilizar los pedales de un viejo órgano y convertirlos en un teclado MIDI con arduino. Ahora puede tocar fácilmente la guitarra eléctrica y llenar el sonido vacío con excelentes notas de bajo producidas desde su Quadrasynth QS8.

Una introducción a MIDI

MIDI significa Interfaz Digital de Instrumentos Musicales. Como puede adivinar, realiza todas las operaciones digitalmente. MIDI no envía frecuencias de sonido como lo hacen los instrumentos. MIDI funciona generalmente con dos partes: un controlador y un sintetizador. El controlador es lo que manipula el músico y envía datos en serie al sintetizador.

El controlador MIDI no hace ningún sonido por sí solo. REQUIERE alguna forma de sintetizador. El sintetizador decodifica los datos en serie y produce un sonido basado en los datos dados.

Los datos MIDI generalmente se envían en tres partes: el canal MIDI (se pueden usar hasta 16 canales a la vez), la nota y la velocidad (básicamente el volumen de la nota o el volumen que desea que sea).

Suministros:

Paso 1: Materiales

Materiales

-Organ (para salvar pedales desde)

-Dos circuitos integrados ATmega328 con el cargador de arranque arduino

- Asientos para colocar los circuitos integrados en una vez soldados.

-Dos cristales de 16 MHz.

-Cuatro condensadores cerámicos de 22pF.

-Perche

-Fuente de alimentación y adaptador para ATmega ICs.

Resistencia de -220 ohmios

-Pulsar resistencias para los pedales.

- Cable MIDI o conector MIDI hembra.

-Ardino y cable USB (para programar el IC. Se puede usar un programador separado en su lugar)

-Computador para la programación.

-Soldador y soldador

- Pelacables y cortadores de cables.

-Potentiómetro (Potencialmente el pedal de volumen recuperado del órgano ¿ves lo que hice allí?)

-Al menos veintiséis conectores pin (rescatados del órgano)

-Cable

Ordené mis piezas de arduino, cristales, suministro de energía y condensadores de http://cutedigi.com. Use un adaptador de corriente de 12V común para alimentar la fuente de alimentación. No puedo imaginar este proyecto con mucha corriente, por lo que estoy seguro de que un adaptador de alimentación de 500 mA será suficiente.

Paso 2: Obtención de los pedales

¡Qué robo!

El órgano utilizado en este instructable es un órgano de Wurlitzer. ¡Mi papá lo encontró en craigslist y lo recogió por $ 25! Todo funcionó, pero no le importó el tono. Los pedales, sin embargo, eran perfectos. Hay veinticinco teclas y los interruptores están integrados en los pedales en lugar de montarse dentro del órgano con los pedales golpeando los interruptores. También tenga en cuenta cómo los interruptores utilizan imanes para conectar el interruptor. ¡Estos interruptores serán casi imposibles de desgastar! Considera tomar el pedal de volumen también. ¡Controla un potenciómetro, que es pertinente a nuestros intereses!

Este órgano tiene una versión interesante de un orador de Leslie. Eso podría ser usado para otro proyecto en otro día.

Paso 3: Hacer un Arduino Dual Stand-Alone

Los pedales elegidos en este proyecto tienen veinticinco notas. El ATmega 328 (el que yo uso) tiene en MOST 20 entradas digitales (incluido el uso de las entradas analógicas como entradas digitales). Una se usa para enviar los datos MIDI. Esto deja 19 entradas digitales para los pedales. En lugar de usar un AVR que tiene más entradas, me resultó más fácil comprar dos ATmega 328 y ejecutarlos juntos. Las entradas fueron divididas 13 en una y 12 en otra.

El cristal de 16 MHz está conectado a los pines 9 y 10 del IC. Un condensador también está conectado al pin 9 y luego a tierra, mientras que el otro al pin 10 y luego a tierra.

Suelde los asientos IC, la fuente de alimentación, los cristales, los condensadores y el conector hasta la placa perf. Imprime la foto del pinout ATmega Arduino. Escribe lo que hayas usado para etiquetar los cables del pedal en cada uno. Mi padre simplemente los etiquetó como las notas: C, C +, D, D +, E, etc. (+ significado #) Esto ayudará con el paso de programación. Envíe un cable de + 5V a un lado de todos los interruptores de pedal. Los cables de retorno de los pedales están conectados a las entradas digitales del IC. Asegúrese de incluir resistencias desplegables en las entradas para los pedales.

Cuando se conecta el cable MIDI a la placa, solo se usan tres pines de los cinco: + 5V, GND, y una transmisión en serie en el pin digital 1 (pin 3 en el IC). Se debe conectar una resistencia de 220 ohmios entre el + 5V y la salida MIDI para evitar dañar el sintetizador o el secuenciador MIDI.

El pin analógico 5 en ambos ATmegas está conectado al pin central de un potenciómetro. En mi caso, el potenciómetro estaba en el pedal del volumen del órgano. Los otros dos pines del potenciómetro están conectados a + 5V y GND.

La siguiente lista muestra el esquema. Por favor, disculpe la redundancia de volver a listar las partes.

----------------------------------------------------------------------------------------------------------------------------------------

Paquete de condensador de disco de cerámica C1 THT; tensión nominal 200V; capacitancia 22pF; tipo de condensador Ceramic C2 Ceramic Disk Capacitor paquete THT; tensión nominal 200V; capacitancia 22pF; tipo de condensador Ceramic C3 Ceramic Disk Capacitor paquete THT; tensión nominal 200V; capacitancia 22pF; tipo de condensador Ceramic C4 Ceramic Disk Capacitor paquete THT; tensión nominal 200V; capacitancia 22pF; tipo de condensador Ceramic DIN1 DIN-5 jack (MIDI) paquete THT; forma jack (hembra); pines 5 J1 Cabezal macho de doble fila genérico - paquete de 28 pines THT; tamaño de agujero 1.0mm, 0.508mm; fila doble forma ♂ (hombre); pasadores 28; espacio entre los pines 0.1in (2.54mm) R1 220 package Paquete de resistencias THT; tolerancia ± 5%; bandas 4; resistencia 220Ω; distancia entre pines 400 mil R3 390 package Paquete de resistencias THT; tolerancia ± 5%; bandas 4; resistencia 390Ω; distancia entre pines 400 mil R4 390 package Paquete de resistencias THT; tolerancia ± 5%; bandas 4; resistencia 390Ω; distancia entre pines 400 mil R5 390 package Paquete de resistencias THT; tolerancia ± 5%; bandas 4; resistencia 390Ω; distancia entre pines 400 mil R6 390 package Paquete de resistencias THT; tolerancia ± 5%; bandas 4; resistencia 390Ω; distancia entre pines 400 mil R7 390 package Paquete de resistencias THT; tolerancia ± 5%; bandas 4; resistencia 390Ω; distancia entre pines 400 mil R8 390 package Paquete de resistencias THT; tolerancia ± 5%; bandas 4; resistencia 390Ω; distancia entre pines 400 mil R9 390 package Paquete de resistencias THT; tolerancia ± 5%; bandas 4; resistencia 390Ω; distancia entre pines 400 mil R10 390 package Paquete de resistencias THT; tolerancia ± 5%; bandas 4; resistencia 390Ω; distancia entre pines 400 mil R11 390 package Paquete de resistencias THT; tolerancia ± 5%; bandas 4; resistencia 390Ω; distancia entre pines 400 mil R12 390 package Paquete de resistencias THT; tolerancia ± 5%; bandas 4; resistencia 390Ω; distancia entre pines 400 mil R13 390 package Paquete de resistencias THT; tolerancia ± 5%; bandas 4; resistencia 390Ω; distancia entre pines 400 mil R14 390 package Paquete de resistencias THT; tolerancia ± 5%; bandas 4; resistencia 390Ω; distancia entre pines 400 mil R15 390 package Paquete de resistencias THT; tolerancia ± 5%; bandas 4; resistencia 390Ω; distancia entre pines 400 mil R16 390 package Paquete de resistencias THT; tolerancia ± 5%; bandas 4; resistencia 390Ω; distancia entre pines 400 mil R17 390 package Paquete de resistencias THT; tolerancia ± 5%; bandas 4; resistencia 390Ω; distancia entre pines 400 mil R18 390 package Paquete de resistencias THT; tolerancia ± 5%; bandas 4; resistencia 390Ω; distancia entre pines 400 mil R19 390 package Paquete de resistencias THT; tolerancia ± 5%; bandas 4; resistencia 390Ω; distancia entre pines 400 mil R20 390 package Paquete de resistencias THT; tolerancia ± 5%; bandas 4; resistencia 390Ω; distancia entre pines 400 mil R21 390 package Paquete de resistencias THT; tolerancia ± 5%; bandas 4; resistencia 390Ω; distancia entre pines 400 mil R22 390 package Paquete de resistencias THT; tolerancia ± 5%; bandas 4; resistencia 390Ω; distancia entre pines 400 mil R23 390 package Paquete de resistencias THT; tolerancia ± 5%; bandas 4; resistencia 390Ω; distancia entre pines 400 mil R24 390 package Paquete de resistencias THT; tolerancia ± 5%; bandas 4; resistencia 390Ω; distancia entre pines 400 mil R25 390 package Paquete de resistencias THT; tolerancia ± 5%; bandas 4; resistencia 390Ω; distancia entre pines 400 mil R26 390 package Paquete de resistencias THT; tolerancia ± 5%; bandas 4; resistencia 390Ω; distancia entre pines 400 mil R27 390 package Paquete de resistencias THT; tolerancia ± 5%; bandas 4; resistencia 390Ω; espacio de pines 400 mil U1 paquete DIP28 DIP28 (doble línea) THT; versión Atmega328-20PU; tipo ATMEGA328 U2 atmega328 paquete DIP28 (Dual Inline) THT; versión Atmega328-20PU; tipo ATMEGA328 XTAL1 Crystal package THT; frecuencia 16 Mhz; tipo cristal espacio entre pines 5.08 mm XTAL2 Paquete de cristal THT; frecuencia 16 Mhz; tipo cristal espacio entre pines 5.08 mm

Paso 4: Escribiendo el Código

Primero, investigué en todo el Internet sobre la comunicación y los comandos MIDI. Por suerte, tuve experiencia con mi proyecto anterior: mi batería Arduino MIDI. Utilicé el mismo conjunto de códigos para el pedal del bombo que se usa en todos los pedales del órgano.

Cuando se presiona un pedal, el comando se envía para encender la nota a una cierta velocidad. El potenciómetro (pedal de volumen) se utiliza para determinar eso. Da valores desde 0-1023. La función de mapa se utiliza para asignar proporcionalmente ese número a otro número entre 0-127. Para desactivar una nota cuando no se presiona el pedal, se envía el mismo comando para esa nota, excepto que la velocidad es 0.

Hacer que los arduinos envíen ese comando cuando se pisa un pedal usando una declaración "if" en el bucle, funcionaría, excepto que enviaría ese comando cada vez que el bucle se repita cuando el pedal está presionado. Si la instrucción "else" también se usa para enviar el comando para detener la nota (velocidad 0), entonces los arduinos enviarían ese comando para cada pedal que no se presione cada vez que se repita el bucle. Los arduinos y el sintetizador no pudieron manejar el envío o la recepción de todos esos datos.

Para arreglar esto, los arduinos deben enviar el comando para tocar una nota. UNA VEZ después de que se presiona el pedal. También deben hacer lo mismo para cuando se suelta el pedal. Para hacer esto, los arduinos deben "recordar" el último estado (presionado o no presionado) en el que los pedales estuvieron la última vez que se repitió el bucle.

Para agregar esa característica, hice una variable de "último estado". Lo primero que hacen los arduinos después de sentir cuando se presiona un pedal es comparar el último estado en el que se encontraban con el estado en el que están ahora. Esto hace posible que los arduinos envíen el comando de una nota UNA VEZ cuando se ha presionado y UNA VEZ cuando se ha soltado.

Debido a que hay dos Arduinos, hay dos programas que están escritos. Es simplemente copiar el primero y pegarlo en un nuevo proyecto y cambiar todas las notas. ¡Recuerde que un programa usará una nota más que otra!

AMBOS Arduinos necesitan enviar comandos en el MISMO Canal MIDI Usé el canal MIDI 1.

Para que los arduinos envíen datos MIDI leídos a través de esta guía: http://arduino.cc/en/Tutorial/Midi. No envío las notas o la velocidad en hexadecimal. Decimal funciona perfectamente porque el Serial.write (); comando lo envía como un byte.

Hay dos programas adjuntos en el archivo zip; Una para una ATmega, otra para la otra.

Paso 5: Programando los Atmegas.

Inserte uno de los ATmega ICs en el Arduino para programarlo. Trate de no presionarlo en el asiento del todo o de lo contrario será difícil de quitar. Después de que esté programado, use un destornillador pequeño para soltarlo lentamente, comenzando en un extremo, luego en el otro, de vuelta al otro extremo, etc., hasta que se retire. Colóquelo en la placa de circuito recién hecha. Asegúrese de colocar el IC que está programado para 13 notas en su lugar y no en el asiento del IC de 12 notas. Después de que ambos circuitos integrados estén programados y colocados en el tablero, ¡debe estar listo para conectarse a los pedales!

Paso 6: ¡Conéctalo! ¡Pruébalo!

Conecte el otro extremo del conector a los pedales y conéctelo a la placa de circuito y los pedales juntos. Además, conecte el cable MIDI al sintetizador y el adaptador de alimentación a la fuente de alimentación de la placa de circuito. ¡Enciende el sintetizador y empieza a tocar!

Paso 7: Adjuntar y finalizar el proyecto

Puede usar lo que desee para encerrar las partes eléctricas expuestas. Utilizamos algunos restos de madera que quedaron del órgano. Además, utilizamos el interruptor de encendido y la luz indicadora de encendido del órgano. El uso del pedal de volumen del órgano fue un pensamiento que ocurrió después de darse cuenta de lo doloroso que es girar un potenciómetro con los pies. Se recomienda que se use el pedal de volumen.

Paso 8: Video demostración

Aquí hay un video que muestra la funcionalidad del Arduino MIDI Foot Pedal Keyboard. ¡No me importa que trate de hacer que el potenciómetro ceda! El potenciómetro desnudo fue reemplazado más tarde por un pedal de volumen.

¡Gracias por leer! Feliz edificio