1

Godzil a souhaité poursuivre une discussion dérivée dans un nouveau sujet. La discussion initiale a eu lieu dans le sujet topics/135450-yn-irl/205#post-6124 tandis que la discussion dérivée continue dans le sujet topics/190968-le-brunisme-musical-ou-le-comment-quon-fait-de-la-synthese-fm où les messages en rapport ont été copiés.
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

2

C'est le bon jour pour ca, c'est Moi-meme-esque, c'est Zeroesque, C'est Flankesque et Brunniesque, oui tout ca en meme temps.





Je suis loin d’être arrivé au bout, ce projet est associé a un gros point noir pour moi (et même en l’état il y a un truc qui marche pas correctement, et qui est la source des craquements)

Bref, pour ceux qui ne connaissent pas et/ou n'ont pas reconnus, c'est la démo d'un clavier des années 80s (le Yamaha PSS-280/290/26), clavier a son FM, 8 canaux avec 2 opérateurs.

En cherchant je suis tombé sur un dump des registres écrit sur le chip audio du clavier ( http://www.dtech.lv/techarticles_yamaha_opk.html ) et je me suit dit "La génération de son en 'temps reel' est ta bete noir, il est grand temps de faire un truc dans le domaine, donc pourquoi ne pas faire un émulateur de ce composant (mal connu et non officiellement documenté)"

Comme je suis sur la phase de découverte du machin, j'ai commencé le projet en Python pour simplifier certaines parties (une fois que ça générera quelque chose de correct, je réecrirais probablement en C)

Pour l'instant on est très loin d'un générateur FM, ce n'est qu'un simple synthé polyphonique avec un seul timbre (sinus) avec volume. Pas d’enveloppe, pas de sustain, rien de fancy.
J'ai commencé hier avec le parsing des registres sur du temps libre au boulot et vaguement regardé pour un generateur de bruit. Aujourd'hui toujours du temps libre j'ai essayé d'ameliorer le generateur de bruit pour que ca soit un poil plus musical, mais il y a encore beaucoup a faire sur ce sujet, enfin maintenant ca ressemble quand meme plus a quelque chose.
Reste a aussi comprendre comment les deux operateurs interragissent entre eux, et plein d'autre machin sympa (attack/decay pour ne citer qu'eux)

Bref, comme aujourd'hui est la journée du Python, j'en profite pour partager cette bouillie sonore généré par du code Python!

PS: j'ai oublié de mettre un lien vers le bruit original
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

3

(comme quoi, c’est sympa les grosses compilations grin)

4

love
Ça mérite un topic smile

(en plus des craquements, ça joue plus grave et au ralenti non ?)
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

5

Ca serait possible de vulgariser un peu la chose pour les profanes svp ? Ca a l'air d'être un truc joliment tricky smile

6

top
avatar

7

Zero: pour le tempo et tonalité je n'ai pas confiance dans les valeurs que j'ai en main il faudra que je fasse des vrai mesures sur le vrai composant pour voir ce qui est correct de ce q ui n'est pas
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

8

En augmentant le tempo de 45% et la hauteur de 9 demi-tons, ça colle à peu près avec l'original :

(oui la qualité audio est médiocre, mais j'ai pas de bon pitch-shifter sous la main, et les craquements n'arrangent rien)

EDIT : en fait ça colle parfaitement si on superpose les deux :


Pour les craquements, ce sont des discontinuités dans le signal de sortie. Je pense que c'est un problème de phase. Vérifie que tu utilises bien un sinus (pas un cosinus) et que tu remets à zéro la phase à chaque début de note. Sinon tu peux faire un fondu de quelques millisecondes au début et à la fin de chaque note, c'est encore mieux.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

9

45%? Étrange nombre. Je regarderais plus en detzils
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

10

Bon donc les craquement ne sont pas sur les note on/off mais les changements de fréquence au milieu d'une seule et meme note. Il faudrait que je fasse une capture correct du signal, mais c'est assez bizarre.

Je reset la phase sur le note-on, mais je ne suis pas sur a 100% que le hardware fasse vraiment ça, certains synthé ne reset pas l'oscillateur sur un note-on.
Je ne reset pas non plus lors du changement de frequence, si la note est tenu.

Ce qu'il faut que je fasse de toute maniere c'est plus de recherche sur comment les OPx generent leur signaux, apriori les OPL utilisent une table avec 1/4 de signal, et je doute que les OPK fonctionnent différemment.

Pour l'instant je genere le sinus de maniere traditionel, et bien sur ce n'est pas la bonne méthode (pour cet émulateur)

Un peu de doc sur le hardware des OPLx:

https://docs.google.com/document/d/18IGx18NQY_Q1PJVZ-bHywao9bhsDoAqoIn1rIm42nwo/edit

et

gtaylormb/opl3_fpgaGitHubReverse engineered SystemVerilog RTL version of the Yamaha OPL3 (YMF262) FM Synthesizer - gtaylormb/opl3_fpga
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

11

Godzil (./10) :
Bon donc les craquement ne sont pas sur les note on/off mais les changements de fréquence au milieu d'une seule et meme note. Il faudrait que je fasse une capture correct du signal, mais c'est assez bizarre.
Ah, dans ce cas je pense que tu es tombé dans un piège classique.

J'imagine que tu génères ton sinus comme ça ?
y = sin(2 * pi * f * (n / F))
(f est la fréquence du son, n est le numéro de l'échantillon, F est la fréquence d'échantillonnage)

Si tu fais ça, tu vas avoir un saut de phase à chaque fois que tu changes f.

Pour éviter ça, il faut utiliser une méthode différente :
y = sin(2 * pi * x)
x += f / F

Ça marche tel quel, mais je te conseille de ne garder que la partie décimale de x, pour éviter les approximations quand il devient trop grand.

Bien sûr, tu peux optimiser l'algo à coup de tables smile
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

12

Hmmmm je sais pas si c'est moi ou une incompatibilité entre moi et numpy, mais la tout de suite une sinus a 440Hz ne reseemble pas vraimetn a ce a quoi je m'attends xD

Ok, je crois que c'est une incompatibilité entre moi et numpy xD

J'ai toujours des crachotement, peux etre un peu moins, mais ils sont toujours la sad

Ceci dit ta methode est plus aproprié pour du temps reel que l'autre et ce qui reste a faire question génération.
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

13

(j'ai voulu écouter, mais ma sortie audio était désactivée... Au bout d'un moment je m'en rends compte, je remets le son, et là, j'entends un son un peu électro*et je suis surpris, parce que j'avais déjà écouté le début et... ah non, en fait c'est http://www.laurentgarnier.com/PBB.html qui tourne grin)


* en l'occurrence ça https://www.youtube.com/watch?v=32UmGyi7kdY

14

Il FAUT que je fasse un émulateur FM un jour. Ça rendra ma vie 45% meilleure. Et ce jour y a intérêt à ce qu'il soit proche love
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

15

Ah mais c'est certain ^^

J'ai jeté un coup d'œil pour vérifier que je ne disais pas de bêtises à Godzil. Voilà ce que j'obtiens :


C'est une implémentation ultra-minimale : tous les oscillateurs sont de simples sinus, et seul le réglage de la fréquence est géré. Le générateur d'amplitude est un truc ultra-basique et fixe, qui fait une rampe linéaire de volume de 5 ms au début et à la fin de la note. Avec ça plus la méthode évoquée plus haut, il n'y a pas de craquements. Il n'y a même pas besoin de s'embêter à gérer la phase, on peut laisser les oscillateurs tourner en permanence.

Le code :
http://www.mirari.fr/a05y

C'est moche, ultra pas optimisé et il y a au moins deux astuces absolument honteuses. Donc à ne pas prendre en exemple grin

PS : les timings et fréquences donnés dans les pages citées par Godzil ne sont pas bons. J'ai recalculé en me basant sur le fait que la démo est à 114 BPM et que les fréquences des notes sont celles de la gamme habituelle (avec un la à 440 Hz). En vrai ce sont des sous-multiples de la fréquence de base du quartz, mais j'ai pas trouvé de valeur qui tombe vraiment juste ; c'est proche de 12 MHz / 65 et 12 MHz / 215, mais ce sont des diviseurs un peu étranges (bien que ça reste possible).
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

16

Ah oui la phase c'est la merde à gérer... Comment ils font pour ne pas avoir de souci en hardware ? Parce qu'au final la polyphonie OK mais ça n'a pas du tout le même rendu en fonction de la phase des deux signaux 🤔
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

17

Je ne sais pas comment c'est géré exactement pour les synthés FM, j'ai jamais vraiment creusé.

Cependant, même si changer les relations de phase change la forme du signal, ça ne veut pas forcément dire que la sonorité perçue sera différente. En fait l'oreille humaine est beaucoup plus sensible à l'amplitude qu'à la phase. C'est surtout important en stéréo, car la différence de phase entre les deux oreilles est l'un des critères qui permet de savoir d'où provient un son.

Par contre, ce qu'il faut éviter ce sont les discontinuités dans le signal (ça fait un craquement), et une des causes possibles c'est une discontinuité dans la phase.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

18

Je ne vois pas ce que ça signifie une discontinuité de phase sad c'est entre les notes ?

Ce à quoi je pensais c'est que si deux notes identiques sont jouées en parallèle et ont la même phase on aura des variations de plus grande amplitude mais de plus faible fréquence, alors qu'inversement, si la phase est décalée, on aura une amplitude plus faible mais 2x la fréquence (ça a du sens ?). Comment on "synchronise" ça ? Doit-on même le faire ?
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

19

L’amplitude ne sera pas plus grand (du moins pas de manière significative, deux personne qui parlent ne font pas 2x plus de bruit)

Synchroniser n’est pas forcément souhaitable, ça dépends de ce que tu veux faire.

Et oui si la phase est complètement décalé les deux signaux vont s’annuler, c’est la réalité physique des choses, et c’est ce qu’on utilise pour la réduction active de bruit!

Zéro: j’ai des doutes que le Crystal dans le bousin soit aussi élevé.

Hmmm il faut que je re regarde je n’ai aucun oscillateur sur mes photos 😅

Je n’ai pas le temps de chercher ce matin mais voilà des photos que j’ai prises il y a quelques jours:

ZiUA
QoRY


Et si on peux croire ça:

YM7129_pinout.png

Il doit y avoir un Crystal...

Et non il n’est pas côté « piste »:

ZzJl
(Oui ce PCB est magnifique)


PPS: il y a bien une possibilité d’oscillateur RC mais j’espère que ce n’est pas le cas, c’est critique pour un instrument quand même 😅
A moins que le blob bleu ne soit pas un condensateur?! confus
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

20

Bingo le truc bleu est un oscillo, j'ai ça sur un aspirateur autonome de Samsung. Mon Yamha DX7 et TX7 ont un crystal en boitier metal par contre
avatar
"If you see strict DRM and copy protection that threatens the preservation of history, fight it: copy the work, keep it safe, and eventually share it so it never disappears. [...] no one living 500 years from now will judge your infringing deeds harshly when they can load up an ancient program and see it for themselves."

Benj Edwards - Why History Needs Software Piracy

- - -
Achat ou échange: topic de mes recherches Meilleur smiley = #helico# Obligatory XKCD

21

C'est très probablement un résonateur céramique oui, normalement la fréquence est marquée dessus (mais je n'arrive pas à lire sur la photo).

Godzil (./19) :
(Oui ce PCB est magnifique)
oui
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

22

C'est relativement lisible: 3.58G

Fait amusant, le PCB est double face (je doute qu'il soit multicouche) mais l'autre face est un enorme floodfill #sueur#
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

23

Brunni (./18) :
Je ne vois pas ce que ça signifie une discontinuité de phase sad c'est entre les notes ?
C'est quand l'argument de ton sinus change brutalement de valeur. Une façon involontaire de créer ça, c'est ce dont on parlait plus haut. Si tu utilises la formule "classique" y = sin(2 * pi * f * t), quand tu changes f d'un coup, la valeur de 2 * pi * f * t change également d'un coup, et la valeur du sinus aussi. Si par contre tu incrémentes progressivement l'argument du sinus, le problème ne se produit pas.

Brunni (./18) :
Ce à quoi je pensais c'est que si deux notes identiques sont jouées en parallèle et ont la même phase on aura des variations de plus grande amplitude mais de plus faible fréquence, alors qu'inversement, si la phase est décalée, on aura une amplitude plus faible mais 2x la fréquence (ça a du sens ?). Comment on "synchronise" ça ? Doit-on même le faire ?
Si tu joues deux sons exactement identiques exactement en même temps, ça revient à doubler l'amplitude. Si par contre ils sont déphasés l'un par rapport à l'autre, certaines fréquences sont renforcées et d'autres atténuées ; c'est à éviter, sauf si c'est fait délibérément pour créer un effet de chorus ou de flanger (dans ce cas, on fait varier le déphasage cycliquement au cours du temps).
Si les deux sons sont différents, en général ça n'a pas d'importance.
Quoi qu'il en soit, quelle que soit le déphasage que tu utilises, la fréquence ne change pas.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

24

(aussi on peux vaguemetn voir que IC5 est mal soudé, il n'est pas a plat sur le PCB)
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

25

Godzil (./22) :
C'est relativement lisible: 3.58G
Alors c'est mes yeux qui sont fatigués...
Dans ce cas, la fréquence de base pour les notes est 3.58 MHz / 64.

Pour la fréquence de capture des accès au YM, ça ne colle pas. Par contre c'est presque exactement 4.43 MHz / 24, et 4.43 MHz est une fréquence classique. Donc peut-être qu'il y a un autre oscillateur, quartz ou résonateur pour le CPU ?
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

26

Non la frequence de capture est du n'importe quoi, enfin les timings du fichier texte, je pense que

Sinon oui le CPU tourne tres certainement a une autre frequence. C'est un autre chip apres tout.

Apres je ne suis pas sur a 100% quel chip est le CPU.
Je ne pense pas que le gros tqfp pres de l'afficheur soit le CPU de ce clavier:

La on a probablement une ROM et de la RAM (pas sur de ce que cette ROM contiens)
4ecu

Ce qui est je pense le CPU:
Wlc0

Vue globale des deux:
QWU5

Le chip au dos est probablement un glu-chip vu le nombre de boutons et LEDs

Tiens d'ailleurs, tu connais la raison pour les pattern en diamant sur le flood-fill? (a part farie joli bien sur!)

Autre chose etrange, a quelque année d'écart la construction interne est tres differente entre les different synthé. La on sens un produit bien fini, avant c'est un peu plus.. bordelique, entre cable soudé sans connecteurs, jumper sur le PCB a coup de nappes et d'autres trucs amusants.
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

27

Je pense aussi que c'est le CPU.
Il est marqué quoi sur CL1 ?
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

28

Je peux pas lire sur les photos grin

Faudra que je (re)demonte
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

29

Le pattern en diamant m'intrigue aussi !
avatar
"If you see strict DRM and copy protection that threatens the preservation of history, fight it: copy the work, keep it safe, and eventually share it so it never disappears. [...] no one living 500 years from now will judge your infringing deeds harshly when they can load up an ancient program and see it for themselves."

Benj Edwards - Why History Needs Software Piracy

- - -
Achat ou échange: topic de mes recherches Meilleur smiley = #helico# Obligatory XKCD

30

OMG grin



Toujours pas d'enveloppe. Les craquements sont probablement du a l'arret brutal de l'oscillation vu qu'il n'y a pas de decay. Il y a aussi probablement un parametre de "volume" a appliquer au modulateur, mais je suis pas franchemetn sur de comprendre comment ce nombre est sensé etre utilisé.
Par contre ya de la stereo (pas forcement facile a entendre) et de la FM! \o/

La suite c'est l'enveloppe. Je regarderais ce genre de détails apres. (il manque ausis le fait qu'il y a deux type de signaux, mais je ne sais pas quel forme d'onde est utilisé pour l'autre type)
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.