Ir al contenido

MIDIfantasma es una aplicación de audio para android, es una estación de trabajo monofónica de baja fidelidad compuesta por generadores de sonidos en una plantilla reticular alfanumérica. 

Tiene 2 sintetizadores, 4 pistas de samples, y un looper sincrónico (suena a travéz de todo el patrón y no se activa con gatillos)*.

Funciona como controlador de instrumentos externos y acepta señales de instrumentos (via MIDI). También acepta controles de videojuego tipo gamepad. 

A continuación está el manual de usuario y al final unas especificaciones técnicas. 

Esta aplicación fue diseñada y desarrollada por mí, Daniel Ceniza, en Java y C++, es gratuita y su código es abierto (pero me tienen qué preguntar si quieren el código, no confío en google ni en github, sorry) si la quieren descargar (si necesitan ayuda para instalarla me dicen):

A continuación un video de demostración:

DESCARGA ACÁ:

MANUAL DE USUARIO: 

MIDIFANTASMA

Esta es la interface de la aplicación, en la pantalla PATTERN (patrón):

[PLAY]--[STOP]--[P--]--[RECORD]
[BPM:---]---[COPY]---[STEPS:--]
---|--: [####################]
[][]
[][]
[][]
|--BS1--|------BS2------|BS3|
__|ZY1|ZY2|SA1|SA2|SA3|SA4|-L-|
01|---|---|---|---|---|---|---|
02|---|---|---|---|---|---|---|
03|---|---|---|---|---|---|---|
04|---|---|---|---|---|---|---|
05|---|---|---|---|---|---|---|
06|---|---|---|---|---|---|---|
07|---|---|---|---|---|---|---|
08|---|---|---|---|---|---|---|
09|---|---|---|---|---|---|---|
10|---|---|---|---|---|---|---|
11|---|---|---|---|---|---|---|
12|---|---|---|---|---|---|---|
13|---|---|---|---|---|---|---|
14|---|---|---|---|---|---|---|
15|---|---|---|---|---|---|---|
16|---|---|---|---|---|---|---|
[1-16]-[17-32]-[33-48]-[49-64]

MODO PATRÓN (PATTERN MODE):

[PLAY]--[STOP]--[P--]--[RECORD]
  • [PLAY] da inicio al secuenciador desde el paso #1.
  • [STOP] detiene el secuenciador y lo devuelve al primer paso del patrón.
  • [P--] es el botón de PATTERN o patrón. Indica en cuál PATTERN (patrón) estamos en el momento. Son 10 patrones en total, y se ven así: [P01], [P02], [P03], [P04], [P05], [P06], [P07], [P08], [P09], [P10]. Además de mostrar el patrón actual, al tocarlo abre la pantalla de SONG MENU (Modo Canción).
  • [RECORD] arma la grabación para el instrumento que esté seleccionado en la línea 8. 
    • Si están seleccionados los sintetizadores 1 o 2 ([ZY1] o [ZY2]), y se arma el [RECORD], se grabarán los movimientos de diferentes parámetros manejados con controladores externos. 
    • Si están seleccionados los samplers, cuando se arma el RECORD y se toca otra vez el encabezado de los samplers, este cambia a REC y graba directamente del micrófono del dispositivo (o lo que esté conectado). 
    • Si está seleccionado el looper ([-L-]), y se arma [RECORD], al darle [PLAY], la secuencia se reproduce y al siguiente primer paso, empieza a grabar un loop. Se puede escuchar el monitoreo en vivo subiéndole el volumen en el BUS3 (más info de los BUSES más adelante) para cuadrar los parámetros, así que CUIDADO AL USAR [RECORD] EN EL LOOPER CON MICRÓFONOS INTERNOS!!
[BPM:---]---[COPY]---[STEPS:--]​
  • [BPM:---] muestra cuál es el tempo (beats per minute). El default es 120, y se ve así: [BPM:120]. Este se puede manipular tocándolo y luego usando la BARRA DE CONTROL en la línea 3. También funciona como [TAP TEMPO]: tocar este parámetro repetidamente calcula el BPM.
  • [COPY] cuando se toca se pone rojo así: [COPY] y significa que puedes copiar las características del paso actual en la matriz del patrón, a otro paso que comparta las mismas características, así que [ZY1] y [ZY2] sólo pueden copiar parámetros entre ellos, y cualquier sampler a cualquier sampler, por ejemplo de [SA3] a [SA1].
  • [STEPS:--] dice cuántos pasos tiene este patrón disponibles para hacer una secuencia. Por default tiene todos los pasos disponibles, viéndose así: [STEPS:16]. Se modifica con la cinta de edición en la línea 3.
---|--:  [####################]​​

EL CONTROL MÁS IMPORTANTE DE LA APP: LA BARRA DE CONTROL

  • Las primeras letras son las coordenadas, donde el primer valor es un indicador de instrumento o bus y el segundo valor es el paso en el que está el cursor dentro de la matriz del patrón. Por default empiezan en el primer instrumento, [ZY1] y el primer paso, viéndose así: ZY1|01:. Si el tercer sampler está seleccionado y el cursor está en el octavo paso, se ve así: SA3|08:, etc.
  • [####################] es la BARRA DE CONTROL, es como un dial, una cinta tactil, o un fader horizontal. Cuando un parámetro está seleccionado (BPM, volumen, efectos, filtros, etc), arrastrar el dedo horizontalmente sobre esta cinta es la forma de editar el valor de dicho parámetro.
SA3|08:  [####################]​​

PARÁMETROS DE INSTRUMENTO (LÍNEAS 4, 5 y 6)

El contenido de las líneas 4 y 5 cambia dependiendo del instrumento seleccionado en la cuadrícula. Esto quiere decir que cada instrumento, en cada paso, puede tener parámetros diferentes

Para editar cualquiera de estos valores, se debe tocar parámetro correspondiente (que se pondrá verde) y luego deslizar el dedo en la BARA DE CONTROL de la línea 3.

Una vez se selecciona una coordenada en la retícula, (un paso en uno de los instrumentos) esta selección se muestra en la línea 3 (ej. SA3|08 ) se puede editar cualquiera de los parámetros que aplicarán a ese instrumento en ese paso, para editarlos, se toca el parámetro correspondiente (se pondrá verde) y para modificarlo, se desliza el dedo en la cinta de la línea 3. [####################] a la izquierda para disminuír el valor y a la derecha para incrementarlo.

Sintetizadores 1 y 2 ([ZY1] y [ZY2])

Los primeros instrumentos, o generadores de sonido son los Sintetizadores.

Los sintetizadores son generadores de sonido a partir de osciladores (ondas que se suceden rápidamente, como una soga que se gire muy rápido) en este caso como los que se escuchan en videojuegos de consolas los 80s y 90s, NES, Gameboy, etc.  

  • Línea 4: [V:x.x][NOTA][O:x.x][RT:x][F:x.x]
    • [V:x.x]: Volumen de la pista. (ej. [V:1.0]).
    • [NOTA]: Nota actual asignada al paso (ej. [C 4]).
    • [O:x.x]: Offset (compensación de inicio,(ej. [O:0.0]).).
    • [R:x]: Ajuste de Retrigger. (ej. [R:1]).
    • [F:x.x]: Filtro. (ej. [F:0.5]).
  • Línea 5: [OF:x.x][A:x|D:x|S:x|R:x][RT:x]
    • [A:x|D:x|S:x|R:x]: Envolvente ADSR (Attack, Decay, Sustain, Release).
    • [C:x]: Detune (Desafinación). (ej. [C:1]).
  • Línea 6: [WAVE][VSY:x.x|X:x.x][RT:x]
    • [WAVE]: Forma de onda. Opciones: [W:SIN] (Senoidal),[W:SAW] (Sierra).
    • [VSY:x.x|X:x.x]: VSO (ejes Y y X). (ej. [VSY:0.8|X:1.0]). El VSO (Variable Speed Oscillator / Oscilador de Velocidad Variable)  emula el comportamiento de los motores de cinta analógicos y los variadores de velocidad físicos en magnetófonos de baja fidelidad
      • Eje Y, (Saturación / Transformación a Square): Controla la distorsión de amplitud. Al incrementarlo la onda se empuja contra un limitador que aplana la onda y la transforma de una curva suave a una onda cuadrada o de pulso, produciendo un sonido hueco, agresivo y rico en armónicos impares. (Incluye compensación automática de volumen).
      • Eje X, (Asimetría de Fase / Transformación a Saw): Controla la distorsión temporal (warp) dentro de un solo ciclo de la onda. Un incremento en este eje desplaza el punto de pivote: acelera drásticamente la primera mitad del ciclo y estira la segunda. Esto deforma la curva senoidal hasta convertirla en una onda de diente de sierra (sawtooth) afilada y brillante.
    • [G:X]: Ajuste de Glide/Portamento en tres niveles. El Glide desliza suavemente el tono entre las notas asignadas en lugar de hacer un saltoentre ellas. Para que el efecto funcione, las notas con GLIDE deben ser [-] en la cuadrícula, estas son sus especificaciones: [G:0] Apagado (no hay deslizamiento entre una nota y otra, sino que salta de una), [G:1] Rápido (60 ms), [G:2] Lento (200 ms)-

Modo Cabecera para Sintetizadores Si se vuelve a tocar la cabecera [ZY1] o [ZY2] en la línea 8:

  • Línea 4: [OCT:DN|UP][NOTE:DN|UP] (Herramienta rápida para transponer toda la pista por octavas o semitonos).


Ejemplo de las líneas 3, 4, 5 y 6 en la pantalla modo patrón con el Synth 1 seleccionado:

ZY2|08:  [####################]​​
[V:1.0][C#4][O:0.0][R:0][F:0.5]
[A:0|D:2|S:2|R:2][C:0]

[W:SAW][VSY:0.0|X:0.0][C:0]

Samplers ([SA1], [SA2], [SA3], [SA4])

Los Samples: Son pequeñas capturas de audio, como fragmentos de sonidos reales, efectos o voces, que actúan como la "materia prima" para crear música. Puedes imaginarlos como piezas de un rompecabezas sonoro que uno selecciona o graba y va armando.

Sampler: Es el instrumento que permite activar esos sonidos. No solo reproduce el archivo, sino que lo transforma: al asignar diferentes notas, el Sampler cambia la nota y el tono del sonido original, permitiéndote convertir un simple audio en una melodía, un bajo o una percusión completa. El sample es un ingrediente y el sampler es la cocina. (y los parámetros que manipulan al sampler son la receta, supongo, :P)

NOTA: mientras los sintetizadores pueden generar sonidos por su cuenta, los samplers no, por eso debes cargar ó grabar sonidos para usarlos. 

  • Línea 4: [ZY1] y [ZY2]
  • Línea 5: Idéntica a [ZY1] y [ZY2].
  • Línea 6: Sólo presenta los parámetros de las líneas 4 y 5, no tiene más parámetros en la línea 6.

Modo Cabecera para Samplers Si se vuelve a tocar la cabecera [SAx] en la línea 8 mientras ya está seleccionada (sin [RECORD] armado), se entra a los parámetros globales del sample:

  • Línea 4: [OCT:xx][PIT:xx] (Octava general y Pitch general del sample).
  • Línea 5: [ST:x.x][EN:x.x] [LOAD] (Puntos de inicio y fin del audio. Tocar [LOAD] abre el explorador de archivos para cargar un WAV al slot).
SA2|04:  [####################]​​
[V:1.0][C#4][O:0.0][R:0][F:0.5]
[A:0|D:2|S:2|R:2][C:0]

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


Looper ([-L-]): 

El Loop: Es una grabación continua y cíclica que se reproduce una y otra vez de forma ininterrumpida. A diferencia de un sonido que se dispara y se desvanece (como un sample), el loop está diseñado para ser el fondo o el "colchón" musical que suena toda la duración del patrón.

El Looper: Es la herramienta dedicada a capturar y gestionar estos loops. Su función es grabar lo que tocas en tiempo real o permitirte cargar archivos preexistentes, asegurando que quede sincronizado con el tempo y duración de patrones de tu canción. 
Cuando grabas o cargas un Loop, este siempre tendrá la duración completa del patrón, es decir que si reduces el número de pasos, o incrementas el tempo, el mismo loop irá más rápido para acomodarse a esa duración, y por tanto su tono o notas, subirán. Si al contrario agregas más pasos al patrón, o reduces el tempo, el patrón durará más, así que el loop irá más lento y sonará más grave, su tono o notas, bajarán. Esta es una limitación deliberada.

Diferencias clave con el Sampler:
  • Sampler vs. Looper: Mientras que el sampler toma un sonido para que tú lo interpretes como un instrumento (melodías, bajos, percusiones), el looper sirve como una plataforma de soporte: captura tu interpretación o reproduce archivos cargados para liberarte y permitirte añadir capas musicales encima.
  • El alcance del Looper: En MidiFantasma, el looper no se limita a un paso o sección aislada; se extiende a lo largo de todo el patrón en su canal dedicado. Funciona como una cinta infinita que sostiene tu base musical durante toda la estructura de la pieza, garantizando una fundación constante mientras tú exploras otras ideas.

El looper no tiene distinción entre modo cabecera y los parámetros del sequenciador, puesto que el looper no tiene "pasos" como los otros instrumentos.

Parámetros y controles del Looper en la pantalla (ESTOS PARÁMETROS SÓLO AFECTAN LA GRABACIÓN DE LOOPS EN VIVO, NO AFECTAN LOS LOOPS QUE SE CARGUEN):

  • Al tocar -L- se mostrarán:
  • [G:x.x][COMP:x|ATT:x] [LOAD]
  • [BT:x.x][SR:xxx][F:x.x][C:x]
  • [RNG:x|MIX:x.x|Hz:xxxx|FF:x.x]
    • Línea 4: [G:x.x][COMP:xxx|ATT:xxx] (Ganancia general, nivel de Compresión, velocidad de Ataque y LOAD para cargar un loop pregrabado).
      • [G:x.x] maneja la ganancia de la entrada del instrumento/micrófono conectado
      • [COMP:x|ATT:x] este ese el compresor a la entrada, estos dos valores nos dan tres niveles de nivel de compresión y tres niveles de velocidad de ataque (la velocidad de ataque también contrla el release)
      • [LOAD] carga un audio preexistente para que haga de loop.
    • Línea 5: [BT:x.x][SR:xxx][F:x.x][C:x] (Bitcrush, Sample Rate, Filtro, y Chorus)
      • [BT:x.x]Reduce la calidad del audio reduciendo la profundidad de los bits
      • [SR:x.x]Reduce la calidad del audio reduciendo la tasa de sampleo
      • [F:x.x] Un filtro tipo Low-Pass (sólo deja pasar las frecuencias bajas)
      • [C:x] un "chorus" logrado con una señal en delay de microsegundos y modulada con un LFO, tiene 2 niveles.
    • Línea 6: [RNG:x.x|MIX:x.x|Hz:xxxx|FF:x.x] (Ring modulator, Mezcla del Ring Modulator, frequencia del Ring Modulator y Flanged Feedback).
      • [RNG:x|:Activa un Ring Modulator (si en 1 es una onda sine, si es en 2 es una onda triangular,
      • |MIX:x.x|: el MIX dicta qué tanta de la señal afectada pasa
      • |Hz:xxxx|: Hz es al frequencia del modulador.
      • |FF:x.x]: es el Flanged Beedback, introduce, al ser activado, un delay en microsegundos que al incrementar se hace más profundo (se corta de 10 a 1 milisegundo) y se incrementa su mezcla, es afectado por la misma frequencia.

  • El orden de los efectos en el audio es: [G:x.x][COMP:x|ATT:x][BT:x.x][SR:xxx][RNG:x|MIX:x.x|Hz:xxxx|FF:x.x][F:x.x][C:x]
  • El audio en el looper sólo está activado cuando [RECORD] está armado!
L |--:  [####################]​​
[G:1.0][COMP:1|ATT:0] [LOAD]

[BT:0.3][SR:0.2][F:0.4][C:1]

[RNG:1|MIX:0.5|Hz:997 ]

BUSES DE AUDIO (LÍNEA 7). Los buses son grupos que reúnen instrumentos. Así que en el Bus 1 tendremos los sintetizadores, en el Bus 2 tendremos los samplers y en el Bus 3 tendremos el Looper.

La línea 7 contiene: |--BS1--|------BS2------|BS3|

Tocar cualquier bus cambia el menú de las líneas 4, 5 y 6 para controlar los ruteos y efectos globales. 
La coordenada en la línea 3 cambiará a BS1|--:, BS2|--: o BS3|--:.


Bus 1 ([BS1]), Bus 2 ([BS2]) y Bus 3 ([BS3])

  • Línea 4: [V:x.x][DLT:xxx|DLF:xxx][CLP:x]  Estos son valores individuales por Bus, es decir, cada bus tiene su propio volumen, su propio delay y su propio clip
    • [V:x.x] Volumen principal del bus 
    • [DLT:xxx] Tiempo del delay. Un delay es un retraso en la señal. Cada Bus tiene su propio delay, cuando el tiempo está en 000, no hay delay, a medida que se incrementa este número, se incrementa el tiempo que toma la señal en volver a sonar. Este delay es diferente del [RETRIGGER], en el retriger la señal de hecho se genera dos veces, en este delay, la señal no se genera de nuevo, sino que se produce un eco, como cuando un sonido rebota en una habitación.
    • [DLF:xxx] El "feedback" del delay, es decir, el número de veces que se repite esta señal retrasada, si se deja en 0's la señal sólo se repetirá una vez. 
    • [CLP:x] El clip implementa un compresor ​que sube el volumen general de la señal, pero limita su rango dinámico.
  • Línea 5: [SAT:xxx][RV:xxx] Estos son efectos GLOBALES aplicados a toda la señal, es decir, compartidos entre los 3 buses, todos comparten un saturador y un reverb.
    • [SAT:xxx] Es un saturador que incrementa armónicos pares e impares y mezcla la señal original para tratar de dar un acabado rico en armónicos pares e impares.
    • [RV:xxx] Es un reverb tipo freeverb (un algoritmo de cascadas de señales de delay) que cobija los 3 buses y se sitúa después del saturador.
  • El Flujo de la señal en los buses va así:
    • BS1:[V:x.x][DLT:xxx][DLF:xxx][CLP:x]\\ 
    • BS2:[V:x.x][DLT:xxx][DLF:xxx][CLP:x]--[SAT:xxx][RV:xxx]
    • BS3:[V:x.x][DLT:xxx][DLF:xxx][CLP:x]// 


  |--BS1--|------BS2------|BS3|​ 
[V:0.3][DLT:045|DLF:075][CLP:1]
[SAT:020][RV:020]

La línea 8 contiene: __|ZY1|ZY2|SA1|SA2|SA3|SA4|-L-|

  • Estas son las cabeceras de pista. Tocarlas selecciona el instrumento para editar sus parámetros en las líneas superiores. 

Modo Cabecera para Sintetizadores Si toca la cabecera [ZY1] o [ZY2] en la línea 8:

  • Línea 4: [OCT:DN|UP][NOTE:DN|UP] (Herramienta rápida para transponer toda la pista por octavas o semitonos).
ZY1|--:  [####################]​​
[OCT:DN|UP][NOTE:DN|UP]

Modo Cabecera para Samplers Si se toca la cabecera [SAx] en la línea 8 mientras, se entra a los parámetros globales del sample:

  • Línea 4: [OCT:  ][PIT:  ] 
    • [OCT:  ] Herramienta para subir o bajar una octava del sample
    • [PIT:  ] Herramienta para subir o bajar hasta 5 semitonos el pitch del sample
  • Línea 5: [ST: . ][EN: . ] [LOAD] 
    • [ST: . ] Puntos de inicio del audio
    • [EN: . ] Corte de fin del audio. 
    • [LOAD] abre el explorador de archivos para cargar un WAV al slot.
SA1|--:  [####################]​​
[OCT: 0][PIT: 0]
[ST:0.0][EN:1.0] [LOAD]

MATRIZ DE SECUENCIA (LÍNEAS 8 A 25)


  • Las líneas 9 a 24 contienen La cuadrícula de 16 pasos, cada paso puede tener 3 modos:
    • ---: El paso está inactivo.
    • [+]: El paso está activo y contiene un trigger o nuevo ataque de nota.
    • [-]: El paso está activo con legato, es decir, continúa o sostiene la nota anterior sin disparar un nuevo ataque, sólo es posible utilizar el GLIDE del Synth 1 [ZY1] en estado activo con legato.
  • La pista [-L-] tiene un indicador animado que muestra el estado de grabación o reproducción del loop continuo en lugar de pasos individuales.

En el siguiente ejemplo se muestran algunos pasos en diferentes modos de activación:

01|---|---|---|---|---|---|---|
02|---|---|---|---|---|---|---|
03|---|[+]|---|---|---|---|---|
04|[+]|---|---|---|---|---|---|
05|---|[+]|---|---|---|---|---|
06|---|[-]|---|---|---|---|---|
07|---|[-]|---|---|---|---|---|
08|[+]|---|---|---|[+]|---|---|
09|[-]|---|---|---|---|---|---|
10|[+]|---|---|---|---|---|---|
11|---|---|---|---|[+]|---|---|
12|---|---|[+]|---|---|---|---|
13|---|---|[-]|---|---|---|---|
14|---|---|---|---|---|---|---|
15|---|---|---|---|---|---|---|
16|---|---|---|---|---|---|---|

La línea 25 contiene: [1-16]-[17-32]-[33-48]-[49-64]

  • Selector de páginas. Tocar estos corchetes avanza el secuenciador visual a las siguientes páginas de pasos en patrones de hasta 64 pasos. Si [COPY] está activo, tocar una página de destino copia todo el contenido de la página actual a la seleccionada. Esta copia sobreescribe el contenido de la página a la que se va a copiar, así que debe usarse con cuidado.


 [1-16]-[17-32]-[33-48]-[49-64]

Esta es la interface de la aplicación, en la pantalla SONG (canción):

[PLAY]--[STOP]--[PAT]--[CONFIG]
[BPM:120]-[COPY]-[SONGPARTS:04]
01:      [####################]
[P01]-[P02]-[P03]-[P04]-[L05]
[P06]-[P07]-[P08]-[P09]-[P10]
-------------------------------

[RANDOM]               ____ 
Song:                 /     \
01:[---]X1           |  O  O |
02:[---]X1           |    O  |
03:[---]X1           |       |
04:[---]X1           UUUUUUUU
05:
06:
07:
08:
09:
10:
[SAVE]:Keep your progress
[LOAD]:Load a file
[CLEAR]:Clear steps
[NEW]:Start from scratch
[EXPORT]:Save as WAV+MIDI

[filename]
[00:00:00]



MODO CANCIÓN (SONG MENU)


Se accede tocando la etiqueta [P--] en la línea 1 del Modo Patrón. Este modo se utiliza para encadenar los patrones creados.

[PLAY]--[STOP]--[PAT]--[CONFIG]
  • [PLAY] / [STOP]: Arranca o detiene la reproducción completa de la canción.
  • [PAT]: Cierra el menú de canción y regresa al Modo Patrón (en el patrón que esté seleccionado en las líneas 4 o 5)
  • [CONFIG]: Entra a la pantalla de configuración general y hardware.
[BPM:120]-[COPY]-[SONGPARTS:04]
  • [BPM:---] muestra cuál es el tempo (beats per minute). El default es 120, y se ve así: [BPM:120]. Este se puede manipular tocándolo y luego usando la cinta de edición en la línea 3. También funciona como [TAP TEMPO]: tocar este parámetro repetidamente calcula el BPM manualmente.
  • [COPY]: Copia la estructura de la parte seleccionada a otra fila.
  • [SONGPARTS:xx]: Define cuántas filas o partes estructurales conforman la canción (Máximo 10).
01:      [####################]​
  • Muestra en qué songpart está ubicado el cursor, y la cinta de edición capacitiva para ajustar BPM o repeticiones de partes.
[P01]-[P02]-[P03]-[P04]-[L05]
[P06]-[P07]-[P08]-[P09]-[P10]

  • Las líneas 4 y 5 muestran los patrones de [P01] a [P10]. Tocar uno de estos asignará ese patrón a la fila de la canción actualmente seleccionada, y hara la selección para volver al modo de patrón.
[RANDOM]
  • La acción [RANDOM] permite generar, aleatoreamente, secuencias en el patrón selecionado. Al activarlo, [RANDOM] se pone rojo y al siguiente patrón que se toque ([P01]... [P10]) se llena de secuencias al azar en la duración selecionada. El patrón debe estar vacío para que esto funcione.
                        ____  
Song:                 /     \
01:[---]X1           |  O  O |
02:[---]X1           |    O  |
03:[---]X1           |       |
04:[---]X1           UUUUUUUU
05:[---]X1
06:[---]X1
07:[---]X1
08:[---]X1
09:[---]X1
10:[---]X1

  • Cada fila en esta lista es una "songpart" o parte de una canción, se le asignan differentes patrones y cuántas repeticiones tendrá.
  • Al tocar la fila se selecciona y se resalta en amarillo.
  • El número final (X4) indica cuántas veces se repetirá el patrón antes de avanzar a la siguiente fila. Se modifica arrastrando el dedo en la línea 3.
[SAVE]:Keep your progress
[LOAD]:Load a file
[CLEAR]:Clear steps
[NEW]:Start from scratch
[EXPORT]:Save as WAV+MIDI
[filename]
[00:00:00]

  • La lista final son opciones de proyecto.
  • [SAVE]: Guarda el progreso del proyecto en almacenamiento local.
  • [LOAD]: Carga un archivo de proyecto JSON previamente guardado.
  • [CLEAR]: Limpia la cuadrícula actual.
  • [NEW]: Inicia un proyecto desde cero sin samplers en memoria.
  • [EXPORT]: Exporta la canción completa como archivos de audio WAV y MIDI con el mismo nombre (diferente extensión de archivo)
  • El nombre del archivo de proyecto actual.
  • La duración en Horas:Minutos:Segundos de la canción.

Esta es la interface de la aplicación, en la pantalla CONFIG (configuración):

                         [BACK]
[MIDIdevice]:
[PLAY]:MIDI CC 103
[STOP]:MIDI CC 103
[PrevPAT]:MIDI CC 104
[NextPAT]:MIDI CC 105
[PATERN mode/SONG mode]
[TAP TEMPO]:MIDI Pedal CC 106
----------GAMEPAD--------------
Y/X:[RNGMIX increase/decrease]
A/B:[Filter increase/decrease]
R:[RNG type]
R2:[C type]
Up/Down:[DLT increase/decrease]
Left/Right:[DLF decrease/decrs]
Left Stick:[FF MIX/DELAY]
Right Stick:[RNG/FF FREQ]



It's dangerous to go alone
TAKE THIS


PANTALLA DE CONFIGURACIÓN (CONFIG SCREEN)


Se accede tocando [CONFIG] desde la línea 1 del Modo Canción.

  • Línea 1: [BACK] (Regresa al Modo Canción).
  • Línea 2: [MIDIdevice]:NONE (Tocar esta línea abre el menú nativo del sistema para seleccionar la salida MIDI de hardware conectado. El texto cambiará al nombre del dispositivo).
  • Líneas 3 a 20: Referencia de ruteo de hardware. Las funciones mapeadas no son botones de pantalla, sino el registro estricto de entradas externas.

Entradas MIDI Soportadas:

  • [PLAY]: MIDI CC 103
  • [STOP]: MIDI CC 103
  • [PrevPAT]: MIDI CC 104
  • [NextPAT]: MIDI CC 105
  • [TAP TEMPO]: MIDI Pedal CC 106

Entradas de Gamepad Soportadas:

  • Y/X:[RNGMIX increase/decrease]
  • A/B:[Filter increase/decrease]
  • R:[RNG type]
  • R2:[C type]
  • Up/Down:[DLT increase/decrease]
  • Left/Right:[DLF decrease/decrs]
  • Left Stick:[FF MIX/DELAY]
  • Right Stick:[RNG/FF FREQ]


Tabla de Referencia Rápida de Controles (Gamepad y MIDI)

FUNCIONALIDADES MIDI 

FUNCIONALIDAD MIDI (Musical Instrument Digital Interface)

[ENTRADAS MIDI / MIDI IN] El sistema recibe comandos CC (Control Change) para manipular el transporte y la navegación:

  • [CC 103]: Alterna el estado de reproducción (Play / Stop).
  • [CC 104]: Retrocede al patrón anterior.
  • [CC 105]: Avanza al patrón siguiente.
  • [CC 106]: Tap Tempo. Calcula el BPM (Beats Per Minute) promediando los últimos 5 pulsos.

[SALIDAS MIDI / MIDI OUT] La matriz del secuenciador transmite nativamente comandos de Note On (0x90) y Note Off (0x80) con velocidad escalada a parámetros de 0 a 127. El ruteo aísla estrictamente cada instrumento en su propio canal MIDI:

  • ZY1 (Sintetizador 1): Transmite en el Canal 1. Notas variables.
  • ZY2 (Sintetizador 2): Transmite en el Canal 2. Notas variables.
  • SA1 (Sampler 1): Transmite en el Canal 3. Notas mapeadas 1:1 desde la raíz.
  • SA2 (Sampler 2): Transmite en el Canal 4. Notas mapeadas 1:1 desde la raíz.
  • SA3 (Sampler 3): Transmite en el Canal 5. Notas mapeadas 1:1 desde la raíz.
  • SA4 (Sampler 4): Transmite en el Canal 6. Notas mapeadas 1:1 desde la raíz.

[SINCRONIZACIÓN Y TRANSPORTE DE RELOJ] El motor de transporte procesa señales de sincronización de reloj por hardware y Mensajes del Sistema en Tiempo Real:

  • Start (0xFA): Inicializa los contadores de pasos a cero, activa el estado de reproducción (isPlaying = true) e interrumpe el temporizador interno del sistema.
  • Stop (0xFC): Detiene el secuenciador de forma inmediata y reestablece el control de temporización al reloj interno del dispositivo Android.
  • MIDI Clock (0xF8): Sincronización temporal externa con una resolución fija de 24 PPQN (Pulses Per Quarter Note / Pulsos por Negra). El motor avanza internamente 1 paso de la matriz cada 6 tics de reloj recibidos, garantizando sincronía exacta con hardware externo.

[CONTROL DE PARÁMETROS CC (CONTROL CHANGE)] Las variables flotantes internas se traducen directamente al rango de 7 bits (0-127), las señales de control modifican las variables internas del paso (Event) seleccionado en la pista activa de la matriz:

  • Volumen General de Pista: Mapeado a CC 7 (Channel Volume). Traduce el rango 0-127 a un valor flotante lineal entre 0.0f y 1.0f.
  • Filtro (FLT X): Mapeado a CC 91 (Effects Level). Modifica el nivel del bitcrusher en el looper o la profundidad del VSO en el sintetizador.
  • Bitcrush / VSO Y: Mapeado a CC 91 (Effects Level). Modifica el nivel del bitcrusher en el looper o la profundidad del VSO en el sintetizador.
  • Detune (DTN Y): Mapeado a CC 95 (Phaser/Detune Depth). Controla la desafinación fina de la pista.
  • Ataque (ADSR Envelope Attack): Mapeado a CC 73. Asigna valores discretos: 0 (valores 0-42), 1 (valores 43-85), o 2 (valores 86-127).
  • Decaimiento (ADSR Envelope Decay): Mapeado a CC 75. Asigna valores discretos (0, 1, o 2) según el rango de entrada de 7 bits.
  • Sostenido (ADSR Envelope Sustain Level): Mapeado a CC 70. Determina el nivel de sostenido en tres estados analizados por rangos de tensión discretos.
  • Relajación (ADSR Envelope Release): Mapeado a CC 72. Modifica el tiempo de liberación final del amplificador de la nota.
MIDI CC 7[VOL]Controla el nivel de volumen lineal de la pista activa en escala de 0.0 a 1.0.
MIDI CC 5[GLIDE]Ajusta el tiempo de portamento de la pista activa, cuantizado en tres estados discretos (0, 1, 2).
MIDI CC 69[RETRIGGER]Modifica el comportamiento de reencendido de nota de la pista activa (cuantizado en estados 0, 1, 2).
MIDI CC 70[Sustain (ADSR)]Ajusta el nivel de sostenimiento de la envolvente de la pista activa (cuantizado en estados 0, 1, 2).
MIDI CC 72[Release (ADSR)]Ajusta el tiempo de liberación de la envolvente de la pista activa (cuantizado en estados 0, 1, 2).
MIDI CC 73[Attack (ADSR)]Ajusta el tiempo de ataque de la envolvente de la pista activa (cuantizado en estados 0, 1, 2).
MIDI CC 74[FILTER] CutoffModifica la frecuencia de corte del filtro para la pista activa de forma lineal (0.0 a 1.0).
MIDI CC 75[Decay (ADSR)]Ajusta el tiempo de decaimiento de la envolvente de la pista activa (cuantizado en estados 0, 1, 2).
MIDI CC 76[WAVETYPE]Cambia la forma de onda del oscilador en la pista activa, cuantizada en tres estados (0, 1, 2).
MIDI CC 91[VSO-Y]Controla el parámetro vertical del VSO (Y) en la pista seleccionada de forma lineal (0.0 a 1.0).
MIDI CC 92[VSO-X]Controla el parámetro horizontal del VSO (X) en la pista seleccionada de forma lineal (0.0 a 1.0).
MIDI CC 95[CHORUS]Ajusta el efecto de coro o desafinación en la pista activa, cuantizado en tres niveles (0, 1, 2).
MIDI CC 103[PLAY]Alterna el estado de ejecución del secuenciador; restablece los valores dspStep y currentStep a 0 en la detención.
MIDI CC 104[PATTERN-PRVIOUS]Decrementa de forma secuencial el índice del parámetro activePattern (bucle automático de 0 a 9).
MIDI CC 105[PATTERN-NEXT]Incrementa de forma secuencial el índice del parámetro activePattern (bucle automático de 9 a 0).
MIDI CC 106[TAP TEMPO]Calcula y actualiza el BPM global basándose en la latencia promedio de los últimos pulsos.

Easter Egg (Afinaciones Alternativas) 

Dentro del Modo Canción, si mientras tienes uno de los 4 patrónes (P01 a P04) seleccionado, presionas [COPY] y tocas repetidamente el mismo patrón seleccionado, se revelará un texto en la línea 7 indicando el nuevo sistema de afinación global del motor: [12-TET], [24-TET], [JUST], o [PYTH].

Sistemas de Afinación (Tuning Systems)

Los cuatro sistemas determinan cómo el motor de audio divide las frecuencias y calcula la distancia matemática entre las notas.

[12-TET] (12-Tone Equal Temperament / Temperamento Igual de 12 Notas)

  • Definición: Es el sistema de afinación estándar de la música occidental moderna. Divide la octava en 12 semitonos exactamente iguales.
  • Comportamiento acústico: La relación de frecuencia entre cada nota adyacente es constante. Para lograr esta simetría, todos los intervalos (excepto la octava) están ligeramente "desafinados" respecto a la serie armónica natural.
  • Uso práctico: Permite cambiar de tonalidad (modular) libremente sin que ningún intervalo suene mal o disonante. Es el comportamiento por defecto de casi cualquier sintetizador o DAW.

[24-TET] (24-Tone Equal Temperament / Temperamento Igual de 24 Notas)

  • Definición: Divide la octava en 24 partes matemáticas iguales, introduciendo "cuartos de tono". Cada paso es exactamente la mitad de un semitono convencional occidental.
  • Comportamiento acústico: Duplica la resolución del teclado/matriz. Mantiene la propiedad modular del 12-TET pero con el doble de densidad frecuencial.
  • Uso práctico: Utilizado para música microtonal contemporánea o para aproximar escalas de sistemas no occidentales (como los maqams árabes o los dastgáhs persas) que requieren intervalos menores a un semitono.

[JUST] (Just Intonation / Afinación Justa)

  • Definición: Utiliza proporciones matemáticas simples y números enteros puros (ej. 3:2 para la quinta, 5:4 para la tercera mayor) derivados directamente de la serie armónica natural. Todo se afina respecto a una única frecuencia base.
  • Comportamiento acústico: Produce acordes tríadas completamente puros, sin los "batimentos" (oscilaciones de fase) presentes en el 12-TET. La resonancia es acústicamente perfecta.
  • Uso práctico: Excelente para drones, música estática o progresiones limitadas a una sola tonalidad. Al cambiar a un tono lejano a la frecuencia base, las proporciones matemáticas colapsan, resultando en intervalos extremadamente disonantes (conocido como el intervalo del "lobo").

[PYTH] (Pythagorean Tuning / Afinación Pitagórica)

  • Definición: Un sistema construido apilando exclusivamente quintas perfectas puras (relación 3:2).
  • Comportamiento acústico: Las cuartas, quintas y octavas son acústicamente puras y estables. Sin embargo, matemáticamente, esto obliga a que las terceras y sextas asuman proporciones complejas (ej. 81:64).
  • Uso práctico: Históricamente asociado a la música medieval. Es altamente expresivo para líneas melódicas de una sola voz (monofónicas) o armonías basadas únicamente en quintas y cuartas (power chords). Usar acordes de tercera bajo este sistema resulta en una sonoridad deliberadamente áspera y tensa en comparación con [JUST] o [12-TET].


NoteSystem 0 (12TET)System 1 (24TET)System 2 (Just)System 3 (Pythagorean)
C265.41 Hz169.64 Hz66.00 Hz66.00 Hz
C#269.30 Hz174.61 Hz70.40 Hz69.53 Hz
D273.42 Hz179.73 Hz74.25 Hz74.25 Hz
D#277.78 Hz185.00 Hz79.20 Hz78.22 Hz
E282.41 Hz190.42 Hz82.50 Hz83.53 Hz
F287.31 Hz196.00 Hz88.00 Hz88.00 Hz
F#292.50 Hz201.74 Hz92.81 Hz93.97 Hz
G298.00 Hz207.65 Hz99.00 Hz99.00 Hz
G#2103.83 Hz213.74 Hz105.60 Hz104.30 Hz
A2110.00 Hz220.00 Hz110.00 Hz111.38 Hz
A#2116.54 Hz226.45 Hz118.80 Hz117.33 Hz
B2123.47 Hz233.08 Hz123.75 Hz125.30 Hz
C3130.81 Hz239.91 Hz132.00 Hz132.00 Hz
C#3138.59 Hz246.94 Hz140.80 Hz139.06 Hz
D3146.83 Hz254.18 Hz148.50 Hz148.50 Hz
D#3155.56 Hz261.63 Hz158.40 Hz156.44 Hz
E3164.81 Hz269.29 Hz165.00 Hz167.06 Hz
F3174.61 Hz277.18 Hz176.00 Hz176.00 Hz
F#3185.00 Hz285.30 Hz185.63 Hz187.95 Hz
G3196.00 Hz293.66 Hz198.00 Hz198.00 Hz
G#3207.65 Hz302.27 Hz211.20 Hz208.59 Hz
A3220.00 Hz311.13 Hz220.00 Hz222.75 Hz
A#3233.08 Hz320.24 Hz237.60 Hz234.67 Hz
B3246.94 Hz329.63 Hz247.50 Hz250.59 Hz
C4261.63 Hz339.29 Hz264.00 Hz264.00 Hz
C#4277.18 Hz349.23 Hz281.60 Hz278.12 Hz
D4293.66 Hz359.46 Hz297.00 Hz297.00 Hz
D#4311.13 Hz369.99 Hz316.80 Hz312.89 Hz
E4329.63 Hz380.84 Hz330.00 Hz334.13 Hz
F4349.23 Hz392.00 Hz352.00 Hz352.00 Hz
F#4369.99 Hz403.48 Hz371.25 Hz375.89 Hz
G4392.00 Hz415.30 Hz396.00 Hz396.00 Hz
G#4415.30 Hz427.47 Hz422.40 Hz417.19 Hz
A4440.00 Hz440.00 Hz440.00 Hz445.50 Hz
A#4466.16 Hz452.89 Hz475.20 Hz469.33 Hz
B4493.88 Hz466.16 Hz495.00 Hz501.19 Hz
C5523.25 Hz479.82 Hz528.00 Hz528.00 Hz
C#5554.37 Hz493.88 Hz563.20 Hz556.25 Hz
D5587.33 Hz508.35 Hz594.00 Hz594.00 Hz
D#5622.25 Hz523.25 Hz633.60 Hz625.78 Hz
E5659.25 Hz538.58 Hz660.00 Hz668.25 Hz
F5698.46 Hz554.37 Hz704.00 Hz704.00 Hz
F#5739.99 Hz570.61 Hz742.50 Hz751.78 Hz
G5783.99 Hz587.33 Hz792.00 Hz792.00 Hz
G#5830.61 Hz604.54 Hz844.80 Hz834.38 Hz
A5880.00 Hz622.25 Hz880.00 Hz891.00 Hz
A#5932.33 Hz640.49 Hz950.40 Hz938.67 Hz
B5987.77 Hz659.26 Hz990.00 Hz1002.38 Hz