Dessiner sa forme d'onde
- 38 réponses
- 10 participants
- 9 744 vues
- 12 followers

Il Sorpasso
966

Posteur·euse AFfolé·e
Membre depuis 21 ans
Sujet de la discussion Posté le 03/11/2006 à 14:37:26Dessiner sa forme d'onde
Heureux possesseur de Reaktor, j'avais placé pas mal d'espoirs dans de la synthèse type "je dessine mon motif de forme d'onde" (motif qu'on boucle à la fréquence fondamentale)...
Mais en ayant essayé deux ou trois ensembles fait par la communauté d'utilisateur, je suis assez déçu de ce type de synthèse, et bizarrement ça sort toujours un peu le même type de sons, très souvents creusés... C'est vrai que c'est facile de dessiner une première harmonique, et de lui rajouter des biduleries qui vont créer des fréquences aigues, mais dessiner une 2nd, 3e harmonique c'est quasiment impossible...
C'est pourtant une technique qui se présentait bien, typiquement rendue possible par les outils de notre époque, et qui pourrait apporter des familles de sons un peu différentes... enfin le croyais-je.
une extension qui m'intéresserait alors, ce serait de partir de formes d'ondes standards ou de samples et de leur placer des points qu'on pourrait faire varier verticalement ou horizontalement ( par des lfo, enveloppes, etc, enfin les trucs habituels), et qui "tireraient" la forme d'onde derrière eux. Vous voyez ? Personne n'a envie de créer un ensemble qui ferait ça sur Reakor svp ?
Il Sorpasso, qui aimerait bien laisser la synthèse soustractive au monde analogique, et qui n'aime pas trop trop la FM.
Mais en ayant essayé deux ou trois ensembles fait par la communauté d'utilisateur, je suis assez déçu de ce type de synthèse, et bizarrement ça sort toujours un peu le même type de sons, très souvents creusés... C'est vrai que c'est facile de dessiner une première harmonique, et de lui rajouter des biduleries qui vont créer des fréquences aigues, mais dessiner une 2nd, 3e harmonique c'est quasiment impossible...
C'est pourtant une technique qui se présentait bien, typiquement rendue possible par les outils de notre époque, et qui pourrait apporter des familles de sons un peu différentes... enfin le croyais-je.
une extension qui m'intéresserait alors, ce serait de partir de formes d'ondes standards ou de samples et de leur placer des points qu'on pourrait faire varier verticalement ou horizontalement ( par des lfo, enveloppes, etc, enfin les trucs habituels), et qui "tireraient" la forme d'onde derrière eux. Vous voyez ? Personne n'a envie de créer un ensemble qui ferait ça sur Reakor svp ?

Il Sorpasso, qui aimerait bien laisser la synthèse soustractive au monde analogique, et qui n'aime pas trop trop la FM.
- 1
- 2

Choc
6968

Membre d’honneur
Membre depuis 22 ans
2 Posté le 03/11/2006 à 14:41:28
Yep, je vois un peu le delire...
genre dessiner une forme d'onde au niveau temporel avec des truc genre des courbes de beziers, et puis ensuite, faire varier les parametres de ces courbes en fonction du temps
Ca peut etre tres sympa, mais compliqué a faire
genre dessiner une forme d'onde au niveau temporel avec des truc genre des courbes de beziers, et puis ensuite, faire varier les parametres de ces courbes en fonction du temps
Ca peut etre tres sympa, mais compliqué a faire

0
Site personnel: https://www.enib.fr/~choqueuse/

Tucdual
634

Posteur·euse AFfolé·e
Membre depuis 21 ans
3 Posté le 03/11/2006 à 14:56:10
J'avais fait un petit programme sur ce principe il y a quelques années.
En C de brute, avec une interface graphique homemade. Il y avait une fenètre pour dessiner sa forme d'onde et ça la jouait à le fréquence voulue.
Ca sortait une bouillie sonore infâme... C'était marrant, de loin ça ressemblait à la musique des jeux atari de mon enfance... de très très loin. Aves mes maigres connaissances de physique de lycéen j'avais laissé tomber, ça me dépassait. J'ai pas cherché à implémenter l'ADSR.
Maintenant j'ai compris qu'en fait dans ma synthèse (de bêtes polynomes, vu que la forme d'ondes venait des courbes de bézier) je dépassais la fréquence de nyquist, donc j'avais de l'aliasing dans tous les sens.
Même en ayait compris ça, je sais pas trop comment corriger le problème.
Si je suis motivé je vais rejeter un oeil dessus.
En C de brute, avec une interface graphique homemade. Il y avait une fenètre pour dessiner sa forme d'onde et ça la jouait à le fréquence voulue.
Ca sortait une bouillie sonore infâme... C'était marrant, de loin ça ressemblait à la musique des jeux atari de mon enfance... de très très loin. Aves mes maigres connaissances de physique de lycéen j'avais laissé tomber, ça me dépassait. J'ai pas cherché à implémenter l'ADSR.
Maintenant j'ai compris qu'en fait dans ma synthèse (de bêtes polynomes, vu que la forme d'ondes venait des courbes de bézier) je dépassais la fréquence de nyquist, donc j'avais de l'aliasing dans tous les sens.
Même en ayait compris ça, je sais pas trop comment corriger le problème.
Si je suis motivé je vais rejeter un oeil dessus.
0

Il Sorpasso
966

Posteur·euse AFfolé·e
Membre depuis 21 ans
4 Posté le 03/11/2006 à 15:09:01
Je ne connais pas les courbes de bézier, seraient-ce des courbes pour rejoindre un point à un autre en choisissant un degré de convexité/concavité ?
0

Choc
6968

Membre d’honneur
Membre depuis 22 ans
5 Posté le 03/11/2006 à 15:32:45
Pour eviter l'aliasing, il te faut un traitement temporaire
Tu dessines ta courbe...avec un echantillonnage super fin (FE est tres grand)
ensuite, tu filtres passe pas pour que ca coupe a la frequence d'echantillonnage audio/2...ensuite tu decimes tes echantillons pour arriver a la fréquence d'echantillonnage audio (celle qui t'interesse)
Tu dessines ta courbe...avec un echantillonnage super fin (FE est tres grand)
ensuite, tu filtres passe pas pour que ca coupe a la frequence d'echantillonnage audio/2...ensuite tu decimes tes echantillons pour arriver a la fréquence d'echantillonnage audio (celle qui t'interesse)
0
Site personnel: https://www.enib.fr/~choqueuse/

Tucdual
634

Posteur·euse AFfolé·e
Membre depuis 21 ans
6 Posté le 03/11/2006 à 15:33:35
Ouais c'est ça, comme dans les logiciels de dessin : t'as deux points pour l'origine et la destination, et deux autres points pour régler la concavité.
0

Tucdual
634

Posteur·euse AFfolé·e
Membre depuis 21 ans
7 Posté le 03/11/2006 à 15:55:54
Hum hum ça me donne envie d'y rejeter un oeil tout ça ...
En plus ça doit pas demander trop de calcul, le filtrage je peux le faire une fois pour toutes .. ou du moins juste quand la forme d'ondes est modifiée.
En plus ça doit pas demander trop de calcul, le filtrage je peux le faire une fois pour toutes .. ou du moins juste quand la forme d'ondes est modifiée.
0

Choc
6968

Membre d’honneur
Membre depuis 22 ans
8 Posté le 03/11/2006 à 16:00:32
Une fois que tu as dessiné ta forme d'onde
- tu dessines
- tu filtres
-tu redessines ton truc sans aliasing
(Wolfen t'es ou ?)

- tu dessines
- tu filtres
-tu redessines ton truc sans aliasing
(Wolfen t'es ou ?)
0
Site personnel: https://www.enib.fr/~choqueuse/

Wolfen
14007

Rédacteur·trice
Membre depuis 23 ans
9 Posté le 03/11/2006 à 16:06:06
Pour les courbes de Bézier, jette un oeil sur l'article de Wikipédia, y a des liens avec toutes les formules nécessaires pour appliquer le truc. Quelque chose que tu pourrais expérimenter aussi, c'est les polynomes de Chebyshev (sur Wikipédia y a aussi un article dessus, ainsi que sur MusicDSP.com). Ca permet d'ajouter des harmoniques à un signal quelconque sans le moindre aliasing, et tu pourrais t'amuser à contrôler l'amplitude de chacun avec un LFO par exemple 

0
Développeur de Musical Entropy | Nouveau plug-in freeware, The Great Escape | Soundcloud

Il Sorpasso
966

Posteur·euse AFfolé·e
Membre depuis 21 ans
10 Posté le 03/11/2006 à 16:51:22
Contrôler l'amplitude des harmoniques par un lfo ou autre c'est intéressant c'est vrai... mais je crois que le subharmonic (ou un nom avoisinant) de reaktor le fait déjà plus ou moins. Il sort d'ailleurs d'excellents sons.
je pense que ce résultat serait plutôt prévisible, mon truc graphique avec des points qui bougent (on oublie le dessin, on part d'un sample allez), je le sens plus "surprenant"
mais jamais je prendrais le temps d'implémenter un truc pareil, perso
je pense que ce résultat serait plutôt prévisible, mon truc graphique avec des points qui bougent (on oublie le dessin, on part d'un sample allez), je le sens plus "surprenant"
mais jamais je prendrais le temps d'implémenter un truc pareil, perso

0

Tucdual
634

Posteur·euse AFfolé·e
Membre depuis 21 ans
11 Posté le 03/11/2006 à 16:58:43
Je viens de retrouver mon code ... c'est du grand n'importe quoi
A l'époque je savais pas qu'il existait des librairies pour pas réinventer la roue à chaque fois, du coup j'ai tout implémenté moi même
Je crois que si je m'y remets je vais reprendre à zéro

A l'époque je savais pas qu'il existait des librairies pour pas réinventer la roue à chaque fois, du coup j'ai tout implémenté moi même

Je crois que si je m'y remets je vais reprendre à zéro

0

Tucdual
634

Posteur·euse AFfolé·e
Membre depuis 21 ans
12 Posté le 03/11/2006 à 18:29:20
Je viens de zieuter wikipedia, ça parle de courbes de bézier paramétriques (x = f(t) et y = f(t))... pour l'audio l'approche est un peu différente, il faut des fonctions en y = f(x)
Mais j'ai déja le code qui fait ça.
J'étais un nerd au lycée quand même
Mais j'ai déja le code qui fait ça.
J'étais un nerd au lycée quand même

0

molecule
232

Posteur·euse AFfiné·e
Membre depuis 20 ans
13 Posté le 09/11/2006 à 19:00:36
Pour ton problème, tu n'as besoin que d'une seule dimension des courbes de béziers : amplitude_signal = f(temps) et tes pôles sont les amplitudes "imposées" par ton dessin à un temps t.
Par contre fait attention avec les courbes de bézier, elles sont totalement instables et imprévisibles lorsque tu veux changer les valeurs des pôles (ou des points du polynome caractéristique). En effet un changement local modifie toute la courbe. Pour feinter, on utilise plusieurs courbes (degrès 3 en général) que l'on raccorde avec la continuité C². Mais c'est un beau bordel !
C'est pour cela que l'on utilise plutôt les Nurbs ou les B-Splines car la modification d'un paramètre ne change que localement la courbe. Par contre c'est plus complexe à appliquer car tu as des points de contrôle en plus des pôles.
Après faut voir ce que tu cherches exactement ... Si c'est pour de l'expérimental et des résultat spé, garde les courbes de Béziers. Sinon si tu veux vraiment être précis et quantifier tes modifications renseigne toi d'abord sur les Nurbs et B-Splines.

Par contre fait attention avec les courbes de bézier, elles sont totalement instables et imprévisibles lorsque tu veux changer les valeurs des pôles (ou des points du polynome caractéristique). En effet un changement local modifie toute la courbe. Pour feinter, on utilise plusieurs courbes (degrès 3 en général) que l'on raccorde avec la continuité C². Mais c'est un beau bordel !
C'est pour cela que l'on utilise plutôt les Nurbs ou les B-Splines car la modification d'un paramètre ne change que localement la courbe. Par contre c'est plus complexe à appliquer car tu as des points de contrôle en plus des pôles.
Après faut voir ce que tu cherches exactement ... Si c'est pour de l'expérimental et des résultat spé, garde les courbes de Béziers. Sinon si tu veux vraiment être précis et quantifier tes modifications renseigne toi d'abord sur les Nurbs et B-Splines.

0

guitoo
759

Posteur·euse AFfolé·e
Membre depuis 22 ans
14 Posté le 09/11/2006 à 19:37:20
Les bezier par morceaux sont quand meme plus intuitive a manipuler. Et pas sur que la continuité C² ou infini s'entede a l'oreille?
0

Tucdual
634

Posteur·euse AFfolé·e
Membre depuis 21 ans
15 Posté le 09/11/2006 à 21:21:54
Je suis parti sur les béziers par morceaux, avec une continuité C1. Je cherche pas une grande précision, du moins pas pour l'instant. Je veux juste voir si ça marche.
D'ailleurs c'est pas vraiment des courbes de Bézier, la longueur des segments de contrôle n'est pas prise en compte, juste leur pente.
J'ai aussi du code d'un de mes projets d'info, qui fait des splines par morceaux entre des points donnés et qui est assez optimisé. Il faudrait juste le modifier pour rajouter la continuité entre t=0 et t=T.
Avant de me plonger dedans de toutes façons j'attends de rentrer en France pour récupérer mes notes sur ce projet et mes cours de traitement du signal.
Je vais quand même regarder les Nurbs et les B-Splines.
D'ailleurs c'est pas vraiment des courbes de Bézier, la longueur des segments de contrôle n'est pas prise en compte, juste leur pente.
J'ai aussi du code d'un de mes projets d'info, qui fait des splines par morceaux entre des points donnés et qui est assez optimisé. Il faudrait juste le modifier pour rajouter la continuité entre t=0 et t=T.
Avant de me plonger dedans de toutes façons j'attends de rentrer en France pour récupérer mes notes sur ce projet et mes cours de traitement du signal.
Je vais quand même regarder les Nurbs et les B-Splines.
0

Il Sorpasso
966

Posteur·euse AFfolé·e
Membre depuis 21 ans
16 Posté le 11/12/2006 à 10:56:03
Je fais remonter ce topic, parce que je me suis rendu compte en lisant vraiment la doc de l'instrument Oki Computer de Reaktor, qu'il s'approchait franchement de très près de ces formes de synthèse. Leurs presets ne le mettent pas vraiment en avant, mais j'ai l'impression que cet instrument peut sortir des sons évolutifs vraiment réussis. En plus ils ont un peu bossé sur l'anti aliasing apparemment dans la dernière version, ça n'était pas du luxe.
0

molecule
232

Posteur·euse AFfiné·e
Membre depuis 20 ans
17 Posté le 31/12/2006 à 16:22:37
Pour démontrer que ça marche, voici un modeste petit essai en instrument Vst (je me suis basé sur le vstxsynth du sdk de steinberg donc la partie midi n'est pas top):
http://molecule.free.fr/spline/MazSpline_v0.1.dll
Attention, pas d'interface graphique ! La spline est divisée en 6 Pôles répartis régulièrements et que l'on peut faire bouger. Si vous mettez un oscillo à la sortie, on peux observer ce genre de trucs :


Bon, y'a pas encore la continuité C1 et l'attaque d'une note est brutale, ça clippe :

Pour l'instant tout les sons se ressemblent assez, mais je pense qu'il pourrait y avoir un bon potentiel à développer avec plus de pôles.
http://molecule.free.fr/spline/MazSpline_v0.1.dll
Attention, pas d'interface graphique ! La spline est divisée en 6 Pôles répartis régulièrements et que l'on peut faire bouger. Si vous mettez un oscillo à la sortie, on peux observer ce genre de trucs :
Bon, y'a pas encore la continuité C1 et l'attaque d'une note est brutale, ça clippe :
Pour l'instant tout les sons se ressemblent assez, mais je pense qu'il pourrait y avoir un bon potentiel à développer avec plus de pôles.
0

Choc
6968

Membre d’honneur
Membre depuis 22 ans
18 Posté le 31/12/2006 à 16:25:08
Eh eh, good job 

0
Site personnel: https://www.enib.fr/~choqueuse/

molecule
232

Posteur·euse AFfiné·e
Membre depuis 20 ans
19 Posté le 31/12/2006 à 17:08:25
Mais c'est qu'il est rapide le choquounet !
Si t'arrives à sortir des sons exploitables avec ce truc, n'hésite pas ...


Si t'arrives à sortir des sons exploitables avec ce truc, n'hésite pas ...

0

Anonyme
521397

20 Posté le 02/01/2007 à 13:00:09
Flag topic hyper intéréssent.
0

guitoo
759

Posteur·euse AFfolé·e
Membre depuis 22 ans
21 Posté le 02/01/2007 à 20:16:41
Au niveau temps de calcul on peut prévoir cb de notes de polyphonie? Tu prévois de distribuer les sources? J'aimerias bien m'en faire un effets jack ou ladspa.
Si j'ai le temps je pourrais même peut être faire une interface graphique (Dans l'idéal ça pourrait etre une interface utilisant une api portable sous windows)
Si j'ai le temps je pourrais même peut être faire une interface graphique (Dans l'idéal ça pourrait etre une interface utilisant une api portable sous windows)
0

molecule
232

Posteur·euse AFfiné·e
Membre depuis 20 ans
22 Posté le 02/01/2007 à 20:45:24
Je suis en train de faire une nouvelle version avec 20 pôle et une vraie interface graphique (VstGui, je ne sais pas si c'est compatible avec toutes les plateforme ...).
Par contre mon algorithme de calcul de spline n'est pas très optimisé, donc ça rame énorme si on demande trop de points pour l'interpolation (256 pour l'instant
en restant en monophonique) ce qui fait qu'on a beaucoup d'aliasing, surtout pour les notes graves... mais je ne perds pas espoir 
Par contre mon algorithme de calcul de spline n'est pas très optimisé, donc ça rame énorme si on demande trop de points pour l'interpolation (256 pour l'instant


0

guitoo
759

Posteur·euse AFfolé·e
Membre depuis 22 ans
23 Posté le 02/01/2007 à 21:37:02
C'est pas possible d'avoir une méthode itérative sur l'axe du temps?
Cette librairie pourrait t'aider
http://libnurbs.sourceforge.net/
Cette librairie pourrait t'aider
http://libnurbs.sourceforge.net/
0

molecule
232

Posteur·euse AFfiné·e
Membre depuis 20 ans
24 Posté le 04/01/2007 à 17:41:50
Citation : une méthode itérative sur l'axe du temps

Pour l'instant, je recalcule la forme d'onde pour chaque buffer que le programme envoie à l'host Vst, sauf si aucun paramètre n'a changé bien sûr. Je ne sais pas si c'est exactement ce que tu veux signifier.
Au niveau de la bibliothéque je me suis fais ma propore lib qui calcule une B-Spline (particularisation des Nurbs). Mais je ne me suis pas encore plongé dedans pour l'optimiser (ou la changer ;)).
0

euklid.fox
40

Nouvel·le AFfilié·e
Membre depuis 21 ans
25 Posté le 23/02/2007 à 15:19:41
Waou ,
ça fait 2 ans que je cherche désespéremment un soft capable de faire une forme d'ond a partire d'une courbe bézier, si y'ena un ki le sort, je suis son serviteur à vie
ça fait 2 ans que je cherche désespéremment un soft capable de faire une forme d'ond a partire d'une courbe bézier, si y'ena un ki le sort, je suis son serviteur à vie

0
- < Liste des sujets
- Charte
- 1
- 2