Music Tracker en JARU IDE: música chiptune para juegos y demos
Una de las cosas que estoy incorporando a JARU IDE es un Music Tracker integrado. Quería que la música no fuese algo externo al proyecto, sino otro recurso más que se pudiera crear, editar, probar y compilar desde el propio IDE, igual que ocurre con el código, las imágenes o los sprites.
La idea es sencilla: que el usuario pueda componer una melodía chiptune, importar un MIDI, adaptar música de estilo retro y usarla después en presentaciones, demos, juegos o aplicaciones interactivas hechas con JARU.
Para conseguirlo, el Music Tracker trabaja con recursos musicales compactos: el proyecto guarda canciones editables como .jms, el sistema de build las compila a .jmu, y las VMs de JARU pueden reproducirlas desde código usando el módulo Sound.
Qué es el Music Tracker de JARU IDE
El JARU Music Tracker es un editor de música por filas y canales, inspirado en los trackers clásicos, pero integrado en el flujo normal de un proyecto JARU. En lugar de depender de WAV, MP3 u OGG para cada canción, el tracker genera música secuenciada: notas, instrumentos, volumen, tempo, comandos y eventos compactos.
![]()
El editor está pensado para música de estilo chiptune, intros de juegos, pantallas de título, efectos musicales cortos, menús y demos técnicas donde interesa tener audio ligero, editable y reproducible por la VM.
Cómo encaja en un proyecto JARU
El flujo previsto es directo:
Music Tracker de JARU IDE
-> guarda Music/*.jms
-> el build compila la canción
-> genera Build/flash/Music/*.jmu
-> la VM reproduce el .jmu con Sound.loadMusic()
Esto permite tratar la música como un recurso más del proyecto, junto a código, imágenes, sprites o mapas. El usuario no tiene que editar JSON a mano: trabaja desde una interfaz visual y el IDE se encarga de guardar y compilar el recurso.
Filas, canales y comandos
La vista principal del tracker organiza la canción en filas. Cada fila puede contener notas, instrumentos, volumen, silencios o comandos. El editor usa varios canales:
- Canales tonales para melodía, armonía y bajo.
- Canal de ruido para percusión o efectos.
- Columna de comandos para tempo, finales, bucles u otros controles de reproducción.
También incluye controles de canción como tempo, volumen global, duración por fila, loop activado y fila de inicio del loop. Esto hace que una canción pueda comportarse como una pieza lineal o como una música de fondo en bucle.
Teclado virtual y grabación
El tracker incluye un teclado virtual para probar notas con el instrumento seleccionado. También se puede usar el teclado del ordenador para tocar dos octavas cromáticas y previsualizar el sonido sin modificar la canción.
Cuando el modo REC está activo, las notas que se tocan se escriben en la celda actual del tracker y el cursor avanza a la siguiente fila. Esto ayuda a introducir melodías de forma rápida sin depender solo de edición manual en la tabla.
Editor de instrumentos chiptune
Además de editar notas, le he añadido un editor de instrumentos para diseñar sonidos chiptune. Los instrumentos pueden controlar la forma de onda, el volumen, el duty en ondas de pulso, la envolvente y el vibrato.

El editor permite trabajar con parámetros como:
- Tipo de instrumento: tono o ruido.
- Formas de onda tonales como square, triangle, saw, pulse o sine.
- Volumen y duty.
- Envolvente ADSR con ataque, decay, sustain y release.
- Vibrato LFO con profundidad, velocidad y retardo.
- Previsualización directa desde un pequeño teclado.
Esto hace posible crear leads, bajos, pads simples, efectos y percusión sin salir del IDE.
Conversor MIDI a música JARU
Una parte especialmente útil que estoy incorporando es el importador MIDI. El objetivo no es reproducir MIDI como un sintetizador general, sino convertir una canción MIDI a una estructura que JARU pueda editar y compilar.
El importador puede analizar canales MIDI, cuantizar notas, asignar voces a los canales del tracker, importar batería como ruido y conservar información musical útil como cambios de tempo, volumen, pitch bend o modulación cuando sea posible adaptarla al formato de JARU.
Esto abre un flujo muy práctico: tomar una melodía retro o una música de referencia en MIDI, importarla al tracker, ajustar instrumentos chiptune y usarla como música de presentación, menú o juego.
Reproducción desde código JARU
Una vez compilada, la música se reproduce desde el módulo Sound como cualquier otro recurso del proyecto:
use Sound
Sound.init()
if (Sound.loadMusic("Music/theme.jmu")) then
Sound.playMusic(true)
end
El formato .jmu está pensado para ser compacto y reproducible por la VM de JARU. Esto encaja especialmente bien con proyectos donde el audio debe formar parte del runtime y no ser solo una pista externa.
Por qué es útil para juegos y demos
El Music Tracker encaja con el tipo de proyectos que JARU quiere facilitar: juegos pequeños, interfaces gráficas, demos visuales, experimentos IoT con feedback sonoro y presentaciones interactivas.
Para un juego, por ejemplo, el usuario podría crear una música de título, una melodía de nivel y varios efectos musicales cortos. Para una demo, podría importar un MIDI sencillo, convertirlo a estilo chiptune y reproducirlo sincronizado con gráficos, sprites o una pantalla de presentación.
Estado actual
Esta funcionalidad sigue en desarrollo dentro de JARU IDE, pero ya hay bastante trabajo avanzado: la base del editor tracker, el panel de instrumentos, la previsualización, la importación MIDI y la compilación de recursos musicales hacia el formato que entiende la VM.
Mi intención es que crear música para JARU sea una parte natural del IDE, igual que editar código, imágenes o sprites.
FAQ
¿JARU Music Tracker reproduce archivos MIDI directamente?
No. El MIDI se usa como formato de entrada para importar música. Después, el resultado se convierte a un recurso musical editable de JARU.
¿El tracker usa MP3, WAV u OGG?
No para la música secuenciada. El tracker genera datos musicales compactos que se compilan a .jmu. Para audio PCM, JARU usa otras funciones del módulo Sound.
¿Puedo usar la música en juegos hechos con JARU?
Sí. La idea principal es que las canciones creadas o importadas desde el tracker puedan reproducirse en juegos, demos, menús, presentaciones y aplicaciones interactivas hechas con JARU.