Página 2 de 2

Re: Interpretanto archivos .MID sencillos..

Publicado: Dom Sep 06, 2009 7:40 pm
por mcleod_ideafix
winston escribió:Aquí está un enlace que explica cómo se funciona un "DAC de resistencias" (en inglés) : http://www.nomad.ee/micros/r2rdac.html . El circuito es muy similar del Specdrum :-)


Ostras! Si que es idéntico. Pues te juro que el que he dibujado lo he hecho de memoria, de uno que hice hace ya más de 14 años. De hecho, el que se propone ahí usa el 74374, que usa carga disparada por flanco en lugar de por nivel. Es mejor opción, así que en mi diseño propondría cambiar el 74573 por un 74574.

EDITO: he cambiado el esquema para que use un 574 en lugar de un 573. Prefiero la carga por flanco en lugar de por nivel...

Re: Interpretanto archivos .MID sencillos..

Publicado: Dom Sep 06, 2009 8:16 pm
por winston
Y ahora, estoy pensando en cómo puedo hacer un tarjeta de sonido para el Spectrum... una CPLD, 64kb memoria, un DAC sencillo... y entonces, se puede llenar la memoria con samples (en una manera similar de cómo se puede enviar datos a /dev/dsp) - y la CPLD envía dichos samples al DAC a 44,1kHz, o 22,050kHz etc. Significa que el Spectrum puede mezclar los samples nuevos mientras el DAC emite los que ya han sido mezclado...

Argh, tengo que acabar con el Spectranet...tengo que acabar con el Spectranet...(etc). ¡Hay demasiados proyectos otra vez! :-)

Re: Interpretanto archivos .MID sencillos..

Publicado: Dom Sep 06, 2009 9:14 pm
por mcleod_ideafix
Pues cuando quieras te cuento mi idea y te termino de picar con el tema :P

Re: Interpretanto archivos .MID sencillos..

Publicado: Dom Sep 06, 2009 9:33 pm
por zxbruno
Todos ustedes están sufriendo de Gasmanitis. :p

Re: Interpretanto archivos .MID sencillos..

Publicado: Dom Sep 06, 2009 10:12 pm
por mcleod_ideafix
Huy! y eso que es? :O

Re: Interpretanto archivos .MID sencillos..

Publicado: Lun Sep 07, 2009 5:20 am
por mcleod_ideafix
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.

Imagen

PD: ¿cuántos canales estará usando esto otro? :D

Re: Interpretanto archivos .MID sencillos..

Publicado: Mar Sep 29, 2009 7:13 am
por ZXevious
¡Qué pasada! La verdad es que suena muy bien emulado, ¿hay mucha diferencia con el sonido que sale del Specdrum o la emulación está lograda?

Re: Interpretanto archivos .MID sencillos..

Publicado: Mar Sep 29, 2009 2:16 pm
por mcleod_ideafix
Practicamente suena igual la versión emulada que el SpecDrum original, aunque eso dependerá en última instancia del filtro paso bajos que tenga a la entrada tu amplificador, o a la salida tu tarjeta de sonido. En otro hilo tengo puesto un video con la salida real de un SpecDrum

Re: Interpretanto archivos .MID sencillos..

Publicado: Mar Oct 08, 2019 9:04 am
por mcleod_ideafix
Y 10 años después, sí que fui capaz de interpretar archivos MIDI sencillos, y no tan sencillos. Como decía zxbruno, interpreto los de tipo 0. Y suenan muy bien :) . En 10 años también he conseguido hacer DMA al Specdrum y la CPU puede dedicarse a hacer otras cosas mientras suenan muestras digitales.
Hay que ver cómo pasa el tiempo... :)

Re: Interpretanto archivos .MID sencillos..

Publicado: Mié Oct 09, 2019 8:54 am
por Bone
mcleod_ideafix escribió:Y 10 años después, sí que fui capaz de interpretar archivos MIDI sencillos, y no tan sencillos. Como decía zxbruno, interpreto los de tipo 0. Y suenan muy bien :) . En 10 años también he conseguido hacer DMA al Specdrum y la CPU puede dedicarse a hacer otras cosas mientras suenan muestras digitales.
Hay que ver cómo pasa el tiempo... :)
Y que lo digas!! [emoji23]

Re: Interpretanto archivos .MID sencillos..

Publicado: Mié Oct 09, 2019 11:23 pm
por falvarez
mcleod_ideafix escribió:Y 10 años después, sí que fui capaz de interpretar archivos MIDI sencillos, y no tan sencillos. Como decía zxbruno, interpreto los de tipo 0. Y suenan muy bien :) . En 10 años también he conseguido hacer DMA al Specdrum y la CPU puede dedicarse a hacer otras cosas mientras suenan muestras digitales.
Hay que ver cómo pasa el tiempo... :)
Esto sí que es un señor reflote. Claro que la ocasión lo merece :D