Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Jouer un son (personnalisé) avec Python

334 views
Skip to first unread message

no...@nowhere.com

unread,
Jul 15, 2005, 12:51:20 PM7/15/05
to
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

Do Re Mi chel La Si Do

unread,
Jul 15, 2005, 4:46:32 PM7/15/05
to
Bonsoir !


Peut-être avec ça :
http://pymedia.sourceforge.net


@-salutations

Michel Claveau

no...@nowhere.com

unread,
Jul 16, 2005, 2:16:13 AM7/16/05
to
> Peut-être avec ça :
> 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

Do Re Mi chel La Si Do

unread,
Jul 16, 2005, 8:13:29 AM7/16/05
to
Désolé ; je n'ai pas mieux.
Mais, en musique, je n'ai connais rien...


Gerard Sookahet

unread,
Jul 16, 2005, 9:38:11 AM7/16/05
to

no...@nowhere.com

unread,
Jul 16, 2005, 12:03:03 PM7/16/05
to
Do Re Mi chel La Si Do a écrit :

> Désolé ; je n'ai pas mieux.
> Mais, en musique, je n'ai connais rien...

Une idée serait d'écrire un fichier wav dans un premier temps
Tester ce fichier avec un player audio
Ensuite implémenter la lecture de ce fichier wav avec Python (notamment
à l'aide de PyMedia)
Enfin, (dernière étape) : être capable de réaliser ceci sans la création
du fichier wav (mais directement en mémoire)


PS : moi aussi... en musiquem avec Python je n'y connais rien

no...@nowhere.com

unread,
Jul 16, 2005, 12:04:41 PM7/16/05
to

Merci mais je ne vois pas dans l'exemple la lecture de données :
temps-amplitude

Do Re Mi chel La Si Do

unread,
Jul 16, 2005, 3:59:09 PM7/16/05
to
Re


Éventuellement, j'ai réalisé un module qui wrappe (un peu) le MCI de
Windows.
Il permet simplement d'enregistrer du son (au micro), de la sauvegarder, ou
de le jouer.

Par contre, bien que MCI travaille en mémoire, je ne sais pas adresser le
contenu...


@-salutations

Michel Claveau

no...@nowhere.com

unread,
Jul 17, 2005, 2:50:12 AM7/17/05
to

> É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

Christophe Cavalaria

unread,
Jul 17, 2005, 5:31:27 AM7/17/05
to
no...@nowhere.com wrote:

Utilise pygame et le module pygame.sndarray
http://www.pygame.org/docs/ref/pygame_sndarray.html

no...@nowhere.com

unread,
Jul 17, 2005, 6:17:07 AM7/17/05
to

> Utilise pygame et le module pygame.sndarray
> http://www.pygame.org/docs/ref/pygame_sndarray.html

ça m'a l'air pas mal

mais ça nécessite donc SDL et la lib PyGame

il n'y a vraiment pas moyen de faire ça directement avec le langage Python ?

Merci

no...@nowhere.com

unread,
Jul 17, 2005, 6:22:49 AM7/17/05
to
juste une petite question...

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

Merci

Alex Marandon

unread,
Jul 20, 2005, 6:53:56 PM7/20/05
to

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/>.

Alex Marandon

unread,
Jul 20, 2005, 7:07:17 PM7/20/05
to
On 2005-07-16, no...@nowhere.com <no...@nowhere.com> 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.

Alex Marandon

unread,
Jul 20, 2005, 7:12:26 PM7/20/05
to
On 2005-07-20, Alex Marandon <al@ENLEVER_CECIalpage.org> 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.

Sébastien Kirche

unread,
Jul 21, 2005, 8:18:19 AM7/21/05
to
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

Paul Gaborit

unread,
Jul 21, 2005, 8:58:40 AM7/21/05
to

À (at) Thu, 21 Jul 2005 14:18:19 +0200,
Sébastien Kirche <sebastien...@spam.free.fr.invalid> é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/>

no...@nowhere.com

unread,
Jul 21, 2005, 4:01:05 PM7/21/05
to
> 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.

no...@nowhere.com

unread,
Jul 21, 2005, 4:04:05 PM7/21/05
to
Sébastien Kirche a écrit :

> 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.


Non mes échantillons sont régulièrement espacés...
Donc je peux me passer de l'info temps et ne fournir que la fréquence du
fondamental

Merci

Alex Marandon

unread,
Jul 22, 2005, 4:07:54 AM7/22/05
to
On 2005-07-21, Sébastien Kirche <sebastien...@spam.free.fr.invalid>
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ù.

Alex Marandon

unread,
Jul 22, 2005, 4:13:58 AM7/22/05
to
On 2005-07-21, no...@nowhere.com <no...@nowhere.com> 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...

0 new messages