oh, this is a commit !

This commit is contained in:
tTh 2020-12-12 04:13:54 +01:00
parent 499944159f
commit 7722aef9d3
10 changed files with 98 additions and 34 deletions

2
.gitignore vendored
View File

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

View File

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

18
chap/Fortran.tex Normal file
View File

@ -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.

View File

@ -106,7 +106,8 @@ Client 128 : "TiMidity" [User]
Plutôt que de passer par la couche ALSA, il est aussi possible 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 d'attaquer directement le \textit{device}, et de blaster soi-même
tous les petits octets directement sur le fil. Voici un petit 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 mais bon, ça fait plaisir à mon gamin}, facilement transposable
dans un langage plus sérieux : dans un langage plus sérieux :
@ -137,7 +138,6 @@ for valeur in range(30,90):
tx.close() tx.close()
\end{lstlisting} \end{lstlisting}
% --------------------------------------------------------- % ---------------------------------------------------------
\section{Et en Perl ?} \section{Et en Perl ?}
@ -159,6 +159,12 @@ MIDI::Simple (3pm) - procedural/OOP interface for MIDI composition
MIDI::Track (3pm) - functions and methods for MIDI tracks MIDI::Track (3pm) - functions and methods for MIDI tracks
\end{verbatim} \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à.
% --------------------------------------------------------- % ---------------------------------------------------------

View File

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

View File

@ -16,7 +16,12 @@ de maitre Brunus},
l'abondance d'options des outils ImageMagick est vraiment énorme, l'abondance d'options des outils ImageMagick est vraiment énorme,
et leurs interactions parfois troublantes\dots 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 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 par beaucoup d'options. C'est avec ça que l'on peut définir des
@ -29,7 +34,7 @@ on va travailler.
Voici un exemple concret Voici un exemple concret
(tiré du script d'encodage du \textsc{cloître}\index{cloître}) (tiré du script d'encodage du \textsc{cloître}\index{cloître})
qui montre l'essentiel pour bien débuter. C'est une fonction 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} \lstinputlisting[language=sh]{code/tagpic.sh}
@ -42,15 +47,17 @@ options sont un peu ésotériques et parfois inter-dépendantes\dots
\item{kerning} \item{kerning}
\item{colors} \item{colors}
\item{txtopts} \item{txtopts}
\item{-gravity} \item{gravity}
\item{-annotate} \item{annotate}
\end{itemize} \end{itemize}
Quastion : comment mettre une couleur de fond à ce texte ?
\subsection{Faire des GIFs animées}\index{GIF} \subsection{Faire des GIFs animées}\index{GIF}
Ces images clignotantes sont l'essence même du Web\index{web} Ces petites images clignotantes sont l'essence même du
moderne depuis 1992, et \texttt{convert} sait très bien les Web\index{web} moderne depuis 1992 malgré leurs limitations,
générer. et \texttt{convert} sait très bien les générer.
\begin{verbatim} \begin{verbatim}
convert -delay 20 -loop 0 a.png b.png c.png foo.gif convert -delay 20 -loop 0 a.png b.png c.png foo.gif
@ -70,17 +77,26 @@ POSITION="+R12+0"
convert -crop ${DIMENSION}${POSITION} +repage $img $dst convert -crop ${DIMENSION}${POSITION} +repage $img $dst
\end{verbatim} \end{verbatim}
\textsl{Use +repage to completely remove/reset the virtual canvas meta-data \textsl{Use +repage to completely remove/reset the virtual canvas
from the images.} En gros, on en a besoin quand une opération va meta-data from the images.}
En gros, on en a besoin quand une opération va
changer la dimension de l'image. 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} \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}. Existe aussi en plugin pour Gimp\index{Gimp}.
@ -105,14 +121,14 @@ for ((y=0; y<250; y++)) {
\subsection{Questions} \subsection{Questions}
Comment faire un resize ? Comment faire un \textsl{resize} avec NetPBM ?
% ------------------------------------------------------------------- % -------------------------------------------------------------------
\section{Portable Network Graphic}\index{PNG} \section{Portable Network Graphic}\index{PNG}
Voici le problème du soir% 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 j'utilise pour lire ce format de fichier la bibliothèque
\texttt{pnglite} qui a de gros soucis avec beaucoup de \texttt{pnglite} qui a de gros soucis avec beaucoup de
ceux-ci, par exemple ceux qui sont en \texttt{sRGB} crées ceux-ci, par exemple ceux qui sont en \texttt{sRGB} crées

View File

@ -36,16 +36,29 @@ Si vous avez plusieurs cartes son, la sélection du
l'option \texttt{-l} qui vous donnera la bonne piste, l'option \texttt{-l} qui vous donnera la bonne piste,
mais l'option \texttt{-L} qu'il faut utiliser. 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} \subsection{Le reste}
Et quand on regarde par la lorgnette du programmeur, on découvre Et quand on regarde par la lorgnette du programmeur, on découvre
rapidement que l'utilisation d'ALSA n'est pas si simple que rapidement que l'utilisation d'ALSA n'est pas si simple que
ça, essentiellement à cause d'une documentation spartiate. ça, essentiellement à cause d'une documentation spartiate.
Heurensement, pour certains domaines, il existe des Heurensement, pour certains domaines, il existe des
surcouches plus simple d'emploi : \texttt{libao}\index{libao} surcouches plus simple d'emploi :
pour les sorties \texttt{libao}\index{libao} pour les sorties
sonores, XXX\index{XXX} pour le reste. 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} \section{pulseaudio}
\index{pulseaudio} \index{pulseaudio}
@ -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 même falloir y passer : ce machin prétenduement
\textsl{michu compliant}\index{Michu} \textsl{michu compliant}\index{Michu}
a parfois, voire même souvent, tendance à se mettre en travers 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} \section{Jack}
@ -69,7 +83,8 @@ lui laisser le soin d'en parler.
Jack peut aussi servir de source sonore pour Jack peut aussi servir de source sonore pour
darkice\index{darkice}, lequel pourra feeder un 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}
\index{libsndfile} \index{libsndfile}
Libsndfile est essentiellement une très complète bibliothèque 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 Elle permet de gérer facilement un nombre
considérable de formats de fichiers\footnote{Mais ceci est une autre considérable de formats de fichiers\footnote{Mais ceci est une autre
histoire, que nous verrons peut-être un de ces jours\dots}. 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. commande, dont certains sont assez performants.
Citons, entre autres, \texttt{sndfile-resample} qui est un Citons, entre autres, \texttt{sndfile-resample} qui est un
convertisseur de convertisseur de
fréquence d'échantillonage très performant. 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
\subsection{Traitements} \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 \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 voies mono en un fichier stéréo. \texttt{-M} est l'abréviation

View File

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

3
code/midifile.pl Executable file
View File

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

View File

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