DCMOTO - Emulateur universel Thomson 8 bits : Forum - Programmation - Son et soufflement
Retour : Accueil » Programmation
Pages : 1 - 2
Auteur Message
Yoann
Visiteur
Date : 01/03/2005 à 08h17
Salut,

Je suis en train de m'amuser a digitaliser quelques sons sur thomson et je rencontre un probleme (desagreable a l'oreille). Le son souffle horriblement.

Je sais que HMEL a bosse sur un peu d'electronique pour numeriser des sons sans souffle (et que Prehisto a utilise dans Chinese Stack d'ailleur) mais je n'ai pas cet electronique.

Ce que j'utilise est comme ci dessous :

* Cool Edit Pro : Je converti un son en 11Khz 8 bits. Il y a deja un lege souffle qui apparait, et les differents filtres (ceux que j'essaye d'utiliser) n'enleve pas completement ce souffle
* Outils maison : Je converti le son en 6 bits en utilisant une formule forte simple : Int ((Amplitude / 255) * 63).

Je converti le fichier genere en .BIN, et un petit loader assembleur fort simple lui aussi lit le tout et fait parler le buzzer. Le son genere est fidele mais le souffle est consequent. Quelqu'un aurait-il l'experience de Cool Edit Pro pour eviter le souffle lorsque de la conversion de frequence, ou une astuce (genre un calcul mathematique sur le fichier lors de la conversion en 6bits par exemple) pour virer/supprimer (autant que possible) ce souffle ?

Merci a toutes suggestions

(ps : J'imagine que le troll va se remuer en me sortant en prive un bon "Alors, ca avance les essais de Technicolor en Dolby 5.1 sur TO7 ?" ... inutile donc de me contacter, cela ne m'interresse bien evidement pas ...)
en haut - en bas
Yoann
Visiteur
Date : 01/03/2005 à 08h20
Et d'ailleur, si quelqu'un pouvait m'expliquer ce que le souffle est (a defaut de comment l'eliminer), et comment il se retrouve sur une courbe de frequence par exemple, cela pourrait m'aiguiller vers des solutions Daniel, toi qui tate dans les conversions de cassettes, tu as peut etre des idees la dessus ?
en haut - en bas
Yoann
Visiteur
Date : 01/03/2005 à 08h26
Et comme un google vaut tout l'or du monde, j'ai trouve le tutorial suivant :

http://www.bourgoing.com/formation/montage/17dessoufflage.htm

Ca m'a l'air pareil, j'avais vu cette fonction sans savoir comment l'utiliser. Je ferais des essais, mais reste ouvert a toutes suggestions si vous en avez (ainsi que votre experience sur la chose)
en haut - en bas
Fool-DupleX
Visiteur
Date : 01/03/2005 à 10h23
Tcho,

Cette fonction permet de reduire le souffle analogique provenant de la source. Je ne crois pas que ce soit ton probleme, si ?
Ne parles-tu pas plutot du "souffle" genere par la reduction du spectre sonore du a la conversion du flux deja numerise vers le bas ?

Fool
en haut - en bas
Daniel
Visiteur
Date : 01/03/2005 à 10h28
Le souffle est un signal composé de fréquences aléatoires. Il est donc extrêmement difficile à éliminer avec des filtres classiques. La bonne solution est de déterminer son origine : est-ce l'enregistrement ? est-ce la conversion 6 bits ? Est-ce la reproduction finale sur la machine Thomson ? En fonction de la réponse, il faut essayer d'agir sur la source : matériel d'enregistrement, ou algorithme de conversion, ou programme de restitution. Chercher à l'éliminer après l'avoir introduit ne le supprimera jamais totalement, ou alors déformera beaucoup trop le signal original.

Daniel
en haut - en bas
Yoann
Visiteur
Date : 01/03/2005 à 10h45
Alors, disons que j'ai utilise des sons telecharge sur internet. Ils ne sont pas de super qualite, mais sont de qualite superieur a ce que j'attend de toutes facons. Toujours est-il que ces sons ne presente pas (trop) de souffle a l'origine, donc tout va bien.

Par contre, la conversion en 11Khz genere un souffle. Cette conversion est faite par Cool Edit Pro. Je vais essaye de netoye ce son en suivant la methode du lien que j'ai donne ci dessus.

En ce qui concerne la conversion en 6 bits, je ne peux pas savoir si du souffle est cause aussi a ce moment la car :

1. Aucun programme ne lira mon son code en 6 bits
2. Il se peut que le Thomson rajoute du souffle par defaut, due a la faible qualite de son generateur de son

La raison 2) me parait moins problable car il y a eu d'excellent son sur Thomson, les sons de Chinese Stack pour ne citer qu'eux ne contiennent vraiment pas beaucoup de souffle (par exemple, la musique de la page des credits)

Donc, je pense que le probleme vient tout d'abord de la conversion 11Khz qui rajoute du souffle (et que le generateur son du Thomson peut par exemple amplifier). Je ne vois pas par contre en quoi la conversion en 6 bits rajouterais comme son ... mais comme je ne suis pas un specialiste du son, je ne pourrais etre sur.

Sur Cool Edit, on peut faire une conversion en 6bits au lieu de 8, mais je n'ai absolument pas compris comment elle fonctionnait, car les valeurs tournent toujours entre 0 et FF (a moins qu'il y ait des blancs entre les valeurs possibles, ce que je n'ai pas verifie ... je devrais le faire alors)
en haut - en bas
Fool-DupleX
Visiteur
Date : 01/03/2005 à 11h18
Oui ca me paraissait assez clair que c'est la conversion qui pose probleme. C'est un souci qui revient regulierement. Ce type de souffle provient du fait que la plage d'amplitudes reproductibles avec 8 ou 6 bits est moindre qu'avec 16 bits naturellement. Sans compter la frequence d'echantillonnage plus faible qui reduit le spectre reproductible.

Je ne me suis jamais interesse de pres au probleme et je n'ai pas de solution. Mais je pense que si je devais experimenter dans ce sens, je commencerai par renoncer a prendre des sources numerisees par des tiers ; je numeriserais directement a la frequence d'echantillonage et a la resolution qui m'interessent, en rajoutant un filtre passe-bande adapte au spectre que je peux reproduire avec cette frequence sur l'entree de la carte son ; Les frequences hors bande etant coupees des l'entree, elle ne generent pas de bruit de fond a l'echantillonnage.

Une chose tout de meme concernant tes sons provenant d'internet : ce qui est moyen en entree sera forcement bien pire en sortie, c'est une regle de base...

Une solution pourrait venir d'une interpolation adaptee a ce que tu veux obtenir en sortie. Cool Edit Pro permet d'interpoler le son lors de la conversion, et je sais que HMEL avait pas mal bosse sur cet aspect. Il y a un article de PrehisTo a ce sujet qui traine quelque part d'ailleurs.

Fool
en haut - en bas
Yoann
Visiteur
Date : 01/03/2005 à 11h36
J'ai lu l'article de PrehisTO qui etait sur Defusr concernant les travaux de HMEL et cette interpolation justement. Faudrait que je regarde ca de plus pret alors (j'ai l'article), ca me donnera peut etre des idees.

Par contre, je crois que c'est la routine assembleur qui s'occupe de faire cette interpolation directement pour adoucir le son, a partir des fichiers .SON

Ce que j'essaye de faire ici, c'est d'utiliser des outils avances (comme Cool Edit) pour faire ce travail, outils qui n'existait pas (ou pas facilement accessible) a l'epoque des travaux de HMEL.
en haut - en bas
Daniel
Visiteur
Date : 01/03/2005 à 14h27
Yoann a écrit :
Ce que j'essaye de faire ici, c'est d'utiliser des outils avances (comme Cool Edit)

C'est certainement la meilleure façon de faire, car tous les problèmes de conversion sont connus par les spécialistes, et il y a des solutions. La difficulté est de trouver la bonne fonction et le bon paramétrage. Pour la restauration des cassettes, j'ai réussi à faire des miracles avec CoolEdit, par exemple convertir des programmes que le MO5 refusait de lire. A ta place, avant de chercher la solution, j'essaierais de comprendre l'origine du souffle en visualisant le signal obtenu, et en le comparant au signal "propre" original. Il y a probablement des options ou des paramètres permettant de l'éviter. Et certains logiciels peuvent être meilleurs que d'autres sur un point particulier, tu pourrais par exemple tenter de faire la même opération avec SoundForge.

Daniel
en haut - en bas
Yoann
Visiteur
Date : 01/03/2005 à 14h35
Alors, j'ai fait des essais en regardant justement le tutorial dont j'ai copie l'URL et les resultats sont bien mieux.

1) Il y avait du souffle (j'ai branche des ecouteurs sur la carte son histoire de bien apprecier le souffle). Un "Noise reduction" comme explique dans le tutorial a eu des effets impressionnant. Le souffle avait beaucoup disparu.
2) Apres convertion de 44Khz 16 bits a 11Khz 8 bits, du souffle est revenu
3) Je l'ai nettoye de la meme facon ... le son est devenu un peu plus "metalique" mais ca n'a pas vraiment d'importance.

J'ai converti ca en utilisant 2 methodes :

1) Du 8 bits pur, donc calcul a la con int(( X / 255) * 63). Resultat final mieux que mes precedents test, mais il reste du souffle (mais beaucoup moins)
2) Du 6 bits par cool edit, j'ai verifie en faisant des stats sur le fichiers WAV les valeurs utilisees. Je me suis rendu compte que les bits 2 a 7 etaient utilise. Une division par 4 decale le tout a droite de 2 bits, et donc la valeur finale etait sur 6 bits. Resultat pas mal aussi, mais toujours du souffle

J'en conclu donc que le souffle provient de cette convertion en 6 bits ...

Je continue donc sur ma lancee, je suis sur que l'on peut faire BIEN mieux.
en haut - en bas
jasz
Visiteur
Date : 11/04/2005 à 22h32
J'ai actuellement le même problème de conversion sur atari :(

Zut, il me faut écrire le prg.
en haut - en bas
Daniel
Visiteur
Date : 16/04/2005 à 16h42
Yoann a écrit :
je rencontre un probleme (desagreable a l'oreille). Le son souffle horriblement

Es-tu sûr que ce soit du souffle ? Car j'ai un problème analogue de son pourri, mais ce n'est pas du souffle.

Je joue un son 6 bits très prope en 22,050 kHz, par des STA $E7CD. Dans dcmoto le résultat est parfait. Sur le TO8 le son est pourri, avec des sortes de crachements (pas de souffle).

Au début je croyais avoir des mauvais contacts dans la peritel, j'ai tout désoxydé, mais rien n'a changé D'ailleurs le PLAY donne un son parfait.

J'ai soupçonné la souris, car quand on l'utilise on entend qu'elle perturbe légèrement la sortie son (c'est normal et expliqué dans le manuel technique). Mais ce n'est pas ça. J'ai désactivé les interruptions avec ORCC #$50, mais ce n'est pas ça non plus. Je ne sais plus quoi faire. Avez-vous des idées ?

Daniel
en haut - en bas
Yoann
Visiteur
Date : 17/04/2005 à 09h35
Comment joues-tu ton son ? Est-ce que tu le joue en permanence pendant une duree complete ou joues-tu le son une fois puis tu fais une boucle d'attente qui ne fait rien d'autre que d'attendre.

Sinon, j'ai les sources du programme de HMEL pour decompresser les sons de TO-SON si il t'interresse. Tu verras comment il compresse, extrapole, ainsi que les desactivation initiales qu'il fait (y compris de la souris).

Tant que t'y ais, balance moi ton SAP/FD (j'aime bien les nouveautes ! )
en haut - en bas
Daniel
Visiteur
Date : 17/04/2005 à 10h25
Les échantillons sont joués dans une boucle en assembleur. A chaque boucle il y a deux STA $E7CD, séparés par quelques instructions et une boucle de temporisation. C'est extrêmement simple, et précédé d'un ORCC #$50

Yoann : je t'ai envoyé par mail le fichier .fd pour que tu puisses écouter le résultat, parfait dans dcmoto, et insupportable sur TO8D.
Les initialisations du programme d'HMEL m'intéressent au plus haut point, car je suppose que le problème doit être résolu par la désactivation de quelquechose (la souris ? le crayon optique ? ou autre ?)

Daniel
en haut - en bas
Daniel
Visiteur
Date : 17/04/2005 à 21h00
Finalement ne cherchez pas, j'ai trouvé l'origine du problème : les 6 bits de poids faible de E7CD n'étaient pas tous initialisés en sortie.

La solution consiste à configurer le PIA après masquage des interruptions. Je l'ai trouvée en étudiant la programmation de la section "Credits" de Chinese Stack. J'ai ajouté les instructions nécessaires après le ORCC #$50, et tout est rentré dans l'ordre. Le code de Thomtest recopié par smague faisait aussi une initialisation analogue (smague étant exclu du forum. son message et les deux réponses ont été supprimés).
La programmation du registre de direction du PIA est détaillé dans la datasheet du 6821 (à la page documentation de dcmoto). Il faut mettre à zero le bit 2 de E7CF pour accéder au registre de direction E7CD, envoyer &h3F dans ce registre, puis mettre à 1 le bit 2 de E7CF pour revenir en mode data sur E7CD.

Maintenant le son émis sur le TO8D est rigoureusement identique à l'original. Avec mon système de compression du son sur 4 bits je peux stocker environ 20 secondes en mémoire, et près de 50 secondes avec une extension 256K. Pour faire mieux il reste à améliorer la compression.

Daniel
en haut - en bas
Fool-DupleX
Visiteur
Date : 18/04/2005 à 09h45
Bon c'etait le piege de base... moi qui te croyait bon

20 s ? J'ai calcule de tete que ca fait une sortie a 20 KHz environ ? Ca me parait enorme sur un thomson.

Fool
en haut - en bas
Yoann
Visiteur
Date : 18/04/2005 à 09h57
Bien calcule le tete, mais il l'avait deja indique :

Citation :
Je joue un son 6 bits très prope en 22,050 kHz, par des STA $E7CD.
en haut - en bas
Fool-DupleX
Visiteur
Date : 18/04/2005 à 10h06
LOL ah oui j'avais pas vu toutes mes excuses. Bon je crois que c'est un record cette frequence d'echantillonnage. Par contre, je suppose que y'a plus la place pour autre chose, non ? Combien de cycle a vide te reste-t-il ? Histoire d'en gagner encore quelques-uns, tu pourrais utiliser le DP initialise a $E7, tu gagnes 1 cycle par STA, donc 2 par boucle donc 44100 par seconde, ce qui fait quand meme pas loin de 4.41% de CPU

Fool
en haut - en bas
Fool-DupleX
Visiteur
Date : 18/04/2005 à 10h10
Dis, tu m'envoies le .fd ?

Fool
en haut - en bas
Daniel
Visiteur
Date : 18/04/2005 à 10h16
Pour cet essai j'ai utilisé 22050 Hz. C'est peut-être un peu trop pour un Thomson, je vais probablement redescendre à 16000 Hz.

Un détail m'embête un peu : la fréquence du 6809 n'est pas un multiple exact des fréquences d'échantillonnage standard. Il faut accepter une (toute petite) modification de la fréquence du son restitué, ou bien utiliser une fréqence non standard, par exemple 20000 Hz.

Je vais tester les programmes de modification des fichiers audio (fréquence d'échantillonnage et nombre de bits) avant de choisir. C'est important de trouver les meilleurs algorithmes pour l'un et pour l'autre. Sinon le changement de fréquence introduit des distorsions, et la réduction du nombre de bits introduit du souffle.

Côté compression, les résultats de ma méthode des différences (pour réduire de 6 bits à 4 bits) sont excellents. Je vais voir si on peut encore améliorer en s'inspirant des méthodes prédictives, mais j'ai peu d'espoir d'atteindre 3 bits sans perte.

Je vous tiendrai au courant des résultats.

Pour FoolDuplex : je ne veux pas t'envoyer le .fd "pourri", laisse moi deux ou trois jours pour en préparer un nouveau qui sera beaucoup plus propre. Avec le programme actuel, il doit rester moins d'une dizaine de cycles inutilisés, mais quand il sera écrit proprement ce sera de l'ordre d'une quinzaine.

Daniel
en haut - en bas
Pages : 1 - 2