INTRODUCTION |
Pour pouvoir traiter un signal sonore dans un ordinateur, il est nécessaire de le digitaliser au préalable. Pour ce faire, on utilise un convertisseur analogique-numérique pour l’échantillonner à intervalles de temps réguliers en convertissant la valeur mesurée à chaque instant d’échantillonnage en une valeur numérique. Le son est ainsi transformé en une suite de nombres que l’on peut stocker et traiter au sein de l’ordinateur. La fréquence d’échantillonnage (ou taux d’échantillonnage) est le nombre d’échantillons enregistrés par seconde. Pour le format audio WAV, les taux d’échantillonnages sont standardisés et figurent parmi les valeurs suivantes : 8000, 11025, 16000, 22050 et 44100 Hertz. Plus la fréquence d’échantillonnage est élevée, meilleure sera la qualité de la restauration sonore avec un convertisseur numérique-analogique. La plage de valeurs des échantillons est également d’une grande importance pour la qualité. Dans la bibliothèque sonore de TigerJython, les valeurs sont toujours stockées dans des listes de nombres entiers codés sur 16 bits, ce qui correspond à l’intervalle (-32768 and 32767). Il faut également déterminer si l’on parle d’un son monaural (mono) ou binaural (stéréo) qui utilise un, respectivement deux canaux. Lors de l’utilisation de deux canaux (stéréo), les valeurs pour le canal de gauche et celui de droite sont stockées comme deux nombres consécutifs dans la liste d’échantillons. Pour suivre ce chapitre, vous devrez vous équiper d’un ordinateur muni d’une carte son, d’écouteurs ou de haut-parleurs permettant de restituer les sons et d’un micro permettant d’effectuer des enregistrements.
|
ÉCOUTER DES SONS |
Pour profiter du programme suivant, il faut commencer par trouver sur Internet un petit clip sonore de quelques secondes au format WAV. Le clip sonore doit se situer dans un fichier nommé mysound.wav dans le même dossier que votre programme Python. Dans le programme ci-dessous, on commence par importer toutes les fonctions de la sound library. On stocke ensuite dans la liste samples les échantillons sonores lus depuis le fichier et on affiche dans la console window, les informations de format du fichier audio puisqu’il est nécessaire de connaître le taux d’échantillonnage pour permettre une restitution correcte. Dans l’exemple ci-dessous, le taux d’échantillonnage est de 22050 Hz. La fonction openMonoPlayer permet d’effectuer la restitution sonore. Si le son est rejoué avec un taux d’échantillonnage incorrect, il sera joué à une vitesse différente et, de ce fait, avec d’autres fréquences.from soundsystem import * samples = getWavMono("mysound.wav") print(getWavInfo("mysound.wav")) openMonoPlayer(samples, 22050) play() |
MEMENTO |
La fonction getWavMono() permet de charger dans une liste les échantillons présents dans un fichier WAV. Chaque valeur lue sera un nombre entier compris entre -32768 et 32767. La fonction openMonoPlayer() est un lecteur de sons permettant de jouer les sons avec la fonction play(). Du fait que la longueur des listes est limitée par la capacité de la mémoire vive de l’ordinateur, la fonction getWavMono() ne permet de lire que des clips audio relativement courts. |
ONDE SONORE |
from soundsystem import * samples = getWavMono("mysound.wav") print(getWavInfo("mysound.wav")) openMonoPlayer(samples, 44100) play() from gpanel import * makeGPanel(0, len(samples), -33000, 33000) for i in range(len(samples)): draw(i, samples[i]) |
MEMENTO |
Il est nécessaire de choisir le système de coordonnées du GPanel de manière appropriée. Les valeurs affichées dans la direction de l’axe Ox sont comprises entre 0 et le nombre d’échantillons, déterminable à partir de la longueur de la liste d’échantillons. Les valeurs de l’axe Oy sont comprises entre -32768 et 32767, ce qui explique que l’on utilise une plage de plus ou moins 33000. |
LA VOIE DE LA FACILITÉ |
Dans le cas où l’on ne s’intéresse qu’à jouer un fichier son, il suffit de trois lignes de code qui permettent d’ailleurs même de jouer des sons de longue durée, comme votre chanson favorite. from soundsystem import * openSoundPlayer("myfavoritesong.wav") play() |
MEMENTO |
La distribution TigerJython met également à disposition une bibliothèque de plusieurs clips sonores dont les noms sont listés dans la table ci-dessous :
Cette liste de clips sonores est constamment étoffée. S’il s’avère qu’il existe dans le dossier de votre programme un fichier portant l’un des noms listés ci-dessus, il aura la priorité par rapport aux clips de TigerJython. Le lecteur sonore dispose de nombreuses commandes de contrôle, à la manière des lecteurs professionnels. Il est par exemple possible de mettre la lecture en pause avec la fonction pause() et de la reprendre par la suite avec la fonction play(). La longueur du son restitué n’est pas limitée avec ces fonctions car il n’est pas chargé en entier dans la mémoire de l’ordinateur. Bien au contraire, il est lu en streaming, à savoir par petits paquets.
|
JOUER DES FICHIERS MP3 |
Pour jouer des fichiers audio au format MP3, il faut installer des bibliothèques supplémentaires disponibles en téléchargement depuis ce lien. Dézipper l’archive téléchargée dans le dossier Lib qu’il faut créer dans le même dossier que l’archive tigerjython2.jar s’il n’existe pas encore. Pour jouer des fichiers MP3, il faut utiliser les fonctions openSoundPlayerMP3(), openMonoPlayerMP3() et openStereoPlayerMP3 en lieu et place de openSoundPlayer(), openMonoPlayer() et openStereoPlayer() en indiquant le chemin d’accès au fichier MP3. Pour contrôler la lecture, il faut utiliser les mêmes fonctions que pour les fichiers WAV. from soundsystem import * openSoundPlayerMP3("song.mp3") play() |
MEMENTO |
Pour jouer des fichiers MP3, il faut se procurer des archives JAR additionnelles qu’il faut placer dans le dossier Lib du dossier racine de tigerjyton2.jar. |
EXERCICES |
|