[THOMSON] Jouer des MODs amiga

Cette catégorie traite de développements récents destinés à 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

jasz
Messages : 1313
Inscription : 05 oct. 2016 20:05
Localisation : Quelque part dans le 31

Re: [THOMSON] Jouer des MODs amiga

Message par jasz »

J'ai refais les calculs en utilisant la constante c=1,059463. Pour une gamme en partant du A=440Hz nous avons

Code : Tout sélectionner

A  440,00 254,00 00fe - 00fe 00
A# 466,16 239,96 00f0 - 00ef f6
B  493,88 226,49 00e2 - 00e2 7d
C  523,25 213,78 00d6 - 00d5 c8
C# 554,36 201,78 00ca - 00c9 c8
D  587,33 190,46 00be - 00be 76
D# 622,25 179,77 00b4 - 00b3 c5
E  659,25 169,68 00aa - 00a9 ae
F  698,45 160,16 00a0 - 00a0 29
F# 739,99 151,16 0097 - 0097 29
G  783,99 142,68 008f - 008e ae
G# 830,61 134,67 0087 - 0086 ac
A  879,99 127,12 007f - 007f 1f Rééquilibrage de la perte de 0,01 Hz-> 880,00 127,00 007f - 007f 00
Je ne vois pas comment résoudre ce problème à moins d'y ajouter une contre décimale en .b (dernière valeur du tableau) pour retomber sur la valeur correcte ou proche de celle-ci par l'utilisation d'un ADDX par exemple.
Fool-DupleX
Messages : 2367
Inscription : 06 avr. 2009 12:07

Re: [THOMSON] Jouer des MODs amiga

Message par Fool-DupleX »

Mais il est sympa, il se propose quand même de me calculer les coefs si je lui donne la fréquence.
Ca m'aurait surpris qu'il te claque complètement la porte au nez. Le "5 KHz" (appelons ca comme ca) est au contraire un sujet brulant d'actualité avec les recherches faites pour améliorer les codecs et la bande passante (en octets/s, pas en Hz) pour la téléphonie.

Par exemple, les formats audio qui tournent autour du 3GPP utilisent tous du noise shaping et du noise reconstruction pour encoder le son.
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 viens de tomber sur la table des fréquences du format .tfmx (Chris Hulsbeck -> turricane...)

Code : Tout sélectionner

0353 0323 02F6 02CB 02A3 027D 0259 0238
0218 01FA 01DD 01C2 01A9 0191 017B 0165
0151 013E 012C 011C 010C>00FD<00EE 00E1
00D4 00C8 00BD 00B2 00A8 009F 0096 008E
0086 007E 0077 0070
Si on prend le La qui a une période de $00fd soit 253 et selon ta formule on tombe 7159090/64/253=442,14Hz et 7093789/64/253=438,10Hz. C'est un peu mieux pour le PAL mais c'est tout de même 2Hz plus haut en NTSC :?
__sam__
Messages : 7989
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [THOMSON] Jouer des MODs amiga

Message par __sam__ »

C'est carrément fou qu'ils ne prenent pas la valeur qui tombe à pile 440. Cependant pour la dernière table, il me semble que c'est la plus logique: elle est à 2hz au dessus et en dessous du NTSC et du PAL respectivement. Dit autrement c'est celle qui ne favorise pas l'une des machines par rapport aux autres. Il est neutre: chacun joue avec le même écart par rapport à la note théorique. C'est une moyenne.
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
Avatar de l’utilisateur
6502man
Messages : 12332
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [THOMSON] Jouer des MODs amiga

Message par 6502man »

Ouah le xenon 2 et depeche mode :shock:

Superbe et quel travail, je suis admiratif :D
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
jasz
Messages : 1313
Inscription : 05 oct. 2016 20:05
Localisation : Quelque part dans le 31

Re: [THOMSON] Jouer des MODs amiga

Message par jasz »

J'ai deux questions en marge de ce sujet:

Pour commencer est ce que les thomson peuvent générer un son à partir de simples paramètres (forme [sinus, square, saw], enveloppe, hauteur, frequence, durée)? Et enfin peut-on jouer simultanément un son sur le DAC ET le Buzzer?
Fool-DupleX
Messages : 2367
Inscription : 06 avr. 2009 12:07

Re: [THOMSON] Jouer des MODs amiga

Message par Fool-DupleX »

Oui et oui, mais tout 100% en software (i.e. il faut generer les sinus en soft par exemple).
jasz
Messages : 1313
Inscription : 05 oct. 2016 20:05
Localisation : Quelque part dans le 31

Re: [THOMSON] Jouer des MODs amiga

Message par jasz »

Fool-DupleX a écrit :(i.e. il faut generer les sinus en soft par exemple).
Tu veux dire qu'il faut créer la forme point par point?
__sam__
Messages : 7989
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [THOMSON] Jouer des MODs amiga

Message par __sam__ »

Oui tout à fait. Il n'y à rien d'automatique pour soulager le cpu . Il doit tout faire.....
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 »

Je sais que l'on en a déjà parlé quelque part (ici ou sur un autre forum) mais le guide fournie avec les machines 2eme génération fait mention d'un, je cite "synthétiseur musical intégré de 4 voix sur 7 octaves". Or un synthétiseur est capable de générer des sons avec des paramètres par analogie sans avoir à prédéfinir quoi que ce soit en amont car on commence à partir d'un son de base. La modification des paramètres influe donc sur la forme singulière en hardware (c'est le synthé qui synthétise en gros). Si les thomson de seconde génération pouvaient synthétiser les sons (utopie car apparemment il n'y a pas de ship dédié) cela aurait pu être très intéressant en restant dans le cadre du soundship (la voix DAC étant réservée à la drumbox).

Maintenant, si je comprends bien on ne fait pas de la synthèse mais du tracé. Donc le terme synthétiseur est abusif. Enfin, je ne voie pas l'intérêt de vendre un âne à la place du cheval décrit dans la doc, ou est-ce simplement une tradition purement Française :roll:
__sam__
Messages : 7989
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [THOMSON] Jouer des MODs amiga

Message par __sam__ »

Sur-vendre une machine sur le papier était courant à l'époque. Par exemple une machine avec 16k de ram utile + 16k de ram vidéo + 16k de rom était vendue pour 48k..... Sur thomson toute la doc marketing est mensongère. Il n y a jamais eu de synthé multivoix:'(
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
Fool-DupleX
Messages : 2367
Inscription : 06 avr. 2009 12:07

Re: [THOMSON] Jouer des MODs amiga

Message par Fool-DupleX »

Ce que dit Sam est correct. Mais enfin vous observerez que la quasi-totalité des synthétiseurs modernes sont en soft. Rien n'a jamais indiqué qu'un synthétiseur doit être du hardware pur. Concrètement, l'annonce de Thomson était un mensonge. Mais il n'est pas exclu que les ingénieurs aient bricolé dans un coin une petite routine inachevée qui faisait un truc dans le genre. Le marketing a dû s'en emparer, comme souvent. Après tout, il y a bien "Musique 3 voies" (http://dcmoto.free.fr/programmes/music-3v/index.html) qui est très correct et qui fait à peu près ça.

Jasz, tu viens donc de réaliser que Sam crée point par point la forme de la musique dans son mod player :lol:
jasz
Messages : 1313
Inscription : 05 oct. 2016 20:05
Localisation : Quelque part dans le 31

Re: [THOMSON] Jouer des MODs amiga

Message par jasz »

Fool-DupleX a écrit :Jasz, tu viens donc de réaliser que Sam crée point par point la forme de la musique dans son mod player :lol:
Non pas du tout. Dans le cadre du playeur de __sam__ on ne créer pas de forme (sinusoidale, triangle ou carrée) mais un échantillon ce qui est différent ;)
Fool-Duplex a écrit :Mais enfin vous observerez que la quasi-totalité des synthétiseurs modernes sont en soft.
Ce n'est pas une évidence car il y a maintenant du soft et du hard dans le traitement des signaux sonores (melange de synthèse vectorielle, d'analogique et de FM).
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 ne suis pas convaincu et pour preuve.

L'instruction play joue un son (qui n'est pas un sample) selon 5 paramètres (Longueur, Attaque, Tempo et Frequence [octave+note]). Si on fait play"l48do" on obtient un son linéaire qui a un certain timbre. Maintenant si on fait play"a1l48do" le timbre change.

Donc il doit bien y avoir un générateur (en soft) :) Il suffit de savoir comment il fonctionne ;)

Car habituellement quand on joue sur l'attaque on modifie le sustain (c'est a dire la longueur de la note) pas le timbre. On change donc aussi l'algorithme...

Enfin, tout ceci est sous caution ^^
Daniel
Messages : 17426
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [THOMSON] Jouer des MODs amiga

Message par Daniel »

Le timbre est une simple modification du rapport cyclique du signal tout ou rien..

Code : Tout sélectionner

        INCLUDE EQMON  Appel des equates.
        TTL     MONITEUR MO5: MUSIQUE ELECTRONIQUE

*
***** VERSION HARD MO5
*
 
        SECT    MUSIK              
*******************************************************************************
*     Programme de generation de musique : la note a jouer est passee par     * 
*     l'accumulateur B. Elle est executee en fonction des parametres :        *
*           OCTAVE : nombre de fois qu'il faut repeter la 1/2 periode fonda-  *
*                    mentale donnee par B                                     *
*           DUREE : nombre de fois que l'on repete le diviseur de temps (255) *
*                   avant de modifier le rapport cyclique (attaque)           *
*           TEMPO : multiplicateur de duree - la duree relle est egale a      *
*                   TEMPO * DUREE                                             *
*           TIMBPE : norbre indiquant la deviation (en + et en - sur les deux * 
*                    1/2 periodes) du rapport cyclique, chaque fois que duree *
*                    est ecoulee.                                             *
*     Les registres utilises sont :                                           *
*           TEMPO, DUREE,  MUSFLG (indique que le diviseur est passe par 0),  *
*           TIMBRE, OCTAVE                                                    *
*                                                                             *
******************************************************************************* 

PULSEC  EQU     SAVEST
DIVISR  EQU     SAVEST+1
PULSE0  EQU     TEMP
PULSE1  EQU     TEMP+1

        INTERN  NOTE
NOTE    EQU     *
        ORCC    #%11010000      Protection contre les interruptions     
        LDA     DUREE+1         Duree et Tempo: seuls les 8 LSB de ces 
        LDB     TEMPO+1         Registres sur 16 bits sont significatifs. 
        PSHS    A               Pour ralentir la musique qui va plus vite 
        LSRA                    sur MO5 que sur TO7, et qui doit fonctionner 
        LSRA                    avec les memes parametres, on ajoute a la duree 
        ADDA    ,S+             une valeur proportionnelle (DUREE/4). 
        MUL                     Duree totale = tempo * duree * 5/4 --> 
        TFR     D,Y             Y servira de compteur de la duree totale. 
        LDB     4,S             Recuperation de B detruit par le "MUL". 
        ANDB    #$0F            On ne conserve que les 4 LSB qui servent 
        BEQ     OCTBAS          Cas du silence. 
        LDX     #TABNOT-1       Table des frequences. B qui est non nul sert 
        LDB     B,X             d'offset dans la table des frequences. 
*
* Correction pour l'octave superieure
*                        
        LDA     OCTAVE+1        Octave vaut 1 pour la derniere fois 
        DECA                    
        BNE     OCTBAS          Ce n'est pas le cas 
        SUBB    #2              Retire 2 pour la derniere octave 
*
OCTBAS  EQU     *               
        TFR     B,A             B sert au 1/2 PULSE "1" et A au 1/2 PULSE "0" 
*                        
NOTE1   EQU     *               
        STD     PULSE0          
        BEQ     NOTE0           Silence.  
        LDX     OCTAVE          On repositionne la valeur de l'octave. 
AGAIN1  EQU     *               
        LDB     PRB-PRA,U       U pointe sur PRA 
        ORB     #$01            Bit0 de PRB = son force a 1. 
        STB     PRB-PRA,U       
        LDB     PULSE1          On passe la duree du 1 a PLAY. 
        BSR     PLAY            Jouer le 1 ( lere partie du pulse ) 
        LEAX    -1,X            Decrement de l'octave qui a ete chargee dans X. 
        BNE     AGAIN1          Tant que octave non finie, on rejoue le 1. 
*                     
NOTE0   EQU     *               
        LDX     OCTAVE          On repositionne la valeur de l'octave. 
AGAIN0  EQU     *               
        LDB     PRB-PRA,U       U pointe sur PRA 
        ANDB    #$FE            Bit0 de PRB : son force a 1. 
        STB     PRB-PRA,U       
        LDB     PULSE0          
        BSR     PLAY            Jouer le 0 ( 2eme partie du pulse ) 
        LEAX    -1,X            Decrement de l'octave qui a ete chargee dans X. 
        BNE     AGAIN0          Tant que octave non finie, on rejoue le 0. 
*
        LDD     PULSE0          Fin de pulse, changement d'attaque ? 
        ADDA    TIMBRE          La valeur du 0 augmente de timbre, 
        BCS     NOTE0           
        SUBB    TIMBRE          et celle du 1 diminue d'autant. 
        BHI     NOTE1           Continue tant que la duree n'est pas nulle 
        BRA     NOTE0           Pulse 1 negatif, on reste a zero. 
 
PLAY    EQU     *               
        STB     PULSEC          1/2 PULSE a jouer 
LOOP01  EQU     *               
        DECB                    Decrement de la note. 
        BNE     LOOP01          Boucle la plus interne 
        LDB     PULSEC          Diviseur de temps (init. arbitraire). 
        BEQ     SILENT          
        ADDB    DIVISR          Ce diviseur est incremente par pas de "B" 
        CMPB    DIVISR          Le diviseur a-t-il fait un tour? (passe $FF). 
        STB     DIVISR          Sauvegarde du diviseur. 
        BHS     EXPLAY          Non ==> on ne touche ni a duree, ni a tempo. 
SILENT  EQU     *               
        LEAY    -1,Y            Decrement du compteur de duree totale, qui 
        BEQ     EXNOTE          est independant de la note et de 1'octave. 
EXPLAY  EQU     *               
        RTS                     Retour de PLAY: revient dans NOTE0 ou NOTE1 

EXNOTE  EQU     *               
        PULS    D,PC            Four depiler l'adresse de retour de PLAY et RTS 

*
**** TABLE DES FREQUENCES DE L'OCTAVE SUPERIEURE (4)
*
TABNOT  EQU     *
        FCB     $B0
        FCB     $A5 
        FCB     $9C 
        FCB     $92 
        FCB     $89 
        FCB     $81 
        FCB     $78 
        FCB     $71 
        FCB     $6A 
        FCB     $63
        FCB     $5D 
        FCB     $57 
        FCB     $51
        END
Daniel
L'obstacle augmente mon ardeur.
Répondre