Added colorfull example on M3

This commit is contained in:
EEva 2012-08-17 02:20:55 +02:00
parent c85f8eec7b
commit bfd02a9941
6 changed files with 123653 additions and 77 deletions

View file

@ -94,22 +94,24 @@ interpretation.
Pour faire le lien entre données à analyser et son, quelques techniques ont été
référencées dans~\cite{hermann_sonification_2011} :
\begin{itemize}
\item{l'\textbf{Audification}} consiste à écouter le signal brut ou déformé par
traitement analogique (filtrage passif, accélération, ralentissement, \ldots),
l'exemple emblématique étant \cite{speeth_seismometer_1961}, dans lequel Speeth
montre que l'on peut distinguer, en écoutant les données séismométriques, la
détonation d'un explosif d'un tremblement de terre ;
\item{les \textbf{Auditory Icons} et \textbf{Earcons}} sont des sons discrets
utilisés pour les évènements discrets (comme les alarmes), le premier consiste
à jouer des sons préenregistrés et le second peut être l'agencement de
séquences synthétisées connues pour former des « mots » ;
\item{la \textbf{Model Based Sonification}} consiste à créer un \emph{modèle}
issu des données du système, interagir avec ce modèle et écouter en temps réel
le son généré afin de tirer des informations du système
\cite{hermann_listen_1999} et \item{la \textbf{Parameter Mapping Sonification}
(\textsc{Pms})}.
\end{itemize}
\begin{description}
\item [Audification] Cette technique consiste à écouter le signal
brut ou déformé par traitement analogique (filtrage passif,
accélération, ralentissement, \ldots), l'exemple emblématique étant
\cite{speeth_seismometer_1961}, dans lequel Speeth montre que l'on peut
distinguer, en écoutant les données séismométriques, la détonation d'un explosif
d'un tremblement de terre ;
\item [Auditory Icons et Earcons] Ce sont des sons discrets utilisés pour les
évènements discrets (comme les alarmes), le premier consiste à jouer des sons
préenregistrés et le second peut être l'agencement de séquences synthétisées
connues pour former des « mots » ;
\item [Model Based Sonification] Cette méthode consiste à créer un
\emph{modèle} issu des données du système, interagir avec ce modèle et
écouter en temps réel le son généré afin de tirer des informations du système
\cite{hermann_listen_1999} ;
\item [Parameter Mapping Sonification (PMS)] Avec cette approche, on relie les
paramètres du système aux paramètres du rendu sonore.
\end{description}
Notre travail s'inscrit dans la dernière catégorie. Traditionnellement, un
paramètre contrôlant la production d'un son est \emph{lié} à un des paramètre
du système étudié. Par exemple, nous pourrions relier un paramètre sonore comme
@ -121,27 +123,38 @@ possibles.
\begin{figure}[p]
\centering
\begin{tikzpicture}[auto,bend right,scale=\textwidth/5cm]
%every node/.style={transform shape}]
\node (phyrel) {Lois du système};
\node (phyobs) [below=of phyrel] {Observables};
\draw[thick,->, dotted] (phyobs) -- (phyrel);
\node (musobs) [right=of phyobs]
{Objets sonores};
\draw[black!50,thick,font=\scriptsize,->] (phyobs) to node
{mappings} (musobs);
\draw[black!50,thick,font=\scriptsize] (phyobs) to node [swap]
{sonification} (musobs);
\pgfdeclarelayer{background}
\pgfsetlayers{background,main}
\begin{tikzpicture}[align=center, every node/.style={auto}]
\node (phystate) {État local du système};
\node (phyobs) [below=of phystate] {Observables};
\node (sonrel) [right=of phystate] {Relations sonores\\(analogiques)};
\node (musrel) [above=of sonrel] {Relations musicales\\(symboliques)};
\node (sonobs) [below=of sonrel] {Objets sonores};
\node (phyrel) [above=of phystate] {État global du système\\Lois du système};
\node (qt) at (barycentric cs:musrel=1,phyrel=1) [black!50,yshift=1cm] {?};
\node (qb) at (barycentric cs:phyobs=1,sonobs=1)
[black!50,yshift=-1cm,font=\scriptsize] {mappings\\sonification/musification};
\node (musrel) [above=of musobs]
{Relations sonores};
\draw[black!50,thick,font=\scriptsize,->] (musobs)
to node [swap,text width=21mm] {perception (IHM)} (musrel);
\draw[black!50,thick,->] (musrel) to node [swap] {?} (phyrel);
\draw[thick,->, dotted] (phyobs) -- (phystate);
\draw[thick,->, dotted] (phystate) -- (phyrel);
\draw[black!50,thick,->] (phyobs) |- (qb) -| (sonobs);
\draw[black!50,thick,font=\scriptsize,->] (sonobs)
to node [swap,text width=21mm] {perception (IHM)} (sonrel);
\draw[black!50,thick,->,dotted] (sonrel) to node [swap] {?} (phystate);
\draw[black!50,thick,->] (sonrel) to (musrel);
\draw[black!50,thick,->] (musrel.north) |- (qt) -| (phyrel.north);
\begin{pgfonlayer}{background}
\node[draw=black!50,dashed,thick,fill=gray!10,inner sep=6mm,xshift=3mm,
fit=(phystate) (sonrel) (sonobs) (phyobs) (qb)] {};
\end{pgfonlayer}
\end{tikzpicture}
\caption{Cycle des transformations pour la recherche de relations
dans un système complexe par sonification}
dans un système complexe par sonification (la partie encadrée
correspond à une PMS classique, tandis que le reste se rapporte à
la musification)}
\label{fig:dico}
\end{figure}
@ -149,24 +162,26 @@ En général on ne peut pas passer facilement des observables d'un système
aux lois les régissant et même si au moins une méthode automatique existe
\cite{schmidt_distilling_2009}, elle reste pour l'instant limité à des cas
particuliers. Il est alors intéressant de passer par une sonification du
système (figure~\ref{fig:dico}). En utilisant la \textsc{Pms}, on donne une
système (figure~\ref{fig:dico}). En utilisant la PMS, on donne une
représentation sonore aux observables de notre système qui est perçue par le
système auditif comme un objet sonore dont on peut extraire des caractéristiques
ou des relations. Ces relations sonores sont un lien direct avec les lois du
système.
%Outils
Il existe plusieurs outils et environnements pour la recherche de relations par
\textsc{Pms} \cite{candey_xsonify_2006} \cite{pauletto_toolkit_2004}
\cite{walker_sonification_2003}, mais aucun ne tire réellement parti du côté
fortement structurel de la musique. Pourtant la musique a de réels atouts au
sein de la sonification, on parlera alors de \emph{musification}.
%Outils et thèse Vogt
Le domaine de la sonification scientifique en physique est bien détaillé
dans \cite{vogt_sonification_2010} et il existe plusieurs
outils et environnements pour la recherche de relations par
PMS \cite{candey_xsonify_2006} \cite{pauletto_toolkit_2004}
\cite{walker_sonification_2003}, cependant aucun ne tire réellement parti du
côté fortement structurel de la musique. Pourtant la musique a de réels atouts
au sein de la sonification, on parlera alors de \emph{musification}.
\subsection[À la musification]{\ldots\ à la musification}
Une approche de notre problème par les techniques de sonification classiques
nous semble limité car elle passe outre la forte composante \emph{strucurelle}
de la musique. Nous explorons la voie de la \emph{musification}, une extension
naturelle de la \textsc{Pms}.
naturelle de la PMS.
% C'est une approche géométrico-algébrique qui
% cherche à combler le manque de géométrie dans les techniques de sonification
% usuelles, donnée pourtant intéressante lors de l'étude de systèmes physiques
@ -186,7 +201,7 @@ des approches et outils géométriques qui sont aussi utilisés dans l'analyse d
systèmes complexes physiques : symétries, organisation spatiale, \ldots
C'est tout un univers formel (§~\ref{subsec:music}) qui vient se greffer à la
\textsc{Pms} et nous permet de \emph{dépasser} la sonification pour aller vers
PMS et nous permet de \emph{dépasser} la sonification pour aller vers
la musification.
\subsection{Système étudié : les mousses liquides}
@ -706,7 +721,6 @@ Ces trois structures musicales s'appuient sur l'analyse des intervalles : de
manière évidente pour harmonique et mélodique, les relations rythmiques sont
analysables commes intervalles de temps.
\clearpage
\section{Méthode}
\subsection{Un tonnetz comme graphe de Cayley}
\label{subsec:tonnetz-cayley}
@ -746,7 +760,8 @@ $$ g_{4,7} = < 4, 7\ |\ 3+4=0, 12+7=0 > $$
\end{tikzpicture}
\label{fig:closepath}}
\qquad
\subfloat[Chemin fermé particulier dans un graphe de Cayley]{
\subfloat[Chemin fermé dans un graphe de Cayley spécifique à la contrainte $a +
b = b + a$]{
\begin{tikzpicture}[scale=.45\textwidth/4cm]
\clip (-15mm,-5mm) rectangle (25mm,15mm);
\draw[step=1cm,densely dotted] (-2,-1) grid (3,3);
@ -980,8 +995,10 @@ ensuites projetés orthogonalement sur $(\Delta)$, comme illustré figure
\ref{fig:rythm2}. On sonifie ensuite la distance entre chaque point projeté
pour obtenir un motif rythmique : nous avons ainsi une information en une
dimension en traversant un échantillon et nous pouvons détecter une symétrie
axiale d'axe orthogonal à $(\Delta)$. La liste des paramètres peut être
consultée dans la table \ref{tab:param2}.
axiale d'axe orthogonal à $(\Delta)$. Plus précisément, nous avons accès à la
densité de centre de bulle tout au long de la droite ; cela nous renseigne à la
fois sur la taille des bulles et sur leur répartition le long de $(\Delta)$. La
liste des paramètres peut être consultée dans la table \ref{tab:param2}.
\begin{table}[hb]
\begin{agrandirmarges}{1cm}
@ -1009,35 +1026,89 @@ l'organisation urbaine à partir de plans surimposés.
\subsubsection{Remarque et extension des chemins rythmiques}
Nous remarquons que pour M$_2$, M$_3$ et M$_3$ on veut explorer un espace (2D)
mais en cheminant le long d'un chemin (1D). Cette démarche est intéressante et
logique pour les raisons suivantes :
\begin{itemize}
\item dans le cas d'un espace homogène, les bulles au cœur du chemin sont
« typiques » et représentatives de l'espace non exploré ;
\item dans le cas d'un espace non homogène (figure \ref{fig:desordonnee})
on n'obtient pas toujours le même résultat suivant le point de départ du
chemin, pour un même chemin ;
\item une courbe fractale continue remplissant le plan permettrait d'explorer
exhaustivement tout l'espace des bulles, par exemple une courbe de Hilbert de
dimension donnée. Elle a pour intérêt de n'être constitué que de segment de
droite.
\end{itemize}
logique car, dans le cas d'un espace homogène, les bulles au cœur du chemin sont
« typiques » et représentatives de l'espace non exploré. Cependant, dans le
cas d'un espace non homogène (figure \ref{fig:desordonnee}), on n'obtient pas
toujours le même résultat suivant le point de départ du chemin, pour un même
chemin. Dans ce cas une courbe fractale continue remplissant le plan permettrait
d'explorer exhaustivement tout l'espace des bulles, par exemple une courbe de
Hilbert, de dimension donnée. Elle a pour intérêt de parcourir tout l'espace en
le décrivant, zone par zone et donc d'offrir un aperçu sonore permettant de
rendre compte de la « densité » d'un paramètre, par zone.
On peut imaginer une famille de courbes $(H_0,H_1,H_2)$ qui remplissent de
mieux en mieux l'espace, $H_i$ approche et aggrège les parcelles.
On peut imaginer une famille de courbes $(H_1,H_2,H_3)$ qui remplissent de mieux
en mieux l'espace, chaque $H_i$ approchant et aggrègeant les parcelles de plus
en plus précisément.
\begin{figure}[ht]
\caption{famille de courbes}
%\draw [opacity=.2,line join=round,line width=1cm,
% l-system={Hilbert curve, axiom=L, order=2, step=1cm, angle=90}]
\centering
\subfloat[Courbe $H_1$, $r = 1.5$]{
\begin{tikzpicture}
\clip (-.5,-.5) rectangle (3.5,3.5);
\draw [densely dotted] (-1,-1) grid (4,4);
\draw [l-system={Hilbert curve, axiom=L, order=1, step=3cm, angle=90}]
lindenmayer system;
\foreach \i in {0cm,3cm} {
\foreach \j in {0cm,3cm} {
\fill (\i,\j) circle (2pt);
\fill[opacity=.2] (\i,\j) circle (1.5cm);
}
}
\draw[<->|] (0,0) -- node[above left] {$r$} (45:1.5cm);
\end{tikzpicture}
\label{fig:H1}}
\hfill
\subfloat[Courbe $H_2$, $r = 0.5$]{
\begin{tikzpicture}
\clip (-.5,-.5) rectangle (3.5,3.5);
\draw [densely dotted] (-1,-1) grid (4,4);
\draw [l-system={Hilbert curve, axiom=L, order=2, step=1cm, angle=90}]
lindenmayer system;
\foreach \i in {0cm,1cm,2cm,3cm} {
\foreach \j in {0cm,1cm,2cm,3cm} {
\fill (\i,\j) circle (2pt);
\fill[opacity=.2] (\i,\j) circle (0.5cm);
}
}
\draw[<->|] (0,0) -- (45:.5cm);
\end{tikzpicture}
\label{fig:H2}}
\hfill
\subfloat[Courbe $H_3$, $r = 3/14$]{
\begin{tikzpicture}
\clip (-.5,-.5) rectangle (3.5,3.5);
\draw [densely dotted] (-1,-1) grid (4,4);
\draw [l-system={Hilbert curve, axiom=L, order=3, step=0.42857143cm, angle=90}]
lindenmayer system;
\foreach \i in {0cm,.42857143cm,.85714286cm,1.2857143cm,1.7142857cm,
2.1428571cm,2.5714286cm,3cm} {
\foreach \j in {0cm,.42857143cm,.85714286cm,1.2857143cm,1.7142857cm,
2.1428571cm,2.5714286cm,3cm} {
\fill (\i,\j) circle (2pt);
\fill[opacity=.2] (\i,\j) circle (.21428571cm);
}
}
\draw[-|] (0,0) -- (45:.21428571cm);
\end{tikzpicture}
\label{fig:H3}}
\caption{Utilisation de courbes de Hilbert pour remplir progressivement
l'espace, en gris la zone moyennée}
\label{fig:hilbert}
\end{figure}
Chaque itération présente un moyennage des valeurs, du plus global au plus
local. Chaque « coude » de la courbe de Hilbert est un point aggrégeant les
valeurs des bulles à une distance $D$, $D$ dépendant de l'itération de la
courbe de Hilbert : plus l'itération est élevée et plus $D$ est petit.
Arrivé à une segmentation de l'espace proche en parcelles de taille moyenne
proche de la taille moyenne des bulles, nous nous trouvons à un niveau de
description très local, puisque chaque coude aura un moyennage des valeurs
sur une bulle (dans un espace homogène).
valeurs des bulles à une distance $r$ dépendant de l'itération de la courbe
de Hilbert : plus l'itération est élevée et plus $r$ est petit (voir la
figure~\ref{fig:hilbert}). Arrivé à une segmentation de l'espace en parcelles
de taille moyenne proche de la taille moyenne des bulles, nous nous trouvons à
un niveau de description très local, puisque chaque coude aura un moyennage des
valeurs sur une bulle (dans un espace homogène). On peut donc sonifier chaque
point $p_i$ en lui associant une hauteur correspondant, par exemple, au nombre
de voisines qu'ont en moyenne les bulles contenues dans le cercle de centre
$p_i$ et de rayon $r$.
\subsubsection{M$_3$ : Chemins musicaux}
Dans la section précédente, nous remplissions le plan avec une courbe fractale
@ -1045,6 +1116,16 @@ continue. Nous pouvons aussi nous servir d'un maillage hexagonal de taille
caractéristique initiale réglable.
\begin{figure}[ht]
\centering
\subfloat[$P_1$, mousse en deux dimensions]{
\includegraphics[width=.3\textwidth]{img/bul}}
\qquad
\subfloat[$P_2$, pavage hexagonal se rapportant à un graphe dual d'un graphe de
Cayley]{
\includegraphics[width=.3\textwidth]{img/hex}}\\[1cm]
\subfloat[Projection de deux chemins de $P_2$ à $P_1$. Du plus clair
au plus foncé, à gauche, $1, 2, 3, 4, 5$ et à droite $6, 4, 6, 4, 6$]{
\includegraphics[height=.16\textheight]{img/bulandhex}}
\caption{Schéma de la sonification des chemins dans un système physique en deux
dimensions}
\label{fig:M3}
@ -1068,7 +1149,22 @@ une mousse régulière et à chacun de ces hexagone correspond une note. Toutes
les transformations se font sur une base métrique.
\begin{figure}[ht]
\caption{Numérotation unique des voisins d'une bulle}
\centering
\begin{tikzpicture}[rotate=30,
hex/.style={regular polygon, regular polygon sides=6, draw, inner sep=.5cm,
transform shape, text width=0}]
\node[hex,gray] (5) at ( 30:1.41cm) {}; %5
\node[hex,gray] (6) at ( 90:1.41cm) {}; %6
\node[hex,gray] (1) at (150:1.41cm) {}; %1
\node[hex,gray] (2) at (210:1.41cm) {}; %2
\node[hex,gray] (3) at (270:1.41cm) {}; %3
\node[hex,gray] (4) at (330:1.41cm) {}; %4
\node[hex,thick] (h) at (0,0) {};
\foreach \i in {1,...,6} {
\draw[gray,->,dashed] (h.center) -- (\i) node[gray] {\i} ;}
\end{tikzpicture}
\caption{Numérotation unique des voisins d'une bulle (convention utilisée)}
\label{fig:num}
\end{figure}
@ -1088,7 +1184,7 @@ dans le graphe de Cayley. On construit les projections de la manière suivante :
de longueur $n$ constitué des \emph{points} $p_1$, $p_2$, …, $p_n$.
\begin{enumerate}
\item On commence par construire une grille hexagonale $P_2$ centrée sur les
coordonées de $p_1$, avec pour taille caractéristique le rayon moyen des
coordonnées de $p_1$, avec pour taille caractéristique le rayon moyen des
bulles.
\item Ensuite, on détermine à quelle position se trouve chaque $p_i$ de $P_1$
dans $P_2$ par un changement de coordonnées.
@ -1113,9 +1209,12 @@ en choisissant le prochain voisin à chaque bulle.
\bigskip
La méthode consiste à écouter comparativement le rendu d'un chemin dans $P_1$
et dans $P_2$ en partant du fait que, si la mousse est régulière, alors
les deux rendus sonores seront identiques.
les deux rendus sonores seront identiques. On peut d'ailleurs noter que, dans l'exemple
fourni figure~\ref{fig:M3}, le chemin de gauche est rendu de manière similaire
dans $P_1$ et dans $P_2$, alors que le chemin de droite est clairement déformé
dans $P_1$, dû à une irrégularité le long du chemin.
\begin{table}[hb]
\begin{table}[h]
\begin{agrandirmarges}{1.5cm}
\centering
\begin{tabular}{|l|l|l|}
@ -1147,7 +1246,6 @@ exemple la comptine Frère Jacques) et le rythme rajoute une information sur les
différences de distance entre le parcours dans un espace \emph{régulier} et
déformé.
\clearpage
\section{Implementation}
\label{sec:implementation}
% État du travail
@ -1159,9 +1257,9 @@ les principales fonctions pour la sonification des mousses est en cours de
développement, cependant elle n'est pas prête à l'issue de ce stage et demande
encore quelques améliorations.
Tous les mappings ont été implémentés grâce aux outils présents à
l'\ircam, notamment \modalys, pour la synthèse modale, et
\openmusic\ comme environnement de programmation principal.
Tous les mappings ont été implémentés grâce aux outils présents à l'\ircam,
notamment \modalys, pour la synthèse modale, et \openmusic\ comme environnement
de programmation principal.
D'autres outils ont été employés pour les études préliminaires mais n'ont été
utilisés pour l'implémentation finale :
@ -1172,6 +1270,40 @@ interactions visuelle et musicale, considéré pour la sonification de M$_1$ et
\cite{giavitto_mgs_2001}, considéré pour le calcul des projections de M$_3$.
\end{itemize}
Nous partons à chaque fois des données que nous fournissent les physiciens
du \lps. Ces données sont textuelles et sont soit issues d'une simulation
du système soit les résultats d'une expérience physique en laboratoire. Les
informations sont réparties en fichiers, chaque fichier correspondant aux
informations liées à une itération du système. Par exemple, le fichier
\verb+bubbleList0087.txt+ contient un tableau des paramètres de chaque bulle à
l'itération 87 du système, dont voici un aperçu des cinq premières lignes~:
\begin{figure}[!h]
\begin{agrandirmarges}{1.5cm}
\centering\scriptsize
\begin{verbatim}
refAbs indiceT Xc Yc area perimeter perimeterSquel Voisin areaSquel
7 24 366.29319274879765 34.74824269330374 2703.0 194.2670273047588 220.8940178970694 6 3506.7500000000005
9 9 484.7240557389072 26.99101576824349 2727.0 194.75230867899737 111.60506872273685 3 1777.9735056839017
24 26 73.46391948347892 36.87713634637296 2633.0 192.8528137423857 218.2162989786121 6 3409.2083333333335
25 28 250.1252813203301 46.01950487621905 2666.0 192.2670273047588 217.44392303943744 6 3396.2916666666674
32 34 134.1557126480703 58.96121513183034 2617.0 192.02438661763952 216.35836507129306 6 3353.833333333333
\end{verbatim}
\end{agrandirmarges}
\end{figure}
Nous y trouvons :
\begin{description}
\item[refAbs] une référence absolue à une bulle qui permet de garder la trace
d'une bulle au cours des itérations;
\item[Xc, Yc] les coordonnées en abscisse et en ordonnée du centre de
la bulle ;
\item[area] l'aire de la bulle ;
\item[perimeter] le périmètre de la bulle ;
\item[Voisin] le nombre de voisines de la bulle.
\end{description}
Les autres paramètres présents ne sont pas utilisés lors des sonifications.
\subsection{Modalys}
\modalys\ (anciennement appelé Mosaïc) est un outil de synthèse modale par
modèle physique basée sur \lisp\ \cite{eckel_sound_1995}. Cet outil permet
@ -1210,10 +1342,12 @@ logiciel libre conçu et développé à l'\ircam\ fonctionnant sur MacOS et Wind
: ce sont ces arguments qui ont motivé notre choix.
\begin{figure}[ht]
\includegraphics[width=\textwidth]{img/visual-prog}
\begin{agrandirmarges}{.15\textwidth}
\includegraphics[width=1.3\textwidth]{img/visual-prog}
\caption{Photo d'écran présentant plusieurs fenêtres d'\openmusic\ pendant
l'implémentation de M$_3$ et M$_4$}
\label{fig:om}
\end{agrandirmarges}
\end{figure}
\subsection{La bibliothèque logicielle \musify}
@ -1231,7 +1365,7 @@ leur ordre :
$$ (1: (x_1,y_1)), \ldots, (n: (x_n,y_n))$$
Afin que le traitement des données reste rapide, sans pour autant stocker
implicitement des données en mémoire, nous utilisons cette table de hachage
pour maintenir le lien entre la référence des nœuds et leur coordonées ; on
pour maintenir le lien entre la référence des nœuds et leur coordonnées ; on
peut ainsi passer rapidement de la représentation de graphe à la représentation
spatiale plongée dans le plan.
\item [\texttt{coord\_to\_bubble}]

BIN
img/bul.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

BIN
img/bulandhex.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

123440
img/figure.svg Normal file

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 7.8 MiB

BIN
img/hex.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View file

@ -11,7 +11,9 @@
\usepackage{tikz}
\usetikzlibrary{petri}
\usetikzlibrary{shapes}
\usetikzlibrary{shapes.geometric}
\usetikzlibrary{positioning}
\usetikzlibrary{fit}
\usetikzlibrary{lindenmayersystems}% for Hilbert curve
\usepackage[lofdepth,lotdepth]{subfig}% replaces subfigure
\usepackage{scrtime}