// enjoliveur de code // fin enjoliveur

1. Le son numérique

1.1. Un peu de physique...

Le son est une vibration de l'air qui se propage depuis une source, par exemple un haut-parleur, jusqu'à un récepteur, par exemple nos oreilles.

Physiquement, un son peut être représenté par une onde, et ressemble en ceci aux vagues qui se créent à la surface de l'eau dans laquelle on a jeté une pierre, et qui se propagent depuis le point d'impact de la pierre dans toutes les directions (vous verrez en Terminale pourquoi on utilise le verbe propager et pas déplacer).

Un bouchon, placé à la surface de l'eau, sur lequel arrive ces vagues voit le niveau de cette dernière varier au cours du temps par rapport à sa position de repos; pour représenter ces variations au cours du temps, on peut tracer une courbe montrant l'évolution de cette hauteur en fonction du temps :

La hauteur des vagues décroît au cours du temps

La hauteur atteinte par le niveau de l'eau au cours du temps correspond à l'amplitude de l'onde.

De la même manière, une onde sonore modifie elle la pression de l'air en chacun des points où elle passe, et ce sont à ces variations de pression que nos oreilles sont sensibles.
Pour représenter ces variations au cours du temps, telles que, par exemple, détectées par un microphone, on peut donc également tracer une courbe de l'amplitude du son en fonction du temps :

Une telle courbe représente ainsi le signal sonore modélisant le son. Plus l'amplitude de ce signal est grande, plus le son est intense (= "fort" ).

La période (T) d'un son est associée à sa fréquence (f), exprimée en hertz (Hz), les deux grandeurs étant inverses l'une de l'autre.
Vous verrez en Terminale (si vous ne le savez pas déjà...) que la fréquence d'un son est liée à sa hauteur : plus un son a une fréquence élevée, plus il est aigu.

1.2. La numérisation du son

Pour enregistrer un son sur un support informatique, il est nécessaire de le numériser, c'est à dire coder ces variations d'amplitude sous forme d'une suite de valeurs qui représenteront le signal sonore dans la mémoire de l'ordinateur...une machine ne connaît que les nombres...

Comment ça, des nombres pour représenter un son ? Comment ça peut marcher ???

Pour bien comprendre comment on peut stocker un son sous forme de nombre, vous allez réaliser à la main le travail que fait un ordinateur lorsqu'il numérise un son...

Cette numérisation se fait en deux étapes.

1ère étape : échantillonnage du signal

Principe

Un dispositif mesure la valeur du signal (exprimée en Volts par exemple) à des intervalles de temps réguliers, durée appelée période d'échantillonnage (Te) (à ne pas confondre avec la période T du son lui-même !!!), exprimée en seconde.
Ces valeurs, appelées échantillons, sont ensuite stockées les unes à la suite des autres dans l'ordre auquel elles ont été échantillonnées.

liste des échantillons

Travail à faire

Sur la fiche que l'on vous a distribuée, à vous de faire à la main l'échantillonnage du signal dont la courbe est représenté, avec les deux périodes d'échantillonnage proposées, puis répondre aux questions posées.

2ème étape : Quantification

Principe

Cette étape consiste à "coder" chaque échantillon par une valeur entière (qui peut être positive ou négative), choisie dans une série définie par le nombre N de bits de quantification utilisé.

D'après les propriétés de la numération binaire utilisée en informatique, la correspondance est la suivante :

N ( bits ) Nombre de valeurs entières possibles
8 256
16 65 536
24 1,7 x 107
N 2N

La valeur entière associée à chaque échantillon est d'autant plus grande que l'échantillon lui-même a une valeur élevée.

Travail à faire

Sur la fiche que l'on vous a distribuée, à vous de faire à la main la quantification demandée, avec les deux nombres de bits de quantification proposés, puis répondre aux questions posées.

Conclusion

Petite période d'échantillonnage Nombre élevé de bits de quantification
Avantages Nombre d'échantillons grand, donc liste des échantillons d’autant plus fidèle au signal original (mais il y a cependant toujours perte d'information...) Nombre de valeurs possibles grand, donc "finesse" de la quantification importante : meilleure qualité du son
Inconvénients Échantillons très nombreux, donc lourds à stocker (fichier volumineux) ou à manipuler (temps de traitement important) Nécessite des appareils précis et coûteux, pas forcément nécessaire pour un usage courant...
Remarques La caractéristique d'un échantillonnage est généralement plutôt donnée en fréquence d'échantillonnage (fe), égale à l'inverse de Tech.
La fréquence d'échantillonnage représente donc le nombre d'échantillons mesurés par seconde.
Voila la correspondance entre ces deux grandeurs pour des valeurs d'échantillonnage courantes dans le domaine sonore :
fe ( Hz ) Te
8 000 0,13 ms
11 025 90 µs
44 100
( utilisé pour les CD )
23 µs
Le son qualité CD est par exemple quantifiée sur 16 bits, mais on rencontre de plus en plus dans la musique dématérialisée des quantifications sur 24 voire 32 bits...

OK, super...On a maintenant une liste de valeurs qui représentent le son...on en fait quoi maintenant ?? Ah ben tiens, il existe justement une notion de liste en Python, ça doit sûrement être bien pratique si on veut se lancer dans la manipulation des sons...

1.3. Les listes en Python

Comme son nom l'indique, une liste en Python sert à stocker un ensemble de données (valeurs entières ou décimales, texte,...) ayant un rapport entre elles (c'est bien le cas des données d'un son !), de façon à pouvoir les retrouver et les utiliser plus facilement

Une liste est donc un peu un "tableau" de valeurs à une seule ligne, dans chaque case duquel on mettrait une donnée :

45 32 27 189 78 569 423 785 23 78 630 ...

Caractéristiques d'une liste

Exemples de définitions de listes :

	liste1 = [45,32,27,189,78,569,423,785,23,78,630]
	noms = ['durand','martin','roger','paul','dubois','jean']		
			

Repérage d'une donnée dans une liste :

Pour utiliser une donnée dans une liste, on la repère avec la syntaxe suivante : nomdelaliste[index]

Par exemple :

Travail avec les listes

pour afficher un élément de la liste, utiliser l'instruction print() :

	>>> print(liste1[8])
	23
	>>> print(noms[2])
	roger
				

Pour afficher la liste entière :

	>>> print(liste1)
	[45, 32, 27, 189, 78, 569, 423, 785, 23, 78, 630]
			

...et beaucoup de choses sont possibles avec les listes : leur rajouter des éléments, en enlever, fusionner deux listes en une seule, etc....