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!
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.
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.
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
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.
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?
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
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:'(
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
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
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).
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...
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