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@lists.python.it
http://lists.python.it/mailman/listinfo/python


_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a