on avance pas à pas...
This commit is contained in:
parent
3e2fb4a408
commit
25055fed70
@ -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
20
chap/Maths.tex
Normal 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.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -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}
|
||||||
|
|
||||||
|
@ -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}
|
||||||
|
@ -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}
|
||||||
|
|
||||||
|
@ -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.
|
||||||
|
|
||||||
%------------------------------------------------------------------
|
%------------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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
16
code/midibeep.ck
Normal 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 >>>;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
3
main.tex
3
main.tex
@ -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}
|
||||||
|
Loading…
Reference in New Issue
Block a user