Main

Référence : Fonctions Pyduino

Pyduino Multimedia : playSoundLoop()


Description

  • Cette fonction permet de lire un fichier son en boucle sans fin à partir de son chemin absolu. Les types de fichiers supportés sont nombreux : *.wav, *.ogg, *.mp3, ...
  • A la différence d'un shield Audio pour Arduino qui nécessite un traitement préalable du son, cette fonction permet d'utiliser des fichiers sons aux formats standards en toute simplicité : téléchargement du son voulu sur internet, copie dans le répertoire voulu du système et vous êtes prêts !

Cette fonction permet d'ajouter en quelques minutes des bruitages à vos applications développées avec Pyduino : téléchargez, enregistrez, jouez le son.. ! A vous les banques de données de sons libres en ligne pour agrémenter vos programmes de bruitages de toutes sortes !

Pré-requis

NOUVEAU : L'installation des dépendances multimédia est automatiquement effectuée en 1 fois par l'installation du paquet *.deb PyduinoMultimedia

  • Il est tout d'abord nécessaire de disposer d'une interface audio opérationnelle sur le système :
    • sur le rapsberrypi, c'est le cas en natif avec la distribution raspbian
    • sur le pcduino, il faut installer les paquets suivants qui fournissent une interface audio classique sur un système Gnu/Linux (réglage volume, choix des entrées / sorties audio, etc...) :
$ sudo apt-get install pulseaudio
$ sudo apt-get install pavucontrol
  • Cette fonction nécessite l'installation préalable du logiciel mplayer. Si celui-ci n'est pas installé sur votre système, l'installer avec la commande :
$ sudo apt-get install mplayer
$ sudo apt-get install mencoder

Matériel nécessaire

  • Pour ententre les sons, il est nécessaire de disposer d'une sortie audio sur le système. Cela dépend des plateformes :
    • sur le raspberrypi, on dispose d'une sortie HDMI et d'une sortie audio RCA sur Jack
    • sur le pcduino, on dispose uniquement d'une sortie HDMI
  • Selon les cas, on utilisera au choix :
    • les enceintes de l'écran HDMI connecté à la carte mini-PC
    • une mini-carte son USB reconnue par le système Gnu/Linux, qui aura l'avantage d'intégré à la fois une sortie et une entrée audio
    • un mini-ampli son connecté sur la sortie audio Jack avec enceintes ou H associé
    • voire même un simple casque audio...

Tests préalables

  • Il est utile de vérifier au préalable le bon fonctionnement de la sortie son. Le plus simple et le plus pratique pour des tests, mais aussi pour réaliser du traitement des fichiers sons est d'utiliser le logiciiel Audacity. A installer avec la commande :
$ sudo apt-get install audacity
  • Le logiciel Audacity se lance ensuite depuis le menu graphique Applications > Sound and Video > Audacity
  • Pour tester le son, aller dans le menu Generate et choisissez l'option de votre choix, par exemple DTMF et valider. Vous obtenez alors le tracé du son : cliquer sur Play. Vous devez entendre le son. Si ce n'est pas le cas, vérifiez les connexions, vérifiez le volume dans l'interface son et sur votre appareil de sortie son.
  • Tout fonctionne ? Vous êtes parés !

Syntaxe

playSound()
playSoundLoop(filepath)

Paramètres

  • filepathImage : le chemin absolu du fichier son à utiliser. Si pas de fichier précisé : utilise le fichier son temporaire interne obtenu avec soundRecord()

Valeur renvoyée

Aucune

Fichiers sons

Quelques exemples

$ wget -4 http://www.mon-club-elec.fr/mes_downloads/pyduino_sons.tar.gz
  • Extraire l'archive puis copier-là dans votre répertoire de sources audio.

Où placer les fichiers sons ?

  • Par défaut, la librairie Pyduino utilise les chemins suivants :
    • sources/text/
    • sources/audio/
    • sources/images/
    • sources/videos/
  • Ces répertoires peuvent être modifiés à votre convenance.

Organisation des répertoires par défaut utilisés par la librairie Pyduino

  • La librairie Pyduino permet d'organiser par défaut les fichiers utilisés de la façon suivante :
    • main/
      • data/
        • text
        • images/
        • audio/
        • videos/
      • sources/
        • text
        • images/
        • audio/
        • videos/
  • Le répertoire data permet de stocker les fichiers de datalogging générés par la librairie et le répertoire sources permet de stocker les fichiers

En pratique, placer les sons à lire dans le répertoire /home/user/sources/audio

Explication technique

  • Cette fonction repose sur l'excellent lecteur de son (et vidéos) en ligne de commande mplayer : http://www.mplayerhq.hu/design7/news.html utilisé avec l'option -loop 0
  • Bon à savoir : si vous obtenez un message d'erreur lors de la lecture d'un fichier son sous la forme "could not connect to socket" et "no such file or directory", il faut ajouter l'option suivante au fichier /etc/mplayer/mplayer.conf :
nolirc=yes

Exemple:

La lecture des fichiers audio peut générer parfois quelques messages de warning qui sont sans conséquences sur la lecture des fichiers sons elle-même.



#!/usr/bin/python
# -*- coding: utf-8 -*-

# exemple pyDuino - par X. HINAULT - www.mon-club-elec.fr
# Juin 2013 - Tous droits réservés - GPLv3
# voir : https://github.com/sensor56/pyDuino

# test playsound

from pyduinoMultimedia import * # importe les fonctions Arduino pour Python

# entete declarative
#noLoop=True

#--- setup ---
def setup():

        # exemples de sons :  wget -4 http://www.mon-club-elec.fr/mes_downloads/pyduino_sons.tar.gz

        filepathAudio=homePath()+sourcesPath(AUDIO)+"star_wars/"
        filenameAudio="r2d2.mp3"
        print filepathAudio+filenameAudio

        playSoundLoop(filepathAudio+filenameAudio) # joue le son

# -- fin setup --

# -- loop --
def loop():

        delay(20000)

        stopSound() #stoppe tous les sons en lecture

# -- fin loop --

#--- obligatoire pour lancement du code --
if __name__=="__main__": # pour rendre le code executable
        setup() # appelle la fonction main
        while not noLoop: loop() # appelle fonction loop sans fin
 

Commentaires utilisateurs

Pouvoir faire interagir aussi simplement la lecture de fichier son avec les entrées / sorties numériques ou analogiques, sympa !

Voir également


Page d'accueil de la référence Pyduino en français

Corrections, suggestions et nouvelle documentation peuvent être postées à l'adresse suivante : support_at_mon-club-elec_point_fr

Cette page a été réalisée par Xavier HINAULT (2013) (www.mon-club-elec.fr) et est sous licence Creative Commons Attribution-ShareAlike 3.0.