zxbruno escribió:En relación a .MODs en el Spectrum, recuerdo que alguien había dicho que era muy dificil (no imposible) debido...
Bueno, pues aquí va el más difícil todavía.
He conseguido escribir una rutina que es capaz de manejar cuatro canales independientes. Cada canal puede usar un instrumento diferente (aunque en la demo sólo uso uno). Este instrumento (sample) puede ser de hasta 4KB, en formato PCM, 8 bits con signo (si ocupa menos, se rellena con 0's hasta alcanzar los 4KB). En un Spectrum 48K con SpecDrum se alcanzan los 8000 Hz de frecuencia de muestreo. Lo mínimo que se despacha para que el sonido sea inteligible. Cada nota se puede reproducir en 3 octavas completas (igual que los MOD's originales). No se ha implementado ningún comando ni efecto de los MOD's. El tempo (comando "ticks per division") está fijado en el código fuente con un "equ" a 6.
Como demostración, he pasado a "define byte" en el código fuente los acordes y melodía principal de "Es por tí" del grupo Cómplices. El sample, por supuesto, es de un piano, pero podeis cambiarlo por otro sobreescribiendo a partir de la dirección 51200 (C800h). Si usáis Spectaculator, mientras se escucha la canción podeis arrastrar un fichero binario con el nuevo sample, decirle que lo ubique en la dirección 51200 (no chequeeis la opción de "ejecutar después de cargar"), y lo usará al instante en lugar del piano. Como digo, el sample debe estar grabado en PCM, 8 bits, con signo (OJO que los WAV's de 8 bits son sin signo), y ocupar 4096 bytes.
No he incorporado bases ni percusión. No tengo cabeza para llegar a eso componiendo en un editor de texto y compilando
Los acordes que se escuchan no están precalculados. El único sample que hay es un sonido limpio de piano. La melodía tiene acordes mayores y menores, y todos se reproducen usando tres de los cuatro canales, que tocan las tres notas del acorde. El cuarto canal se deja para la melodía (la mano derecha del piano).
Pinchar en la imagen para descargar la demo. Si no se tiene un SpecDrum (mirad un poco antes en este mismo hilo para saber cómo hacerse uno), el Spectaculator lo emula.
PD: ¿cuántos canales estará usando
esto otro?