YM2203, Sound Blaster 16 y PCs de hoy en día

Foro dedicado a la programación en todo tipo de sistemas clásicos.
Avatar de Usuario
jotego
Atari 1040 STf
Atari 1040 STf
Mensajes: 657
Registrado: 16 Ene 2013, 23:25
Sistema Favorito: Atari ST
primer_sistema: Amstrad CPC
consola_favorita: Sony PlayStation 2
Primera consola: Atari Lynx
Ubicación: Valencia (España)
Gracias dadas: 27 veces
Gracias recibidas: 44 veces
Contactar:

YM2203, Sound Blaster 16 y PCs de hoy en día

Mensajepor jotego » 04 May 2013, 07:04

Hace muchos años, cuando hice el emulador del Ghosts & Goblins, estudié un poco el chip de sonido YM2203 para emularlo. Al final nunca añadí sonido al emulador pero recuerdo que mi idea era usar el sintetizador FM de la Sound Blaster 16 (YM3812) para producir el sonido. En aquellos años, hubo algún emulador por ahí que sí usaba el YM3812 pero al final la síntesis de la forma de onda por software se convirtió en la norma, seguramente por portabilidad y porque los procesadores eran ya lo bastante potentes.

Me pregunto qué pasó con la capacidad FM en los chips de sonido. ¿Los PC modernos siguen siendo compatibles con el YM3812 o ahora es todo tabla de ondas y convertidores D/A? ¿Alguien sabe si aun es posible obtener el sonido genuino de un sintetizador FM por hardware en un PC moderno?

Avatar de Usuario
mentalthink
Amiga 2500
Amiga 2500
Mensajes: 2840
Registrado: 11 Abr 2010, 15:06
Gracias dadas: 45 veces
Gracias recibidas: 14 veces

Re: YM2203, Sound Blaster 16 y PCs de hoy en día

Mensajepor mentalthink » 04 May 2013, 09:04

Con un PC supongo que no debe haber mucho problema, creo que solo saca 3 tipos de onda cuadrada , triangular, y el ruido el sonido Rosa?¿, o Blanco?¿

De todas maneras te dejo estó por si te puede servir... aunque se puede emular directamente en un Arduino igual que el SID... al menos eso he leído.
http://hackaday.com/2012/04/10/playing- ... n-arduino/ no se si te podría servir, de momento yo tengo el montaje

PS: Si te interesa lo del montaje coméntamelo porque el sitio más barato en dónde he visto los chips en en ebay de tailandia, unos 5 euretes..

Avatar de Usuario
zup
Amiga 2500
Amiga 2500
Mensajes: 3012
Registrado: 04 Sep 2009, 20:07
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo DS/3DS
Primera consola: Nintendo GameBoy
Ubicación: Navarra
Gracias dadas: 86 veces
Gracias recibidas: 356 veces
Contactar:

Re: YM2203, Sound Blaster 16 y PCs de hoy en día

Mensajepor zup » 04 May 2013, 10:11

Creo que la respuesta es no.

Las tarjetas de sonido más extendidas solo sacan sonido digital, y la mayoría han prescindido no solo del OPL sino de cualquier tipo de sintetizador. Casi todo lo que sea MIDI ahora se reproduce por software. No digo que no exista alguna tarjeta PCI que incorpore síntesis OPL, pero probablemente esté muy poco extendida.

Las buenas noticias es que tienes varias opciones para paliar estas carencias:
- Usar un emulador OPL en tu proyecto. La mejor opción si tu música va a cambiar según lo que pase en el juego (como en el Tie Fighter). Imagino que podrías separar las librerías de MAME o DOSBox para hacerlo, o que podrás encontrar librerías que lo hagan en otros sitios.
- Usar un emulador OPL para generar el sonido, convertirlo a digital y meterlo como audio digital en el juego. Probablemente la opción más fácil de manejar.
- Incorporar un sintetizador tipo timidity, fluidsynth o BASSmidi en tu proyecto y usar un soundfont adecuado. En el link te dejo una página con varios soundfonts que imitan a diferentes sintetizadores retro. Probablemente la peor opción, ya que no va a ser tan flexible como el OPL (no controlas el sintetizador, simplemente pides un "piano") y se va a llevar tantos recursos (probablemente más) que usar un emulador de OPL directamente.
I have traveled across the universe and through the years to find Her. Sometimes going all the way is just a start.
Además vendo cosas!

Avatar de Usuario
jotego
Atari 1040 STf
Atari 1040 STf
Mensajes: 657
Registrado: 16 Ene 2013, 23:25
Sistema Favorito: Atari ST
primer_sistema: Amstrad CPC
consola_favorita: Sony PlayStation 2
Primera consola: Atari Lynx
Ubicación: Valencia (España)
Gracias dadas: 27 veces
Gracias recibidas: 44 veces
Contactar:

Re: YM2203, Sound Blaster 16 y PCs de hoy en día

Mensajepor jotego » 04 May 2013, 12:54

mentalthink escribió: Si te interesa lo del montaje coméntamelo porque el sitio más barato en dónde he visto los chips en en ebay de tailandia, unos 5 euretes..


Muy interesante el enlace. Sí, por favor dime dónde está ese sitio de 5 euretes.

Avatar de Usuario
mentalthink
Amiga 2500
Amiga 2500
Mensajes: 2840
Registrado: 11 Abr 2010, 15:06
Gracias dadas: 45 veces
Gracias recibidas: 14 veces

Re: YM2203, Sound Blaster 16 y PCs de hoy en día

Mensajepor mentalthink » 04 May 2013, 15:36

Pues mira dónde lo compré me parece o que no lo vendén ya o se han percatado del tema del arduino, en ebya si lo pones verás precios de 4€ sin envio hata 30

Pero aqui si que lo tienes, sale por 7 dolares o sea que son 5 euros, nunca he comprado aqui, siempre lo hago en DX, pero creo que con este tipo de productos no hay engaño.

http://www.aliexpress.com/store/product ... 18326.html

Eso si recuerda que si haces el montaje, aunque el tema del reloj, se puede hacer con Nands(me parece que vi un cirtuito asi)... el cristal es TTl, yo soló lo encontré en ebay UK, y me costo 10€.. JODÓ.

Avatar de Usuario
Tolaemon
Amiga 1200
Amiga 1200
Mensajes: 1056
Registrado: 16 May 2004, 22:29
Gracias dadas: 28 veces
Gracias recibidas: 21 veces

Re: YM2203, Sound Blaster 16 y PCs de hoy en día

Mensajepor Tolaemon » 04 May 2013, 16:06

Creo que la mayoría de tarjetas de sonido actuales trabajan con sintesis directa, es decir a base enviar muestras al bitrate adecuado a los DACs y ya está. Dudo que lleven chips especificos con funcionalidades FM u osciladores o filtros programables. Como mucho, algunos modelos quizas incluyan tablas de ondas para emular según que instrumentos. De todas formas no estoy muy al dia en este sentido.

No hay que olvidar que en realidad estos chips de sonido de los 80 ( los SID, AY, SN, YMs etc. ) eran "inventos" para poder hacer sonido sin tener que consumir CPU ni memoria, ya que por entonces las CPUS eran bastante mas limitadas y la memoria mucho mas cara que ahora. Por eso se crearon esa especie de microsintentizadores compactos, para cubrir las limitaciones de las CPUs y poder generar sonido de una forma digna y económica. Hoy en dia de estas limitaciones se han superado, y la mayor parte de operaciones de audio se hacen en la CPU. Las tarjetas de sonido son básicamente un buffer de memoria con un buen DAC para audio, opciones de entrada/salida y poco mas. De hecho mediante sintesis directa es muy facil emular cualquiera de las otras tecnicas de sintesis, pero no a la inversa.

Con todo esto quiero decir, lo mismo que dicen los compañeros: por software podras conseguir el sonido del YM2203 que quieres sin necesidad de q tu tarjeta tenga nada de FM. Realmente cada chip tiene su sonido caracteristico y particularidades y las emulaciones nunca son iguales, algo que puede ser importante en musica cuando se busca un determinado sonido muy auténtcio. Pero en videojuegos no creo que esto sea asi. Por esto también creo que tomando el código fuente de algun emulador del chip ( como te comentan en codigo de MAME seguramente lo encuentres ) tengas de sobras.

Avatar de Usuario
princemegahit
Amiga 1200
Amiga 1200
Mensajes: 1693
Registrado: 19 Jul 2012, 12:01
Sistema Favorito: (Otro)
primer_sistema: Spectrum +2
consola_favorita: Atari 2600
Primera consola: Atari 2600
Ubicación: C:\JUEGOS
Gracias dadas: 176 veces
Gracias recibidas: 100 veces

Re: YM2203, Sound Blaster 16 y PCs de hoy en día

Mensajepor princemegahit » 04 May 2013, 19:00

Ninguna lleva sintesis FM. Lo máximo que llevan es un conector para añadir un modulo wavetable (no se porqué, generalmente de Terratec) , y eso lo he visto en algún modelo "moderno" de como máximo, el 2008.

Avatar de Usuario
jotego
Atari 1040 STf
Atari 1040 STf
Mensajes: 657
Registrado: 16 Ene 2013, 23:25
Sistema Favorito: Atari ST
primer_sistema: Amstrad CPC
consola_favorita: Sony PlayStation 2
Primera consola: Atari Lynx
Ubicación: Valencia (España)
Gracias dadas: 27 veces
Gracias recibidas: 44 veces
Contactar:

Re: YM2203, Sound Blaster 16 y PCs de hoy en día

Mensajepor jotego » 05 May 2013, 00:29

Ahora mismo me interesa más la solución por hardware que la emulación. Me he puesto hoy a diseñar un circuito compatible con AY-3-8910 y en unas horas lo tenía listo. Son menos de 200 líneas de código Verilog. Lo he probado un poco y parece funcionar :-k Ahora quiero juntarlo con el TV80 (un Z80 en Verilog que hay en Open Cores) y ponerle la ROM de alguna máquina a ver si consigo hacerlo sonar o no. Si va bien me buscaré una FPGA.

Al hacerlo me he dado cuenta de algunos detalles que impiden la reproducción fidedigna al 100%. Aunque son todos imperceptibles para el oído. Por ejemplo, el generador de ruido no creo que sea el mismo que el original. De hecho, no creo que nada sepa cuál era el original aunque seguramente sería del mismo tipo que yo he puesto, que es un polinomio de 17 bits que se va desplazando a la derecha y haciendo una XOR de algunos bits:

Código: Seleccionar todo

wire poly17_zero = poly17==0;
// ...
poly17={ poly17[0] ^ poly17[2] ^ poly17_zero, poly17[16:1] };


En sus días, sin sintetizador de Verilog y con herramientas de CAD muy pobres, los diseñadores debieron pasar algunas fatigas con el chip original, que además incluía unos DAC logarítmicos. Pero hoy en día es tan sencillo que ni siquiera vale como IP, diría yo.

Por cierto, he oído que ficheros en internet con capturas de las escrituras a los registros de los sintetizadores (este o los de Yamaha) grabadas a 50Hz. Yo lo que he encontrado en world of spectrum y otras webs no era eso si no recortes del código original de procesador para sacar solo el sonido. Si encontrase sólo las escrituras a los registros me facilitaría mucho probar el circuito. ¿Alguien ha visto algo así por ahí?

Os dejo una captura donde se ven los tres canales funcionando: el A con ganancia fija, el B con envolvente y el C con ruido.

Imagen

Avatar de Usuario
Tolaemon
Amiga 1200
Amiga 1200
Mensajes: 1056
Registrado: 16 May 2004, 22:29
Gracias dadas: 28 veces
Gracias recibidas: 21 veces

Re: YM2203, Sound Blaster 16 y PCs de hoy en día

Mensajepor Tolaemon » 05 May 2013, 01:44

Por cierto, he oído que ficheros en internet con capturas de las escrituras a los registros de los sintetizadores (este o los de Yamaha) grabadas a 50Hz. Yo lo que he encontrado en world of spectrum y otras webs no era eso si no recortes del código original de procesador para sacar solo el sonido.

Hace unos años construi este pequeño sinte-reproductor de ficheros de musica del AY-3891x ( Amstrad CPC, Spectrum ZX, Atari ST etc. ) . Esta es la web: -hard plAYer-

La parte de los patches MIDI no la tiene muy desarrollada, porque los sonidos que implemente son bastante cutres, pero por otro lado es capaz de reproducir los ficheros de musica grabados en este formato de volcado de los registros a 50Hz que comentas. La informacion sobre este tipo de ficheros, los ficheros .YM la tienes aqui: http://leonard.oxg.free.fr/stsound.html y tambien aqui http://leonard.oxg.free.fr/ymformat.html

Este es un video demo del cacharro:

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5316
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 54 veces
Contactar:

Re: YM2203, Sound Blaster 16 y PCs de hoy en día

Mensajepor mcleod_ideafix » 05 May 2013, 02:14

jotego escribió:Ahora mismo me interesa más la solución por hardware que la emulación. Me he puesto hoy a diseñar un circuito compatible con AY-3-8910 y en unas horas lo tenía listo. Son menos de 200 líneas de código Verilog.

Oh! Qué chulo! Bueno, supongo que sabes que el AY-3-8910 de hecho existe como core sintetizable, aunque en VHDL. Es el que he usado para empotrar en mi reemplazo de ULA.

-- Actualizado 05 May 2013, 02:17 --

jotego escribió:Al hacerlo me he dado cuenta de algunos detalles que impiden la reproducción fidedigna al 100%. Aunque son todos imperceptibles para el oído. Por ejemplo, el generador de ruido no creo que sea el mismo que el original. De hecho, no creo que nada sepa cuál era el original aunque seguramente sería del mismo tipo que yo he puesto, que es un polinomio de 17 bits que se va desplazando a la derecha y haciendo una XOR de algunos bits:

De hecho, parece ser que sí se sabe, o al menos se ha investigado un poco sobre ello. Aquí se cuenta...:
http://www.worldofspectrum.org/forums/s ... hp?t=39644
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista


Volver a “Programación”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 5 invitados