Création d'un synthé sous Matlab (Choc par ici !)
- 114 réponses
- 7 participants
- 14 823 vues
- 9 followers

Wolfen


Bon, je me suis acheté un Palm T|X pour pouvoir faire tourner dessus le séquenceur MIDI Bhajis Loops (basé sur un sampleur et sur des banques d'échantillons, une vraie tuerie ce soft !). Donc j'ai commencé à sampler plein de trucs à droite et à gauche pour en faire des WAV qui sont lisibles par ce logiciel.
Je me suis dit que c'était comme même dommage qu'il n'y ait pas de VSTis sur ce séquenceur, même si je sais pertinemment que de toutes façons, au vu de la puissance des CPU pour Palm, ça serait complètement impossible... Du coup je me suis dit que ça serait génial d'avoir un synthétiseur sur Palm, qui ne fonctionne pas en temps réel mais qui permette d'exporter des WAV pour les utiliser dans Bhajis Loops ! Ca serait parfait.
J'ai donc deux solutions pour faire ça : la première c'est de développer un soft avec un compilateur pour Palm OS, comme HB++... Ca a l'air un peu pénible comme même mais c'est faisable...
La deuxième solution, qui me convient le plus, c'est un Matlab like gratuit qui existe sur Palm OS qui s'appelle LyME ! Ainsi, j'aurais qu'à écrire le programme et changer les définitions de variables au début pour le paramétrer... En plus je crois qu'il y a des fonctions pour faire une vraie GUI donc c'est parfait. Le seul hic, c'est que ce soft ne fait pas encore l'import/export en WAV, mais j'ai contacté les developpeurs à ce sujet, donc ça sera peut être possible...Donc, en attendant, je vais m'y mettre sur Matlab !
En gros, si vous avez des conseils, je suis preneur... Je vais faire un truc de synthèse additive pour commencer avec 2 ou 3 oscillos, autant de filtres, un LFO etc. et ensuite il faudra que l'utilisateur spécifie un fréquence d'échantillonnage et une note/octave, pour créer un fichier WAV correspondant... Bref il me faut un truc versatile, qui crée une bonne variété de sons différents, et peut-être que je vais tester ensuite d'autres types de synthèse. Quelques suggestions ? Des remarques sur mon projet ?
Autre question en passant : qu'est-ce qui donne le caractère de tel ou tel autre synthétiseur numérique ? Est-ce les formes d'ondes (par exemple un sinus bruité modélise sur du sinus analogique au lieu d'un sinus numérique parfait), la nature des filtres ?
Choc > je suis en train de me plonger dans tes sources Matlab sur la synthèse, c'est très intéressant et ça va bien m'aider

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

Choc

il existe toutefois la possibilité de pré compilé des script matlab pour que ca aille plus vite.
Sinon, en prog, reaktor c'est pas super top pour completer des modules, maxmsp et pure data ca va mais c'est du C.
Matlab possede un grand nombre de fonctions tres tres evolué alors qu'en C, tu va te farcir, la programmation de la fft (oui il existe des librairies) ou d'autres choses tres chiantes

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

pansoul

(ou vers un language compréhensible par un PALM peut etre que ca existe)

Pov Gabou

http://chuck.cs.princeton.edu/
Sinon, l'autre defaut de matlab, c'est que le langage est tres peu expressif et tres pauvre des que l'on sort de l'algebre lineaire, et du coup, je ne suis pas convaincu que ce soit le truc parfait pour faire du traitement du signal audio.
Je suis pas encore sur d'avoir trouve le truc ideal (et le temps reel ne m'interesse pas forcement dans le cadre de mon boulot), mais par exemple python + scipy est beaucoup plus souple:
https://www.scipy.org/ (je suis en train de porter mes codes maltlab de "machine learning" sous ce truc, et ca a l'air pas mal, sans grosse perte de perfs, de l'ordre de 30 %, sans avoir cherche a optimiser le truc).
Il y a aussi supercollider...

Wolfen

Citation : Matlab possede un grand nombre de fonctions tres tres evolué alors qu'en C, tu va te farcir, la programmation de la fft (oui il existe des librairies) ou d'autres choses tres chiantes
Moi maintenant j'abandonne définitivement matlab et je fais tout en VST en C++

Pour le Palm par contre, tout ce qu'on peut faire c'est du offline, ou alors il faut avoir le séquenceur Bhajis Loops, qui marche avec des plug-ins qu'on peut programmer soi-même, mais dans tous les cas un Palm ça ne se pilote avec des machins externes (pas d'entrée micro, pas de traitement temps réel sans latence, pas d'entrée MIDI)
Intéressant tes liens Gabou...
Développeur de Musical Entropy | Nouveau plug-in freeware, The Great Escape | Soundcloud

Pov Gabou

Citation :
il existe toutefois la possibilité de pré compilé des script matlab pour que ca aille plus vite.
D'experience, ca marche pas tres bien des que tu sors des cas triviaux. J'ai jamais trop regarde non plus, faut dire.
Je pense que tout faire en C++, c'est un peu suicidaire, a moins d'etre un crack en programmation. C'est a la mode, mais je pense que ca tient du vrai quand meme: la programmation ditre "hybride" a du bon (ie programmer en langage "dynamique", et faire les trucs qui bouffent des ressources en C s'il le faut). Prototyper en pytho, par exemple, c'est quand meme plus sympa qu'en C; et apres. tu as des outils pour interfacer avec du C ou du C++ bien proprement (SWIG, boost::python) ou pour inliner du code C (pyrex). L'autre probleme du C, c'est la gestion des exceptions en flottant, c'est quand meme super penible quand tu essaies des algos un peu sophistiques, et c'est pas evident de faire ca proprement (division par 0, etc...)
Pour le temps reel, c'est plus difficile a faire, car les trucs qui vont avec le temps reel (determinisme de l'allocation memoire, etc...) sont souvent a l'encontre de la generalite d'un langage (ex, python ou java, ou le GC rend impossible le temps reel de maniere efficace).
En tout cas, c'est difficile de retourner a matlab apres avoir toucher a un "vrai"langage (ne serait-ce qu'avoir des listes, la possibilite d'ecrire des functions a l'interieur des scripts, et des functions avec keyword, c'est deja enorme)

Choc

Rien que les synthé modulaires genre MaxmPS c'est le bordel, tiens, tu fais des scripts en Javascrript, tu fais des external en C, tu peux faire du Java etc...tu connectes tes briques a la volé avec des script etc...tu fais faire de l'open gl, il te faut jitter ou alors des briques javscript, tu veux compiler ton truc en VST, il te faut pluggo
Fuck, j'suis pas un geek, ras le bol de tout ca..
Donc matlab j'aime bien, y a plein de truc pre programmé et tres puissant, ca va peut etre pas trop vite, mais a la rigueur je m'en fous

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

Pov Gabou


perso, j'ai touche a python parce que matlab n'avait pas de liste, et donc que c'est impossible d'avoir le concept de vecteurs de taille variable (il y a bien les cells arrays, mais ca marche avec rien, il faut looper dessus...). Puis apres, j'ai essaye d'autres trucs. Les trucs qui me saoulent dans matlab, et qui m'ont decide:
- le prix
- l'absence de listes
- la difficulte de faire de faires de bonnes figures "publication ready" avec (le subplot est une horreur a gerer pour l'export en postscript)
- la difficulte de gerer beaucoup de parametres en meme temps (pas de vraies functions a arguments variable, pas de keyword, pas de vraie structure objet). Sur de gros projets, ca rend le code super degueu (typiquement, je comprends rien a netlab ou les excellentes toolboxes de Murphy, parce c'est du code spaghetti)
- la nullite de l'interface pour ecrire des extensions en C (ca, c'est vraiment chiant).
Apres, ce sont pas forcement des trucs fondamentaux pour tout le monde.

Wolfen

J'ai découvert deux freewares récemments, STS-24 et ProtoPlasm de HG Fortune (ceux qui ont fait le Friday Freeware de la semaine). Je les trouve vraiment très bien, ça sonne bordel

Faudrait que je regarde à quel point le son est "magnifié" par la partie synthèse, en comparant les oscillateurs seuls et le rendu optimal des synthés. J'aimerais savoir aussi quels critères permettent de sélectionner des sons utilisables dans la partie "oscillo" (quelle longueur, quelle fréquence, quelle nature etc).
Vous connaissez pas des synthés logiciels qui ont la même approche ? Comment ça rend par rapport à de la synthèse avec des formes d'ondes de base ?
J'aimerais bien mettre une section convolution aussi, en m'inspirant de ce que j'ai mis dans la section "créative" de mon dossier AF sur le sujet...
On verra tout ça à la fin de mon stage

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

Choc

Citation : Vous connaissez pas des synthés logiciels qui ont la même approche ? Comment ça rend par rapport à de la synthèse avec des formes d'ondes de base ?
Dans absynth, tu peux utiliser des oscillo en mode sampleur ou tu importe une forme d'onde...enfin je sais pas si c'ets vraiement ca que tu cherches
a mon avis pour que ca marche, il faut que tu tu conserves a partir d'un sample (vilon ou piano) une partie stationnaire du signal (au sens microscopique). Comme quadn tu boucles en sampling sur le sustain !
C'ets derniers temps je m'amuse a faire des patch absynth avec des oscillos qui genere des amples de violons ou de cuivres, apres je triate le son comme je le fait d'habitude, comb filter en pagaille, LFO, delay, etc.
Au niveau de la convolution, ca peut etre tre ssympa effectivement.
En numerique, y a plein de probleme pour la simulation de filtres analo par exemple (genre la TB303) ou pour d'autres modules difficilement reproductible en numerique. On pourrait exquiver le probleme en proposant des modules pouvant etre cablé aux modeles de synthése basée sur de la convolution....genre tel oscillo on l'injecte dans une simu d'ampli lampe, puis ensuite on l'injecte dans des modules purement numeriques (comb filter par exemple) etc...faire en sorte un truc semblable a l'evolver ou l'architecture du synthé hard est composé de traitement numerique et de traitement 100% analo, le but ? combiner le meilleur des deux mondes !
Site personnel: https://www.enib.fr/~choqueuse/

Wolfen

Pour Absynth je connaissais cette fonction... Je me disais justement que ça pourrait être marrant de générer des sons par synthèse puis de les réinjecter comme forme d'onde... Voire de proposer une option dans un synthé qui fasse ça automatiquement en mixant des patchs différents

Citation : Comme quadn tu boucles en sampling sur le sustain !
Je vois ce que tu veux dire, ça me paraît impératif, en fait je pensais prendre une période si on veut... Donc générer ce genre de sons par synthèse, à moins d'implanter des fonctions de sampling avancées (bouclage, enveloppes) dans l'oscillateur.
Citation : Au niveau de la convolution, ca peut etre tre ssympa effectivement.
Surtout que je vois à peine ce qu'on pourrait faire dans le domaine, mais je sais que ça donne des sons sympas d'après ce que j'ai pu entendre en démos, plus le fait que c'est une approche que personne n'a jamais utilisée... Ca peut être un outil créatif de synthèse du tonnerre !
Citation : En numerique, y a plein de probleme pour la simulation de filtres analo par exemple (genre la TB303) ou pour d'autres modules difficilement reproductible en numerique. On pourrait exquiver le probleme en proposant des modules pouvant etre cablé aux modeles de synthése basée sur de la convolution....genre tel oscillo on l'injecte dans une simu d'ampli lampe, puis ensuite on l'injecte dans des modules purement numeriques (comb filter par exemple) etc...faire en sorte un truc semblable a l'evolver ou l'architecture du synthé hard est composé de traitement numerique et de traitement 100% analo, le but ? combiner le meilleur des deux mondes !
C'est un peu ce que j'ai envie de faire, proposer différentes formes d'ondes d'oscillos (pures en numériques, récupérées sur de l'analogique, ou space comme je disais précédemment), faire pareil pour les filtres, essayer tout ce qui peut rajouter de la "chaleur" au son...
Donc en résumé faire de la diversité pour les sources, proposer une section "chaleur" qui aura pour but de "grossir" de "magnifier" le son (filtres, waveshaping, chorus, simulations d'effets analogiques), et une section "créative" pour étendre les possibilités de synthèse (convolution, modulations...)
Développeur de Musical Entropy | Nouveau plug-in freeware, The Great Escape | Soundcloud

Choc

Au niveau de la convolution, je verais bien ca pour:
- Simuler des comportements non lineaire de lampes
- Simuler des comportements non linaires de transitor
- Simuler des comportements de filtrage bien particulier (reverberation ?,Binaural non j'deconne pour la bibine)
- Simuler des comportements de filtres dont les emulations numerique ne sont actuellement pas top (303, filtre de moog)
Par contre niveau CPU ca va bouffer severe

Apres faut rester dans l'esprit modulaire ou semi modulaire, l'utilisateur pourrait cabler ces modules suivant ces envies...genre tiens je vais rechauffer tel oscillo avec tel lampes, tiens je vais mettre une amplication type transistor en sortie de tel filtre.
Comme je te l'ai deja dis, j'aimerai bien que les boite sdefinissent un standard pour les filtres. Comme des banques de samples mais pour des filtres, apres on pourrait importer des banques qui s'achetent dans le comemrce. Genre TB303 filter, Synth analog filter, Binaural filter, reverberbation filter, Marshall Filter etc etc
Site personnel: https://www.enib.fr/~choqueuse/

Wolfen


Moi ce à quoi je pensais c'est de faire de la convolution du son avec... n'importe quoi... mais pas trop

Pour les comportements non linéaires et les filtres, rien ne vaut la modélisation physique, si on veut que ça reste raisonnable en ressources CPU... Et y a moyen de faire des bons trucs...
Tes histoires de banques de samples de "filtres", ça pourrait marcher si il y'avait des algos de convolution non linéaire existants qui bouffent pas trop de ressources, qui soient efficaces, et dispos dans des produits que tout le monde auraient... Les deux premiers points sont pas gagnés.
Développeur de Musical Entropy | Nouveau plug-in freeware, The Great Escape | Soundcloud

Choc


la modelisation physque pour l'instant

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

Pov Gabou

Citation :
Comme je te l'ai deja dis, j'aimerai bien que les boite sdefinissent un standard pour les filtres. Comme des banques de samples mais pour des filtres, apres on pourrait importer des banques qui s'achetent dans le comemrce
pouvoir programmer ses filtres pour reaktor, par exemple, ca serait classe. Mais bon, j'y crois pas un seul instant pour des raisons commerciales. Puis meme techniquement, finalement, ca va etre super dur d'avoir un vrai standart, car selon les buts du moteur audio derriere, tu ne vas pas avoir les memes contraintes de latence, de qualite, etc... (le probleme fondamental etant la frequence de traitement, de refraichissement des modulations, pb de feedback, etc...).
Il y avait un thread recemment sur music-dsp a ce sujet; malheureusement, ca depassait assez largement mes competences en info. Si ca vous interesse, je peux essayer de le retrouver.

Choc

Citation : Moi ce à quoi je pensais c'est de faire de la convolution du son avec... n'importe quoi... mais pas trop
- t'ouvres maxmsp
- tu charges un VSTI
- tu connectes la sortie de ton VSTi a un objet buffir qui va te faire la convolution
- tu charges un son dans ton buffir
- tu connectes ca a ta sortie audio
Site personnel: https://www.enib.fr/~choqueuse/

Wolfen

Citation : Je vois loin dans l'avenir man
la modelisation physque pour l'instant
On n'y est pas encore

Citation : t'ouvres maxmsp
Max/MSP c'est pour les rigolos


Citation : Il y avait un thread recemment sur music-dsp a ce sujet; malheureusement, ca depassait assez largement mes competences en info. Si ca vous interesse, je peux essayer de le retrouver.
Je veux bien

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

Choc

Hors sujet : Pourquoi j'ai des vieux smiley mechant, et Gabou a droit a des smilez sympathiques
Site personnel: https://www.enib.fr/~choqueuse/

Wolfen


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

Choc

Hors sujet : Je parlais au niveau de tes smiley
Tu oublies le principe de base :wolfen:. C'est pas parce que gabou me dechirre en signal qu'il faut lui faire les yeux doux
Site personnel: https://www.enib.fr/~choqueuse/

Wolfen











Sinon je ne vois pas de quoi tu parles

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

Pov Gabou

https://music.columbia.edu/pipermail/music-dsp/2005-December/031497.html
Mais je comprends pas tous les details (et donc pas grand chose, car en info, tout est dans les details); typiquement, je sais pas tres bien ce qu'est un time stamped event (mais ca a l'air super important, il y a eu un gros thread la dessus sur le plus ou moins defunt projet GMPI), et j'ignore tout des techniques de compilation et JIT.
Un truc chiant avec la convolution en temps reel, c'est le patent de machin lake (j'ai oublie le nom de la boite). Il me semble (mais la encore faudrait verifier, j'ai mauvaise memoire) que des que tu veux faire de la convolution en temps reel (ie partition de la FFT de la reponse impulsionnelle de maniere a avoir peu de latence tout en beneficiant des avantages de la FFT), tu tombes sous le patent. Faudrait voir avec bruteFIR, comment il se debrouille (ignore le patent, ou fait autrement ?).
Vous me donnez envie de me relancer dans l'aventure de la prog audio, tiens... Saloperie de RSI


Wolfen


Concernant le brevet de Lake, il concerne le partitionnement des réponses impulsionnelles avant de faire de la convolution fréquentielle, en particulier la longueur optimale du partitionnement d'après ce que j'ai compris...
Quand on fait de la convolution fréquentielle temps réel, on est obligé d'utiliser les algos overlap add / overlap save pour traiter le bloc d'échantillon qui arrive à chaque calcul (dont la longueur est égale à la taille du buffer de la carte son, qui définit sa latence). On peut se contenter de cette technique si les réponses impulsionnelles sont petites.
Par contre, si les réponses impulsionnelles sont longues, il faut les partitionner, et faire plusieurs FFT/Convolutions pour chaque bloc de signal entrant, ce qui réduit les temps de calcul (il vaut mieux faire 5 convolutions fréquentielles sur des petits buffers que une seule sur un gros buffer). Ce partitionnement peut être uniforme (c'est ce qui est fait avec les réverbs à convolution que je connais, SIR, celle de Voxengo etc.) ou variable pour chaque convolution, et là c'est breveté par Lake, qui d'après ce que j'ai compris donne dans son brevet des règles pour optimiser au max les performances et la latence...
A l'AES d'il y a 2 ou 3 ans, il paraît qu'un gus de Microsoft avait essayé de brevéter un truc similaire, mais c'est pas passé étant donné que des gens avaient publié fin des années 80 un truc identique


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

Choc


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

Pov Gabou

Citation :
A l'AES d'il y a 2 ou 3 ans, il paraît qu'un gus de Microsoft avait essayé de brevéter un truc similaire, mais c'est pas passé étant donné que des gens avaient publié fin des années 80 un truc identique
Ah oui, je m'en souviens de ce truc

Citation :
p'taing ca marche bien mais un petit decallage dans les indices et ca click de partout
M'en parle pas, je me souviens des fois de sales trucs parce que matlab fait une difference entre Hann et hanning, et du coup, j'avais un sale warbling qui venait de je ne sais ou...
C'est chaud de bien faire des convolution/autocorrelations (je suis plus interesse par ces dernieres maintenant pour mes recherches), parce que des que tu sors du cache, tu diminues les perfs de presque un ordre de grandeur

Wolfen

Citation : Tiens je maquette mon plug de binaural sur matloub, je me suis fait un prog de convolution par passage en freqeuntielle et technique overlapp add..p'taing ca marche bien mais un petit decallage dans les indices et ca click de partout
Ca m'avait fait pareil au début, faut bien faire attention à la taille de tes buffers (la convolution se fait sur N+M-1, tu envoie les premiers N en sortie, et tu ajoutes les M-1 du calcul précédent au début de la sortie du nouveau).
Citation : Ta these, tu as failli la faire chez Farina ?
Mon stage de cette année plutôt. C'était ce qui était prévu depuis Novembre 2005, il m'avait donné son aval par mail très vite, mais il a été long à mettre en place les petits détails à cause de cette fichue administration italienne, du coup ça s'est pas fait et j'ai du me trouver un stage en plein mois de Février à toute vitesse, en relançant les boites à qui j'avais envoyé un refus... Heureusement Nonconforme avait besoin d'un développeur pour sa boîte

Développeur de Musical Entropy | Nouveau plug-in freeware, The Great Escape | Soundcloud
- < Liste des sujets
- Charte