Auteur | Message |
---|---|
Beau Parleur
![]() |
Bonjour,
Je voudrais implémenter un plugin LFO pour la prochaine version du projet de compositeur virtuel MIDI. Je souhaiterez utilisez ce LFO pour envoyer des Message ControlChange consecutifs suivant l'onde choisie et le tempo. Mais je suis pas très fort en math et les souvenir sont vieux. Je souhaiterais aller à l'essentiel pour comprendre comment générer un signal sinusoïdal, et carré, en dans de scies et trianglulaire. Si vous avez du temps à me consacrer... Merci pour votre lecture. |
Administrateur
![]() |
Pour un signal sinusoïdal, il faut utiliser la fonction sin disponible dans n’importe quel langage. Il faut faire y = sin(t * 2pi * f) où y est la valeur instantanée du signal à cet instant ; cette valeur varie entre +1 et -1. T est l’instant en seconde, et f est la fréquence en hertz. Par exemple si f vaut 2, c’est comme si le temps s’écoulait 2 fois plus vite, qu’on a donc 2 périodes du signal à chaque seconde, c’est à dire un signal à 2 Hz.
Pour un signal carré, c’est binaire, il faut utiliser une condition. Il faudrait faire des dessins pour expliquer, alors je donne la formule sans explication, en pseudo‑code : Code :P = 1 / F P est la période, F est la fréquence en hertz, T est le temps en seconde, Y est la valeur instantanée du signal. Pour un signal en dent de scie : Code :P = 1 / F P, F, T et Y ont la même signification que précédemment. |
Beau Parleur
![]() |
Merci beaucoup Hibou.
Tu ne fais pas mention de la fonction pour le Triangle, est-ce volontaire ? |
Administrateur
![]() |
Pour le triangle, il n’y a pas de solution unique. Ou alors il faut un paramètre supplémentaire pour savoir où placer la pointe. Ou alors décider qu’il est isocèle par exemple.
J’ai corrigé une petite erreur dans ma précédente réponse : y = sin(t * 2pi * f) et non‑pas y = sin(t * f) comme je l’avais écrit par erreur. |
Beau Parleur
![]() |
Bonjour Hibou, merci pour la correction.
Pour le Triangle, je ne sais trop quoi répondre. Est-ce un choix arbitraire, existe- t- il une norme ou un standard. Si non, un triangle isocèle me conviendra. Merci pour tes réponses. |