Composer de la musique avec Python

Type:
pyconfr
Audience level:
Intermediate
Category:
présentation
Septembre 15th 2:30 après-midi – 3 après-midi

Description

Le projet pythoneon utilise le langage Python et son extension Numpy pour synthétiser des sons numérisés et pour placer ces sons dans le temps et dans l'espace - donc composer de la musique. Le projet se propose d'explorer toutes les possibilités de la synthèse algorithmique en respectant la re-productibilité qui est la base de toute démarche réellement expérimentale.

Abstract

Description détaillée:

Au départ, j'ai écrit quelques pythons (== scripts en Python) pour faciliter l'utilisation d'un logiciel de création sonore (Csound). Je me suis rendu compte qu'il fallait connaître non seulement Python, mais aussi les contorsions syntaxiques de ce logiciel. D'où l'idée de se rendre indépendant de ce logiciel en réécrivant les fonctionalités en Python. Il fallait simplement prouver qu'une sinusöide pouvait être créée et qu'on pouvait la faire entendre - ce qui fut vite fait.

Là, je me suis rendu compte qu'en suivant le canevas du logiciel pris comme modèle, on était amené à réinventer Python. Inutile: il vaut mieux utiliser la puissance et la modularité du langage pour développer des modules réutilisables.

Tous les domaines de la création du son et de son organisation dans le temps et l'espace ont été abordés, mais en maintenant quelques règles élémentaires: - indépendance vis-à-vis des contingences techniques (matériels disponibles, fréquence d'échantillonnage, MIDI), - indépendance vis-à-vis des modes (mythe du «temps réel»), - reproductibilité de l'oeuvre.

Certains concepts de la musique traditionnelle (pourtant obséquieusement acceptés par l'industrie musicale) ont pu être joyeusement abandonnés - d'où une simplification de ce qu'on appelle «théorie de la musique»; d'autres concepts - p.ex. ceux de partition, de tempo, de gamme - ont été revitalisés.

Implémenter les classes principales de la construction d'ondes est facile en Python, pour autant qu'il existe une documentation accessible sur ce qui a déjà été réalisé. La plupart des générateurs d'ondes utilisent donc des récurrences, procédés simples allant de la sinusoïde jusqu'aux bruits complexes, et ne doivent pas grand chose au savoir officiel du domaine musical.

Pour que le code soit vraiment réutilisable, il faut qu'on ait du plaisir à le relire. Il faut donc se méfier d'une trop grande virtuosité et aussi de quelques spécificités langagières mentalement difficiles à tracer. C'est ainsi qu'on peut envisager un enseignement de l'informatique, puisant ses exemples dans la musique.

L'exigence de reproductibilité nous a amené à revoir le statut de l'erreur de programmation. Dans la mesure où une erreur ou maladresse de programmation a été commise, mais que le résultat musical a été accepté, il convient de figer le python-partition dans sa forme et de ne pas chercher à l'améliorer.

Le projet pythoneon est porté par l'assocation CARMEN (Centre alsacien de recherche pour une musique électronique nouvelle). Comme le matériel nécessaire est extrêmement réduit (un ordinateur muni d'un Linux complet, avec Python et Numpy), l'effort financier a surtout porté sur l'acquisition d'un matériel de diffusion de très grande qualité.

René Bastian