Interpretanto archivos .MID sencillos..

Todo sobre la creación, diseño y programación de nuevo software para
nuestro Spectrum

Moderador: Sir Cilve Sinclair

Avatar de Usuario
zxbruno
Freddy Hardest
Mensajes: 584
Registrado: Dom Jun 03, 2007 3:28 am
Ubicación: Anaheim, California, USA

Interpretanto archivos .MID sencillos..

Mensaje por zxbruno » Sab Sep 05, 2009 4:46 am

Recuerdo los listados BASIC que salían en Microhobby con musica para el 128K. Muchos de ellos usaban los 3 canales pero eran sencillos, y del punto de vista tecnico inferiores a lo que se hace hoy día con trackers. Me gustan muchas de las cosas que han hecho personas como Yerzmyey y Mr BEEP, pero me sigue gustando la musica sencilla con BEEP en el 48K y PLAY en el 128K. Sé que existen varios editores de musica para los dos, pero la idea de lograr convertir algo que hago en un piano en algo que pueda transferir al Spectrum me sigue haciendo soñar. Quizás no haya nadie que comparta esta idea conmigo, pero tengo esperanzas de encontrar a más personas a las cuales se les hace más facil crear musica en un piano en vez de un ordenador.

He tratado de estudiar un poco más el formato MIDI, y he llegado a las siguientes conclusiones.

-Es posible cargar un archivo .MID en el Spectrum, siempre y cuando quepa en memoria
-El archivo debería ser en formato 0, o sea, un solo track
-Las notas no deberían hacer overlap, o sea, sobreponerse una a la otra, ni siquiera parcialmente
-Los parametros de cosas especiales que no tienen nada que ver con lo que el Spectrum puede hacer se ignorarían.
-Se usaría un solo instrumento

Las posibilidades:

-Se podría exportar el archivo .MID en un listado BASIC para 128K con comandos play
-En versiones futuras se podría crear musica monofonica en un Yamaha PSR, Korg, Roland o cualquier otro keyboard que soporte GM o XG y
-En versiones futuras se podría interpretar ritmos. Un ritmo de un Yamaha PSR, por ejemplo, se compone de 3 tracks o más. 2 para los drums, uno para el bajo y uno o dos para el arrangement. Se podría exportar apenas el drum1 y bass1 y dejar el tercer canal de AY para la melodía.

Estoy seguro que se podrían hacer cosas muy interesantes, pero estoy nadando en dirección contraria a los demás. Los de la escena Spectrum prefieren trackers. Sé que es posible pero no sé como hacerlo. Creo que personas que entienden lenguajes como el C quizás tengan una mejor percepción de lo que sería necesário.

Aquí os dejo los hilos de lo que he estado leyendo:

http://253.ccarh.org/handout/smf/
http://jedi.ks.uiuc.edu/~johns/links/mu ... ifile.html
http://www.fourmilab.ch/webtools/midicsv/
http://cnx.org/content/m15051/latest/
http://faydoc.tripod.com/formats/mid.htm < En este hilo se puede apreciar una tabla de numeros que se podrían convertir en notas que el Spectrum sepa interpretar.

Hasta he pensado en buscar una forma de conectar un sintetizador a un PC y hacer que los datos vayan pal puerto COM para que emuladores como el Spectaculator pudieran ser usados para interpretar los datos, pero soy tonto si pienso que tal cosa se podría hacer de esa manera.

Saludos.

Avatar de Usuario
winston
Sabreman
Mensajes: 469
Registrado: Mar Ago 19, 2008 4:17 pm
Ubicación: Isla de Man
Contactar:

Re: Interpretanto archivos .MID sencillos..

Mensaje por winston » Sab Sep 05, 2009 9:51 pm

Quiero hacer música para el Spectrum con un piano también :-) Me gusta hacer "blues" para el Spectrum, y sería más fácil hacer música así usando el piano.

Sin embargo, nunca he escrito algo que hace música en un ordenador. Por eso no creo que sea la persona correcta para escribir este programa (además, estoy un poco ocupado con el Spectranet. De hecho, debería escribir más código para el sistema de ficheros de la red en vez de escribir mensajes aquí :-))
Tarjeta ethernet para el Spectrum - http://spectrum.alioth.net/doc

Debemos practicar un quirkafleeg

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3984
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Interpretanto archivos .MID sencillos..

Mensaje por mcleod_ideafix » Dom Sep 06, 2009 7:51 am

Pues esto que acabo de terminar igual viene como anillo al dedo... :D

Resulta que al igual que tú, Dylan, tengo cien mil cosas en la cabeza, y una de ellas es hacer algo relacionado con sonido y Spectrum. Los "puristas" se echarán las manos a la cabeza si hablo de múltiples canales, memoria dedicada, etc pero es lo que tengo en mente (la mecánica sería parecida a lo que hace la Gravis Ultrasound, para que me entendáis).

Mientras llega el día en que tenga tiempo para ello, he experimentado con software puro, y usando los recursos ya existentes. Bueno, al final vereis que me he tomado una cierta "licencia" aunque yo no lo considero "hacer trampa" porque este periférico del que hablaré existe desde el año 85 o quizás antes.

Bueno, pues la cosa es que desde hace muchos años he seguido, admirado, y hasta implementado, el formato .MOD de Amiga. En 1994 hice un tracker para MSDOS y una librería para poder usar MOD's desde dentro de un programa. El tracker podía usar el altavoz interno, una Sound Blaster mono o Pro, y una tarjeta de sonido estéreo que diseñé como proyecto de fin de carrera (con posibilidad de captura y reproducción simultáneas, cosa que no era común en las tarjetas comerciales de la época).

En el PC sabeis que hay un altavoz que funciona más o menos igual que el del Spectrum (hablo de los PC's con 80386 como mucho, que era lo que manejaba por aquellos días). Digo más o menos porque el del PC permite realizar con más eficiencia el PWM, pero bueno, esa es otra historia. Total, que mientras pensaba en hasta dónde sería capaz de llegar con una implementación puramente software, comandando el altavoz interno del Spectrum.

Para esta prueba, busqué un módulo de Amiga que sólo tuviera un instrumento (por aquello de simplificar las actualizaciones) y encontré PRELUDE.MOD . Un preludio de no se qué autor para piano. El único instrumento por tanto es un piano, un sample que ocupa unos 9KB.

Las primeras pruebas dieron como resultado que podía usar dos canales de sonido a una frecuencia de reproducción de poco más de 12000 Hz. Suficiente para tener un sonido próximo a lo decente. Además, usar más de dos canales enlentecería mucho más el sistema, ya que lo que hago es usar un set de registros para cada canal. De esa forma me evito cargas y almacenamientos a memoria, que son costosas en tiempo. Tengo escrita la misma rutina para cuatro canales, pero la frecuencia de muestreo baja hasta los 3500 Hz... algo inaudible, a no ser que se haga "trampa" y se suba artificialmente la frecuencia de trabajo del Z80 de 3.5 a 14 MHz (cosa trivial en un emulador pero... a no ser que tengas un ZX Badaloc Reloaded, es algo difícil de conseguir en una máquina real...)

PRELUDE.MOD es un MOD en el que se toca una melodía, pero cada siguiente nota se situa en un canal diferente (mirar captura de pantalla). Aunque nunca suenan dos notas a la vez (excepto al final), el "esparcir" las notas en los diferentes canales hace que el resultado sea mucho más natural, ya que la siguiente nota no apaga bruscamente la anterior, sino que se mezcla con ella por unos instantes.

Como en esta prueba manejo dos canales y no cuatro, los canales 1 y 3 del MOD original se fundieron en el canal 1, y el 2 y 4, en el 2. El proceso de conversión del MOD a los datos que necesita el reproductor se ilustra en esta imagen. A la izquierda, el MODPlug Tracker, y a la derecha, un editor de texto con la parte del código fuente donde está la definición de los patrones a dos canales.

Imagen

Si os fijáis en la dos últimas líneas del editor de la derecha, en el canal 1 se toca la nota B4 (SI en la 4º octava), y en la siguiente división (una división son 6/50 de segundo) se toca la nota D5 (RE en la 5º octava) en el segundo canal. En la siguiente división (no aparece aún) la nota que se tocara apagaría a B4, pero al menos teniendo dos canales consigo que B4 y D5 lleguen a coincidir en el tiempo empezando a sonar la segunda un poco antes de que termine de sonar la primera. Como digo, la cosa es que resulte un sonido más natural.

He usado cuatro métodos de reproducción para el sonido. El primero, como no podía ser de otra forma, es el beeper. En prelude_2bits.tap está el fichero con el programa que lo implementa.
Se llama "2bits" porque lo que hago no es simplemente levantar y bajar el altavoz. Según esta página se pueden conseguir hasta 4 valores diferentes de tensión en la salida MIC/EAR del Spectrum. He usado los valores correspondientes a un ISSUE 3. Lástima que los valores no estén igualmente espaciados, sino que hay dos próximos, y luego otros dos próximos, pero entre unos y otros hay mucho "espacio" libre. No es ni mucho menos lo ideal, pero al menos es "un poquito mejor" que simplemente levantar y bajar el altavoz.

Una mejora (bueno, según se mire) de este método es intentar generar una señal PWM con el altavoz del Spectrum. Con el del PC esto no requiere mucho esfuerzo, pero con el del Spectrum hay que implementar por software el retraso entre que se sube el altavoz y se baja. Ese retraso nos hará perder ciclos preciosos de reloj, así que hay que usar cuantos menos bits sea posible. Esta implementación del PWM usa 4 bits, y está en el fichero prelude_pwm.tap. Al ponerlo escucharéis el típico pitido que acompaña a las implementaciones del PWM, cuando la frecuencia de muestreo no es suficientemente elevada. Si esto lo escucháis a través de unos altavoces que tengan control de tono, bajad todo lo posible los agudos, y veréis como se escucha francamente bien.

Tan bien, que incluso mejora (para mi) al tercer método: usar el AY-8912. Como muchos sabréis, es posible reproducir muestras digitales con el AY jugando con el parámetro de volumen. Éste tiene 16 valores de volumen, espaciados de forma logarítmica, lo cual no es bueno, pero al menos es mejor que el espaciado del método "2 bits". Unos italianos consiguieron mejorar esto, haciendo que el AY reprodujera con una calidad comparable a un sistema digital de 8 bits, pero esto supone preparar las muestras digitales previamente, usando el algoritmo de búsqueda de Viterbi, algo imposible de usar en tiempo real con el Spectrum (ya que las muestras se calculan sobre la marcha).
No he usado por tanto el método de los italianos, sino el "habitual" de cambiar el volumen. Normalmente se cambia en los tres canales, para que suene más fuerte, pero esto gasta muchos ciclos (del orden de 50 para cada canal) así que lo he reducido a un sólo canal. Se escucha más bajo, pero al menos la velocidad de reproducción es comparable a la de los otros métodos. Está en prelude_ay.tap .

La última prueba, que he dejado para el final, usa un periférico añadido al Spectrum (funciona con los modelos de 48K / 128K, y con una pequeña modificación, con el +2A/3). Es el SpecDrum:

Imagen

Este periférico es en realidad extremadamente simple. Comparable a un interface de joystick. Consiste en un registro que almacena el valor que se escriba al puerto 223. Dicho valor lo pasa a un conversor digital-analógico, y de ahí a un pequeño filtro pasa bajos, que a su vez lo saca por un cable que se puede enchufar a un amplificador. En este video lo podéis ver en acción.
Decir también que la misma casa, Cheetah, fabricó el Music Machine, que es compatible con SpecDrum en tanto que implementa el mismo sistema de reproducción de sonido, pero además, el Music Machine permitía grabar nuevos sonidos, y tenía MIDI de entrada y salida.

En resumen: para sacar audio digital con el SpecDrum lo único que hay que hacer es un OUT al puerto 223 con el valor de 8 bits que queremos sacar. Este valor es sin signo.

La cosa se simplifica bastante, comparado con cualquiera de los otros tres métodos. La frecuencia de reproducción sobrepasa así los 12000 Hz, y además, al ser 8 bits de verdad suena muchísimo mejor. Además, Spectaculator entre otros emuladores, implementa este periférico (Tools -> Options -> Hardware), aunque tengo que decir que Spectaculator en Windows 7 no suena tan bién (en mi caso) como el SpecDrum real en mi Spectrum de 48K :)

El fichero que implementa este método es prelude_specdrum.tap .

Y todos los ficheros mencionados, más el MOD original (que se puede escuchar con ModPlug Tracker, WinAmp, o VLC entre otros) están en este enlace.
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
Rinconete
Jack The Nipper
Mensajes: 193
Registrado: Mar Oct 09, 2007 7:32 pm
Ubicación: Valladolid

Re: Interpretanto archivos .MID sencillos..

Mensaje por Rinconete » Dom Sep 06, 2009 9:03 am

La conversión a dos canales suena bastante bien, supongo que si hubiera más solapamiento entre canales se perdería más calidad. En cuanto a los métodos, es curioso que el primero (el de 2 bits) suena bien y recuerda en el estilo a las músicas de los juegos de entonces. Me llama la atención que con el AY se obtienen notas, aunque más nítidas, bastante ruidosas (para mis oídos). El método PWM parece sonar bastante bien, ¿podría implementarse alguna clase de filtro SW para eliminar el pitidillo de alta frecuencia?

Y Con el SpecDrum la cosa se sale, suena muy bien.

Avatar de Usuario
winston
Sabreman
Mensajes: 469
Registrado: Mar Ago 19, 2008 4:17 pm
Ubicación: Isla de Man
Contactar:

Re: Interpretanto archivos .MID sencillos..

Mensaje por winston » Dom Sep 06, 2009 11:17 am

¡Me mola el video del Specdrum! No me di cuenta que este dispositivo era tan bueno. Tengo que pillarme uno...
Tarjeta ethernet para el Spectrum - http://spectrum.alioth.net/doc

Debemos practicar un quirkafleeg

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3984
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Interpretanto archivos .MID sencillos..

Mensaje por mcleod_ideafix » Dom Sep 06, 2009 3:15 pm

No sé si será fácil conseguir uno original. Bueno, en eBay UK hay uno ahora mismo, pero es muy fácil hacerse uno. Solamente necesitas decodificar IORQ, A5 y WR, para que se active la carga de un 74LS573 cuando estas tres señales sean 0. El 74LS573 tendrá su entrada conectada al bus de datos, OE siempre bajo, y LE conectado a la salida del decodificador (que puedes hacer con un 74LS02).
Los 8 bits de salida del 573 los llevas a una red R-2R, y la salida de esa red la pasas por un filtro RC, y de ahí a un altavoz o un amplificador.

He aquí un esquema rápido de cómo sería:
Imagen

Este es de hecho otro proyecto de hardware muy fácil de acometer. Salvo el conector del bus trasero, el resto de componentes es de fácil adquisición en tiendas de electrónica. El 74HCT573 puede sustituirse por un 373, pero atención! que cambia el patillaje. He usado el 573 por ser más... "directo" (la entrada está a un lado del chip, y la salida, al otro, así que para los que se hagan este circuito con placa pre-perforada lo tendrán más fácil)
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3984
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Interpretanto archivos .MID sencillos..

Mensaje por mcleod_ideafix » Dom Sep 06, 2009 3:26 pm

Rinconete escribió:La conversión a dos canales suena bastante bien, supongo que si hubiera más solapamiento entre canales se perdería más calidad.

Con 4 canales lo que pasa es que el bucle de reproducción se ralentiza tanto que para que suene razonablemente bien deberías tener un Z80A funcionando a 14MHz. Con dos canales puede haber perfectamente dos notas que se solapen: el programa calcula la mezcla de ambas, tal y como puedes escuchar en la prueba (el acorde del final son dos notas a la vez, cada una en un canal).

Rinconete escribió:¿podría implementarse alguna clase de filtro SW para eliminar el pitidillo de alta frecuencia?

Es que ese pitido es inherente al PWM. Por software se puede eliminar subiendo la frecuencia de muestreo, pero para ello el procesador tendría que ser más rápido.
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
zxbruno
Freddy Hardest
Mensajes: 584
Registrado: Dom Jun 03, 2007 3:28 am
Ubicación: Anaheim, California, USA

Re: Interpretanto archivos .MID sencillos..

Mensaje por zxbruno » Dom Sep 06, 2009 4:50 pm

¡Impresionante!
Aunque no sea la información que ando buscando, este tema también me interesa. :) No sabía que el SpecDrum se podía controlar a nuestro antojo. :D Tengo el SpecDrum y el RAM Music Machine, pero hasta hoy no he sabido explorar sus posibilidades.

Si el SpecDrum hubiera sido comercializado con estas posibilidades, ¡quizás se hubiera tornado en un interface tan popular como los de joystick!
Una curiosidad: Si el SpecDrum funciona a través del comando OUT, ¿que pasa con la CPU? ¿Se puede seguir usando o tiene que esperar por el SpecDrum?

En relación a .MODs en el Spectrum, recuerdo que alguien había dicho que era muy dificil (no imposible) debido a los siguientes motivos:

-No hay una 'lookup table' definitiva que se pueda usar
-El autor del emulador de AY para PC tiene mucho información que ayudaría, pero no la quiere hacer publica (Sergey)
-El Playback de ficheros .MOD requiere canales (falsos) para sobrepasar las limitaciones del AY

Esto me recuerda un topico semejante que se discutió en WOS hace 5 años atrás:

http://www.worldofspectrum.org/forums/s ... 098&page=2

Todo esto me interesa mucho, pero también me gustaría saber si hay alguien que entiende el formato MIDI y estaría dispuesto a ayudarme. Creo que Neil Parsons y DeusX son músicos "amateur" como yo.

Avatar de Usuario
NeilParsons
Dizzy
Mensajes: 1056
Registrado: Mar Oct 02, 2007 5:13 pm

Re: Interpretanto archivos .MID sencillos..

Mensaje por NeilParsons » Dom Sep 06, 2009 5:47 pm

Todo esto me interesa mucho, pero también me gustaría saber si hay alguien que entiende el formato MIDI y estaría dispuesto a ayudarme. Creo que Neil Parsons y DeusX son músicos "amateur" como yo.

Ojalá tuviese los conocimientos necesarios para entender el formato MIDI y sus secretos, pero me temo que no. A lo único que alcanzo como músico "amateur" es a tocar de oido con mis instrumentos musicales, pero sin extenderme más allá de la simple interpretación.

Tal vez Na_th_an o WYZ sepan algo sobre el tema mucho mejor que yo. :roll:

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3984
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Interpretanto archivos .MID sencillos..

Mensaje por mcleod_ideafix » Dom Sep 06, 2009 5:55 pm

zxbruno escribió:Una curiosidad: Si el SpecDrum funciona a través del comando OUT, ¿que pasa con la CPU? ¿Se puede seguir usando o tiene que esperar por el SpecDrum?

Errrr.... si estás sugiriendo que el SpecDrum hace algo parecido al DMA, decirte que no. Cuando haces un OUT, lo que haces es enviar una única muestra. Es responsabilidad de la CPU el enviar las muestras con la suficiente rapidez para que el invento suene.

zxbruno escribió:En relación a .MODs en el Spectrum, recuerdo que alguien había dicho que era muy dificil (no imposible) debido a los siguientes motivos:

Los únicos motivos que se me ocurren para no poder reproducir MOD's en el Spectrum son:
- Falta de memoria (sólo se podrían reproducir archivos que cupieran en la zona de RAM no contenida, y teniendo el código y datos del player también en memoria no contenida.
- Falta de velocidad (alrededor de 3000 Hz de frecuencia de muestreo para mezclar los 4 canales usando 3.5MHz)

Pero por otra parte, podría ser factible la reproducción a 4 canales, si tenemos en cuenta que el Z80A es una máquina de 8 bits, y no de 16, y asumimos una cierta configuración para los MOD's que se pueden reproducir. Por ejemplo, limitar los samples a 256 bytes (chipsamples) que estarían ubicados en posiciones de memoria del tipo XX00h, con lo que para avanzar al siguiente sample basta con incrementar la parte baja de un registro de 16 bits, cosa que es mucho más rápida que incrementar el registro completo. Otra limitación sería el no usar el comando de volumen, o usar una variante en la que el volumen se aplica unicamente con desplazamientos (lo que daría únicamente 8 valores de volumen en escala logarítmica en lugar de 64 en escala lineal, como tiene el 8364).

zxbruno escribió:-No hay una 'lookup table' definitiva que se pueda usar

El formato MOD está hecho especialmente para explotar las capacidades del 8364 (Paula) del Amiga. Los reproductores de PC, durante la carga del MOD, cambian los valores de frecuencia que se guardan en los patrones para ajustarlos a sus necesidades. Esto es algo que ya usé hace 14 años, en la primera encarnación del tracker que escribí. Aparte de la traducción interna de las frecuencias, no se necesita ninguna otra LUT.

zxbruno escribió:-El autor del emulador de AY para PC tiene mucho información que ayudaría, pero no la quiere hacer publica (Sergey)

¿Qué sabe él que no se haya publicado?

zxbruno escribió:-El Playback de ficheros .MOD requiere canales (falsos) para sobrepasar las limitaciones del AY

El PWM en el altavoz interno es una competencia decente a la emulación de sonido digital del AY. Y si se usa el SpecDrum (o el Music Machine), lo supera. De hecho pienso que aquí, el AY es un lastre más que una ayuda, a menos que tu intención sea hacer una especie de MOD mixto con, por ejemplo, 3 canales basados en AY y 2 canales digitales (como los S3M).
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
zxbruno
Freddy Hardest
Mensajes: 584
Registrado: Dom Jun 03, 2007 3:28 am
Ubicación: Anaheim, California, USA

Re: Interpretanto archivos .MID sencillos..

Mensaje por zxbruno » Dom Sep 06, 2009 6:30 pm

mcleod_ideafix escribió:[¿Qué sabe él que no se haya publicado?


Alcoholic Anonymous on WOS escribió:I've looked at Sergei Bulba's AY emulator source code and it says in there that the volume tables are "top secret" as they were given to him by someone who doesn't want it made public. The compiled exe uses these secret volume tables while the source lists his old table.


Al parecer ellos estaban acercándose a una solución (como se puede apreciar en las páginas 3 y 4) pero el tema "murió".

Avatar de Usuario
zxbruno
Freddy Hardest
Mensajes: 584
Registrado: Dom Jun 03, 2007 3:28 am
Ubicación: Anaheim, California, USA

Re: Interpretanto archivos .MID sencillos..

Mensaje por zxbruno » Dom Sep 06, 2009 6:31 pm

mcleod_ideafix escribió:¿Qué sabe él que no se haya publicado?


Alcoholic Anonymous en WOS escribió:I've looked at Sergei Bulba's AY emulator source code and it says in there that the volume tables are "top secret" as they were given to him by someone who doesn't want it made public. The compiled exe uses these secret volume tables while the source lists his old table.


Al parecer se estaban acercando a una solución (como se puede apreciar en las páginas 3, 4 y 5) pero el tema "murió".

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3984
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Interpretanto archivos .MID sencillos..

Mensaje por mcleod_ideafix » Dom Sep 06, 2009 7:03 pm

zxbruno escribió:I've looked at Sergei Bulba's AY emulator source code and it says in there that the volume tables are "top secret" as they were given to him by someone who doesn't want it made public. The compiled exe uses these secret volume tables while the source lists his old table.

¿Qué tablas de volúmenes son esas? ¿Las que se usan para simular samples digitales? ¿Es acaso la información que aparece en la página 5-22 del datasheet del AY-8910?
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
winston
Sabreman
Mensajes: 469
Registrado: Mar Ago 19, 2008 4:17 pm
Ubicación: Isla de Man
Contactar:

Re: Interpretanto archivos .MID sencillos..

Mensaje por winston » Dom Sep 06, 2009 7:27 pm

mcleod_ideafix escribió:No sé si será fácil conseguir uno original. Bueno, en eBay UK hay uno ahora mismo, pero es muy fácil hacerse uno.


¡No sabía que el SpecDrum era tan sencillo! Lo que tenemos aquí es un especie de DAC de forma sencillo (compuesto de resistencias R y 2R) - que significa todos los efectos se producen por software. Y... se puede usar el SpecDrum para hacer cualquier sonido. (Había creido que el SpecDrum tenía un chip de "drum effects").

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 :-)
Tarjeta ethernet para el Spectrum - http://spectrum.alioth.net/doc

Debemos practicar un quirkafleeg

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3984
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Interpretanto archivos .MID sencillos..

Mensaje por mcleod_ideafix » Dom Sep 06, 2009 7:36 pm

Bueno. El esquema del SpecDrum no es el que he puesto. El del SpecDrum lleva un DAC "de verdad" de la marca Zetec, o Ferranti, no recuerdo ahora cuál es. Y a la salida hay un op-amp configurado como filtro Butteworth. Lo que he puesto es una versión que me se me ha ocurrido de lo que hace el SpecDrum, con pocos componentes.

La red R-2R es un clásico para realizar una conversión D/A pero sin tener que usar resistencias ponderadas (que son difíciles de conseguir con los valores justos). En la red R-2R sólo necesitas dos valores diferentes de resistencia (o uno sólo si implementas R como 2R en paralelo). Muchos DAC's como el DAC0808 lo que tienen en su interior no es más que una red R-2R accionada por transistores que son los que recogen en sus respectivas bases los valores digitales a convertir.
Web: ZX Projects | Twitter: @zxprojects

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado