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.
Godzil2019-08-02 at 05:16pmEdited by Godzil On the 2019-08-02 at 05:27pm
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
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.
« 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
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
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.
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.
« 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
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.
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)
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.
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
« 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
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
Ceci dit ta methode est plus aproprié pour du temps reel que l'autre et ce qui reste a faire question génération.
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.
(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 )
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.
C'est moche, ultra pas optimisé et il y a au moins deux astuces absolument honteuses. Donc à ne pas prendre en exemple
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).
« 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
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 🤔
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)
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.
« 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
Je ne vois pas ce que ça signifie une discontinuité de phase 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 ?
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)
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:
Et si on peux croire ça:
Il doit y avoir un Crystal...
Et non il n’est pas côté « piste »:
(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?!
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.
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
"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."
« 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
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.
Brunni (./18) : Je ne vois pas ce que ça signifie une discontinuité de phase 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.
« 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
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.
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 ?
« 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
Godzil2019-08-06 at 11:29amEdited by Godzil On the 2019-08-06 at 11:32am
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)
Ce qui est je pense le CPU:
Vue globale des deux:
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.
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.
« 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
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.
"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."
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)
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.