Browse Source

oh, this is a commit !

master
tTh 1 year ago
parent
commit
7722aef9d3
  1. 2
      .gitignore
  2. 6
      chap/DNS.tex
  3. 18
      chap/Fortran.tex
  4. 10
      chap/MIDI.tex
  5. 9
      chap/Perl.tex
  6. 40
      chap/image.tex
  7. 33
      chap/son.tex
  8. 5
      code/ao_example.c
  9. 3
      code/midifile.pl
  10. 6
      main.tex

2
.gitignore vendored

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
log.*
*.png
# *.png
MANIFEST
tarball

6
chap/DNS.tex

@ -75,10 +75,10 @@ des serveurs DNS. Par défaut, il questionne les serveurs @@ -75,10 +75,10 @@ des serveurs DNS. Par défaut, il questionne les serveurs
listés dans \texttt{/etc/resolv.conf}.
Pour résoudre récursivement un nom de domaine à partir de la racine :
\$ dig +trace <nom.de.domaine>
\texttt{\$ dig +trace <nom.de.domaine>}
Pour le reverse d'une adresse IP :
\$ dig +trace -x <adresse.ip>
Pour obtenir le reverse d'une adresse IP :
\texttt{\$ dig +trace -x <adresse.ip>}
% ------------------------------------------------------------
% \subsection{delv}

18
chap/Fortran.tex

@ -0,0 +1,18 @@ @@ -0,0 +1,18 @@
\chapter{Fortran} \label{chap:Fortran} \index{Fortran}
Fortran (\textsc{FORmula TRANslator}) est, avec le Cobol\index{Cobol},
un des premiers langages évolués. Il a été conçu après la seconde
guerre mondiale, en 1954, par
John Warner Backus, ingénieur en radiophonie chez IBM\index{IBM},
\section{F77}
Dernière version à exiger le format '80 colonnes' des cartes perforées,
cette version est aussi (aux yeux de vieux dinos) la plus pure,
à cause d'instructions comme le \textsl{computed goto} ou le
mythique \textsl{comefrom}. Nom officiel : \texttt{ANSI X3.9-1978}.
\section{Et après} \index{gfortran}
Puis ce langage du passé a subi une évolution lente vers quelque
chose de bien plus moderne. Les dinos vont devoir s'adapter.

10
chap/MIDI.tex

@ -106,7 +106,8 @@ Client 128 : "TiMidity" [User] @@ -106,7 +106,8 @@ Client 128 : "TiMidity" [User]
Plutôt que de passer par la couche ALSA, il est aussi possible
d'attaquer directement le \textit{device}, et de blaster soi-même
tous les petits octets directement sur le fil. Voici un petit
exemple en Python\footnote{Oui, je sais, c'est un langage de djeunz,
exemple en
Python\index{Python}\footnote{Oui, je sais, c'est un langage de djeunz,
mais bon, ça fait plaisir à mon gamin}, facilement transposable
dans un langage plus sérieux :
@ -137,7 +138,6 @@ for valeur in range(30,90): @@ -137,7 +138,6 @@ for valeur in range(30,90):
tx.close()
\end{lstlisting}
% ---------------------------------------------------------
\section{Et en Perl ?}
@ -159,6 +159,12 @@ MIDI::Simple (3pm) - procedural/OOP interface for MIDI composition @@ -159,6 +159,12 @@ MIDI::Simple (3pm) - procedural/OOP interface for MIDI composition
MIDI::Track (3pm) - functions and methods for MIDI tracks
\end{verbatim}
Un petit essai, par exemple extraire la valeur du \textsc{bpm}
d'un fichier \texttt{.mid} ?
\lstinputlisting[language=perl]{code/midifile.pl}
Voilà.
% ---------------------------------------------------------

9
chap/Perl.tex

@ -16,11 +16,11 @@ incontesté du Web\index{web} interactif, de par son intégration @@ -16,11 +16,11 @@ incontesté du Web\index{web} interactif, de par son intégration
dans le serveur Apache\index{Apache},
et de modules d'écriture de clients http\index{http}.
Le débutant peut facilement n'utiliser qu'un sous-ensemble du langage,
mais ce serait se priver de quelques \textit{patterns} assez
efficients.
% ------------------------------------------------------
\section{Le texte}
@ -49,6 +49,13 @@ la ligne de commande feront l'affaire. @@ -49,6 +49,13 @@ la ligne de commande feront l'affaire.
\lstinputlisting[language=perl]{code/id2h.pl}
% ------------------------------------------------------
\section{Gestion des modules} \index{CPAN}
% ------------------------------------------------------
\section{Le \texttt{http}}

40
chap/image.tex

@ -16,7 +16,12 @@ de maitre Brunus}, @@ -16,7 +16,12 @@ de maitre Brunus},
l'abondance d'options des outils ImageMagick est vraiment énorme,
et leurs interactions parfois troublantes\dots
\subsection{\texttt{geometry}}
Il y a plusieurs binaires dans le paquet : \texttt{convert} pour
la plupart des traitements,
\texttt{display} et \texttt{animate} pour visualiser des images,
\texttt{identify} pour en lire les méta-données.
\subsection{L'option \texttt{-geometry}}
C'est une notion importante, car elle est utilisée comme paramètre
par beaucoup d'options. C'est avec ça que l'on peut définir des
@ -29,7 +34,7 @@ on va travailler. @@ -29,7 +34,7 @@ on va travailler.
Voici un exemple concret
(tiré du script d'encodage du \textsc{cloître}\index{cloître})
qui montre l'essentiel pour bien débuter. C'est une fonction
écrite en bash\index{bash} qui rajoute un texte sur une image. :
écrite en bash\index{bash} qui rajoute un texte sur une image~:
\lstinputlisting[language=sh]{code/tagpic.sh}
@ -42,15 +47,17 @@ options sont un peu ésotériques et parfois inter-dépendantes\dots @@ -42,15 +47,17 @@ options sont un peu ésotériques et parfois inter-dépendantes\dots
\item{kerning}
\item{colors}
\item{txtopts}
\item{-gravity}
\item{-annotate}
\item{gravity}
\item{annotate}
\end{itemize}
Quastion : comment mettre une couleur de fond à ce texte ?
\subsection{Faire des GIFs animées}\index{GIF}
Ces images clignotantes sont l'essence même du Web\index{web}
moderne depuis 1992, et \texttt{convert} sait très bien les
générer.
Ces petites images clignotantes sont l'essence même du
Web\index{web} moderne depuis 1992 malgré leurs limitations,
et \texttt{convert} sait très bien les générer.
\begin{verbatim}
convert -delay 20 -loop 0 a.png b.png c.png foo.gif
@ -70,17 +77,26 @@ POSITION="+R12+0" @@ -70,17 +77,26 @@ POSITION="+R12+0"
convert -crop ${DIMENSION}${POSITION} +repage $img $dst
\end{verbatim}
\textsl{Use +repage to completely remove/reset the virtual canvas meta-data
from the images.} En gros, on en a besoin quand une opération va
\textsl{Use +repage to completely remove/reset the virtual canvas
meta-data from the images.}
En gros, on en a besoin quand une opération va
changer la dimension de l'image.
\subsection{Ressources}
Le futur livre de Brunus. Réclamez les prmiers drafts dans
l'IRC\index{IRC} \texttt{freenode\#paulla} \textit{:)}
\texttt{http://www.fmwconcepts.com/imagemagick/index.php}
% -------------------------------------------------------------------
\section{Gmic}\index{Gmic}
XXX\index{XXX}
\textsl{Perform generic image processing operations, through the G'MIC
language interpreter. gmic: GREYC's Magic for Image Computing.}
\index{XXX}
Existe aussi en plugin pour Gimp\index{Gimp}.
@ -105,14 +121,14 @@ for ((y=0; y<250; y++)) { @@ -105,14 +121,14 @@ for ((y=0; y<250; y++)) {
\subsection{Questions}
Comment faire un resize ?
Comment faire un \textsl{resize} avec NetPBM ?
% -------------------------------------------------------------------
\section{Portable Network Graphic}\index{PNG}
Voici le problème du soir%
\footnote{\textsl{trollday}Fri Nov 13 00:07:19 CET 2020} :
\footnote{\textsl{trollday} Fri Nov 13 00:07:19 CET 2020} :
j'utilise pour lire ce format de fichier la bibliothèque
\texttt{pnglite} qui a de gros soucis avec beaucoup de
ceux-ci, par exemple ceux qui sont en \texttt{sRGB} crées

33
chap/son.tex

@ -36,16 +36,29 @@ Si vous avez plusieurs cartes son, la sélection du @@ -36,16 +36,29 @@ Si vous avez plusieurs cartes son, la sélection du
l'option \texttt{-l} qui vous donnera la bonne piste,
mais l'option \texttt{-L} qu'il faut utiliser.
\begin{verbatim}
arecord -D plughw:CARD=Snowball,DEV=0 -v -r 22050 foo.wav
\end{verbatim}
\begin{verbatim}
arecord -D plughw:CARD=H4,DEV=0 -v -c 2 -f S16_LE -r 44100 foo.wav
\end{verbatim}
\subsection{Le reste}
Et quand on regarde par la lorgnette du programmeur, on découvre
rapidement que l'utilisation d'ALSA n'est pas si simple que
ça, essentiellement à cause d'une documentation spartiate.
Heurensement, pour certains domaines, il existe des
surcouches plus simple d'emploi : \texttt{libao}\index{libao}
pour les sorties
surcouches plus simple d'emploi :
\texttt{libao}\index{libao} pour les sorties
sonores, XXX\index{XXX} pour le reste.
ALSA apporte aussi les primitives et des utilitaires
de gestion des interfaces MIDI\index{MIDI}. Là aussi,
la doc est sommaire. Quelques explications
sur la page \pageref{chap:MIDI}.
%------------------------------------------------------------------
\section{pulseaudio}
\index{pulseaudio}
@ -55,7 +68,8 @@ On avait pourtant dit « \textbf{pas de trolls} », mais il va quand @@ -55,7 +68,8 @@ On avait pourtant dit « \textbf{pas de trolls} », mais il va quand
même falloir y passer : ce machin prétenduement
\textsl{michu compliant}\index{Michu}
a parfois, voire même souvent, tendance à se mettre en travers
du chemin des honnètes gens.
du chemin des honnètes gens%
\footnote{Du moins vers l'année 2014}.
%------------------------------------------------------------------
\section{Jack}
@ -69,7 +83,8 @@ lui laisser le soin d'en parler. @@ -69,7 +83,8 @@ lui laisser le soin d'en parler.
Jack peut aussi servir de source sonore pour
darkice\index{darkice}, lequel pourra feeder un
Icecast\index{icecast}
serveur de stream comme Icecast\index{icecast}
(cf page \pageref{chap:streaming}).
%------------------------------------------------------------------
@ -79,14 +94,13 @@ Icecast\index{icecast} @@ -79,14 +94,13 @@ Icecast\index{icecast}
\index{libsndfile}
Libsndfile est essentiellement une très complète bibliothèque
de lecture/écriture de fichiers sons.
de lecture et écriture de fichiers sons.
Elle permet de gérer facilement un nombre
considérable de formats de fichiers\footnote{Mais ceci est une autre
histoire, que nous verrons peut-être un de ces jours\dots}.
Par contre, elle arrive avec une floppée d'outils en ligne de
Elle arrive avec une floppée d'outils en ligne de
commande, dont certains sont assez performants.
Citons, entre autres, \texttt{sndfile-resample} qui est un
convertisseur de
fréquence d'échantillonage très performant.
@ -160,7 +174,10 @@ play -n synth sine 480 sine 620 remix 1-2 fade 0 0.5 delay 0.5 repeat 5 @@ -160,7 +174,10 @@ play -n synth sine 480 sine 620 remix 1-2 fade 0 0.5 delay 0.5 repeat 5
\subsection{Traitements}
\texttt{sox --norm source.wav normal.wav} pour normaliser un son.
\texttt{sox --norm[=dB-level] source.wav normal.wav} pour
normaliser un son.
\textsl{Automatically invoke the gain effect to guard against
clipping and to normalise the audio}.
\texttt{sox left.wav right.wav -M stereo.wav} pour combiner deux
voies mono en un fichier stéréo. \texttt{-M} est l'abréviation

5
code/ao_example.c

@ -25,15 +25,11 @@ float freq = 440.0; @@ -25,15 +25,11 @@ float freq = 440.0;
int i;
/* -- Initialize -- */
fprintf(stderr, "libao example program\n");
ao_initialize();
/* -- Setup for default driver -- */
default_driver = ao_default_driver_id();
memset(&format, 0, sizeof(format));
format.bits = 16;
format.channels = 2;
@ -54,7 +50,6 @@ buffer = calloc(buf_size, sizeof(char)); @@ -54,7 +50,6 @@ buffer = calloc(buf_size, sizeof(char));
for (i = 0; i < format.rate; i++) {
sample = (int)(0.75 * 32768.0 *
sin(2 * M_PI * freq * ((float) i/format.rate)));
/* Put the same stuff in left and right channel */
buffer[4*i] = buffer[4*i+2] = sample & 0xff;
buffer[4*i+1] = buffer[4*i+3] = (sample >> 8) & 0xff;

3
code/midifile.pl

@ -0,0 +1,3 @@ @@ -0,0 +1,3 @@
#!/usr/bin/perl -w
use MIDI;
0;

6
main.tex

@ -93,6 +93,8 @@ en ligne sur le site du Tetalab. Your mileage may vary\dots @@ -93,6 +93,8 @@ en ligne sur le site du Tetalab. Your mileage may vary\dots
\input{chap/Perl}
\input{chap/musique}
% \input{chap/puredata}
\input{chap/son}
\input{chap/streaming}
\input{chap/MIDI}
\input{chap/OSC}
\input{chap/backups}
@ -104,7 +106,8 @@ en ligne sur le site du Tetalab. Your mileage may vary\dots @@ -104,7 +106,8 @@ en ligne sur le site du Tetalab. Your mileage may vary\dots
% \input{chap/SCSI}
\input{chap/X11}
\input{chap/manpages}
\input{chap/Fortran}
\input{chap/Python}
\input{chap/dino}
\input{chap/textes}
\input{chap/MINITEL}
@ -124,7 +127,6 @@ en ligne sur le site du Tetalab. Your mileage may vary\dots @@ -124,7 +127,6 @@ en ligne sur le site du Tetalab. Your mileage may vary\dots
\input{chap/DNS}
\input{chap/ssh}
\input{chap/hardware}
\input{chap/streaming}
\input{chap/gadgets}
% \input{chap/slang}
\input{chap/curses}

Loading…
Cancel
Save