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
oui mais c'est uniquement pour jouer un fichier dans un format donné...
pas pour jouer une suite de données temps-amplitude
Hello,
Avec le Snack Sound Toolkit:
http://www.speech.kth.se/snack/
http://www.speech.kth.se/snack/tutorial.html#rtgen
GS
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
Merci mais je ne vois pas dans l'exemple la lecture de données :
temps-amplitude
É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
oui mais j'aurai voulu qu ça marche sous Windows et sous Linux
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
il n'y a pas un exemple pour la fonction make_sound ?
Merci
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/>.
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.
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.
> 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
Si c'est vraiment cela, il existe CSound dont certaines versions 5.x
sont programmables via Python :
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
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.
> 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
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ù.
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...