[THOMSON] Jouer des MODs amiga

Cette catégorie traite de développements récents pour nos vieilles machines, applications, jeux ou démos... Amis programmeurs, c'est ici que vous pourrez enfin devenir célèbres!

Modérateurs : Papy.G, fneck, Carl

__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [THOMSON] Jouer des MODs amiga

Message par __sam__ »

Es-tu sur que ce soit la version 50khz ? J'ai enregistré la sortie à 96khz et sorti le spectre:
Spectre DCMoto échantilonnage 25khz.
Spectre DCMoto échantilonnage 25khz.
DCMOTO.gif (58.89 Kio) Consulté 4168 fois
Il est coupé à 12.5khz , càd 25/2.

En fait, après réflexion, je me dis que plus que la vitesse d'échantillonage, le plus judicieux serait en fait de pouvoir "tuner" la fréquence de coupure du passe-bas à ajouter entre l'échantillonage réalisé par l'émulateur et l'envoi vers la carte son. Par défaut on couperait à freq_échant/2 (comme là apparemment[*]), mais si besoin était on pourrait couper bien plus bas (à la fréquence du buzzer typiquement.)
____
[*]Tu dois déjà avoir un passe bas en place, avec un émulateur sans passe bas, voici ce qu'on obtient:
Spectre TEO échantillonnage 48khz (je crois). Repliement autour de 24khz.
Spectre TEO échantillonnage 48khz (je crois). Repliement autour de 24khz.
teo.gif (58.1 Kio) Consulté 4167 fois
on voit toutes les harmoniques descendre en 1/n (les pics forment un bel alignement régulier de pente -1)
Dernière modification par __sam__ le 22 oct. 2017 22:59, modifié 2 fois.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [THOMSON] Jouer des MODs amiga

Message par Daniel »

As-tu coché 50kHz dans les options ?

[Edit]
Dans cette version il n'y a pas de filtre passe-bas. Il faut noter que je ne n'utilise pas la valeur instantanée du signal au moment de l'échantillonnage. J'intègre le signal sur la période d'échantillonnage par la méthode des trapèzes (une valeur prise après chaque instruction 6809). C'est peut-être ce qui différencie dcmoto des autres émulateurs.
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [THOMSON] Jouer des MODs amiga

Message par __sam__ »

Arf... oulà.. :oops:

Alors, erm, donc avec la bonne option "50khz" cochée on voit que le spectre s'étends plus loin:
Spectre DCMOTO échantillonnage 50Khz
Spectre DCMOTO échantillonnage 50Khz
DCMOTO.gif (57.46 Kio) Consulté 4156 fois
Mais en fait ce qu'il faudrait ca serait descendre pour couper toutes ces harmoniques pour ne garder que le fondamental.

Je me dis que si on pouvait choisir des fréquences d'échantillonages plus basse ca serait finalement plus proche de ce dont on aurait besoin: 6.25, 12.5, 25, ou 50khz. Avec ca je pense qu'on couvre tout la gamme des fréquences utiles. Peut-être faudrait il aller de 5khz en 5khz pour faciliter la synchro avec les cycles 6809?

A noter:
1) ma carte son n'aime pas l'option 50khz. Ca crachote sitot qu'on accède à basic 1, 2, Appel de programme, Exploitation de fichier ou même assembler v3. Par contre ca ne crachote plus sitôt revenu au menu de boot ou dans les préférences (souris/palette). Au bout de 5mins dans le basic, les crachotis s'arrêtent. Etrange!

2) S'il n'y a pas de filtre passe-bas, c'est qu'il doit y avoir autre chose qui coupe à 12.5khz quand on échantillonne à 25khz (la carte son elle-même?). Par contre en effet à 50khz la coupure est absente alors que c'est le même algo coté DCMoto. C'est un truc qu'il faudra expliquer ([EDIT] voir plus bas.)

Si on est attentif, on constate sur le spectre à 50khz qu'il y a une symétrie des pics autour de 50khz/2. C'est pile-poil le repliement: on retrouve en miroir après 25khz ce qu'il se passe avant! C'est atténué en intensité car on est quand même dans les hautes fréquences du Haut-Parleur, mais ca colle bien avec la théorie. On retrouve aussi ce phénomène avec le graph de TEO dans le message précédent. Et encore aussi avec le spectre de DCMoto échantillonant à 25khz.. les deux pics à droite sont les symétriques de la fondamentale 5khz et de la 1ere harmonique à 10khz, les seules frequences que l'échantillonage à 25khz laisse passer.

Ok c'est clair:
A) la carte son tourne toujours à 50khz (ou 48), et il y a repliement autour de 25 (ou 24)khz. Appellons ca fc/2 (fréquence carte)
B) l'échantillonage par trapèze coupe naturellement tout ce qu'il y a au dessus de la fréquence d'échantillonage / 2 (appellons ca fe/2). C'est un filtre passe-bas implicite: les fréquences plus haute sont atténuées car noyées dans la surface du trapèze.
C) Il n'y a donc rien au dessus de fe/2 jusqu'à fc/2 (filtre passe-bas du trapèze). Au delà de fc/2 il y a repliement: rien jusqu'à fc-fe/2, puis la partie en miroir de la portion de courbe 0 à fe/2.
Cette façon de voir explique toutes les courbes de DCMoto et de TEO pour toutes les configurations :)

Du coup:
A) je ne pense pas qu'échantillonner à 50khz soit utile: on est trop près de la vitesse "native de la carte" et on ne bénéficie pas du filtre passe-bas implicite de la méthode des trapèzes;
B) en revanche, pouvoir échantillonner à 12 ou 6khz serait utile pour virer les harmoniques "ennuyeuses".
Du point de vue programmation, cela revient à prendre un trapèze 2x ou 4x plus large que l'échantillonage à 25khz je pense.
Dernière modification par __sam__ le 23 oct. 2017 11:14, modifié 1 fois.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [THOMSON] Jouer des MODs amiga

Message par Daniel »

Quand __sam__ explique tout devient clair 8)

Finalement ça m'arrange de ne pas jouer à 50kHz car j'ai été obligé d'augmenter la taille des buffers pour éviter les crachotements (pour ma carte son c'est bon, mais peut-être pas assez pour toutes les configurations). Cette augmentation se traduit par un délai dans la restitution du son, et il y a un décalage bien audible dans le beep des touches MO5 ou TO7. Avec des fréquences plus basses je pourrai revenir à un décalage moins perceptible.

Je note tout ça pour une prochaine version. Peut-être pas tout de suite car j'ai d'autres priorités, mais dans deux ou trois semaines...
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [THOMSON] Jouer des MODs amiga

Message par __sam__ »

cool 8) J'étais pas sur d'être très clair... Tout ca c'est de l'expérimentation... et j'ose dire un peu d'ingénieurie au travail :)

A propos d'expérimentation, je me demande comment trouver la bande passante d'un systeme TO8+moniteur.

Une méthode possible serait de faire une suite d'échantillons random en mémoire du Thomson, et envoyer tout ca le plus vite possible dans le buzzer. On a ainsi en source un bruit "blanc" qui arose toutes les fréquences à puissance égale.

Code : Tout sélectionner

        org     $A000
main    lda     #*<-8
        tfr     a,dp
        setdp   *<-8
        ldx     #$E7C1
        orcc    #$50        
rnd     ldd     #3*256+249	; générateur aléatoire ultra simple et très rapide :D
        mul
rnd1    addd    #0
        sta     <rnd1+2
        stb     <rnd+1  
        
        andb    #8
        orb     #$30
        stb     ,x
        bra     rnd
En enregistrant le bruit en sortie du HP on devrait récupèrer le profil de la bande passante du moniteur thomson. Ce profil pourrait être utile pour rendre les émulateurs encore plus fidèles.

[EDIT] Ca marche bien! On voit la différence entre un émulateur (spectre bien lisse)
Bruit blanc sous TEO : spectre bien propre avec repliement autour de 24khz. Preuve que l'émulateur a programmé la carte son sur 48khz en sortie.
Bruit blanc sous TEO : spectre bien propre avec repliement autour de 24khz. Preuve que l'émulateur a programmé la carte son sur 48khz en sortie.
teo.gif (40.48 Kio) Consulté 4111 fois
et la vraie machine (spectre très bruité avec des lobes caractéristique de la production d'un son échantillonné: et oui, l'algo ci-dessus produit de l'échantilloné).

Voici ce que donne ma TV "tucson" branchée à mon TO8D enregistré à 176khz par un micro séparé relié à une carte son:
Bruit enregistré à 176khz en sortie du haut-parleur d'une TV 36cm &quot;tucson&quot; connecté à un vrai thomson.<br /><br />Le spectre est bruité avec des lobes dans la zone &quot;utile&quot; 1000-10 000hz. Globalement il est plat jusqu'à 10khz puis chute très vite.<br /><br />Remarquez le pic à 50hz et son harmonique à 100hz vers la gauche de la courbe.
Bruit enregistré à 176khz en sortie du haut-parleur d'une TV 36cm "tucson" connecté à un vrai thomson.

Le spectre est bruité avec des lobes dans la zone "utile" 1000-10 000hz. Globalement il est plat jusqu'à 10khz puis chute très vite.

Remarquez le pic à 50hz et son harmonique à 100hz vers la gauche de la courbe.
TV_tucson.png (33.18 Kio) Consulté 4096 fois
En première approximation, je dirais que le spectre est plat jusqu'à environ 8-10khz et chute alors jusqu'à 16khz à partir d'où tout devient "muet". Je pense que ces 16khz sont pas loin de la vitesse max du générateur aléatoire ci-dessus. Je vais modifier l'algo pour aller encore plus vite...

[EDIT2] Un générateur aléatoire encore plus rapide:

Code : Tout sélectionner

        org     $A000
main    orcc    #$50
        ldx     #data
rnd     ldd     #3*256+249
        mul
rnd1    addd    #0
        sta     rnd1+2
        stb     rnd+1
        
        lsrb            ; lsb is too predictible
        orb     #128
        lsrb
rnd2    lda     #$30
        adca    #7
        anda    #$38
        sta     ,x+
        cmpx    #$DFFE
        beq     rnd3
        lsrb
        beq     rnd
        bra     rnd2
        
rnd3    clr     ,x
        
        ldu     #$E7C1
        bra     rnd6
rnd5    stb     ,u      ; 4
rnd4    ldb     ,x+     ; 6
        bne     rnd5    ; 3 => 13µs == freq max = 77khz
rnd6    ldx     #data
        bra     rnd4
data    set     *

        end main
Il tourne à 77khz. On devrait pouvoir couvrir toute l'étendue d'une bande spectrale de TV crt avec ca... (stay tuned)

[EDIT3] bon avec cette version le spectre reste inchangé. Ca veut dire que ca ne servait à rien de générer du bruit jusqu'à 36khz. En effet, on voit que ma TV coupe vraiment tout à partir de 8-10khz avec une pente assez élevée (ordre 2 ou 4 ?), de sorte qu'il n'y a plus aucun signal au delà de 16khz.

Il serait intéréssant que d'autres personnes puissent tester sur d'autres TV pour voir si la moyenne du point où la courbe chute est bien autour de 8-10khz comme je le mesure. Si c'est bien le cas chez tout le monde ca confirmerait le fait que l'émulateur n'a pas besoin d'échantillonnner au delà de 16-20khz.

20khz est probablement le plus simple pour les trapèzes car c'est en harmonie avec 1Mhz: il faut calculer 1 nouvel échantillon audio tous les 50 cycles cpu.

[EDIT4] Après quelques temps de réflexion, je trouve que les 16khz sont logique car je crois me souvenir qu'en PAL le son a une bande passante de 15khz. Donc l’électronique d'une TV n'est pas conçu pour exploiter les fréquences plus hautes. Tout semble bien coller ensemble finalement. Pour résumer: bande passante audio d'un canal TV=15khz, donc fréquence maxi "joueable" sans déforation par un poste TV=8khz. Les postes sont donc conçus pour commencer à filtrer à partir de là. Pour bien reproduire cet aspect, les émulateurs de vieux ordis devraient commencer à filtrer le son à cette fréquence aussi.

A noter: Utz jouant à 9khz tombe en plein dans la zone "coupée" du spectre audio. Pas étonnant que dans son cas on entende pas la porteuse. Elle est gommée par le circuit audio d'une TV normale.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [THOMSON] Jouer des MODs amiga

Message par Daniel »

Je suis d'accord avec toi pour la bande passante du téléviseur, mais ce n'est pas une raison suffisante pour limiter l'émulateur à cette valeur. Pour les démonstrations de musique en streaming à 44,1 kHz je connecte la sortie son de l'ordinateur Thomson à une chaîne audio dont la fréquence de coupure est beaucoup plus élevée. Il serait dommage de se priver de cette qualité sur PC avec l'émulateur.

Dans dcmoto je peux assez facilement proposer 4 fréquences d'échantillonnage, par exemple : 25kHz, 12.5kHz, 6.25kHz et 3.125kHz
En choisissant 25k on aurait une bonne fidélité, avec 12.5k on se rapprocherait du moniteur Thomson, et les deux fréquences les plus basses permettraient d'éliminer le sifflement du PWM.

Il y a aussi un point à ne pas oublier : avec un filtre passe-bas on supprime les fréquences aiguës indésirables, certes. Mais on génère aussi une distorsion des sons de fréquence fondamentale inférieure, en supprimant des harmoniques pas du tout indésirables.
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [THOMSON] Jouer des MODs amiga

Message par __sam__ »

Oui. Tiens ca serait interessant de voir jusqu'où monte le bruit du programme ci-dessus sur une chaine Hi-Fi pour connaitre la bande passante du Thomson seul.

Ca peut-être très instructif car perso j'ai toujours eu un doute sur le fait de savoir si le 44khz était vraiment du 44 ou pas car les composants internes au thomson sont loin de la Hi-Fi. Déjà qu'il n'est pas évident que les résistancesx R-2R dans le CNA soient bien apairées, il suffit d'une capacité parasite pour créer un filtre passe-bas qui détruit ces 44khz.. enfin bref: quid de la bande-passante d'un thomson "seul". Peut-être qu'en reliant l'enrée line-in de carte-son directement sur la voix audio de la péritel... mouais, faut bricoler, j'chuis pas chaud pour l'instant :?
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [THOMSON] Jouer des MODs amiga

Message par Daniel »

Le TO8 et le TO8D ont un connecteur cinch pour la sortie son.
Il suffit d'un câble cinch-jack pour connecter au PC ou cinch-cinch pour connecter à une chaîne audio.

[Edit] D'après le schéma du TO8, à la sortie du CNA il y a un condensateur de 10nF en parallèle (il atténue les aigus) et un autre de 220nF en série (il atténue les graves). Il faudrait calculer l'impact sur la bande passante, il n'est probablement pas négligeable. La fiche cinch et la sortie son de la péritel sont reliées directement, elles sont donc équivalentes.
Daniel
L'obstacle augmente mon ardeur.
jasz
Messages : 1313
Inscription : 05 oct. 2016 20:05
Localisation : Quelque part dans le 31

Re: [THOMSON] Jouer des MODs amiga

Message par jasz »

Je déterre un peu le topic pour poser une question qui me trotte.

Peut-on faire jouer simultanément le Buzzer et le CNA techniquement parlant?
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [THOMSON] Jouer des MODs amiga

Message par Daniel »

Oui et non, ça dépend de la machine.
Sur MO5, TO7, TO7/70, le son du buzzer, de la cassette et du CNA sont mixés avant d'être envoyés vers la Peritel.
Sur MO6 et TO de nouvelle génération, le buzzer est remplacé par le signal MUTE, qui laisse passer ou pas la sortie du CNA et de la cassette.

En pratique ça revient presque au même, sauf qu'avec les machines de dernière génération, si on laisse le signal MUTE au niveau bas il n'y a plus de son, alors qu'avec la première génération si le buzzer est au niveau bas on entend encore le CNA et la cassette.
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [THOMSON] Jouer des MODs amiga

Message par __sam__ »

Oui sur les TO8 et suivants, on a en quelque sorte un buzzer à volume variable modulé par le MUTE (pour faire passer le buzzer à 0) et la valeur écrite dans le CNA (lorsque le buzzer est à 1). Je ne pense pas qu'on ait réussi à utiliser le volume variable du buzzer pour faire quelque chose en pratique. C'est juste conceptuel :)

Sinon question buzzer, j'arrive à faire jouer des MODs sur le buzzer, mais c'est pas super joli parce que la porteuse à 5khz est trop audible. Il nous faudrait un processeur à 2 ou 4mhz pour la repousser à 10, et mieux 20khz, pour qu'on ne l'entende plus.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
jasz
Messages : 1313
Inscription : 05 oct. 2016 20:05
Localisation : Quelque part dans le 31

Re: [THOMSON] Jouer des MODs amiga

Message par jasz »

Donc si je comprends bien on ne pas coupler une voix analogique avec une voix numérique. Arf!

Autre problème c'est qu'il n'y a aucun générateur. Dingue pour des ordinateurs sorties après le ST ou l'A500 :roll:
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [THOMSON] Jouer des MODs amiga

Message par Daniel »

Bah si, justement, sur MO5 et TO7 on mixe les trois voix :
- La voie numérique sur 1 bit (buzzer).
- La voie numérique sur 6 bits (CNA).
- La voie analogique (celle de la cassette).
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [THOMSON] Jouer des MODs amiga

Message par __sam__ »

Sur les TO il y a une "sorte de" générateur: la sortie TO du timer va directement sur la tête d'écriture du lecteur K7. En remontant un peu on la retrouve sur la prise DIN du lecteur K7. Donc, si tu banches un ampli et un haut-parleur dessus, je pense qu'il doit être possible d'entendre les timeout du timer dont on sait faire varier la fréquence. On a donc là un parfait générateur de signaux carrés à fréquence variable. Ca fait usine à gaz, mais c'est plutôt cool, non? 8)
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
FreddyV
Messages : 432
Inscription : 10 oct. 2018 09:16

Re: [THOMSON] Jouer des MODs amiga

Message par FreddyV »

Sympa vos post.

Je suis justement en trains de downgrader le code de mon player de module 486 pour le faire tourner sur XT.

Avec sound blaster en DMA, mais il sait jouer en PWM aussi bien sur.

J ai poste 2 videos sur youtube de Mod Master.
Répondre