Se connecter
Se connecter

ou
Créer un compte

ou

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

  • 114 réponses
  • 7 participants
  • 14 239 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

Afficher le sujet de la discussion
101

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

102
Wolfi> perso je peux pas t'aider
je maquette d'abord tout en matlab
si ca marche en matloub, je passe en C

je veux eviter de tout faire en C des le depart
103
Ce que j'ai posté (le dernier message du thread) c'est juste de l'algorithmique, c'est comme du matlab :noidea:

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

104
C'est quoi le probleme exactement ? ca te fait aucune modif de ton signal de base? ca te genere rien du tout ? ca te compresse n'importe comment ?
105
Ca compresse n'importe comment :| Ca fait à peu près ce qu'il faut quand je m'occupe pas des filtres attack/release, mais quand j'essaie de m'en servir ça donne pas du tout les résultats attendus...

C'est vraiment un sujet très très mal servi aussi bien dans les bouquins que sur le net, j'ai jamais rien trouvé de suffisamment bien expliqué, et pourtant ça fait deux semaines que je gruge toutes les infos possibles et imaginables sur le sujet, à coups de mule aussi pour trouver des bouquins... Bordel :(

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

106
J'ai jamais fait ce genre de process, donc comme ca, en blanc, je peux pas t'aider.

Maintenant, faut que tu m'en dises plus: tu calcules l'enveloppe en utilisant chaque sample ? en notant in ton buffer d'input, c'est quoi l'indice n ? Ton max, il est calcule sur quoi ?
107
Tu peux pas nopus mettre ton algo ici (pas ton code :mrg: ), pour qu'on essayes de voir ce qui peut deconner ?

T'aurais pas des vieux cliques par hazard ?

Pour le temps d'attaque du compresseur par exempel ca doit se faire en douceur. Je sais pas si tu fais deja ca, j'ai du mal a comprendre le code comme ca.
108
Je refais un bout de l'explication en plus clair et en français...

Donc j'ai un tableau inputs[2][512] à traiter (stéréo), et j'ai outputs[2][512] qui doit recevoir le résultat...

Je fais les traitements sur chaque canal en même temps, et je traite un à un avec l'index "n" les échantillons...

Je commence par prendre le maximum des valeurs absolues de mes échantillons, puis je fais le calcul de la valeur RMS :

Citation : maximum = max(inputs[1][n], inputs[2][n])
xRMS[n] = racine((1-TAV) * xRMS[n-1] + TAV * maximum ^ 2)
TAV = 1 - exp(-2.2 * Ts / tav) avec tav = 5 ms par exemple.


Après tous mes indices devraient être cohérents sur le thread KVR :?!:

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

109
Ah ok, le max est sur la stereo, par l'index de frame ! Bon, je regarderai demain, alors.
110
Bon la suite en français :mrg:

Citation : Xdb[n] = 20 * log10(xRMS[n])
Ydb[n] = Tdb + (Xdb[n] - Tdb) / Ratio
y[n] = 10^(Ydb[n]/20)



Citation : TAT = 1 - exp(-2.2 * TS / tat)
TRE = 1 - exp(-2.2 * TS / tre)

si (Xdb[n] > Tdb) alors Tc = TAT sinon Tc = TRE
env[n] = (1 - Tc)*env[n - 1] + Tc*y[n]

gain = env[n] / xRMS[n]
outputs[1][n] = inputs[1][n] * gain
outputs[2][n] = inputs[2][n] * gain



Merci Gabou et Choc :clin:

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