<< Menu Principal >>
Session 1 : la base
Points importants
import("stdfaust.lib");
process = os.osc(440);
- Notez que la ligne
import("stdfaust.lib");
est nécessaire pour pouvoir appeler os.osc
.
- Code d’un oscillateur avec fréquence dynamique :
import("stdfaust.lib");
freq = hslider("freq",440,50,1000,0.01);
process = os.osc(freq);
- La forme d’onde produite par ce programme peut être visualisée en cliquant sur le bouton “Plot First Samples” et en ouvrant l’onglet “Plot” :
![](img/sine.jpg)
- La liste des échantillons (valeurs) produits par ce programme peut être visualisée en cliquant sur “oscilloscope” en haut à gauche de la fenêtre de la forme d’onde jusqu’à arriver à la vue “data” :
![](img/sine_data.jpg)
- Un signal numérique (liste de valeurs) comme celui présenté dans la figure précédente peut être noté mathématiquement x(n).
- Ces valeurs sont envoyées directement par l’ordinateur à la carte son/interface audio dont le rôle est de les “transformer” en un signal analogique.
- La fréquence d’échantillonnage correspond au nombre de valeurs (échantillons) par seconde. Elle est notée mathématiquement avec fs.
- La fréquence la plus haute pouvant être échantillonnée est appelée fréquence de Nyquist et correspond à fs/2.
- La gamme standard d’un signal numérique est -1.0 / +1.0. Si la valeur des échantillons va au-delà de cette gamme, le son produit sera “clippé”.
- La ligne :
process = os.osc(freq);
du code précédent peut être changée pour générer d’autres formes d’ondes :
process = os.triangle(freq); // onde triangle
process = os.square(freq); // onde carrée
process = os.sawtooth(freq); // onde en dent de scie
process = no.noise; // bruit blanc
- Chaque forme d’onde produit un son différent et a un contenu harmonique spécifique qui peut être visualisé avec le spectroscope dans le fenêtre de droite de l’éditeur :
![](img/spectro.jpg)
- Ajouter des signaux revient à les mixers :
process = os.sawtooth(500) + os.triangle(400);
- Ici on mixe donc une onde en dent de scie et une onde triangle.
- Soustraire des signaux revient à les mixer avec une inversion de phase :
process = os.sawtooth(500) - os.triangle(400);
- Lorsque des signaux sont ajoutés, il est possible que le signal produit clippe (oui oui, 1 + 1 = 2…).
- Multiplier ou diviser un signal par une constante revient à changer son gain :
process = os.sawtooth(500)*0.5;
- Définir les paramètres
freq
, gain
et gate
dans un code Faust permet de le contrôler avec un clavier MIDI polyphonique :
import("stdfaust.lib");
freq = hslider("freq",440,50,1000,0.01);
gain = hslider("gain",1,0,1,0.01);
gate = button("gate");
process = os.sawtooth(freq)*gain*gate;
- Pour que cela fonctionne dans l’éditeur web, il est nécessaire d’activer le mode “Activate MIDI polyphonic mode”.
Devoir
- Ce devoir doit être envoyé par e-mail avant le 3/10/2018 (9h) à l’adresse suivante : michon_at_grame_point_fr.
- Envoyez les réponses aux problèmes 1 et 2 directement dans le corp de votre e-mail.
- N’oubliez pas de mettre le code du projet en pièce jointe et d’inclure le lien vers votre vidéo de démo.
- Vous n’êtes pas seul ! N’hésitez pas à poser vos questions par mail si vous êtes coincé.
Problème 1 : Ajouter deux signaux (3 points)
Les quatre premiers échantillons des signaux x0(n) et x1(n) sont définis tel que :
x0(n) = {0.432, 0.547, − 0.892, − 0.795}
x1(n) = { − 0.544, − 0.341, − 0.690, 0.211}
On définit : y(n) = x0(n) + x1(n).
Calculez la valeur des quatre premiers échantillons de y(n).
Problème 2 : Changer le gain d’un signal (2 points)
Les quatre premiers échantillons du signal x(n) sont définis tel que :
x(n) = {0.432, 0.547, − 0.892, − 0.795} (donc x(n) = x0(n) : oui oui, moi aussi je suis un peu fainéant… ;) )
On souhaite diminuer le gain de x(n) de moitié, on définit donc :
$$
y(n) = \frac{x(n)}{2}
$$
Calculez la valeur des quatre premiers échantillons de y(n) ?
Problème 3 : Taux d’échantillonnage (1 point)
Le signal x(n) a un taux d’échantillonnage de fs = 96KHz. Quelle est la fréquence de Nyquist de ce signal ?
Projet (14 points)
- Concevez un instrument de musique en Faust contrôlable dans l’éditeur en ligne avec un clavier MIDI.
- Cet instrument doit être composé d’au moins deux générateurs de son (ex. oscillateur ou bruit blanc).
- Soyez créatif et n’hésitez pas à essayer de brancher les choses entre elles. Par exemple, un oscillateur pourrait en contrôler un autre :
import("stdfaust.lib");
process = os.sawtooth(440 + os.osc(10)*100);
- Essayez de réfléchir à comment votre instrument peut s’intégrer dans votre pratique musicale personnelle.
- Quand votre instrument est prêt, faites une courte vidéo de demonstration (téléphones portables OK). Celle-ci peut être une simple documentation, vous en train de faire un bœuf avec votre nouvel instrument préféré, etc. : c’est vous qui voyez.
- Postez cette vidéo en ligne (ex. YouTube).
- Envoyez-moi le lien vers la vidéo ainsi que le code Faust de votre instrument : michon_at_grame_point_fr.
- Et surtout, faites vous plaisir !