Page 1 sur 4
Reproduire Waveforms String Machine
Publié : 09 janv. 2017, 12:26
par djsoulmachine
Bonjour à tous !
J’ai dans les cartons un projet de string machine utilisant le merveilleux Triple Chorus du regretté Jurgen Haible et je suis en pleine réflexion philosophique sur la génération de l’onde de base.
Au départ, je souhaitais m’orienter vers une simple onde en dent de scie de une préférence numérique pour que la polyphonie soit plus simple à gérer…
Puis je suis tombé sur des samples de signaux bruts provenant de Solina et Eminent 310 lorsque la modulation est désactivée et je me suis rendu compte que cela ne ressemblait pas du tout à des dents de scie… plutôt des PWMs, qu’en pensez-vous ?
Bref, que me conseilleriez-vous pour
reproduire ces formes d’ondes le plus précisément possible de façons polyphonique ?
Un grand merci d’avance !
Solina en Haut – Eminent 310 en bas

Re: Reproduire Waveforms String Machine
Publié : 09 janv. 2017, 15:39
par oryjen
Comme sur les orgues, ce sont des ondes carrées, à plusieurs harmoniques (généralement 16', 8', 4', 2' et 2, 2/3' ou 2,4/5') mixées en tout ou rien pour les trucs cheaps, ou en continu comme sur le Korg Delta par exemple.
La résultante, à l'oscilloscope sur la sortie mixée, peut ressembler à une dent de scie ou à tout autre chose. Ajoute un filtre, et tu affines jusqu'à un point confondant, sauf dans les notes très graves où généralement la superposition s'entend.
Le Korg Poly800 fonctionne aussi sur ce principe, mais les 4 harmoniques sont hélas mixées en tout ou rien...
Re: Reproduire Waveforms String Machine
Publié : 09 janv. 2017, 21:00
par djsoulmachine
oryjen a écrit :Comme sur les orgues, ce sont des ondes carrées, à plusieurs harmoniques (généralement 16', 8', 4', 2' et 2, 2/3' ou 2,4/5') mixées en tout ou rien pour les trucs cheaps, ou en continu comme sur le Korg Delta par exemple.
La résultante, à l'oscilloscope sur la sortie mixée, peut ressembler à une dent de scie ou à tout autre chose.
J'ai oublié de préciser que les formes d'onde ci-dessus sont issus
d'une seule note provenant
d'un seul registre/harmonique (8'), c'est donc bien l'onde de base et non une combinaison.
Des idées de comment la reproduire ?
Re: Reproduire Waveforms String Machine
Publié : 10 janv. 2017, 10:12
par oryjen
Ca rappelle un peu l'onde carrée de je ne sais plus quel vieux Moog, qui présentait aussi un pic (en tête) et de légers arrondis...
Comment arriver à cela d'un point de vue électronique? Trop fort pour moi...
Condensateurs à courbe de décharge non-linéaire?
Décharge pilotée par un transistor s'ouvrant brusquement à partir d'un certain seuil?
Et pour les arrondis (en charge et en décharge), un système de compensation asymétrique en fonction de la charge/décharge déjà réalisée...
Un truc pointu à mettre en place, exigeant une parfaite connaissance du comportement des transistors et des condensateurs, alliée à une idée très claire et profondément ancrée dans l'expérience des différents modèles de composants disponibles.
Travail pour grosse pointure en conception électronique.
Yves?...
Re: Reproduire Waveforms String Machine
Publié : 10 janv. 2017, 10:45
par djsoulmachine
D'où le fait que je privilégie une solution plutôt numérique ou hybride pour que la polyphonie ne soit pas un enfer à réaliser
Pensez vous qu'il soit possible de générer ces formes d'onde à partir d'une wavetable chargée dans une carte type Arduino/Teensy ?
J'avoue avoir tout le mal du monde à trouver de la doc là dessus...
Effectivement, si Yves est de passage par ici, je suis curieux d'avoir son avis
Merci pour ta réponse en tout cas !

Re: Reproduire Waveforms String Machine
Publié : 10 janv. 2017, 11:12
par baloran
Oui pour la wavetable dans un Teensy
Idée en vrac ....
Tu développes une feuille sur un tableur programmable (Excel par exemple

) qui permettrait de faire la la synthèse additive. En entrée, tu lui décris le contenu harmonique (à base de sinusoide façon Mr Fourier ) et le tableur te fabrique une belle forme d'onde sur un graphique et te sort la table des samples dans un fichier texte façon "const uint_16[] " (ta wavetable....) etc....
Freq = 1
Freq x 2 = 0.8
Freq x 3 = 0.6
Freq x 4 = 0.4
Freq x 5 = 0.2
....
Freq x 50 = 0.02
En jouant sur le contenu harmonique tu arriveras "facilement" à trouver une onde proche de ce que tu cherches. Tu peux faire une analyse FFT d'un sample, cela te donnera une indication sur le contenu harmonique et les coefs à entrer. Tu en profites pour mettre en place un algo qui va simplifier le contenu harmonique en fonction du rang. Pour le 32' ou le 16' tu peux prévoir une grande profondeur harmonique (jusqu'à Freq x 50 par exemple...) . Pour le 2' , sauf si tu échantillonnes à la vitesse de la lumière, il faut réduire la profondeur (Freq x 20 peut être...).
Tu manges du code pour permettre de fabriquer un "oscillateur numérique à tirettes" qui te permettra d'avoir cette onde de base mais aussi de mixer les rangs.
Tu places un beau filtre / Eq , un beau tri chorus (avant le filtre par exemple comme sur les Crumars Multiman....) et hop... naissance du melotron string machine
Tu peux alors adapter le son au rang, à l'octave , proposer plusieurs ondes de base etc.... Gros taf quoi ;)

Re: Reproduire Waveforms String Machine
Publié : 10 janv. 2017, 13:23
par djsoulmachine
baloran a écrit :Oui pour la wavetable dans un Teensy
On est d'accord qu'un Arduino de base n'est pas assez puissant pour adresser ce genre de besoin ?
baloran a écrit :Tu développes une feuille sur un tableur programmable (Excel par exemple ) qui permettrait de faire la la synthèse additive. En entrée, tu lui décris le contenu harmonique (à base de sinusoide façon Mr Fourier ) et le tableur te fabrique une belle forme d'onde sur un graphique et te sort la table des samples dans un fichier texte façon "const uint_16[] " (ta wavetable....) etc....
En faisant des recherches sur le sujet j'avais justement trouvé cette petite feuille excel :
http://cdn.makezine.com/make/35/wave-ta ... dsheet.xls" onclick="window.open(this.href);return false;
C'est bien ceci dont tu parles ? Même si manifestement il faut ajouter un grand nombre d'harmonique pour augmenter la précision.
baloran a écrit :et hop... naissance du melotron string machine
Haha non, je compte lancer ce projet en plus de mon Mellotron dont il ne reste que la partie menuiserie à finaliser
baloran a écrit : Gros taf quoi ;)

Je pense oui ^^
En tout cas un grand merci pour ta réponse :

Re: Reproduire Waveforms String Machine
Publié : 10 janv. 2017, 14:20
par Buxi
djsoulmachine a écrit :On est d'accord qu'un Arduino de base n'est pas assez puissant pour adresser ce genre de besoin ?
Salut
Je ne voudrais pas dire de conneries, en tout cas je voudrais préciser que je suis très très très loin d'avoir les compétences de Yves ou de Baloran.
Ce que je dis est donc à prendre avec des pincettes...
En ce qui concerne un "arduino de base", c'est à dire un arduino Uno par exemple, oui clairement ce n'est pas adapté à ton projet (là j'en suis sûr...).
Par contre il existe l'Arduino DUE qui possède deux sorties DAC.
Peut-être que ça peut t'intéresser...
Re: Reproduire Waveforms String Machine
Publié : 10 janv. 2017, 15:20
par Salmacis
Et avec une petite distorsion de phase....ça doit être possible. La forme d'onde ressemble bien a un sinus lu a différentes vitesses.
Le fichier excell j'ai pratiqué...c'est bien et pas cher.... :-)
Re: Reproduire Waveforms String Machine
Publié : 10 janv. 2017, 15:22
par baloran
djsoulmachine a écrit : C'est bien ceci dont tu parles ?
Oui presque, j'imagine tout de même plutôt une macro VB pour calculer le résultat sur une profondeur réglable ;)
Re: Reproduire Waveforms String Machine
Publié : 10 janv. 2017, 15:43
par yusynth
Ta forme d'onde ressemble plutôt à une impulsion (ou une dent de scie) qui passe dans un filtre passe-bande...
Re: Reproduire Waveforms String Machine
Publié : 10 janv. 2017, 17:14
par djsoulmachine
yusynth a écrit :Ta forme d'onde ressemble plutôt à une impulsion (ou une dent de scie) qui passe dans un filtre passe-bande...
Je vote pour l'impulsion également. Générer un pulse de la bonne largeur avec un arduino puis le passer dans un filtre analogique (à choisir) serait une solution également, Merci Yves !
baloran a écrit :Oui presque, j'imagine tout de même plutôt une macro VB pour calculer le résultat sur une profondeur réglable ;)
Salmacis a écrit :Le fichier excell j'ai pratiqué...c'est bien et pas cher.... :-)
L'un de vous deux aurait ce genre d'engin dans un tiroir ?
Un grand merci d'avance !
Buxi a écrit :Par contre il existe l'Arduino DUE qui possède deux sorties DAC.
Peut-être que ça peut t'intéresser...
Oui je m'étais justement renseigné lorsque je l'avais vu passer dans ton Buxitron mais si je ne dis pas de bêtises, il a été remplacé par un autre.
Dans tous les cas les Teensy sont de plus en plus en vogue pour les projets audio.
Re: Reproduire Waveforms String Machine
Publié : 10 janv. 2017, 17:41
par baloran
Avantage du DUE : le nbr E/S "natives", cad sans passer par un "port extender". Sinon il est plutôt en fin de vie...
Avantage du(des) Teensy : le prix, la compacité, le dynamisme de la communauté, la bibliothèque audio. J'ai acquis un Teensy 3.6 pour tester ce qu'il a dans le ventre dans ce domaine justement, mais pas encore eu le temps de m'y pencher ;)
Ne pas oublier aussi le Rasperry, compatible pure data, qui semble être bien sympa pour l'expérimentation audio / UI.
Re: Reproduire Waveforms String Machine
Publié : 11 janv. 2017, 01:40
par SmashedTransistors
Avec de l'automodulation de phase on fait assez bien ce genre de "dents de scie" à bande limitée (et avec faible aliasing).
Au niveau des boards,
Il y a aussi l'Axoloti
http://www.axoloti.com/ qui pour moins de 100€ (port et taxes comprises) intègre de base des entrées sorties analogiques 48kHz et le MIDI.
Sans ajouter de multiplexage il dispose de 20 GPIOs dont 15 peuvent être utilisées comme entrées analogiques.
En le poussant (un peu :D ), je suis arrivé à en tirer un orgue paraphonique sur six octaves:
https://soundcloud.com/thierry-rocheboi ... tpipeorgan" onclick="window.open(this.href);return false;
Si ça t'intéresse, je peux voir si en modifiant mon code, je peux en faire une string machine potable.
Re: Reproduire Waveforms String Machine
Publié : 11 janv. 2017, 08:52
par oryjen
Re: Reproduire Waveforms String Machine
Publié : 11 janv. 2017, 09:07
par djsoulmachine
IMPRESSIONNANT
Si ça t'intéresse, je peux voir si en modifiant mon code, je peux en faire une string machine potable.
Du coup oui je suis curieux
Avec de l'automodulation de phase on fait assez bien ce genre de "dents de scie" à bande limitée (et avec faible aliasing).
C'est quoi ?

Re: Reproduire Waveforms String Machine
Publié : 11 janv. 2017, 10:14
par djsoulmachine
Bon du coup j'ai fait une rapide tentative de synthèse additive avec une feuille excel trouvée ici :
http://sunsite.univie.ac.at/Spreadsite/ ... urtone.htm" onclick="window.open(this.href);return false;
- J'ai fait une FFT (4096 points) du signal brut provenant du DO d'un Solina.
- J'ai exporté les fréquences dans un fichier texte duquel j'ai extrait les 25 premières harmoniques (multiples de 523Hz).
- J'en ensuite normalisé les coefficients et les ai entré dans la feuille Excel.
Observations :
- Le spectre semble en accord avec la FFT (attention echelle LOG dans Audacity et echelle linéaire dans Excel).
- Le signal reconstitué ressemble bien à un pulse mais...
je ne retrouve pas non plus le signal d'origine...
Questions :
- Est-ce due au fait que je ne prends pas suffisamment d'harmoniques en compte ?
- Est-ce due au fait que je ne renseigne aucune information sur la phase ?
- Est-ce que tout simplement la synthèse additive ne peux pas approximer le signal que je cherche à reproduire ?
Un grand merci d'avance !
Re: Reproduire Waveforms String Machine
Publié : 11 janv. 2017, 19:45
par SmashedTransistors
Heu, mon doigté d'organiste étant ce qu'il est, j'ai lâchement utilisé un fichier MIDI (de la Classical Archive) pour ma démo.
Je vous épargne la démo où je teste la polyphonie en étendant le bras sur le clavier.
----------------
L'automodulation de phase consiste à moduler la phase d'un oscillateur par sa propre sortie.
Ca a été inventé en 78 par Norio Tomisawa de chez Yamaha et utilisé sur les DX.
https://patentimages.storage.googleapis ... 9447-1.png
https://patentimages.storage.googleapis ... 9447-3.png
https://patentimages.storage.googleapis ... 9447-4.png
----------------
J'ai regardé le schéma du Solina.
La forme d'onde de base est un carré.
Le carré est filtré par un passe haut => train d'impulsions positives et négatives.
Les impulsions négatives sont rabotées par des diodes.
----------------
Questions :
- Est-ce due au fait que je ne prends pas suffisamment d'harmoniques en compte ?
- Est-ce due au fait que je ne renseigne aucune information sur la phase ?
- Est-ce que tout simplement la synthèse additive ne peux pas approximer le signal que je cherche à reproduire ?
Yep, je dirais que c'est une question de phase.
En termes de caractéristiques, on a le premier harmonique d'ampli comparable au fondamental, puis une décroissance de -6dB par octave qui s'accentue au delà de 3kHz.
Re: Reproduire Waveforms String Machine
Publié : 11 janv. 2017, 20:55
par yusynth
djsoulmachine a écrit :- Est-ce due au fait que je ne renseigne aucune information sur la phase ?
Oui pour la ressemblance de la forme d'onde la phase est capitale.
Re: Reproduire Waveforms String Machine
Publié : 12 janv. 2017, 00:59
par SmashedTransistors
Par contre, l'oreille est peu sensible à la phase.
- sauf cas où il y a forte cohérence de phase : battements, impulsions/transitoires.
Sur une machine à strings, on aime bien avoir des sons bien déphasés. "Smooth"
Avoir un oscillateur maître et des diviseurs d'octave ça crée des coïncidences de phase. Son froid à la Farfisa.
=> l'utilisation d'un bon chorus/phaser/reverb permet de rebattre les phases.
Il paraît que le tricot russe réchauffe tout en étant doux.
Bref, j'ai passé la soirée... et un petit bout de la nuit.. oups...

à bricoler l'Axoloti.
Bilan (personnel et provisoire):
- avec le spectre de djsoulmachine je trouve le son un peu étouffé, mais je crois qu'on peut doubler les sons à l'octave sur le solina pour l'enrichir, me trompe-je ?
- le fait d'avoir un premier harmonique aussi puissant que le fondamental joue pas mal sur le caractère du son, je trouve que ça lui donne un côté "cuivré".
- la méthode consistant à utiliser un passe haut sur mes oscillateurs automodulés ne suffit pas pour obtenir ce caractère. grmmlll
- une automodulation d'amplitude permet de le faire (youpi, tra la la et toutes ces sortes de choses
)
- avec cette méthode, je tiens 85 notes en paraphonie sur l'axoloti (avec encore un peu de CPU pour vibrato et chorus...)
- le vibrato + chorus restent primordiaux.
Juste comme ça
.. avec les deux bras sur le clavier
