131 lines
4.4 KiB
TeX
131 lines
4.4 KiB
TeX
\chapter{Modulaires}
|
|
\label{chap:modular}
|
|
|
|
Comment définir un synthétiseur modulaire en quelques mots ?
|
|
Disons que c'est un synthé dont chaque composant élémntaire
|
|
est indépendant, et interconnectable aux autres par un gros
|
|
plat de cables sans parmesan.
|
|
|
|
Un univers intrigant et infini.
|
|
|
|
% ======================================================
|
|
\section{Chuck} \index{Chuck}
|
|
|
|
Chuck peut être vu comme un équivalent logiciel à ce système
|
|
de cablage. Nous avons sour la main des modules, que nous allons
|
|
raccorder et paramétrer grace à l'opérateur \texttt{=>}.
|
|
Le module \texttt{dac} correspond à la sortie audio de votre
|
|
machine.
|
|
Voici donc un premier exemple, sans la moindre prétention
|
|
musicale~:
|
|
|
|
\lstinputlisting{code/beep.ck}
|
|
|
|
Félicitation, vous venez de coder un diapason rudimentaire.
|
|
La première ligne connecte un oscillateur sinusoïdal
|
|
directement sur la sortie audio, les deux suivantes
|
|
règlent le volume et la hauteur du signal généré, et la
|
|
dernière demande d'attendre deux secondes avant d'arreter.
|
|
|
|
Mais je suis bien d'accord avec vous, ce son est un peu
|
|
agressif, surtout dans l'attaque. Hop, nous allons brancher
|
|
un nouveau module entre le générateur et la sortie~:
|
|
un contrôleur d'enveloppe qui atténuera la brutalité de
|
|
l'attaque et la violence de la fin du son.
|
|
|
|
|
|
\lstinputlisting{code/bipenv.ck}
|
|
|
|
C'est déja mieux \textit{:)} Détaillons les quatre dernières
|
|
ligne de ce script~: deux nous sont déja connues, celles où
|
|
l'on met une \textsl{duration} dans le \texttt{now} afin
|
|
d'attendre un certain temps. quand aux deux autres
|
|
(qui sont des appels de méthode, reconnaissables à la
|
|
paire de parenthèses qui les terminent)
|
|
elles déclenchent le debut et la fin du contrôleur
|
|
d'enveloppe.
|
|
|
|
Quand on actionne le \texttt{keyOn}, le processeur d'enveloppe
|
|
commence avc un gain à 0 et monte progressivement au gain
|
|
maximal dans le temps réglé au préalable dans
|
|
\texttt{e.duration}. De la même façon, \texttt{keyOff}
|
|
fait redescendre le volume à 0 à la fin du beep sur
|
|
la même durée, et pour entendre cette partie finale , il nous
|
|
faut attendre un peu, d'où la dernière ligne.
|
|
|
|
\subsection{Les filtres}
|
|
|
|
Le son que nous avons utilisé dans les précédents exemples
|
|
est une sinusoïde, un son « pur » que l'on peut qualifier
|
|
sans crainte de légèrement pauvre. Nous allons régler ça.
|
|
|
|
Vous pouvez déja essayer de remplacer le sinus par une onde
|
|
carrée, un \texttt{SqrOsc}, bien remplie d'harmoniques.
|
|
C'est ce que nous allons faire, mais nous allons aussi rajouter
|
|
un filtre passe-bande pour moduler la couleur du son.
|
|
|
|
\lstinputlisting{code/bipfilter.ck}
|
|
|
|
Puisque la fréquence de notre \textit{beep} est calée à
|
|
440 Hz, nous allonc chercher les harmoniques supérieures
|
|
vers 1337 Hz, avec une largeur de bande assez grande.
|
|
Et nous obtenons un son bien plus brillant, mais encore
|
|
un peu inerte. Prochaine étape, brancher un LFO sur
|
|
ce filtre\dots
|
|
|
|
\subsection{Beep à vibrato}
|
|
|
|
Les choses vont un peu se corser, avec la notion de
|
|
\textsl{multi thread}. Un grand mot pour une chose
|
|
(relativement) simple. En fait, une partie du script
|
|
va s'exécuter indépendament du reste, un peu comme
|
|
l'autonomie de votre LFO matériel.
|
|
|
|
\lstinputlisting{code/bipvibrato.ck}
|
|
|
|
Spork !!
|
|
|
|
\subsection{Attack Decay Sustain Release} \index{ADSR}
|
|
|
|
Un module d'enveloppe bien plus élaboré, fidèle aux canons
|
|
de l'époque. Son utilisation est semblable à \texttt{Envelope} que nous
|
|
avons vu plus haut, ce qui nous donne ce patch~:
|
|
|
|
\begin{verbatim}
|
|
SqrOsc s => BPF f => ADSR adsr => dac;
|
|
\end{verbatim}
|
|
|
|
Point suivant : configurer notre ADSR. Il y a bien plus de potards
|
|
que dans l'exemple précédent :
|
|
attack time et rate, decay time et rate, release time et rate et
|
|
sustain level pour finir.
|
|
|
|
\subsection{Jouer des samples}
|
|
|
|
Oui, on peut.
|
|
|
|
\subsection{Communication OSC} \index{OSC} \label{chuck-osc}
|
|
|
|
OSC, Open Sound Control, a son chapitre dédié en page \pageref{chap:OSC}.
|
|
Nous allons nouc concentrer sur les aspects Chuck.
|
|
|
|
\subsection{Aller plus loin}
|
|
|
|
Et pour la suite, allez onsulter
|
|
http://chuck.cs.princeton.edu/ et http://chuck.stanford.edu/
|
|
pour tout savoir. La rubrique des exemples est très
|
|
instructive.
|
|
|
|
% ======================================================
|
|
\section{Super Collider}
|
|
|
|
Là, nous rentrons dans le domaine de la jeune Nina, je vais
|
|
donc lui,laisser la plume (ou le clavier).
|
|
|
|
% ======================================================
|
|
|
|
\section{CSound} \index{Csound}
|
|
|
|
|
|
% ======================================================
|