Python et la musique

les sons windows

Il existe pour cela depuis la version 2.7 de python un module standard

import winsound
# Play Windows exit sound.
winsound.PlaySound("SystemExit", winsound.SND_ALIAS)

# Probably play Windows default sound, if any is registered (because
# "*" probably isn't the registered name of any sound).
winsound.PlaySound("*", winsound.SND_ALIAS)

jouer un fichier mp3

il faut pour cela télécharger le module mp3play sur https://pypi.python.org/pypi/mp3play/

l’installation est classique

python setup.py build
python setup.py install

l’utilisation est simple

import mp3play

filename = r'C:\Documents and Settings\Michael\Desktop\music.mp3'
clip = mp3play.load(filename)

clip.play()

import time
time.sleep(min(30, clip.seconds()))
clip.stop()

Par contre il ne lit pas de flux réseau

interface pour mplayer

Il existe des modules binding pour mplayer (http://www.mplayerhq.hu/)

python-mplayer

Il faut télécharger le module sur http://code.google.com/p/python-mplayer/

l’installation est classique

python setup.py build
python setup.py install

Note

il faut avoir dans le PATH windows le répertoire d’installation de mplayer ou modifier os.environ[‘PATH’]

pour ajouter ce dernier

import os, os.path
def we_are_frozen():
    # All of the modules are built-in to the interpreter, e.g., by py2exe
    return hasattr(sys, "frozen")

def module_path():
    encoding = sys.getfilesystemencoding()
    try: #for python2
        if we_are_frozen():
            return os.path.dirname(os.path.realpath(unicode(sys.executable, encoding)))
        return os.path.dirname(os.path.realpath(unicode(__file__, encoding)))
    except: #for python3
        if we_are_frozen():
            return os.path.dirname(os.path.realpath(sys.executable))
        return os.path.dirname(os.path.realpath(__file__))

os.environ['PATH'] = os.environ['PATH'] + ';%s\\bin\mplayer' % module_path()

l’utilisation est simple

from mplayer import Player
# Since autospawn is True by default, no need to call player.spawn() manually
player = Player()
# Play a file
player.loadfile('/path/to/file.mkv')
# Pause playback
player.pause()

il y a peu de commande accessible mais les principales sont là

mpylayer

Il faut télécharger le module sur http://code.google.com/p/mpylayer/

l’installation est classique

python setup.py build
python setup.py install

Note

il faut avoir dans le PATH windows le répertoire d’installation de mplayer

l’utilisation est simple

mp = mpylayer.MPlayerControl()
mp.loadfile('/path/to/some_music.mp3')
mp.volume = 100
mp.stop()

il est beaucoup plus complet (gestion du volume, ...) une liste exhaustive des fonction peut être obtenue en réalisant le code suivant

mp = mpylayer.MPlayerControl()
help(mp)

Attention

afin de récupérer la valeur volume, time_pos, ... j’ai réalisé une grosse modification dans le code de ce module (mpylayer_control.py)

class SelectMPlayerControl(object):
...

    def _get_result(self):
        self._read_all()
        value = ''.join(self._buffer)
        if '=' in value:
            return value.split('=')[-1]
        return ''

Piloté VLC

Il est possible de piloté le célèbre player VLC (videolan.org) par python et cela de plusieurs façons.

En effet il est possible de lancer vlc avec différentes interfaces:

  • web
  • telnet

Il est alors possible de piloté vlc via ces interfaces en utilisant ces interfaces. En exemple de librairie utilisant l’interface telnet: https://github.com/DerMitch/py-vlcclient

Il est aussi tout à fait possible d’utiliser la librairie vlc pour lire des médias. Il faut pour cela utiliser la librairie vlc.py et de s’assurer d’avoir dans son PATH la dll de vlc.

On peut obtenir la librairie vlc.py via le site wiki de vlc (https://wiki.videolan.org/Python_bindings/)