Création d'un synthé sous Matlab (Choc par ici !)
- 114 réponses
- 7 participants
- 14 460 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
Wolfen
https://www.kvraudio.com/forum/viewtopic.php?t=134771&start=15
Développeur de Musical Entropy | Nouveau plug-in freeware, The Great Escape | Soundcloud
Choc
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
Site personnel: https://www.enib.fr/~choqueuse/
Wolfen
Développeur de Musical Entropy | Nouveau plug-in freeware, The Great Escape | Soundcloud
Choc
Site personnel: https://www.enib.fr/~choqueuse/
Wolfen
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 | Soundcloud
Pov Gabou
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 ?
Choc
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.
Site personnel: https://www.enib.fr/~choqueuse/
Wolfen
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 | Soundcloud
Pov Gabou
Wolfen
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
Développeur de Musical Entropy | Nouveau plug-in freeware, The Great Escape | Soundcloud
- < Liste des sujets
- Charte