Caja de Control DAW Personalizada para Racks de Batería Electrónica Roland
Componentes y Suministros
- Arduino Micro Pro × 1
- Pulsadores (normalmente abiertos) × 1
- Piezas impresas en 3D (abrazadera y caja) × 1
Herramientas y Máquinas Necesarias
- Impresora 3D (genérica)
Aplicaciones y Servicios Online
- Arduino IDE
Sobre este Proyecto
Me resultaba incómodo operar mi portátil ejecutando un DAW (en mi caso Cubase) mientras grababa una pista de batería. Quería un método libre de distracciones para activar comandos esenciales como inicio/parada/grabación sin soltar las baquetas. Las soluciones comerciales disponibles eran demasiado caras o no prácticas porque, por ejemplo, imposibles de montar en mi rack. Así que ideé esta caja de botones DIY basada en el famoso Arduino Micro Pro. Se puede montar en tubos estándar de 38mm usados por racks Roland para sujetar la caja.
Instrucciones
- Imprime las piezas: Imprime las 2 partes de la abrazadera del rack y el cuerpo de la caja. PLA funciona bien, pero para más estabilidad usa PETG. Une la abrazadera con un tornillo M4x40 como eje entre las 2 partes, aprieta pero asegúrate que pueda girar fácilmente. Usa un tornillo de ala M6 y tuerca como tensor para sujetar firmemente a tu rack. Usa 2 tornillos M3x4 (o similar) y tuercas para unir la parte superior de la abrazadera a la caja.
- Panel frontal: Tienes varias opciones. Puedes diseñar tu propia variante según tus botones. Usa una de las plantillas de panel frontal disponibles en STL (para impresora 3D) o SVG (para CNC) para crear tu propio panel. (Decidí hacer el panel en mi fresadora CNC casera porque me gustaba el diseño grabado... pero un panel impreso en 3D funcionará perfectamente).
- Montaje: Una vez listo el panel frontal, inserta los botones y suelda a los pines correctos de Arduino (ver asignación abajo). Decidí usar un PCB separado para tener más espacio, pero no es obligatorio. Si lo haces, usa los 4 agujeros en las esquinas para sujetar el PCB. Finalmente cierra y asegura el panel frontal con 2 tornillos M3.
- Programar el Arduino: Cualquier Micro Pro servirá, pero asegúrate que sea Arduino Micro PRO (no el Arduino Micro estándar) por el USB integrado. Un Arduino Micro Pro conectado a cualquier PC puede emular nativamente un teclado USB y así activar cualquier pulsación, incluso teclas de función y teclado numérico. Los Micro Pro vienen de distintas fuentes, así que podrías necesitar modificar tu código según las librerías incluidas. En mi caso, usé los puertos digitales 2-8 inicializados como pull-ups internos. Los pulsadores (normalmente abiertos) conectan los pines a GND, lo que el código detecta y activa la acción programada (pulsación de tecla emulada).
Para mi DAW (Cubase), decidí usar esta configuración:
| Puerto | Botón | Tecla | Función en Cubase |
|---|---|---|---|
| 2 | M | c | Metrónomo On/Off |
| 3 | L | [Num] 1 | Ir a Locator Izquierdo |
| 4 | >> | [Num] + | Avanzar |
| 5 | << | [Num] - | Retroceder |
| 6 | P | ESPACIO | Play/Stop |
| 7 | B | b | Inicio |
| 8 | R | [Num] * | Grabar |
Se puede cambiar fácilmente en el código para adaptarlo a tu configuración. Usa mi código adjunto como ejemplo.
Código
Código Arduino Micro Pro para Caja de Botones de Rack
Asegúrate de seleccionar "Micro Pro" en tu Arduino IDE
/* ROLAND RACK BUTTON BOX
Nota: Esto es para Arduino Pro Micro! Emula un teclado para pulsar teclas en un PC conectado para un DAW (aquí: Steinberg Cubase).
Opcional: usa puerto COM UART emulado via USB (para depuración) y LEDs (RX y TX) en placa Micro.
TECLAS: config para Cubase: https://steinberg.help/cubase_elements_le_ai/v9/de/cubase_nuendo/topics/key_commands/key_commands_default_c.html
Asignación:
Puerto Arduino Micro -> Switch en Caja -> Tecla emulada -> Función en Cubase
------------------------------------------
2 M c Metrónomo On
3 L [Num] 1 Ir a Locator Izquierdo
4 >> [Num] + Avanzar
5 << [Num] - Retroceder
6 P ESPACIO Play/Stop
7 B b Inicio
8 R [Num] * Grabar
mac70 13.01.2021 */
#define DEBUG_OUTPUT 0 // si es 1, genera salida serial adicional para depuración
#include <Keyboard.h>
#define KEYPAD_1 225
#define KEYPAD_PLUS 223
#define KEYPAD_MINUS 222
#define KEYPAD_ASTERIX 221
int RXLED = 17; // El LED RX tiene un pin Arduino definido
void setup() {
// Botones conectados a pines de entrada digital (normalmente abiertos, al activarse -> pin a GND)
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
pinMode(6, INPUT_PULLUP);
pinMode(7, INPUT_PULLUP);
pinMode(8, INPUT_PULLUP);
pinMode(RXLED, OUTPUT);
digitalWrite(RXLED, HIGH); // LED RX APAGADO
Keyboard.begin(); // iniciar emulación teclado
Serial.begin(9600);
Serial.println("");
if (DEBUG_OUTPUT == 1) Serial.println("Button Box Serial Monitor");
}
void loop() {
Keyboard.releaseAll();
digitalWrite(RXLED, HIGH);
delay(50);
// Procesar botones
if (digitalRead(2) == 0) { // M
if (DEBUG_OUTPUT == 1) Serial.println("Button M");
digitalWrite(RXLED, LOW);
Keyboard.press('c');
delay(5);
Keyboard.releaseAll();
while(digitalRead(2) == 0);
}
if (digitalRead(3) == 0) { // L
if (DEBUG_OUTPUT == 1) Serial.println("Button L");
digitalWrite(RXLED, LOW);
Keyboard.press(KEYPAD_1);
delay(5);
Keyboard.releaseAll();
while(digitalRead(3) == 0);
}
if (digitalRead(4) == 0) { // >>
if (DEBUG_OUTPUT == 1) Serial.println("Button >>");
digitalWrite(RXLED, LOW);
Keyboard.press(KEYPAD_PLUS);
while(digitalRead(4) == 0);
Keyboard.releaseAll();
}
if (digitalRead(5) == 0) { // <<
if (DEBUG_OUTPUT == 1) Serial.println("Button <<");
digitalWrite(RXLED, LOW);
Keyboard.press(KEYPAD_MINUS);
while(digitalRead(5) == 0);
Keyboard.releaseAll();
}
if (digitalRead(6) == 0) { // PLAY STOP
if (DEBUG_OUTPUT == 1) Serial.println("Button PLAY/STOP");
digitalWrite(RXLED, LOW);
Keyboard.press(' ');
delay(5);
Keyboard.releaseAll();
while(digitalRead(6) == 0);
}
if (digitalRead(7) == 0) { // BACK TO START
if (DEBUG_OUTPUT == 1) Serial.println("Button BACK");
digitalWrite(RXLED, LOW);
Keyboard.press('b');
delay(5);
Keyboard.releaseAll();
while(digitalRead(7) == 0);
}
if (digitalRead(8) == 0) { // REC
if (DEBUG_OUTPUT == 1) Serial.println("Button REC");
digitalWrite(RXLED, LOW);
Keyboard.press(KEYPAD_ASTERIX);
delay(5);
Keyboard.releaseAll();
while(digitalRead(8) == 0);
}
}
Piezas Personalizadas y Carcasas
Archivos 3D disponibles en Thingiverse: CAD file on thingiverse.com
Proceso de manufactura
- 5 Trucos de Embalaje Comprobados para Prevenir Daños en Envío
- SIGHT: Gafas Inteligentes para Capacitar a Personas Ciegas
- Botón IoT AWS Controlado por Movimiento con Raspberry Pi, Sensor PIR y MQTT
- Robot DIY inspirado en Wall‑E con Raspberry Pi y caja de CD
- Nueva automatización moldeo inyección Hekuma mejora producción puntas pipeta médicas
- Directrices Optimizadas de Layout y Enrutado para Ensamblaje Box Build
- Factores clave al externalizar servicios de ensamblaje Box Build
- Directrices esenciales para un ensamblaje de caja exitoso
- Contenedores de envío personalizados: soluciones a medida para fabricantes y proveedores de automóviles
- Advantech lanza ARK‑1220: PC DIN‑Rail compacto fan‑less para smart manufacturing
- EKF SRS-1201-BLUBRICK: Caja Robusta Montaje Pared para CPUs CompactPCI Serial en Ferroviario, Automotriz e Industrial