From 25055fed7036af08edb219bc68611d7304fd80b6 Mon Sep 17 00:00:00 2001 From: tth Date: Sat, 23 Oct 2021 14:25:18 +0200 Subject: [PATCH] =?UTF-8?q?on=20avance=20pas=20=C3=A0=20pas...?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- chap/MIDI.tex | 3 ++- chap/Maths.tex | 20 ++++++++++++++++ chap/Perl.tex | 7 ++++-- chap/cd-dvd.tex | 12 +++++++++- chap/modular.tex | 59 ++++++++++++++++++++++++++++++++++++++++++---- chap/musique.tex | 17 ++++++++++++- code/bipfilter.ck | 11 +++++---- code/bipvibrato.ck | 7 ++---- code/midibeep.ck | 16 +++++++++++++ main.tex | 3 ++- 10 files changed, 135 insertions(+), 20 deletions(-) create mode 100644 chap/Maths.tex create mode 100644 code/midibeep.ck diff --git a/chap/MIDI.tex b/chap/MIDI.tex index 9ebd90a..91de61b 100644 --- a/chap/MIDI.tex +++ b/chap/MIDI.tex @@ -28,9 +28,10 @@ Un exemple de message basique, c'est celui-ci, exprimé en hexadécimal\index{hexa.} : \texttt{93 5B 3A} un message qui va déclencher, sur le canal 3, 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. +% --------------------------------------------------------- % --------------------------------------------------------- diff --git a/chap/Maths.tex b/chap/Maths.tex new file mode 100644 index 0000000..4f13304 --- /dev/null +++ b/chap/Maths.tex @@ -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. + + + + + diff --git a/chap/Perl.tex b/chap/Perl.tex index ba64fa4..a87c66b 100644 --- a/chap/Perl.tex +++ b/chap/Perl.tex @@ -53,12 +53,15 @@ la ligne de commande feront l'affaire. \section{Gestion des modules} \index{CPAN} - - % ------------------------------------------------------ \section{Le \texttt{http}} +Scrapping de la patate en vue ! + +https://al.smeuh.org/cgi-bin/express.pritz + +% ------------------------------------------------------ \section{RFC 8589} diff --git a/chap/cd-dvd.tex b/chap/cd-dvd.tex index af5cb68..d846c2e 100644 --- a/chap/cd-dvd.tex +++ b/chap/cd-dvd.tex @@ -15,10 +15,20 @@ en explorer quelques uns. \subsection {Riping} 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} +\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} diff --git a/chap/modular.tex b/chap/modular.tex index c5b3bfe..3e75210 100644 --- a/chap/modular.tex +++ b/chap/modular.tex @@ -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 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} 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 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 +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 @@ -83,7 +108,9 @@ l'autonomie de votre LFO matériel. \lstinputlisting{code/bipvibrato.ck} -Spork !! +Et nous retrouvons la notion de fonction. + +% ------------------------------------------------------ \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 : attack time et rate, decay time et rate, release time et rate et sustain level pour finir. +% ------------------------------------------------------ \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} 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} diff --git a/chap/musique.tex b/chap/musique.tex index db869b5..b6d115f 100644 --- a/chap/musique.tex +++ b/chap/musique.tex @@ -16,7 +16,22 @@ déroutante. 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 -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. %------------------------------------------------------------------ diff --git a/code/bipfilter.ck b/code/bipfilter.ck index cd5c32a..3fb54b8 100644 --- a/code/bipfilter.ck +++ b/code/bipfilter.ck @@ -9,8 +9,9 @@ SqrOsc s => BPF f => Envelope e => dac; 2 => f.Q; 1337 => f.freq; -//--- hop encore un beep ! -e.keyOn(); -2::second => now; -e.keyOff(); -1::second => now; +fun void beep() { +e.keyOn(); 2::second => now; +e.keyOff(); 1::second => now; +} + + () => beep; diff --git a/code/bipvibrato.ck b/code/bipvibrato.ck index e765055..fbac9d3 100644 --- a/code/bipvibrato.ck +++ b/code/bipvibrato.ck @@ -7,8 +7,5 @@ SqrOsc s => BPF f => Envelope e => dac; 2 => f.Q; 1337 => f.freq; -//--- hop encore un beep ! -e.keyOn(); -2::second => now; -e.keyOff(); -1::second => now; + () => beep; + diff --git a/code/midibeep.ck b/code/midibeep.ck new file mode 100644 index 0000000..ae3e249 --- /dev/null +++ b/code/midibeep.ck @@ -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 >>>; + } + } + diff --git a/main.tex b/main.tex index dec2b00..7f803d2 100644 --- a/main.tex +++ b/main.tex @@ -95,7 +95,6 @@ en ligne sur le site du Tetalab. Your mileage may vary\dots % \input{chap/boot} \input{chap/shell} % \input{chap/editeurs} -\input{chap/manpages} \input{chap/C} \input{chap/son} @@ -124,6 +123,7 @@ en ligne sur le site du Tetalab. Your mileage may vary\dots \input{chap/dino} \input{chap/cd-dvd} \input{chap/textes} +\input{chap/Maths} % \input{chap/MINITEL} % \input{chap/Raspberry} \input{chap/Fedora} @@ -131,6 +131,7 @@ en ligne sur le site du Tetalab. Your mileage may vary\dots \input{chap/threads} \input{chap/IPC} \input{chap/dosbox} +\input{chap/manpages} \input{chap/grub} \input{chap/photos} \input{chap/plugins}