INTRODUCTION |
Il est également possible d’utiliser l’ordinateur pour remplacer un système expérimental onéreux. On pourrait par exemple imaginer faire des recherches sur l’ouïe humaine en utilisant le système sonore de TigerJython, ce qui est bien meilleur marché et procure une flexibilité énorme lorsque l’on conduit l’expérience à l’aide d’un programme « maison ». |
ACCORDER UN INSTRUMENT DE MUSIQUE, BATTEMENTS |
L’ouïe humaine ne peut pas distinguer deux sons de fréquences très proches lorsqu’ils sont joués séparément. En revanche, si les deux sons sont joués simultanément, il se produit un phénomène de battement caractérisé par des augmentations et des diminutions de volume qui sont très clairement audibles. Pour bien entendre ce phénomène, le programme suivant commence par jouer deux sons de fréquences très proches. Le premier est un joué à 440 Hz et le deuxième à 441 Hz. Lorsque les deux sons sont joués séparément, seule une oreille très développée percevra la différence. En revanche, lorsque les deux sons sont joués ensemble, on entend très clairement le phénomène de battement. import time
playTone(440, 5000)
time.sleep(2)
playTone(441, 5000)
time.sleep(2)
playTone(440, 20000, block = False)
playTone(441, 20000)
|
MEMENTO |
La fonction globale playTone() accepte différentes variantes d’arguments qui sont exposées dans l’aide de TigerJython sous la rubrique « Documentation APLU (Fenêtre graphique et autres gadgets) ». Dans le précédent programme, nous avons fait usage du paramètre block qui permet d’indiquer si la fonction doit être bloquante (ne retourner qu’après la fin du son) ou si elle doit être non bloquante (retourner immédiatement, sans attendre la fin du son). Il est nécessaire d’utiliser la version non bloquante pour jouer plusieurs sons simultanément. Pour accorder des instruments au sein d’un orchestre et même pour des instruments seuls (instrument à corde, piano, etc.), on joue deux notes simultanément tout en prêtant attention aux battements qui surviennent lorsque les notes sont jouées à des fréquences très proches mais différentes. |
GAMMES |
La gamme tempérée est basée sur une fréquence de référence de 440 Hz et divise l’octave (rapport de fréquence 2) en 12 demi-tons possédant tous le même rapport de fréquences r. Cela donne donc:
On peut ainsi générer les notes de la gamme de Do majeur formée de tons et demi-tons répartis de manière appropriée. La fréquence de référence correspond à la note La. Dans la gamme naturelle, on obtient la fréquence des différentes notes par multiplication par le rapport r en partant de la fréquence de référence. Les rapports pour les 8 notes naturelles d’une octave sont donc: et correspondent aux rapports entretenus par les nombres entiers 24, 27, 30, 32, 36, 40, 45, 48. Pour jouer ces notes, il faut sauver ces fréquences dans une liste et les jouer à l’aide de la fonction playTone(). Une fois que la gamme tempérée et naturelle ont été jouées séparément, vous pouvez écouter les deux instruments accordés différemment jouer simultanément la gamme de Do majeur. Vous verrez que ça sonne horriblement mal. r = 2**(1/12) a = 440 scale_temp = [a / r**9, a / r**7, a / r**5, a / r**4, a / r**2, a, a * r**2, a * r**3] scale_pure = [3/5 * a, 3/5 * a * 9/8, 3/5 * a * 5/4, 3/5 * a * 4/3, 3/5 * a * 3/2, a, 3/5 * a * 15/8, 3/5 * a * 2] playTone(scale_temp, 1000) playTone(scale_pure, 1000) playTone(scale_temp, 1000, block = False) playTone(scale_pure, 1000) |
MEMENTO |
Dans la gamme tempérée, les demi-tons successifs entretiennent tous le même rapport de fréquences, de sorte que la différence de fréquences n’est pas égale. L’avantage de la gamme tempérée par rapport aux gammes naturelles est que les rapports de fréquences restent les mêmes dans toutes les tonalités (Do majeur, Ré majeur, etc …) [plus...
La gamme naturelle présente cependant l’avantage que les accords |
JOUER DES MÉLODIES |
Il est également possible de jouer de simples mélodies pour le plaisir avec la fonction playTone(). Pour jouer des notes successives de même longueur, utilisons une liste de tuples indiquant chacun une fréquence et une durée. Il est également possible de choisir un instrument de musique. L’exemple suivant joue un air enfantin. Le reconnaîtrez-vous? v = 250 playTone([("cdef", v), ("gg", 2*v), ("aaaa", v//2), ("g", 2*v), ("aaaa", v//2), ("g", 2*v), ("ffff", v), ("ee", 2*v), ("dddd", v), ("c", 2*v)], instrument="harp") |
MEMENTO |
La facilité avec laquelle il est possible de jouer une mélodie avec playTone() est assez déconcertante. Par rapport à un instrument réel, le son est cependant relativement synthétique. |
EXERCICES |
|