Browse Source

more blabla again

master
tth 10 months ago
parent
commit
b0a682c849
  1. 8
      chap/DNS.tex
  2. 32
      chap/MIDI.tex
  3. 17
      chap/boot.tex
  4. 7
      chap/graphisme.tex
  5. 17
      chap/modular.tex
  6. 11
      chap/reseau.tex
  7. 2
      code/midibeep.ck
  8. 14
      code/playsample.ck

8
chap/DNS.tex

@ -105,7 +105,7 @@ En utilisant les mêmes fonctions qu'une application basique. @@ -105,7 +105,7 @@ En utilisant les mêmes fonctions qu'une application basique.
Peut-être aussi en lui trouvant un nom plus \textsl{fun}\dots
% ------------------------------------------------------------
\section{DHCP} \index{DHCP}
\section{DHCP} \index{DHCP} \index{dhcpd}
\begin{quote}
The DHCP protocol allows a host to contact a central server which maintains a
@ -120,6 +120,12 @@ Probablement avec \texttt{tcpdump}\index{tcpdump}, @@ -120,6 +120,12 @@ Probablement avec \texttt{tcpdump}\index{tcpdump},
et c'est à l'essai
dans la page \pageref{tcpdump}.
Un compagnon privilégié du DHCP est le système PXE\index{PXE}
qui permet de \textsl{booter} des images ISOs stockées sur
un serveur du réseau local.
% https://www.geoffray-levasseur.org/tutoriels-2/un-pxe-pour-les-unir-tous/
% ------------------------------------------------------------
\section{dnsmasq}
\index{dnsmasq}

32
chap/MIDI.tex

@ -37,6 +37,9 @@ qui va générer le signal audio. @@ -37,6 +37,9 @@ qui va générer le signal audio.
% ---------------------------------------------------------
\section{Outils de base}
Le sous-système ALSA vient avec quelques utiltaires bien pratique
dans un usage d'exploration.
\subsection{aseqdump}
\index{aseqdump}
@ -51,8 +54,32 @@ tth@plop:~/Muzak/Samples$ aseqdump -l @@ -51,8 +54,32 @@ tth@plop:~/Muzak/Samples$ aseqdump -l
0:0 System Timer
0:1 System Announce
14:0 Midi Through Midi Through Port-0
20:0 nanoKONTROL nanoKONTROL MIDI 1
\end{verbatim}
Voici ce qu'on obtient quand on remue les boutons d'un
nanoKontrol de Korg, et voyez bien qu'on retrouve les
trois octets dont on causait l'autre jour. Le premier
contient à la fois le numéro ce canal et le type d'évènement,
le second le numéro du contrôle concerné, et le troisième
la nouvelle valeur~:
\begin{verbatim}
tth@fubar:~/Documents/TetaTricks$ aseqdump -p 20
Waiting for data. Press Ctrl+C to end.
Source Event Ch Data
20:0 Control change 1, controller 45, value 127
20:0 Control change 1, controller 45, value 0
20:0 Control change 1, controller 14, value 120
20:0 Control change 1, controller 14, value 119
\end{verbatim}
Un exemple d'utilisation d'un nanoKontrol pour piloter Chuck
se trouve (peut-être) aux alentours de la
page \pageref{chuck-midi}.
% -------------------------
\subsection{aconnect}
Maintenant que nous savons ce qui rentre dans notre machine,
@ -67,6 +94,11 @@ aseqnet is an ALSA sequencer client which sends and receives @@ -67,6 +94,11 @@ aseqnet is an ALSA sequencer client which sends and receives
event packets over the network.
\end{quote}
\subsection{pmidi}
Jouer un fichier MIDI (aka \textsl{midifile}) au travers du
séquenceur ALSA.
% ---------------------------------------------------------
\section{ALSA tips}
\index{ALSA}

17
chap/boot.tex

@ -25,6 +25,22 @@ a voulu BigBlue\index{IBM}, régnait en maitre absolu le BIOS, @@ -25,6 +25,22 @@ a voulu BigBlue\index{IBM}, régnait en maitre absolu le BIOS,
Un bout de code minimaliste, bien rangé dans sa ROM, et disponible
dès la mise sous tension du bouzin.
% =========================================================
\section{PXE} \index{PXE} \label{PXE}
PXE est le sigle de \textsl{Pre-boot eXecution Environment}.
En gros, ça permet de démarrer un système stocké ailleur sur
le réseau, comme une image d'installation d'un Linux ou un
système de secours. Ce qui est vraiment pratique, car ça
évite la valse des clefs USB. Il nécessite la présence
d'un serveur dhcpd \index{dhcpd}.
% https://www.geoffray-levasseur.org/tutoriels-2/un-pxe-pour-les-unir-tous/
% =========================================================
\section{amd64}\index{amd64}
Voir Grub, le bootloader.
@ -35,7 +51,6 @@ XXX\index{XXX}. @@ -35,7 +51,6 @@ XXX\index{XXX}.
\section{rc.local}
L'exécution de ce script est la toute dernière étape du démarrage d'un
système de la famille Unix\index{Unix} avant le passage au
mode multi-utilisateur.

7
chap/graphisme.tex

@ -35,6 +35,13 @@ cryptiques pour moi. Donc, on y arrive. @@ -35,6 +35,13 @@ cryptiques pour moi. Donc, on y arrive.
\end{center}
\end{figure}
Ceci dit, une lecture attentive du code source\footnote{UTSL} permettra
de contourner ces petits désagréments, et de rédiger quelques exemples
d'utilisation amusants.
% package source
% http://deb.debian.org/debian/pool/main/w/wims/wims_4.17b+svn13454~dfsg1.orig.tar.gz
%====================================================================
\section{Povray}\index{POVray}

17
chap/modular.tex

@ -131,6 +131,14 @@ sustain level pour finir. @@ -131,6 +131,14 @@ sustain level pour finir.
\subsection{Jouer des samples}
Oui, on peut. On peut même faire des choses assez fun.
Juste un example un peu brouillon et qui manque de rigueur
en attendant mieux :
\lstinputlisting{code/playsample.ck}
Et j'entend un esprit chagrin râler au fond de la salle :
« oué, nous on veut du gros son ». Patience, nous allons
d'abord voir les briques avant de construire le mur.
% ------------------------------------------------------
@ -142,9 +150,15 @@ Attention, une petite connaissance du protocole MIDI @@ -142,9 +150,15 @@ Attention, une petite connaissance du protocole MIDI
est nécessaire. Vous trouverez quelques explications
page \pageref{chap:MIDI}.
\lstinputlisting{code/midibeep.ck}
Le petit bout de code qui suit vous affiche les triplets
reçus en charabia numérique. Leur décriptage est laissé
en exercice à nos lecteurs.
\lstinputlisting{code/midibeep.ck}
Cet exemple est volontairement simple, voire même minimaliste,
afin de ne pas surcharger cet ouvrage. Mais je vous rappelle
que les exemples sur le site sont très instructifs.
% ------------------------------------------------------
@ -152,6 +166,7 @@ page \pageref{chap:MIDI}. @@ -152,6 +166,7 @@ page \pageref{chap:MIDI}.
OSC, Open Sound Control, a son chapitre dédié en page \pageref{chap:OSC}.
Nous allons nous concentrer sur les aspects Chuck.
J'ai bien une idée d'exemple, mais ce soir, c'est soirée "flemme".
% ------------------------------------------------------

11
chap/reseau.tex

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
\chapter{Les intertubes}
\chapter{Les Intertubes}
\label{chap:reseau} \index{Internet}
Ah, le grand Internet sauvage, il serait temps qu'on en parle un peu.
@ -176,6 +176,10 @@ Ces gadgets dialoguent entre eux par le protocole @@ -176,6 +176,10 @@ Ces gadgets dialoguent entre eux par le protocole
\footnote{C'est en page \pageref{chap:Bonjour} qu'on
en parle vaguement}.
Mais en fait, non. Je n'ai plus les Minimad sous la main.
Il va falloir trouver un autre exemple, ou l'imaginer
nous-même.
% -------------------------------------------------------------
\subsection{nmap}
@ -196,6 +200,10 @@ Comment scanner un /24 pour y découvrir les machines ? @@ -196,6 +200,10 @@ Comment scanner un /24 pour y découvrir les machines ?
\section{netcat}
\index{netcat}
\textbf{Attention :} Il existe au moins deux variantes de netcat
en circulation, bien entendu avec des options et des
comportements différents.
\begin{quote}
The nc (or netcat) utility is used for just about anything under the sun
involving TCP or UDP. It can open TCP connections, send UDP packets,
@ -207,6 +215,7 @@ error messages onto standard error instead of sending them to standard @@ -207,6 +215,7 @@ error messages onto standard error instead of sending them to standard
output, as telnet(1) does with some.
\end{quote}
Netcat was written by a guy we know as the Hobbit <hobbit@avian.org>.
% ==============================================================

2
code/midibeep.ck

@ -7,7 +7,7 @@ if (!input.open(port)) { @@ -7,7 +7,7 @@ if (!input.open(port)) {
<<< "erreur open MIDI" >>>; me.exit();
}
while (1) {
while (1) {
input => now;
while ( input.recv(msg) ) {
<<< msg.data1, msg.data2, msg.data3 >>>;

14
code/playsample.ck

@ -0,0 +1,14 @@ @@ -0,0 +1,14 @@
SndBuf buf => dac;
"sample.wav" => buf.read;
float srate, duration;
1 => buf.gain;
for ( 0.7=>srate; srate<1.8; 0.1 +=> srate) {
900 / srate => duration;
<<< "loop...", srate, duration >>>;
0 => buf.pos;
srate => buf.rate;
(duration)::ms => now;
}
Loading…
Cancel
Save