ponytracker/documentation/CSC3502_PonyTracker.tex

198 lines
9.6 KiB
TeX

%!TEX encoding = UTF-8 Unicode
\documentclass[11pt,a4paper,titlepage]{report}
\usepackage[francais]{babel}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage[usenames,dvipsnames]{pstricks}
\usepackage{epsfig}
\usepackage{pst-grad} % For gradients
\usepackage{pst-plot} % For axes
\usepackage{pstricks}
\usepackage{enumitem}
\usepackage{listings}
\author{Guillaume \textsc{Abramovici}\\
Guy \textsc{Godfroy}\\
Mickaël \textsc{Illy}\\
Quentin \textsc{Martin}\\
\\
\textit{Encadrant :} Elizabeth \textsc{Brunnet}}
\title{Projet \textsc{PonyTracker}\\
Rapport\\
\vspace{1cm}
\includegraphics[scale=0.5]{icon/vinyl.pdf}}
%LOL j'adore les poneys
\addto\captionsfrench{\renewcommand{\chaptername}{Section}}
\begin{document}
\begin{titlepage}
\end{titlepage}
\maketitle
\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.
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 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}
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.
\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 :
\subsection{Gestion des samples}
\begin{itemize}
\item Import de samples $\ast\ast$
\item Visualisation graphique des samples en vue d'affinage du son $\ast$
\item Réglages des paramètres de lecture en boucle des samples $\ast\ast$
\end{itemize}
\subsection{Gestion des instruments}
\begin{itemize}
\item Choix d'un sample pour chaque instrument $\ast\ast$
\item Accord du sample en fonction d'une note de préférence $\ast$
\item Édition du volume d'attaque, de maintien et de chute via une enveloppe sonore $\ast$
\item Positionnement stéréo
\end{itemize}
\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}\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}
\subsection{Effets}
\begin{itemize}
\item Implémentation de plusieurs effets :
\begin{itemize}[label=$\bullet$]
\item arpège $\ast\ast$
\item portamento (montant, descendant, intelligent) $\ast$
\item vibrato $\ast$
\item tremolo $\ast$
\item coupure $\ast$
\item délai $\ast$
\end{itemize}
\item Choix des effets via un menu déroulant en face de chaque note $\ast$
\item Modification dynamique du volume et de la stéréo $\ast$
\end{itemize}
\subsection{Fonctionnalités basiques}
\begin{itemize}
\item Créer nouveau document $\ast$
\item Ouvrir document $\ast$
\item Sauvegarder document $\ast$
\item Undo/redo $\ast$
\item Maximiser/minimiser/fermer fenêtre $\ast$
\item Export de la musique en fichier son (wav ou mp3) $\ast$
\end{itemize}
\chapter{Développement}
\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.
\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.
\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}
\chapter{Tests unitaires}
On va se faire chier...\\
Test de TOUS les boutons un par un. Yay.
\appendix
\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}