Skip to content

Latest commit

 

History

History

s10

Séance 10

précédente | suivante

Découverte du framework Juce (02)

La semaine dernière nous avons implémenté un traitement tout simple sous la forme d'un plugin VST avec Juce.
Ce plugin (disponible ici) est un simple plugin à base de LFO qui fait pour l'instant une modulation en anneau dont la fréquence peut être variée grâce à un Slider.

Exercice :

Je vous propose comme exercice de modifier ce plugin en ajoutant d'autres paramètres manipulables graphiquement.

Etape 1 - compilation

Dans un premier temps, téléchargez le code initial du plugin et compilez-le en suivant les instructions fournies dans le fichier readme.md du répertoire JucePlugins.

Vous devriez obtenir une fenêtre comme celle-ci une fois le plugin chargé au sein d'un logiciel hôte (ici Reaper) :

plugin exercice capture step 1 bis

Etape 2 - Ajout d'un paramètre de gain de sortie

Si on prototype le traitement DSP du plugin dans Max, à l'heure actuel cela donne:

plugin exercice capture step 1

Ajoutez un paramètre au plugin pour gérer un gain de sortie général pouvant varier entre 0. et 1. pour produire l'effet suivant :

plugin exercice capture step 2

Dans un premier temps vous pouvez simplement ajouter un paramètre en vous inspirant du paramètre de fréquence déjà implémenté. Néanmoins vous verrez très vite que ça génère des clics au changement de la valeur. Pour remédier à ça, on doit lisser la valeur. Dans Juce on peut se servir de la classe LinearSmoothedValue prévue à cet effet.

Le paramètre de gain se présentera alors non-plus sous la forme d'un simple float mais sera de type juce::LinearSmoothedValue<float> m_gain;

Quand vous voudrez changer la valeur de gain il vous suffira alors d'écrire :

float new_gain_value = 0.6f;
m_gain.setValue(new_gain_value);

Dans la méthode prepareToPlay il faudra ensuite faire appel à la méthode reset de tous les paramètres lissés en spécifiant le vectorsize.

Pour chaque nouveau sample, dans la méthode processBlock du PluginProcessor vous pouvez demander la valeur de gain lissée en écrivant :

void AmplitudeModulationAudioProcessor::processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages)
{
    // [...]

    for(int i = 0; i < buffer.getNumSamples(); ++i)
    {
        float gain = m_gain.getNextValue();

        // [...]
    }
}

Etape 3 - Ajout d'un paramètre de profondeur de tremolo

Vous ajouterez un troisième paramètre qui permette de gérer la profondeur du tremolo comme présenté au sein du patch suivant :

plugin exercice capture step 3

Version finale du plugin :

plugin exercice capture step 3 bis


Quelques liens pour vous aider :