[Exelvision] Emulation de la synthèse du son
Modérateurs : Papy.G, fneck, Carl
[Exelvision] Emulation de la synthèse du son
L'émulation du synthétiseur TMS5220 de l'EXL100 comporte deux volets :
- La composition des buffers envoyés à la carte son, à partir de la chaîne de commande et des échantillons de son.
- L'extraction des échantillons de son de la rom
Pour la composition des buffers, deux approches sont possibles :
1) Emuler finement le comportement électronique du synthétiseur. C'est la méthode utilisée par les développeurs de Mess (vraissemblablement Raphaël Nabet). Le module existant pourrait éventuellement être utilisé tel quel.
2) Considérer le synthétiseur comme une boîte noire, recevant en entrée les octets de commande et produisant en sortie des buffers pour la carte son. C'est à mon avis plus facile, et à priori je choisirais plutôt cette méthode.
L'extraction des échantillons de son est un problème intéressant. Il n'y a vraissemblablement pas de solution simple pour lire physiquement la rom interne. Par programmation, l'accès au TMS5220 est indirect, puisqu'il passe par le TMS7041, et il n'est peut-être pas possible d'accéder aux échantillons. Si cette impossibilité est avérée, il faudra les reconstituer en observant la sortie obtenue pour chaque commande élémentaire. Pratiquement, c'est créer un programme EXL100 pour envoyer une par une toutes les commandes possibles, enregistrer la sortie dans un fichier wav, et analyser le résultat pour reconstituer l'échantillon utilisé. Très intéressant, mais aussi très difficile...
Sur ces deux points, toute aide sera la bienvenue.
- La composition des buffers envoyés à la carte son, à partir de la chaîne de commande et des échantillons de son.
- L'extraction des échantillons de son de la rom
Pour la composition des buffers, deux approches sont possibles :
1) Emuler finement le comportement électronique du synthétiseur. C'est la méthode utilisée par les développeurs de Mess (vraissemblablement Raphaël Nabet). Le module existant pourrait éventuellement être utilisé tel quel.
2) Considérer le synthétiseur comme une boîte noire, recevant en entrée les octets de commande et produisant en sortie des buffers pour la carte son. C'est à mon avis plus facile, et à priori je choisirais plutôt cette méthode.
L'extraction des échantillons de son est un problème intéressant. Il n'y a vraissemblablement pas de solution simple pour lire physiquement la rom interne. Par programmation, l'accès au TMS5220 est indirect, puisqu'il passe par le TMS7041, et il n'est peut-être pas possible d'accéder aux échantillons. Si cette impossibilité est avérée, il faudra les reconstituer en observant la sortie obtenue pour chaque commande élémentaire. Pratiquement, c'est créer un programme EXL100 pour envoyer une par une toutes les commandes possibles, enregistrer la sortie dans un fichier wav, et analyser le résultat pour reconstituer l'échantillon utilisé. Très intéressant, mais aussi très difficile...
Sur ces deux points, toute aide sera la bienvenue.
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
Le synthétiseur est décrit dans le "TMS5220 Data Manual"
La méthode de compression des chaînes de commande est décrite dans le brevet US #4335277
Les deux documents sont à la page documentation du site dcexel : http://dcexel.free.fr/doc/index.html
Pour l'utilisation à partir d'un programme EXL100, il faut se reporter aux différents manuels, et aussi à quelques articles d'Exelement Votre. Il faut être bien conscient que c'est difficile, et que personne n'y est encore arrivé. Mais à mon avis nous avons assez d'informations maintenant pour réussir. Exactement comme pour le TMS3556. Sauf que les sons seront peut-être plus difficiles à capturer que le papillon
La méthode de compression des chaînes de commande est décrite dans le brevet US #4335277
Les deux documents sont à la page documentation du site dcexel : http://dcexel.free.fr/doc/index.html
Pour l'utilisation à partir d'un programme EXL100, il faut se reporter aux différents manuels, et aussi à quelques articles d'Exelement Votre. Il faut être bien conscient que c'est difficile, et que personne n'y est encore arrivé. Mais à mon avis nous avons assez d'informations maintenant pour réussir. Exactement comme pour le TMS3556. Sauf que les sons seront peut-être plus difficiles à capturer que le papillon
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
Voilà ce que j'ai trouvé avec google:
Le code source:
http://necrofamicon.com/Necrofamicon/Py ... tms5220r.c
http://mamedev.org/source/src/emu/sound/tms5220.c
http://mamedev.org/source/src/emu/sound/5220intf.h
La doc:
http://www.gamearchive.com/General/Data ... MS5220.pdf
Et la rom du TMS5220 (spchrom.bin):
http://www.planetemu.net/index.php?sect ... &id=846536
Celà pourrait faire avancer l'émulation du son
Le code source:
http://necrofamicon.com/Necrofamicon/Py ... tms5220r.c
http://mamedev.org/source/src/emu/sound/tms5220.c
http://mamedev.org/source/src/emu/sound/5220intf.h
La doc:
http://www.gamearchive.com/General/Data ... MS5220.pdf
Et la rom du TMS5220 (spchrom.bin):
http://www.planetemu.net/index.php?sect ... &id=846536
Celà pourrait faire avancer l'émulation du son
Walter (Alias Editions PUSSY)
http://miniordi.free.fr/EXL100.htm
http://miniordi.free.fr/EXL100.htm
C'est une bonne synthèse de ce qui existe sur internet. J'ajouterai aussi le brevet américain mentionné dans un post précédent et disponible sur le site dcexel. Il y a deux domaines principaux à explorer :
1) Récupération des échantillons de son de l'EXL100. Puisque c'est fait pour le TI/99, il faudrait se renseigner sur la méthode utilisée et voir si elle est applicable à l'EXL100. Ou sinon trouver une autre solution.
2) Programmation de l'émulation du synthétiseur. Le module de MAME est une excellente base de départ, et j'ai déjà cherché comment l'intégrer à dcexel. Ce n'est pas facile car il fait appel à de nombreux autres modules. Dans l'état il n'est utilisable que dans le contexte de MAME. J'hésite encore entre deux solutions : soit le modifier pour qu'il s'intègre à dcexel, soit réécrire un nouveau programme en s'inspirant du programme existant.
Dans tous les cas ce sera très long à réaliser, mais je pense qu'avec beaucoup de persévérance ce n'est pas impossible.
1) Récupération des échantillons de son de l'EXL100. Puisque c'est fait pour le TI/99, il faudrait se renseigner sur la méthode utilisée et voir si elle est applicable à l'EXL100. Ou sinon trouver une autre solution.
2) Programmation de l'émulation du synthétiseur. Le module de MAME est une excellente base de départ, et j'ai déjà cherché comment l'intégrer à dcexel. Ce n'est pas facile car il fait appel à de nombreux autres modules. Dans l'état il n'est utilisable que dans le contexte de MAME. J'hésite encore entre deux solutions : soit le modifier pour qu'il s'intègre à dcexel, soit réécrire un nouveau programme en s'inspirant du programme existant.
Dans tous les cas ce sera très long à réaliser, mais je pense qu'avec beaucoup de persévérance ce n'est pas impossible.
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
je vais regarder dans mon bor.... si j'ai quelque chose pour la parole, de memoire ce n'est pas certain.Daniel a écrit :Dans tous les cas ce sera très long à réaliser, mais je pense qu'avec beaucoup de persévérance ce n'est pas impossible.
bonnes fêtes
jean louis
Recherche Tout sur le TI99/4a que ce soit materiel Texas ou Atronic, Mechatronic, Vidéopac, victor hector
figurine Kinder
figurine Kinder
Nouvelle démonstration de Wizord avec en première mondiale l'émulation (encore imparfaite) du synthétiseur de l'exl100. J'ai également tenté de corrigé le bug de blocage dans le champ d'astéroïdes, mais comme c'était aléatoire je ne suis pas certain du résultat. Je compte sur les hard-gamers que vous êtes pour me le dire
http://dcexel.free.fr/tmp/wizord_demo.zip (72 Ko)
Rappels :
- Fin-D puis 1, 2 ou 3 pour le mode démo
- Dans les version de démo les menus de dcexel ne sont pas actifs
http://dcexel.free.fr/tmp/wizord_demo.zip (72 Ko)
Rappels :
- Fin-D puis 1, 2 ou 3 pour le mode démo
- Dans les version de démo les menus de dcexel ne sont pas actifs
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
- fneck
- Site Admin
- Messages : 17424
- Inscription : 01 avr. 2007 12:03
- Localisation : Drôme Provençale (26)
- Contact :
Héhé, bravo Daniel
Comme je ne connais absolument pas le jeu original sur l'Exelvision je n'ai aucune idée de la fidélité de la reproduction sonore.
Comme je ne connais absolument pas le jeu original sur l'Exelvision je n'ai aucune idée de la fidélité de la reproduction sonore.
Fabien https://www.system-cfg.com
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
Finalement je n'ai pas réussi à extraire la rom du TMS5220, mais j'ai trouvé des informations dans la documentation de l'Acorn BBC Microcomputer System. J'ai recopié les tables de valeurs de l'énergie, du pitch et des coefficients de réflexion. Les échantillons (chirptable) et la table des coefficients d'interpolation viennent du module 5220 de l'émulateur Mame, dont je me suis un peu inspiré.
Le résultat devrait être réaliste, mais à l'oreille je ne suis pas très satisfait. C'est bon dans l'ensemble, mais il y a probablement de petites erreurs d'arrondis dans le calcul des filtres, et au bout du compte la distorsion est audible. J'essaierai d'améliorer tout ça pour la prochaine version de dcexel.
Le résultat devrait être réaliste, mais à l'oreille je ne suis pas très satisfait. C'est bon dans l'ensemble, mais il y a probablement de petites erreurs d'arrondis dans le calcul des filtres, et au bout du compte la distorsion est audible. J'essaierai d'améliorer tout ça pour la prochaine version de dcexel.
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
- Carl
- Modérateur
- Messages : 13253
- Inscription : 08 avr. 2007 13:21
- Localisation : http://www.doledujura.fr
- Contact :