Se connecter
Se connecter

ou
Créer un compte

ou
FR
EN

Création d'un synthé sous Matlab (Choc par ici !)

  • 114 réponses
  • 7 participants
  • 14 824 vues
  • 9 followers
Sujet de la discussion Création d'un synthé sous Matlab (Choc par ici !)
Salut à tous et à Choc qui a intérêt à se ramener vite fait :ptdr:

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 :bave:

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

Afficher le sujet de la discussion
51
Ca fait 4 ans que je suis sur musicdsp (la mailing list), et recemment, il y a moins de participation. Faut voir ca comme un site applicatif. Si tu veux de la rigueur, il faut se plonger dans les articles de revues et de conf, il y a pas vraiment d'autre moyen, je pense.

Sur la mailing list de musicdsp, t"as quand meme des gars qui sont bons, chacun avec leur truc: t'as Robert B. Jones, comme les fameux filtres RBJ, t'as plusieurs pros qiu bossent dans des boites de MAO, un gars qui a bosse pour fairlight, etc... Il y a aussi le newsgroups comp.dsp.lang, de memoire, qui est plus technique.

Citation :

Hors sujet : Gabou, t'as commencé une autre thèse ? ca porte sur quoi ?



Je commence cette annee, a l'universite de Kyoto, en traitement de la parole, mais pas en reconnaissance. Je suis pas encore sur, j"ai le choix entre faire un truc applicatif sur l'analyse de discussions, mais ca me botte de moins en moins, ou alors axer plus sur la reconnaissance de parametres non verbaux de la parole tels que le pitch, prosodie, etc... La, en ce moment, je bosse sur la detection de voix en milieu bruite, je bosse sur un article que j"espere publier a Interspeech

52

Hors sujet : Cool :bravo: Comme je bosse plutot sur des systemes multi recepteurs, j'aurais bien trippé aussi appliqué ca a la reconnaissance de parametres dans une discussion, Genre Nombre de personnes, Detection d'arrivée des ondes acoustiques (placement potentiel des personnes), Séparation de sources etc etc

53
Là j'ai des gros problèmes avec ces histoires de sampling... Mes ondes d'oscillos sont stockées sur 1024 échantillons, et en haute fréquences ça grésille, on ne distingue plus la différence entre un triangle et un palier...

J'ai plusieurs solutions : soit je rajoute une amélioration sur le sampling (parce que l'interpolation linéaire visiblement c'est pas ça), en augmentant la taille des tableaux d'ondes, ou en utilisant un truc comme http://www-ccrma.stanford.edu/%7Ejos/resample/ ; soit je calcule mes échantillons en temps réel... Pour des rampes/triangles/dents de scie c'est super jouable, mais pour le sinus, vu que la fonction sinus est super lente, ça va être chaud... Une piste :

Citation : Why have I used sampling? Because this is the only way of getting accurate tuning and low complexity. Floating point operations are emulated on a Palm, so they are slow as hell. sin/cos are also emulated, and are even more slower. Don't expect no more than 4000/5000 calls to sin per second. The only possible solutions are:
- sampling.
- finite difference methods (you write the sine function you want to generate as the solution of a PDE, and you solve this PDE by finite differences). The problem is that the coefficients of this PDE do not linearly depend on the frequency - so you end up needing a table with the coefficients for each possible frequency (bad when you need small frequency increments) AND you will get round off errors that will result in inaccurate frequency. As a rule of thumb: LINEAR is implementable ; NON-LINEAR is not.



Vous en pensez quoi vous ? Le problème majeur est que le CPU n'est pas super rapide :| J'ai pas le droit d'utiliser les virgules flottantes qui sont "émulées" sur les Palm :volatil: Et puis faudrait que je balance un filtre bien extrême pour faire de l'anti-aliasing en sortie, ça pourrait régler quelques problèmes peut-être, même si y a juste lecture d'échantillons à des fréquences basses pour l'instant (à 440 Hz ça coince déjà) :noidea:

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

54
Je serais pas etonne qu'un palm recent soit plus puissant qu'un nordlead premiere generation. Tout est implemente en virgule fixe, donc c'est possible. Tu devrais jetter un coup d'oeil a musicdsp ML, ils sont justement en train de parler de l'emulation de SH09.

Citation :
'ai plusieurs solutions : soit je rajoute une amélioration sur le sampling (parce que l'interpolation linéaire visiblement c'est pas ça



Oui, le lineaire est tres mauvais, surtout en haute frequence. Jette un coup d'oeil a libsamplerate de Erik Castro de Lopo :

http://www.mega-nerd.com/SRC/

Pour generer des ondes sinusoidales, personne n'utilise cos ou sin, surtout la version de la librairie C standart. Typiquement, lorsque j'avais implemente un pitch shifter cense marcher en temps reel, j'avais besoin de calculer a la volee des fenetre de Hamming qui consiste principalement a calculer des cos: tu peux utiliser des appproximations et calculer par recurrence chaque valeur a partir de la premiere, et c'est beaucoup plus rapide (a l'epoque sur PII, c'etait environ 20 fois plus rapide, et je programmais vraiment comme un pied a l'epoque).

T'utilise un truc niveau lycee: cos(a+b) = cos(a)cos(b) - sin(a)sin(b), avec b = a, ca donne cos(2a) = cos(a) * cos(a) - sin(a)*sin(a). Et tu procedes par recurrence 3a, 4a, etc... Tu remplaces le calcul de cos ou sin par 2 mul et une addition... C'est plutot pas mal.
55
Je viens de jeter un oeil rapide à la ML, c'est vrai que c'est plutôt intéressant, bien plus que les bouts de code :8) Je vais voir également ton site :mrg:

Pour l'instant j'ai trouvé ça pour le cosinus :
https://fr.wikipedia.org/wiki/Construire_des_tables_trigonom%C3%A9triques
Doit y'avoir mieux comme algo non ? :noidea:

Sinon pour info, Bhajis Loops est un séquenceur pour Palm OS, à mi chemin entre le tracker et les séquenceurs PC, basé sur un sampleur qui lit des fichiers WAV, avec quelques effets (réverb, EQ, compression...). On peut lire une dizaine d'échantillons en même temps avec des effets sans problèmes, doit y'avoir une bonne marge de puissance.

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

56
Je comprends pas leur histoire d'imprecision. Il y a un probleme en precision finie, il faut faire attention a l'ordre des operations, mais l'algo est exacte a priori ?

Imaginons par exemple que tu veuilles une table de 1024 samples sur une periode de cos: cos[2(k+1)pi/N] = cos[2kpi/N]cos[2pi/N] - sin[2kpi/N]sin[2pi/N] avec la formule cos(a+b) = cos(a)cos(b) - sin(a)sin(b).

Premiere recurrences:

cos[0] = 1, sin[0] = 0.
cos[2pi/N] = a, sin[2pi/N] = b.

Puis apres:

u(k+1) = a*u(k) - b*v(k)

faut calculer les sinus correspondant en meme temps. Donc leur approximation lineaire est assez debile je trouve

Ah, en anglais, l'article est beaucoup plus precis. Le truc d'au dessus donnait de bons resultats avec des tailles de 1024 samples pour des fenetres de hamming. Il faut faire attention a l'ordre dans lequel tu calcules le truc d'au dessus.
57

Citation :
Je viens de jeter un oeil rapide à la ML, c'est vrai que c'est plutôt intéressant, bien plus que les bouts de code



En parlant de code, ca me rapelle que je n'ai toujours pas converti le code matlab pour le time stretch que j'avais poste :oops:
58
Merci, va falloir que j'épluche ça

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

59
Au fait, question HS, vous n'avez pas des liens sur la synthèse vocale ? Sur comment marche ce genre de softs : http://www.research.att.com/projects/tts/demo.html

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

60
Il marche tres bien effectivement ce moteur de synthese vocale.

Les publis sont la

http://www.research.att.com/projects/tts/pubs.html
61
T'as pas des docs en général sur ce genre de trucs ? Ce qu'il me faudrait, c'est comment synthétiser des phonèmes sans avoir de voix enregistrées... Comme le soft pourris de AnalogX ou Microsoft Sam :mrg:

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

62
C'est vachement balaise a faire, et surtout, certains types de synthese fonctionnent a partir de samples de voix concatenes de maniere plus ou moins subtile.

Une collegue japonaise utilise les travaux+softs de Mr Kawahara, qui donnent des resultats tres subtils sur les 'intonations' de voix.

https://www.wakayama-u.ac.jp/~kawahara/index-e.html

J'aurais bien aime discuter avec lui, j'etais a son labo il y a 2 semaines, mais j'ai pas pu :(
63
Aïe, je me disais que y'aurais moyen de trouver plein de docs sur le sujet pour faire ça en deux deux :|

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

64
La synthese, c'est comme la reconnaissance, c'est un gros morceau.
65
Un ptit lien pour la voix

http://www.icp.inpg.fr/ICP/_page.fr.php?page=avtts/clone.fr.html

la c'est de la synthese vocale , pas de la concaténation de phonème (pas du traitement du signal quoi)
66
Intéressant :boire:

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

67
Tiens, je me suis motivé 1H a me reattaquer a la 303...

p'tain c'est chaud :(((

filtre passe bas -18dB/octave
deux parametres resonance + frequence de coupure
equation du filtre de type
y(n)=ax(n)+b.y(n-1)+y(n-2)

decroissance exponentielle qui controle la frequence du filtre etc

c'est pas evident :??:
68
C'est quoi qui te pose problème ?

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

69
Pas assez de temps, le coup du filtre est super relou a gerer..

faut que la structure du programme soit tre sbien faites aussi, l'interet de la tb303, c'est de bouger la frequence et la resonance du filtre en live...

sur le site de Smith, il parle pas mal de ces filtres IIR (relier frequence de coupure et resonance au coefs, comment calculer rapidement etc), j'attend vraiement la sortie de son bouquin :(((
70
C'est fait sous Matlab ça ? En VST, ça doit pas trop casse-pied à faire... En plus je me rends compte que les VST c'est carrément facile à programmer, quand tu t'emmerdes pas à faire l'interface, et donc à mon avis beaucoup plus puissants que l'équivalent avec du Max/MSP.

Par contre il faut Visual Studio.NET ou équivalent, et se prendre la tête un petit moment pour que ça compile comme il faut...

Sinon j'ai des trucs qui peuvent t'aider sur la synthèse de filtres :

http://www.musicdsp.org/files/EQ-Coefficients.pdf
http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt

Ca explique très bien les trucs sur lesquels je m'étais pris la tête dans ce thread :mrg:

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

71

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

72
Salut jimagine que si le but de ce thread est de créer un synthe sous matlab il est possible de produire en temps réel un son avec matlab grace a un clavier midi corriger moi si je me trompe ( je n’ai pas encore eu le temps de faire un tour dans la toolbox midi indiqué au début de ce thread).
Par contre je me demandais si matlab peut traiter en temps réel un signal audio entrant. ( faire générateur d’effet en gros )
73
Moi ce que je voulais faire c'était tester un truc sous Matlab avant de copier coller l'algorithme sur un programme pour Palm OS (ou sur un VST tant qu'on y est). Par contre je sais que Choc c'est déjà servi de Matlab dans une compo, moi je ne sais pas comment on peut s'en servir en temps réel, faut attendre qu'il pointe son nez :noidea:

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

74
Hello

pour le temps reel ca doit etre simulink de matlab qu'il faut utiliser (que j'ai jamais utilisé)

D'ailleur grosse question, si simulink marche bien pour l'audio on a avec matlab le plus gros synthé modulaire de tous les temps, je vais m'y pencher serieusement...On pourrait imaginer de developper une toolbox pour simulink qui integre des modules audio simples (filtre Lores, etc etc)...Faudrais aussi voir pour l'interfacage MIDI temps reel (ce que ne doit pas faire la toolbox midi toolbox), voir l'asio etc...

En gros, j'suis sur que si quelqu'un developpe la:

"Computer Music Toolbox" pour matlab/Simulink, ca va grave marcher...Apres, on pourrait egalement imaginer de l'interfacage avec les briques de Pure Data etc, un truc de ouf en fait...

Sinon, pour mes compos en matloub, c'etait du temps différé !
75
Je sais pas si matlab peut vraiment servir a faire du temps réel je posais la question a tout hasard mais le probleme c que ca bouffe bp de puissance ( le language interprété c pas le top au niveau optimisation des ressource)
lorsque j'avais fait quelques tests de traitements sur matlab c'était pour sa simplicité le but étant ensuite de passer sur un language de plus bas niveau mais qui demandera évidemment plus de connaissance. et je crois qu'a l'heure actuel, la limite n'est pas que celle de l'imagination des Programmeurs/chercheurs mais aussi de la puissance machines.

Je crois qu’on peut faire la même chose sur matlab et simulink le seul truc c que sous simulink t’a pas à écrire les équations elle sont « représentées » par des boites. Et à cet égard, des logiciels comme reaktor m’ont l’air très très bon. Il est d’ailleurs possible de faire de la programmation pour les compléter si on ne trouve pas son bonheur. Donc c’est vrai que matlab a un coté très « immédiat » puisque quand on génére une suite de nombre pour avoir une sinusoide ou n’importe quoi d’autre on sait exactement ce qu’on fait alors qu’avec une boite dans reaktor c’est peut etre moins sûr. Cela dit reaktor permet surement d’avancer plus vite. ( apres qu’est ce qu’on fait , de la musique ou de la physique/traitement du signal ?)