OVH Cloud OVH Cloud

Jouer un son (personnalisé) avec Python

19 réponses
Avatar
noone
Bonsoir,

je cherche à jouer un son avec Python.
Attention ! Je ne veux pas jouer un fichier .wav
Je veux à partir d'une série de données (temps-amplitude) pouvoir jouer
ce son.
Est-ce possible avec Python ?

Merci d'avance

9 réponses

1 2
Avatar
noone
juste une petite question...

il n'y a pas un exemple pour la fonction make_sound ?

Merci
Avatar
Alex Marandon
On 2005-07-17, wrote:

Éventuellement, j'ai réalisé un module qui wrappe (un peu) le MCI de
Windows.


oui mais j'aurai voulu qu ça marche sous Windows et sous Linux


Les API d'accès aux chipsets audio sont différents pour Windows, Linux,
Mac, etc. Il faut donc une couche d'abstraction qui propose une API
unifiée, comme par exemple PortAudio <http://www.portaudio.com/> ou
RtAudio <http://www.music.mcgill.ca/~gary/rtaudio/>. Il semble qu'un
binding Python existe pour PortAudio,
<http://www.freenet.org.nz/python/pyPortAudio/>.


Avatar
Alex Marandon
On 2005-07-16, wrote:
http://pymedia.sourceforge.net


oui mais c'est uniquement pour jouer un fichier dans un format donné...
pas pour jouer une suite de données temps-amplitude


Je ne vois pas trop ce que tu appelles "suite de données
temps-amplitude". Il n'y a pas de notion de temps dans un flux audio
brut, c'est uniquement une suite de données numériques. C'est le driver
de la carte son qui gère la fréquence à laquelle il consomme les
échantillons. Bien sur, si celui-ci n'est pas à la fréquence à laquelle
le son est censé être joué, le son va sortir plus grave ou plus aigu. Il
faut donc configurer le DSP pour la fréquence voulue ou bien convertir
les données vers la fréquence du DSP.


Avatar
Alex Marandon
On 2005-07-20, Alex Marandon wrote:
Les API d'accès aux chipsets audio sont différents pour Windows, Linux,
Mac, etc. Il faut donc une couche d'abstraction qui propose une API
unifiée, comme par exemple PortAudio <http://www.portaudio.com/> ou
RtAudio <http://www.music.mcgill.ca/~gary/rtaudio/>. Il semble qu'un
binding Python existe pour PortAudio,
<http://www.freenet.org.nz/python/pyPortAudio/>.


Bien sûr, tu peux aussi te coder ta petite API qui fait juste ce dont tu
as besoin, en l'occurence ouvrir le DSP, le configurer, écrire tes
données, le refermer... mais ça implique d'étudier un minimum les API C
(ou peut-être C++ sous Windows) des OS et de faire une API Python par
dessus. C'est ce travail que les libs sus-citées devraient pouvoir
t'épargner.

Avatar
Sébastien Kirche
Le 21 July 2005 à 01:07, Alex Marandon vraute :

Je ne vois pas trop ce que tu appelles "suite de données
temps-amplitude". Il n'y a pas de notion de temps dans un flux audio
brut, c'est uniquement une suite de données numériques.


Si j'ai bien suivi, l'OP ne parle pas de flux audio, mais bien de la
possibilité de générer du son en décrivant ses caractéristiques et pas
en échantillonnant.

Un peu comme sur certains trackers (fasttracker 2) ou à l'époque du
CPC6128, quand on décrivait les effets sonores par une "enveloppe de
volume" (attaque, fréquence de la note, durée) ainsi qu'une "enveloppe
d'effet" éventuelle (vibrato, ...).

Par contre si je pense avoir compris, je ne connais pas de solution
python.

--
Sébastien Kirche

Avatar
Paul Gaborit
À (at) Thu, 21 Jul 2005 14:18:19 +0200,
Sébastien Kirche écrivait (wrote):
Un peu comme sur certains trackers (fasttracker 2) ou à l'époque du
CPC6128, quand on décrivait les effets sonores par une "enveloppe de
volume" (attaque, fréquence de la note, durée) ainsi qu'une "enveloppe
d'effet" éventuelle (vibrato, ...).

Par contre si je pense avoir compris, je ne connais pas de solution
python.


Si c'est vraiment cela, il existe CSound dont certaines versions 5.x
sont programmables via Python :

<http://www.csounds.com/>

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>

Avatar
noone
Bien sûr, tu peux aussi te coder ta petite API qui fait juste ce dont tu
as besoin, en l'occurence ouvrir le DSP, le configurer, écrire tes
données, le refermer... mais ça implique d'étudier un minimum les API C
(ou peut-être C++ sous Windows) des OS et de faire une API Python par
dessus. C'est ce travail que les libs sus-citées devraient pouvoir
t'épargner.


Merci mais je ne connaissais pas ces lib

J'avais par contre entendu parler de SDL
donc je vais plutôt me pencher sur PyGame


http://www.pygame.org/docs/tut/intro/intro.html
This article is an introduction to the Pygame library for Python
programmers. The original version appeared in the Py Zine, volume 1
issue 3. This version contains minor revisions, to create an all around
better article. Pygame is a Python extension library that wraps the SDL
library and it's helpers.

Avatar
Alex Marandon
On 2005-07-21, Sébastien Kirche
wrote:
Je ne vois pas trop ce que tu appelles "suite de données
temps-amplitude". Il n'y a pas de notion de temps dans un flux audio
brut, c'est uniquement une suite de données numériques.


Si j'ai bien suivi, l'OP ne parle pas de flux audio, mais bien de la
possibilité de générer du son en décrivant ses caractéristiques et pas
en échantillonnant.


A l'arrivée on se retrouve de toute façon avec une série d'échantillons
audio qu'on "balance" à la carte son. Que ceux-ci soient issus de
l'échantillonage d'une source sonore externe ou bien générés par le
programme lui-même ne change rien de ce point de vue là.

fu2 positionné au cas où.


Avatar
Alex Marandon
On 2005-07-21, wrote:
J'avais par contre entendu parler de SDL
donc je vais plutôt me pencher sur PyGame


Ok, mais c'est pas un peu surdimendionné par rapport au besoin exprimé ?
PyGame permet beaucoup plus que le besoin exprimé, attention tout de
même à voir si la dépendance est justifiée dans ton cas...

1 2