Hello!

Inspiré(e) de prendre part à la discussion ? Ou de poser une question ou demander de l’aide ?

Alors bienvenues dans les grands sujets des forums de La Bulle : m’inscrire.

Cette partie du forum n’est pas compatible avec les bloqueurs publicitaires

Félicitations à vous, de préférer les accès payants plutôt que la gratuité par la publicité, c’est honnorable et cohérent de votre part. Malheureusement, l’accès payant par micropaiement (qui serait d’environ 1 cent pour 20 pages consultées) n’est pour l’instant pas encore mis en place, et l’accès gratuit sans publicité, est réservé aux membres actif(ve)s du forum. En attendant, si vous souhaitez poursuivre votre visite chez nous, vous pouvez ajouter le site à votre liste blanche, ou encore mieux, désactiver le bloqueur partout. Pour ajouter le site à votre liste blanche, pour Firefox (similaire pour les autres navigateurs), rendez‑vous en bas à gauche de la fenêtre de votre navigateur, et cliquez sur le menu comme dans l’exemple de l’image ci‑dessous, puis rechargez la page, en appuyant sur F5.

Programmer un plugin LFO avec table d'ondes variées.
Auteur Message
Beau Parleur
Beau Parleur
Avatar de l’utilisateur
  • Genre : Télétubbie
  • Messages : 320
Sam 27 Jan 2018 16:54
Message Programmer un plugin LFO avec table d'ondes variées.
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.
Profil
Administrateur
Avatar de l’utilisateur
  • Genre : Télétubbie
  • Messages : 17839
Mer 31 Jan 2018 10:50
Message Re: Programmer un plugin LFO avec table d'ondes variées.
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
X = (T mod P) / P
if X < 0.5 then Y = +1 else Y = -1


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
X = (T mod P) / P
Y = (0.5 - X) * 2


P, F, T et Y ont la même signification que précédemment.

Image
Hibou57

« La perversion de la cité commence par la fraude des mots » [Platon]
Profil Site Internet
Beau Parleur
Beau Parleur
Avatar de l’utilisateur
  • Genre : Télétubbie
  • Messages : 320
Mer 31 Jan 2018 14:46
Message Re: Programmer un plugin LFO avec table d'ondes variées.
Merci beaucoup Hibou.

Tu ne fais pas mention de la fonction pour le Triangle, est-ce volontaire ?
Profil
Administrateur
Avatar de l’utilisateur
  • Genre : Télétubbie
  • Messages : 17839
Mer 31 Jan 2018 18:54
Message Re: Programmer un plugin LFO avec table d'ondes variées.
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.

Image
Hibou57

« La perversion de la cité commence par la fraude des mots » [Platon]
Profil Site Internet
Beau Parleur
Beau Parleur
Avatar de l’utilisateur
  • Genre : Télétubbie
  • Messages : 320
Jeu 1 Fév 2018 10:54
Message Re: Programmer un plugin LFO avec table d'ondes variées.
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.
Profil