Mini-Pedalera MIDI para HX Stomp

lutop
#1 por lutop hace 3 semanas
Buenas,

Abro este hilo para compartir algo de informacion sobre las dos pedaleras MIDI que tengo construidas para acompañar a mi querido HX Stomp.

Para empezar, unas fotos del pedal de 3 pulsadores en proceso (sin los LEDs)

fa72ce1ad50721764e844f4650528-2653469.jpg

y ya terminado:

d27221a4db71db1979d582fb1c2ed-2693580.jpg


Y el de dos pulsadores sin LED (debajo del stomp):

ba34cc1e8121a6e96fcd3ad1343f9-2693580.jpg

En cuanto pueda voy colgando alguna info mas y comparto el codigo y esquema.

Saludos
Subir
6
lutop
#2 por lutop hace 3 semanas
Bueno, un poco de explicacion del Hardware. Voy a centrarme en la version de 3 botones que es la mas completa, con LEDs y demas.

Lista de componentes:

-Arduino nano. Clon de Aliexpress. Creo recordar que hay que instalar algun driver especifico para que funcione, puesto que lleva un chip usb diferente al oficial (CH340C). Cualquier otro arduino que funcione a 5V y tenga UART deberia servir. Arduinos a 3.3v necesitan un cambio en la resistencia del midi out.
-Caja para meter todo. A gusto del consumidor. La mia fue hecha a medida
-Conector MID DIN 5 pines hembra
-Conector DC 2.1mm hembra
-Resistencia 220 ohm para el MIDI out
-Resistencias limitadoras para los LEDs. No me acuerdo de los valores que cogi, puesto que tuve que ir probando hasta dar con el valor correcto, pero son alrededor de 100-200 Ohm. Tendreis que hacer los calculos para cada tipo de LED, e ir probando.
-3 pulsadores momentaneos "soft touch" (que no hacen "clack"). Cuestion de preferencias
-3 anillos LED.

Tanto los pulsadores como los LEDs los compre en taydaelectronics
Estos son los LEDs azules:
https://www.taydaelectronics.com/lh-12-indicator-lamp-blue-color-5-12v.html

Solo tened en cuenta que los LEDs tienen diferentes intensidades segun el color, asi que hay que jugar un poco con las resistencias limitadoras para que tengan un brillo parecido. En mi codigo utilizo PWM para los LEDs, por dos motivos: me permite ajustar el brillo maximo, y me permite tener diferentes niveles de brillo.

Las conexiones son bastante simples. Cada LED o anillo de LEDs se conecta con una resistencia limitadora en serie, al pin correspondiente del Arduino y a tierra. Ojo con la polaridad

63bc80bdfeba2cad9c7da2008c85f-2693819.png

Cada pulsador se conecta a su entrada correspondiente del Arduino y a tierra. No hace falta ninguna resistencia de pull-up porque utilizaremos el pull-up interno del arduino.

La conexion midi tambien es simple, siguiendo este esquema:

5eda589ce6e56766fc561ed1cdd21-2693819.png

Lo unico que hay que tener en cuenta es identificar bien los pines del conector MIDI, que es facil confundir el 4 y el 5 y montarlo al reves.

2a12e5994f4f01fd40de90da02a68-2693819.png

Y por ultimo, este es el pinout del Arduino nano, y donde va cada cosa. Si utilizais otro arduino o quereis cambiar los pines, habra que modificar el codigo.

57e6d28f0021d6d13bd9703c8f61d-2693819.jpg

Conexiones:

1 (TX) - Midi out
5 (D5) - LED1
6 (D6) - Led2
9 (D9) - Led3 -
26 (A3) - button 3
27 (A4) - button 2
28 (A5) - button 1
​VIN - 9v
GND-GND

En el proximo post os cuelgo el codigo....
Subir
4
guitarricatelecaster
#3 por guitarricatelecaster hace 3 semanas
joder, enhorabuena, buen trabajo
Subir
lutop
#4 por lutop hace 3 semanas
Me olvide de comentar una cosa sobre los anillos LED. En algunos sitios hay pulsadores con el anillo LED incorporado, pero son todos con enclavamiento, que no nos sirven para esto. Asi que cuidado.
Por otro lado, he visto en algunos sitios (incluido taydaelectronics), otros anillos de LEDs que ya llevan una resistencia limitadora incorporada. El problema de estos es que la resistencia esta dimensionada para funcionar a 9V, asi que no nos servirian para trabajar con arduino sin añadir algun transistor adicional.
Subir
Tommy Blackbird
#5 por Tommy Blackbird hace 3 semanas
👏👏👏👏👏

Por cierto, me imagino que el canal MIDI irá en el código. ¿Estudiaste en algún momento poder seleccionarlo vía dip switches o similar?
Subir
lutop
#6 por lutop hace 3 semanas
En mi codigo lo tengo el canal midi "hardcoded", al igual que tengo tambien la configuracion de que hace cada boton "hardcoded". Es decir, no hay manera de cambiar la configuracion sin recompilar y subir el nuevo codigo. El tema es que programar un interface de configuracion es mucho trabajo, y es poco flexible. Reprogramar el codigo cuando necesito cambios es menos trabajo y me permite hacer muchas mas cosas.

Se podria programar algo para cambiar el canal midi sin problema, pero igual no hace falta un dip switch, sino que se puede configurar por software (combinando botones, etc...)
Subir
drantar
#7 por drantar hace 3 semanas
Muy chulos ambos pedales... Enhorabuena!!!
Subir
lutop
#8 por lutop hace 3 semanas
Vamos con el codigo.

Para empezar, tengo varias y multiples versiones, porque he estado probando diferentes configuraciones, asi que he escogido para colgar el que es un poco mas "generico" para que podias partir de ahi.
(De hecho, yo utilizo una con un solo modo porque he decidido simplificar. Pero tengo algo de codigo extra para poder utilizar un "cuarto snapshot".)

Se necesita una libreria llamada "Onebutton" que he modificado para aceptar pulsaciones de dos botones. Os la pego tambien aqui.

Al principio podeis definir el canal midi, asi como los pines utilizados para cada boton/led. Tambien veis unos valores BRIGHT y DIM que corresponden a el brillo en modo alto y bajo de cada LED. Como veis, tengo un LED que es muy tenue, y he tenido que ajustar los otros para equilibrar.
Tendreis que ajustar estos valores a vuestro hardware

Alguien escribió:

#define MIDICH 1
#define BUTTON_PIN_1 18 //A4
#define BUTTON_PIN_2 19 //A5
#define BUTTON_PIN_3 17 //A3
#define LED_PIN_1 6 //D6
#define LED_PIN_2 5 //D5
#define LED_PIN_3 9 //D9
#define LED1_BRIGHT 150
#define LED2_BRIGHT 255
#define LED3_BRIGHT 80
#define LED1_DIM 4
#define LED2_DIM 20
#define LED3_DIM 2



Os explico como funciona el codigo mas o menos:
Hay una variable mode que puede tener 3 valores, STOMP, SNAPSHOT y PRESET. Son 3 modos de funcionamiento diferentes segun si quieres controlar presets, snapshots o stomps. En el modo STOMP el boton1 es FS4, el 3 FS5 y el 2 es tap tempo.
Yo en este caso he programado que para cambiar de modo hay que presionar los botones 1+3 a la vez. Es algo que no lo vas a hacer con el pie, asi que si quereis poder cambiar de modo sin agacharos tendreis que cambiarlo.

El ultimo mode se graba en la EEPROM para que cuando encendais vuelva al mismo modo.

Las funciones interesantes donde podeis meter mano estan a partir de la linea 191, donde pone "//Change this to select action for each button. Choose actions from list below ". Basicamente hay una funcion definida para cada accion del boton (click, o longclick), y en cada funcion se define para cada modo que es lo que hay que hacer.
Por ejemplo:

Alguien escribió:

case SNAPSHOT :
snapshot(1);
setOnlyLED(1);

Aqui, en modo snapshot llamamos a la funcion snapshot para cambiar a snapshot 1, y luego apagamos todos los LEDs excepto el 1.
En este:
Alguien escribió:

case PRESET :
setOnlyLED(2);
patchNum=patchNum-currentPresetBut+2;
currentPresetBut=2;
currentSnapshot=1;
MIDI.sendProgramChange(patchNum, MIDICH);
EEPROM.update( EEPATCH, patchNum );

estando en modo PRESET, seleccionamos el preset B del banco actual, y lo guardamos en la eeprom.

Al final de todo a partir de la linea 500 teneis algunas funciones utiles que podeis llamar para cambiar presets, banco, activar el afinador, cambiar snapshots, cambiar el modo del HX, etc...

Y a partir de ahi, pues a jugar...!!

Si alguien quieres una version mas sencilla para el de dos pulsadores, me lo decis y lo cuelgo tambien.

Saludos
Archivos adjuntos ( para descargar)
HX_3_buttons.zip
Subir
3
lutop
#9 por lutop hace 3 semanas
Se me olvido comentar que en modo STOMP hay unas funciones adicionales duringPress y stopPress que se utilizan para hacer scroll rapido de presets si mantienes apretados los botones 1+2 o 2+3
Subir
1
Hernán Petrocelli
#10 por Hernán Petrocelli hace 3 semanas
Hola, muy buen proyecto!

Estoy en un proyecto parecido. Mis conocimiento de Arduino son básicos, pero pude generar con un switch de 2 botones varios comandos.
Lo que no pude hacer andar es el tap tempo, no podrías dar una breve explicación de cómo funciona esa parte del código?

Gracias, saludos.
Subir
lutop
#11 por lutop hace 3 semanas
En este caso el tap tempo es un simple mensaje CC que se envia al HX stomp cuando pulsas el boton, y el stomp se encarga de calcularlo.

Tambien se podria calcular el tempo en el arduino y manda una señal de midi clock, pero no lo he hecho asi.
Subir
ElKnijo
#12 por ElKnijo hace 3 semanas
Hello. ¿Sabéis dónde pillar una caja a medida?. Estoy buscando pero las que encuentro no me gustan las dimensiones que tienen.
Gracias por adelantado
Subir
Hilos similares
Responder

Regístrate o para poder postear en este hilo