[Exelvision] Emulation de la synthèse du son

Couvre tous les domaines de l'émulation logicielle ou de la virtualisation ainsi que les discussions sur les divers outils associés.

Modérateurs : Papy.G, fneck, Carl

Daniel
Messages : 17412
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Message par Daniel »

jester a écrit :Tu émuleras aussi la possibilité de faire du son avec le contrôleur K7 ?
La difficulté est d'émuler simultanément le synthétiseur vocal et le son sur 1 bit. Je ne sais pas encore s'il y a une solution simple, alors je ne peux rien promettre. Il faudrait me donner quelques noms de jeux utilisant le son du port cassette, pour que je puisse tester.
Daniel
L'obstacle augmente mon ardeur.
jester
Messages : 2328
Inscription : 01 janv. 2009 23:16
Localisation : Grenoble

Message par jester »

Daniel a écrit :(...) Il faudrait me donner quelques noms de jeux utilisant le son du port cassette, pour que je puisse tester.
Tu peux prendre mes prog basic (Roboman, et les autres)... il y a le petit prog en assembleur + la gestion de la musique.
Tu trouveras aussi un exemple dans le bouquin "Maitriser votre EXL100".

Ce dont je parle ne consiste pas à jouer des échantillons, ça permet juste de jouer des notes de musique (seul utilisation à époque). Le timer 2 est utilisé pour activer le son du port K7 à la fréquence des notes (sur 3-4 octaves). Evidemment la musique n'est pas joué sous interruption... en basic la durée des notes est gérée avec des pauses.
A l'époque on trouvait cette "sonorisation" partout, car personne ne pouvait exploiter le call speech (sinon avec les 10 sons à disposition)..? c'est aussi le seul moyen de faire de la musique.
Tous les jeux basiques utilisaient la méthode: même Three World War (pour l'intro).
Avatar de l’utilisateur
dyter
Messages : 43
Inscription : 28 sept. 2008 14:22
Localisation : Rhône

Message par dyter »

Il y a aussi Remi qui le faisait de mémoire.
Walter (Alias Editions PUSSY)
http://miniordi.free.fr/EXL100.htm
jester
Messages : 2328
Inscription : 01 janv. 2009 23:16
Localisation : Grenoble

Message par jester »

Daniel pourrais-tu modifier ton player dc5220.exe pour qu'il ne prenne pas en compte le PITCH ?
Je ne sais pas si c'est possible à moindre frais ?

L'objectif est juste de faire des tests avec un pitch nul: est-ce qu'on peut convertir des échantillons à l'aide de QBOX et les relire sans trop de déformation avec le 5220 (pitch=0 et K5=K10=0) => musique/bruitage
Je ne voulais pas me lancer dans un recodeur annulant le pitch et les coefs liés si le résultat est inutilisable.

Si c'est trop de travail (réécriture de tout ton code)... je coderais mon petit recodeur. Mais c'est vrai qu'un outil comme dc5220 est pratique pour tester des échantillons LPC (je ne sais pas si ton lecteur est à jour ou non par rapport au code dans dcexel ?).
Daniel
Messages : 17412
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Message par Daniel »

dc5220.exe utilise les mêmes routines que dcexel pour l'émulation tms5220. Il n'y a donc aucune différence. J'ai fait un essai en forçant le pitch à zéro, mais ce n'est pas si simple : La structure de la chaîne de commande est différente selon que le pitch est nul (4 coefficients de réflexion de k1 à k4) ou positif (10 coefficients de réflexion de k1 à k10). Même en mettant à zéro les coefficients k5 à k10 j'ai peur que ça ne marche pas. Ca ne coûte rien d'essayer, alors j'ai quand même compilé une version spéciale pitch et k5-k10 forcés à zéro, quelle que soit leur valeur dans la chaîne LPC : http://dcexel.free.fr/tmp/dc5220_pitch0.zip
Daniel
L'obstacle augmente mon ardeur.
jester
Messages : 2328
Inscription : 01 janv. 2009 23:16
Localisation : Grenoble

Message par jester »

Effectivement ça ne donne rien... supprimer le pitch ne permet pas de lire de manière audible une musique encodée avec QBOX.
QBOX encode de la voix... certains bruits/sons passent pas trop mal (s'ils sont courts). Mais impossible d'encoder de la musique.

C'est dommage. La solution n'est donc pas au niveau du décodeur, mais au niveau de l'encodeur.

Je suis sur qu'il est possible d'encoder de la musique, mais il faudrait un encodeur dédié... ou au moins connaitre l'algo d'encodage, et la c'est de la science-fiction.

Merci Daniel pour la réactivité.
Au moins on sait ce qui est possible et ce qui ne l'est pas !

PS: dans ton annexe les Ki sont indiqués en décimal, mais dans le fichier .COD il faut une représentation décimale => c'est de la virgule fixe ou flottante ? J'ai un peu de mal pour la conversion, je retombe jamais sur les bonnes valeurs... la honte !
Daniel
Messages : 17412
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Message par Daniel »

Dand dcexel j'utilise les coefficients de réflexion de la doc officielle Texas Instruments. Ils sont codés de -1,00000 à +1,00000. Qboxpro les code de -32768 à +32767. Il faut donc les multiplier par 32768.

J'ai trouvé quatre sources différentes pour ces coefficients : tms5220 data manual, driver 5220 de mess, qboxpro, documentation de l'acorn BBC master. Chaque source donne des valeurs différentes (mais pas très éloignées). J'ai testé chaque version. A l'oreille on n'entend pas trop de différence. J'ai retenu les valeurs données par TI, mais ne sachant pas accéder à la rom du 5220 je ne sais pas si elles sont bonnes. En rom les valeurs sont vraissemblablement dans la plage -32768 +32767. Les valeurs de TI sont donc des conversions, mais le calcul inverse ne tombe pas juste, d'où mon léger doute.

J'ai relu ma description du tms5220 :
Si le pitch est à zéro (trame non parlée) les échantillons de chaque période d 'interpolation sont calculés à partir de l'énergie, multipliée aléatoirement par +1 ou -1 (tirage au hasard).
C'est donc normal que ça ne permette pas de reproduire un son échantillonné. J'ai cherché une astuce pour y arriver, mais je n'ai encore rien trouvé :cry:
Daniel
L'obstacle augmente mon ardeur.
jester
Messages : 2328
Inscription : 01 janv. 2009 23:16
Localisation : Grenoble

Message par jester »

J'ai remarqué, lors de tests, que les effets de bruitage courts sont reproduits assez bien... tout comme la voix (normal !).
Mais dés qu'il y a le moindre effet "musical", même une simple forme d'onde (un LA), ça fait n'importe quoi à l'encodage/reproduction.

Je pense que l'algo de QBOX est étudié pour l'encodage de voix, et peut à la limite s'adapter à des effets sonore.

Les sons sur l'EXL prouve que l'encodeur utilisé était plus polyvalent. Il faudrait le programme que TI utilisait à l'époque, pas QBOX... c'est pas très grave. Mais je ne comprends pas comment toutes ses informations industrielles se sont perdues à travers les ages: c'est vraiment le chaos chez TI.
Daniel
Messages : 17412
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Message par Daniel »

Chaque trame de 200 échantillons émise par le synthétiseur est une fonction de l'énergie, du pitch et des 10 coefficients de réflexion. Il est impossible de programmer la fonction inverse pour déterminer l'énergie, le pitch et les 10 coefficients à partir de 200 échantillons. C'est une équation avec 200 données pour 12 variables, théoriquement impossible à résoudre. En plus de la difficulté d'encodage, le résultat sera de très mauvaise qualité : Avec 8000 échantillons par seconde en sortie, on ne peut pas espérer reproduire des fréquences supérieures à 4000 Hz.

Si on étudie les machines équipées du tms5220, on constate qu'elles avaient toutes un autre générateur de son pour la musique ou les bruitages. A mon avis, sur EXL100, la sortie cassette est le seul moyen de reproduire de la musique. La fréquence n'est pas limitée, en revanche la taille des données à 22050 ou 44100 Hz risque d'être prohibitive.
Dernière modification par Daniel le 20 avr. 2009 13:59, modifié 1 fois.
Daniel
L'obstacle augmente mon ardeur.
Fabrice Montupet

Message par Fabrice Montupet »

jester a écrit : Mais je ne comprends pas comment toutes ses informations industrielles se sont perdues à travers les ages: c'est vraiment le chaos chez TI.
L'explication est simple et ne vaut pas que pour Texas Instruments. Pourquoi une société mettrait à disposition du public des informations techniques de produits obsolètes? Pourquoi laisserait-elle se développer quoi que ce soit avec des produits qu'elle ne suit plus alors qu'elle en propose des infiniment plus performants. Comme toute société, Texas Instruments va de l'avant... et il n'y a que des personnes comme nous, nostalgiques, pour intéresser à de telles vieilleries. Rien ne se perd, les documents sont simplement dans leurs archives, nous n'y avons pas accès. Il ne nous reste plus qu'a trouver les rares de d'époque encore en circulation, souvent conservés par d'anciens employés de sociétés de développement ou d'anciens amateurs d'électronique.
jester
Messages : 2328
Inscription : 01 janv. 2009 23:16
Localisation : Grenoble

Message par jester »

En fait je ne pense pas une seconde faire de la musique numérique à l'aide de l'EXL100... trop gourmand en espace pour un résultat peu intéressant.
j'avais espéré que le TMS pourrait crachouillé un peu de musique, mais je rejoins Daniel: le résultat risque d'être catastrophique pour un travail d'encodage énorme !
Je pense qu'utiliser la sortie K7 en mode synthe FM serait pas mal: mais j'ai peur que cela prenne trop de ressources CPU (même avec une seule voix).
C'est un chantier à long terme...
jester
Messages : 2328
Inscription : 01 janv. 2009 23:16
Localisation : Grenoble

Re: [Exelvision] Emulation de la synthèse du son

Message par jester »

Je remonte ce topic à cause d'une demande pour Daniel.

Pourrais-tu améliorer ton petit utilitaire autonome qui joue des chaines LPC quand tu auras 5mn?
J'aimerais juste:
- que la boite de chargement de fichier s'ouvre sur le dernier emplacement utilisé (pas un emplacement par défaut)
- un petit bouton "Reload" pour recharger le fichier en mémoire ou faire en sorte que la touche "Play" le fasse automatiquement (pratique pour tester les modifs faites sous QBOX d'un clic)
- une option pour rejouer le son en boucle
- que la routine d'émulation du son soit bien la dernière utilisée dans l'émulateur.

C'est juste pour simplifier le test de chaines générées à partir de QBOX.
J'ai d'ailleurs obtenu de bonnes surprises avec des bruitages...
Il faut encore que je modifie les fichiers de config de QBOX pour avoir des résultats exacts sur Exl100.

Le meilleur moyen d'obtenir des bruitages corrects est de les faire soi même, avec la bouche (même les animaux), si si... ce n'est pas un synthétiseur vocal pour rien. :lol:
Je pense que le 5220 peut reproduire de la musique, mais de manière limitée. La preuve en est la petite mélodie en intro de Guppy ! Il faut juste une mélodie très simple, pas de percussions ni de grosse basses. Mais il faudrait un encodeur spécialisé, QBOX risque de montrer ses limites (il les montre déjà avec les bruitages ou la voix qui demandent des réglages très fins).

Merci d'avance.
Daniel
Messages : 17412
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Exelvision] Emulation de la synthèse du son

Message par Daniel »

Dcexel a tellement évolué que la dernière version de l'émulateur 5220 n'est plus compatible avec le programme de test des chaînes LPC. Pour améliorer le dialogue avec le 7041 j'avais complètement modifié la logique. Il faudrait s'y replonger, mais après six mois d'arrêt c'est un peu difficile. Je vais essayer mais je ne promets rien...
Daniel
L'obstacle augmente mon ardeur.
jester
Messages : 2328
Inscription : 01 janv. 2009 23:16
Localisation : Grenoble

Re: [Exelvision] Emulation de la synthèse du son

Message par jester »

Si le son n'a pas trop changé entre le petit player et l'émulateur, c'est pas trop grave... c'est surtout l'option pour recharger automatiquement qui serait utile !

... ou bien intégrer dans l'émulateur le player (un moyen de jouer une fichier son recharger à chaque fois).

Fait au plus simple, c'est juste pour du test de génération de chaine LPC.
jester
Messages : 2328
Inscription : 01 janv. 2009 23:16
Localisation : Grenoble

Re: [Exelvision] Emulation de la synthèse du son

Message par jester »

J'ai essayé de remplacer les valeurs de 5220.COD par l'annexe du document de Daniel:
1) pour les Ki c'est inutile... +/-1
2) en modifiant les autres j'obtiens une division par zero.... sans doute QBOX ne supporte t'il pas d'avoir la première valeur à 0 ???

Sinon j'ai testé quelques sons que j'ai placé ICI : le nom est évocateur, sinon ce n'est pas toujours facile de reconnaître.

Tous les sons graves ou gutturales répétitifs passent difficilement., idem pour les sons musicaux un peu long (oiseaux).
Le résultat sur la voix est moyen mais ma source était mauvaise et bruyante.

On pourrait faire un concours du son le plus fidèle ? (il suffit de bien suivre la méthode de Daniel).
Répondre