[Python] rumori o suoni con python in ambiente linux
Lorenzo Sutton
lorenzofsutton a gmail.com
Ven 18 Lug 2014 21:21:33 CEST
On 16/07/14 15:14, Vincenzo Fortunati wrote:
> Ho fatto alcuni programmi con Python 2.5 in ambiente Windows e non ho
> trovato problemi per riprodurre i suoni, sia il beep del sistema che
> rumori o suoni con "winsound". In ambiente Linux (Ubuntu), invece, non
> ne sono stato capace, neppure il beep del sistema con le istruzioni:
> mess = Message()
> mess.bell(displayof=0)
Per questo si può stampare il carattere BEL [1]:
print('\a')
> C'è un modulo equivalente a winsound per Linux?
Risposta corta:
"Ni". Non così direttamente, ma usando un programma esterno chiamato da
subprocess (vedi quasi alla fine su come farlo).
Risposta lunga:
In generale, per la riproduzione di suoni (ad esempio un file wav),
farlo in maniera cross platform risulta ancora problematico in molti
linguaggi di programmazione, perché la situazione è molto frammentata.
Ogni sistema operativo usa "sistemi" (alquanto) diversi per riprodurre
suoni. A sua volta l'audio in linux è molto frammentato: ad esempio ci
sono OSS (obsoleto), Alsa, pulsaudio e jack solo per nominare i quattro
sistemi più usati, ognuno con peculiarità diverse.
Ora, esistono librerie (con port per Python) che gestiscono l'audio in
maniera unificata e multipiattaforma: la già citata PyGame; una libreria
abbastanza popolare per l'audio è Portaudio, che ha un port PyAudio [2],
e poi ce ne sono altre, ad esempio pygstreamer, molto potente (fa molto
più che solo audio) ma molto più complicato.. vedi ad es. [3].
Detto questo, una maniera un po' 'quick and dirty' di suonare un file
audio su Linux sarebbe usare subprocess per chiamare un player da linea
di comando come aplay (presente sul 99.9% di sistemi con una scheda
audio) o play (da SoX [4]) per cose più sofisticate, ad esempio con aplay:
import subprocess
ubprocess.Popen(['aplay','mysound.wav'])
Spero sia utile.
Lorenzo.
[1] http://en.wikipedia.org/wiki/Bell_character
[2] http://people.csail.mit.edu/hubert/pyaudio/
[3]
http://www.jonobacon.org/2006/08/28/getting-started-with-gstreamer-with-python/
[4]: http://sox.sourceforge.net/
> Grazie. Enzo
>
>
>
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> http://lists.python.it/mailman/listinfo/python
>
Maggiori informazioni sulla lista
Python