diff --git a/documentation/CSC3502_PonyTracker.pdf b/documentation/CSC3502_PonyTracker.pdf index fb6ca4c..97b59a2 100644 Binary files a/documentation/CSC3502_PonyTracker.pdf and b/documentation/CSC3502_PonyTracker.pdf differ diff --git a/documentation/CSC3502_PonyTracker.tex b/documentation/CSC3502_PonyTracker.tex index 7a25cbb..6076e40 100644 --- a/documentation/CSC3502_PonyTracker.tex +++ b/documentation/CSC3502_PonyTracker.tex @@ -11,9 +11,11 @@ \usepackage{pst-plot} % For axes \usepackage{pstricks} \usepackage{enumitem} +\usepackage{listings} + \author{Guillaume \textsc{Abramovici}\\ Guy \textsc{Godfroy}\\ - MickaÉ«l \textsc{Illy}\\ + Mickaël \textsc{Illy}\\ Quentin \textsc{Martin}\\ \\ \textit{Encadrant :} Elizabeth \textsc{Brunnet}} @@ -30,48 +32,40 @@ \end{titlepage} \maketitle -\chapter{Analyse du problème} +\tableofcontents + +\chapter*{Introduction} La musique est un art ayant traversé les époques, évoluant au même rythme et à la même vitesse que les progrès culturels, sociaux, scientifiques et technologiques de l'Être Humain. Celui-ci a toujours su s'adapter à ces évolutions dans le but de faire progresser, d'améliorer, d'enrichir ses productions musicales. Parallèlement, l'informatique a connu ces dernières années une évolution sans précédent, devenant indispensable dans la vie de tous les jours.\\ Il n'en fallait alors pas plus pour deviner que le futur de la musique passerait peut-être par l'emploi de cet outil informatique. Traitement du son, des informations, des instruments, physiques ou virtuels,... aujourd'hui les ordinateurs nous offrent la possibilité d'aller plus loin dans tous les domaines artistiques et culturels, notamment dans la dscipline musicale, et de créer des œuvres qui n'auraient seulement pu être envisagées quand l'informatique n'en était qu'à ses débuts.\\ Il existe alors aujourd'hui un besoin de créer des applications permettant cette création musicale. En particulier, le genre de la musique électronique se prête particulièrement bien à cette idée. L'artiste voulant notamment produire ce genre de musique a désormais besoin d'un outil lui permettant de manier les sons, de les enregistrer, d'utiliser des instruments qu'il peut créer et d'appliquer les effets qu'il souhaite, sans pour autant posséder le matériel physique (les instruments), ou bien même les compétences nécessaires pour y jouer. Il s'agit donc de simuler les instruments et les effets. -\begin{center} -$\star \star \star$ -\end{center} - -Ainsi, notre objectif est de développer un séquenceur de musique, qui s'inscrit dans la discipline de la MAO (Musique Assistée par Ordinateur). Nous souhaitons répondre à ce besoin de simulation et munir le programme d'une interface graphique simple et intuitive, afin de toucher le plus de passionnés de musique possible. Afin de répondre au besoin, l'utilisateur devra avoir la possibilité de : -\begin{itemize} -\item créer ou importer des sons de bases, nommés \textit{samples}; -\item configurer des \textit{instruments} virtuels à partir de ces samples. -\item entrer des mélodies à partir de ces instruments. -\item placer des effets isolément sur chaque note. -\end{itemize} - -Notre but est de créer un programme s'inspirant de ceux déjà existants (par exemple \textsc{MilkyTracker}) en améliorant l'interface et en les simplifiant afin de les rendre plus accessibles, notamment pour les utilisateurs débutants.\\ L'avenir de la musique pourrait bien passer par l'infinité de possibilités que nous offre désormais l'informatique... \chapter{Cahier des charges} +\section{Objectifs} + +Notre objectif est de développer un séquenceur de musique, qui s'inscrit dans la discipline de la MAO (Musique Assistée par Ordinateur). Nous souhaitons répondre au besoin de musique électronique permettant d'écrire des fichiers de musique séquentielle, appelés \textit{modules}, et munir le programme d'une interface graphique simple et intuitive, afin de toucher le plus de passionnés de musique possible. Afin de répondre au besoin, l'utilisateur devra avoir la possibilité de : \begin{itemize} -\item Planning et deadlines -\item Bête à corne + pieuvre (à toi de jouer Mika) -\item Interface graphique, explication des boutons, voir partie GUI. -\item Plagiat du règlement... -\item C, Git, GTK, Doxygen, wiki -\item Encadrant (duh...) +\item créer ou importer des sons de bases, nommés \textit{samples}, dont l'unique importance en définitive réside en la forme d'onde sonore; +\item configurer des \textit{instruments} virtuels basés sur ces samples. +\item entrer des mélodies joués simultanément par ces instruments via une matrice, dans des phrases musicales appelés des \textit{motifs}. +\item placer des effets isolément sur chaque note; +\item définir l'agencement temporel des motifs. \end{itemize} -\chapter{Liste des fonctionnalités} +Notre but est de créer un programme s'inspirant de ceux déjà existants (par exemple \textsc{MilkyTracker}) en améliorant l'interface et en les simplifiant afin de les rendre plus accessibles, notamment pour les utilisateurs débutants. Par ailleurs, plutôt que de reprendre d'anciens standards de fichiers, qui datent maintenant de plus d'une vingtaine d'années et qui sont devenus flous pour cause de nombreux rajout successifs, il a été convennu que nous créerions un nouveau format de fichier, qui permettra d'implémenter plus simplement les caractéristiques d'un module. -% Voir fichier \texttt{fonctionnalités.txt} -Nous avons dressé une liste des fonctions du programme qui se veut la plus exhaustive possible. Nous avons indicé chaque fonction selon leur priorité d'implémentation : $\ast\ast$ pour les fonctions à implémenter pour la première version, et $\ast$ pour celles à implémenter pour le produit final. Les autres sont les fonctions moins importantes à implémenter s'il nous en avons la possibilité.\\ +\section{Fonctionnalités} + +Nous avons dressé une liste des fonctions du programme qui se veut la plus exhaustive possible. Nous avons indicé chaque fonction selon leur priorité d'implémentation : $\ast\ast$ pour les fonctions à implémenter pour la première version, et $\ast$ pour celles à implémenter pour le produit final. Les autres sont les fonctions moins importantes à implémenter si nous en avons la possibilité technique et temporelle.\\ Voici dons la liste des fonctionnalités : -\section{Gestion des samples} +\subsection{Gestion des samples} \begin{itemize} \item Import de samples $\ast\ast$ @@ -79,7 +73,7 @@ Voici dons la liste des fonctionnalités : \item Réglages des paramètres de lecture en boucle des samples $\ast\ast$ \end{itemize} -\section{Gestion des instruments} +\subsection{Gestion des instruments} \begin{itemize} \item Choix d'un sample pour chaque instrument $\ast\ast$ @@ -88,18 +82,18 @@ Voici dons la liste des fonctionnalités : \item Positionnement stéréo \end{itemize} -\section{Matrice de mélodie} +\subsection{Matrice d'édition des motifs} \begin{itemize} \item Entrée/visualisation de la mélodie par clavier physique $\ast\ast$ ou clavier graphique cliquable $\ast$ \item Présentation de la matrice selon le temps et les instruments $\ast\ast$ \item Choix du nom des notes façon anglo-saxonne ou latine (via fenêtre des préférences) \item Lecture de plusieurs instruments simultanément $\ast$ -\item Choix du tempo $\ast\ast$, de la base de temps $\ast\ast$ et du nombre de \textit{ticks} $\ast$ +\item Choix du tempo $\ast\ast$, de la base de temps $\ast\ast$ et du nombre de \textit{ticks}\footnote{Voir définition dans le lexique en annexe} $\ast$ \item Gestion des motifs (choix de l'agencement dans le temps, du tempo et de la base de temps) $\ast$ \end{itemize} -\section{Effets} +\subsection{Effets} \begin{itemize} \item Implémentation de plusieurs effets : @@ -115,7 +109,7 @@ Voici dons la liste des fonctionnalités : \item Modification dynamique du volume et de la stéréo $\ast$ \end{itemize} -\section{Fonctionnalités basiques} +\subsection{Fonctionnalités basiques} \begin{itemize} \item Créer nouveau document $\ast$ @@ -126,20 +120,78 @@ Voici dons la liste des fonctionnalités : \item Export de la musique en fichier son (wav ou mp3) $\ast$ \end{itemize} -\chapter{Spécification fonctionnelle} +\chapter{Développement} -\includegraphics{trollface.eps} +\section{Spécification fonctionnelle} + +L'utilisateur se confrontera à une fenêtre principale, qui permettra l'accès à la plupart des fonctions via des boutons ou via une liste de menus en haut de la fenêtre. Elle contiendra les contrôles de lecture du module ouvert ainsi que la matrice d'édition des motifs, et elle permettra également d'ouvrir les autres fenêtres pour les contrôles spécifiques. + +\section{Conception préliminaire} + +\begin{itemize} +\item Utilisation de la librairie PortAudio +\item Sauvegarde des données dans un fichier au format propre +\item Euh... +\end{itemize} + +\begin{figure}[!h] +\includegraphics[width=\textwidth]{interface/mainwindow.eps} +\caption{Fenêtre principale} +\end{figure} + +L'une de ces fenêtres auxiliaires permettra l'importation/édition des samples. Elle disposera d'un visualiseur d'onde permettant d'ajuster le resampling.\\ + +\textit{Visuel à placer ici.}\\ + +L'autre fenêtre auxiliaire permettra la création/édition des instruments par l'utilisateur. Elle présentera la liste des instruments en vis-à-vis d'un cadre d'édition ou il sera possible notamment de choisir un sample, d'éditer l'enveloppe sonore et de modifier les réglages propres à l'instrument comme le volume et la balance de base.\\ + +\textit{Croyez-moi, les visuels seront chouettes.}\\ + +On implémentera éventuellement une fenêtre de préférences, permettant notamment de régler la convention de hommage des notes façon latine/anglo-saxonne. \chapter{Tests unitaires} On va se faire chier...\\ Test de TOUS les boutons un par un. Yay. -\chapter{Esquisses de l'interface graphique} +\appendix -\begin{figure}[!h] -\includegraphics{interface/mainwindow.eps} -\caption{Fenêtre principale} -\end{figure} +\chapter{Gestion de projet} + +\section{Plan de charge} + +\includegraphics[width=\textwidth]{trollface.eps} + +\section{Planning prévisionnel} + +\includegraphics[width=\textwidth]{trollface.eps} + +\section{Suivi d'activités} + +\chapter{Code source} + +\begin{lstlisting} +```s``s``sii`ki + `k.*``s``s`ks + ``s`k`s`ks``s``s`ks``s`k`s`kr``s`k`sikk + `k``s`ksk + +``s``s`ks``s``s`ks``s`kk`ks``s``s`ks``s``s`ks``s`kk`ks``s``s`ks``s`kk`kk``s`kk`ks + +```s`kr``s``si`k.*`ki + ```s``s`k``si`k`s``s`ksk``s``s`ksk``s``s`kski + ``s`k``s``s`ksk``s``s`kski`s``s`ksk + ```s``s`kski``s``s`ksk``s``s`kski +\end{lstlisting} + +\chapter{Lexique} + +\paragraph{Module} Morceau de musique séquentielle, contenant à la fois les samples, les instruments les motifs, ainsi que les divers réglages associés. + +\paragraph{Sample} Unité élémentaire de son, ne contenant le plus souvent qu'une ou deux période d'onde sonore, destiné à être répété en boucle dans le but de produire un son continu homogène et qui en détermine ainsi le timbre. + +\paragraph{Instrument} Entité permettant d'effectuer un mélodie, constitué d'un ensemble de réglages sur un sample, comme une enveloppe sonore, le volume et la balance. + +\paragraph{Motif} Phrase musicale, délimitant des passages dans le module et permettant au musicien d'organiser sa musique. Un motif contient une mélodie constituée de notes couplées à des réglages individuels d'effets sonores et de volume. \end{document}