on avance pas à pas...

This commit is contained in:
tth 2021-10-23 14:25:18 +02:00
parent 3e2fb4a408
commit 25055fed70
10 changed files with 135 additions and 20 deletions

View File

@ -28,9 +28,10 @@ Un exemple de message basique, c'est celui-ci, exprimé en
hexadécimal\index{hexa.} : hexadécimal\index{hexa.} :
\texttt{93 5B 3A} un message qui va déclencher, sur le canal 3, \texttt{93 5B 3A} un message qui va déclencher, sur le canal 3,
la note \textsf{Sol5}, à la note \textsf{Sol5}, à
un niveau assez bas. Et c'est l'instrument à l'autre bout di fil un niveau assez bas. Et c'est l'instrument à l'autre bout du fil
qui va générer le signal audio. qui va générer le signal audio.
% ---------------------------------------------------------
% --------------------------------------------------------- % ---------------------------------------------------------

20
chap/Maths.tex Normal file
View File

@ -0,0 +1,20 @@
\chapter{Maths}
\label{chap:Maths}
Les mathématiques sont un outil indispensable dans la vie de tous
les jours, même si on ne s'en rend pas forcément compte.
Je ne vais pas vous faire un cours complet, j'en suis bien
incapable. Je vous conseille plutôt de demander ça à
monsieur schmod777, bien plus qualifié que moi.
Je vais me contenter (et c'est un peu l'esprit de cet ouvrage)
de répertorier les petites choses qui rendent la vie plus facile.
Nous verrons des \textit{tips} de géométrie que vous utiliserez
avec profit dans vos codes Povray, par exemple.
Je songe ensuite aborder certains aspects de la théorie du
signal, dans le but pratique de brotcher du son.

View File

@ -53,12 +53,15 @@ la ligne de commande feront l'affaire.
\section{Gestion des modules} \index{CPAN} \section{Gestion des modules} \index{CPAN}
% ------------------------------------------------------ % ------------------------------------------------------
\section{Le \texttt{http}} \section{Le \texttt{http}}
Scrapping de la patate en vue !
https://al.smeuh.org/cgi-bin/express.pritz
% ------------------------------------------------------
\section{RFC 8589} \section{RFC 8589}

View File

@ -15,10 +15,20 @@ en explorer quelques uns.
\subsection {Riping} \subsection {Riping}
Le \textsl{ripage} est l'action d'extraire les pistes d'un Le \textsl{ripage} est l'action d'extraire les pistes d'un
ce audion pour les convertir en fichier numérique audio. cd audio pour les convertir en fichier numérique audio.
Un des outils utilisés est \texttt{cdparanoia}. Les nombreuses
options décrites dans la manpage montrent à quel point ce logiciel
est complet et compliqué.
\subsection {Mastering} \subsection {Mastering}
\begin{quote}
The Disc Description Protocol (DDP) is used by disc manufacturers as input
format for their glass mastering process, and thus is the format of choice
used by mastering engineers when sending out audio CD masters for replication.
\end{quote}
% -------------------------------------------------------- % --------------------------------------------------------
\section{DVD} \section{DVD}

View File

@ -53,6 +53,27 @@ fait redescendre le volume à 0 à la fin du beep sur
la même durée, et pour entendre cette partie finale , il nous la même durée, et pour entendre cette partie finale , il nous
faut attendre un peu, d'où la dernière ligne. faut attendre un peu, d'où la dernière ligne.
Et avant de passer à la suite, voyons un peu le coté plus
« informatique » de Chuck. La séquence d'instruction finale
de l'exemple précédent peut être vu comme un bloc unique,
puisque il n'a qu'une seule finalité~:
générer le beep\index{beep}.
Et pour ça, nous allons les regrouper dans une \textbf{fonction}
que voici que voilà :
\begin{verbatim}
fun void beep() {
e.keyOn(); 2::second => now;
e.keyOff(); 1::second => now;
}
\end{verbatim}
Pour l'utilisation de cette fonction, c'est dans la partie suivante.
Bienvenue dans le monde merveilleux des lignes de code.
% ------------------------------------------------------
\subsection{Les filtres} \subsection{Les filtres}
Le son que nous avons utilisé dans les précédents exemples Le son que nous avons utilisé dans les précédents exemples
@ -70,9 +91,13 @@ Puisque la fréquence de notre \textit{beep} est calée à
440 Hz, nous allonc chercher les harmoniques supérieures 440 Hz, nous allonc chercher les harmoniques supérieures
vers 1337 Hz, avec une largeur de bande assez grande. vers 1337 Hz, avec une largeur de bande assez grande.
Et nous obtenons un son bien plus brillant, mais encore Et nous obtenons un son bien plus brillant, mais encore
un peu inerte. Prochaine étape, brancher un LFO sur un peu inerte.
Prochaine étape, brancher un LFO sur
ce filtre\dots ce filtre\dots
% ------------------------------------------------------
\subsection{Beep à vibrato} \subsection{Beep à vibrato}
Les choses vont un peu se corser, avec la notion de Les choses vont un peu se corser, avec la notion de
@ -83,7 +108,9 @@ l'autonomie de votre LFO matériel.
\lstinputlisting{code/bipvibrato.ck} \lstinputlisting{code/bipvibrato.ck}
Spork !! Et nous retrouvons la notion de fonction.
% ------------------------------------------------------
\subsection{Attack Decay Sustain Release} \index{ADSR} \subsection{Attack Decay Sustain Release} \index{ADSR}
@ -99,15 +126,39 @@ Point suivant : configurer notre ADSR. Il y a bien plus de potards
que dans l'exemple précédent : que dans l'exemple précédent :
attack time et rate, decay time et rate, release time et rate et attack time et rate, decay time et rate, release time et rate et
sustain level pour finir. sustain level pour finir.
% ------------------------------------------------------
\subsection{Jouer des samples} \subsection{Jouer des samples}
Oui, on peut. Oui, on peut. On peut même faire des choses assez fun.
% ------------------------------------------------------
\subsection{Dialoguer en MIDI} \index{MIDI} \label{chuck-midi}
Oui, on peut. Et nous allons faire des \textsf{beep} à
partir d'un clavier ou du séquenceur d'une electribe.
Attention, une petite connaissance du protocole MIDI
est nécessaire. Vous trouverez quelques explications
page \pageref{chap:MIDI}.
\lstinputlisting{code/midibeep.ck}
% ------------------------------------------------------
\subsection{Communication OSC} \index{OSC} \label{chuck-osc} \subsection{Communication OSC} \index{OSC} \label{chuck-osc}
OSC, Open Sound Control, a son chapitre dédié en page \pageref{chap:OSC}. OSC, Open Sound Control, a son chapitre dédié en page \pageref{chap:OSC}.
Nous allons nouc concentrer sur les aspects Chuck. Nous allons nous concentrer sur les aspects Chuck.
% ------------------------------------------------------
\subsection{Enregistrer}
Il est aussi possible de générer des fichiers .WAV à partir
d'un script Chuck.
\subsection{Aller plus loin} \subsection{Aller plus loin}

View File

@ -16,7 +16,22 @@ déroutante.
Les fichiers de configuration sont stockés dans le répertoire Les fichiers de configuration sont stockés dans le répertoire
\texttt{\$HOME/.moc/} et on y trouve la config en elle-même, et \texttt{\$HOME/.moc/} et on y trouve la config en elle-même, et
les thêmes\footnote{Très importants, les thêmes de mocp :)} les thêmes\footnote{Très importants, les thêmes de mocp :)}.
Un exemple très complet (.../doc/moc/examples/config.example)
est fourni. Les commentaires vous expliquerons bien tout.
Voici un petit extrait de la configuration que j'utilise~:
\begin{verbatim}
# enchainement des morceaux.
Repeat = yes
Shuffle = yes
AutoNext = yes
Theme = moca_theme
\end{verbatim}
Pout un usage de base, c'est bien suffisant, mais il y a des
options avancées qui permettent de faire bien d'autres choses.
%------------------------------------------------------------------ %------------------------------------------------------------------

View File

@ -9,8 +9,9 @@ SqrOsc s => BPF f => Envelope e => dac;
2 => f.Q; 2 => f.Q;
1337 => f.freq; 1337 => f.freq;
//--- hop encore un beep ! fun void beep() {
e.keyOn(); e.keyOn(); 2::second => now;
2::second => now; e.keyOff(); 1::second => now;
e.keyOff(); }
1::second => now;
() => beep;

View File

@ -7,8 +7,5 @@ SqrOsc s => BPF f => Envelope e => dac;
2 => f.Q; 2 => f.Q;
1337 => f.freq; 1337 => f.freq;
//--- hop encore un beep ! () => beep;
e.keyOn();
2::second => now;
e.keyOff();
1::second => now;

16
code/midibeep.ck Normal file
View File

@ -0,0 +1,16 @@
MidiIn input;
MidiMsg msg;
1 => int port; // please explain
if (!input.open(port)) {
<<< "erreur open MIDI" >>>; me.exit();
}
while (1) {
input => now;
while ( input.recv(msg) ) {
<<< msg.data1, msg.data2, msg.data3 >>>;
}
}

View File

@ -95,7 +95,6 @@ en ligne sur le site du Tetalab. Your mileage may vary\dots
% \input{chap/boot} % \input{chap/boot}
\input{chap/shell} \input{chap/shell}
% \input{chap/editeurs} % \input{chap/editeurs}
\input{chap/manpages}
\input{chap/C} \input{chap/C}
\input{chap/son} \input{chap/son}
@ -124,6 +123,7 @@ en ligne sur le site du Tetalab. Your mileage may vary\dots
\input{chap/dino} \input{chap/dino}
\input{chap/cd-dvd} \input{chap/cd-dvd}
\input{chap/textes} \input{chap/textes}
\input{chap/Maths}
% \input{chap/MINITEL} % \input{chap/MINITEL}
% \input{chap/Raspberry} % \input{chap/Raspberry}
\input{chap/Fedora} \input{chap/Fedora}
@ -131,6 +131,7 @@ en ligne sur le site du Tetalab. Your mileage may vary\dots
\input{chap/threads} \input{chap/threads}
\input{chap/IPC} \input{chap/IPC}
\input{chap/dosbox} \input{chap/dosbox}
\input{chap/manpages}
\input{chap/grub} \input{chap/grub}
\input{chap/photos} \input{chap/photos}
\input{chap/plugins} \input{chap/plugins}