Faire un don
Fichiers audio libres de droits et gratuits.
Logo du site LaSonotheque.org
Logo du site LaSonotheque.org
⚠️ LaSonothèque a du mal... elle a besoin de vous pour rester en vie ! Faites un (petit) don ⚠️
Tous les dossiers

Fabriquer une boite à sons (avec un Raspberry Pi)

Une boite à sons, c'est comme une boite à musique, mais qui permet la lecture d'un ou plusieurs fichiers sonores. Je vous ai précédemment fais le totoriel d'une boite à sons plus facile à réaliser, avec un "DF Player" ou avec un "Arduino" + un "DF Player", mais cette fois-ci nous allons réaliser une boite à sons stéréo plus "informatique" : elle peut donc être plus "intelligente"... Comme toujours, si vous avez la moindre question n'hésitez pas à la poser sur le forum dédié au bricolage électronique ! J'y répondrais personnellement, avec l'aide de la communauté.

Présentation

Que ce soit dans sa version Zero, 1, 2, 3 ou 4, le Raspberry Pi est un micro ordinateur peu cher qui fait aussi des merveilles en audio. Nous allons voir dans ce dossier comment en faire un lecteur de fichiers audio stéréo, grâce au language de programmation "Python 3". Cela nécessite peu de compétences particulières.

Hormis en version "Zero", le Raspberry Pi dispose d'une carte son intégrée avec une prise Jack pour la sortie casque/line stéréo. Cependant, quelque soit la version, il est possible d'y brancher n'importe quelle carte son externe USB du commerce, pour élever la qualité ou faire du multipiste.

L'avantage du Raspberry Pi c'est qu'il dispose de nombreuses entrées et sorties numériques grâce à ce que qu'on appelle le GPIO. Il s'agit d'un grand connecteur 40 broches qu'il est possible de connecter à de nombreuses choses (Led, capteurs, actionneurs, etc.).

Étape par étape

1. Préparation

La première étape consiste à installer Raspberry Pi OS. Pour rappel, il faut brancher sa carte micro SD sur un ordinateur, et se servir de "Raspberry Pi Imager" pour y installer l'OS. Cette appli est disponible pour Windows, Mac et Linux.

Vous pourriez utiliser l'OS "Lite", mais il faudrait alors tout configurer via le Terminal : c'est à dire en ligne de code, sans souris. Si vous avez besoin de ce tuto, c'est que vous êtes débutant. Installez donc l'OS "Full".

Une fois l'OS sur la micro SD, insérez-là dans le Raspberry Pi, branchez un clavier, une souris et un écran et démarrez-le.

2. Configuration

Maintenant, répondez à toutes les questions de votre Raspberry : pays, langue, clavier, etc. Il va aussi et surtout vous demander d'imaginer un "login" et un "mot de passe" ainsi que les identifiants de votre Wifi. Puis, à sa demande, mettez l'OS à jour.

3. Organisation

Cliquez en haut à gauche, sur l'icone en forme de "planète" pour ouvrir le "Web Browser". Ouvrez le site LaSonotheque.org et téléchargez-y n'importe quel fichier au format MP3 ou WAV.

Un bandeau apparait en bas du "Web Browser" et permet de suivre l'avancé du téléchargement. Une fois finit, cliquez sur la flèche vers le haut puis "Afficher dans le dossier".

Le "gestionnaire de fichiers" s'ouvre directement dans le dossier "Téléchargements" ou "Downloads" (Souvenez-vous du nom de ce dossier).

Cliquez droit sur le fichier et "Renommer" en "test". Laissez le .mp3 ou .wav qui est derrière.

Vous pouvez en profiter pour retourner sur le site de LaSonotheque.org pour ouvrir le dossier que vous lisez actuellement, directement sur le Raspberry. Ce sera plus pratique pour "copier/coller" les morceaux de codes que je vais vous proposer.

4. Programmation

Comme nous allons utiliser le lecteur "VLC", il faut l'installer. Cliquez, en haut à gauche, sur l'icone en forme de "fichier noir" qui va ouvrir le "Terminal".

Ecrivez :

pip install python-vlc

Appuyez sur entrer. "VLC" va s'installer tranquillement. Une fois qu'il vous redemande quoi faire (en vert et bleu), fermez le "Terminal".

Cliquez sur la framboise en haut à gauche. Puis "Programmation" >"Thonny". C'est le logiciel de programmation que je préfère.

Copiez-collez ce code complet :

import time, vlc

player = vlc.MediaPlayer()
player.audio_set_volume(100)

def lecture():
    player = vlc.MediaPlayer("/home/LOGIN/Téléchargements/test.wav") # Remplacer "LOGIN" (par le nom de votre Raspberry) et "Téléchargements" (si le dossier avec le fichier son est différent) !
    player.play()

    time.sleep(5)

    player.pause()

    time.sleep(1)

    player.play()

    time.sleep(5)

    player.stop()

while True:
    lecture()

N'oubliez pas de remplacer "LOGIN" (par le nom de votre Raspberry) et "Téléchargements" (si le dossier avec le fichier son est différent) !

Cliquez sur "Run" pour constater que ça marche !

Vous pouvez cliquer sur "Save" pour sauvegarder le programme. Pour simplifier la suite, appelez-le "test.py", dans le dossier "Téléchargements".

Pour expliquer simplement ce code :

  • On importe les bibliothèques "time" (qui va servir à compter le temps) et "vlc" (qui va lire le fichier son).
  • On nomme "player" le lecteur audio.
  • On met le volume du lecteur à 100%
  • On va définir la fonction "lecture()"
    • On appel le fichier "test" qu'on a téléchargé.
    • On met en lecture le fichier appelé.
    • On attend 5 secondes.
    • On met la lecture sur pause.
    • On attend 1 seconde.
    • On remet sur play.
    • On attend 5 secondes.
    • On stop la lecture.
  • On fait une boucle infinie avec "while True".
    • On va y lancer la fonction "lecture()"

5. Autostart (facultatif)

Pour le moment, le programme se lance manuellement. Nous allons donc l'automatiser pour qu'il tourne en boucle, dès le démarrage du Raspberry.

Ouvrez le "Terminal", vous savez : haut à gauche, l'icone noir. Puis tapez ce code, qui va activer votre script. Mettez les noms de dossiers ("LOGIN" et "Téléchargements") comme il faut. Puis "entrer" :

sudo chmod +x /home/LOGIN/téléchargements/test.py

Maintenant, vous allez ouvrir le fichier gérant tout ce qui est automatiquement lancé au démarrage. Puis "entrer" :

sudo nano /etc/xdg/lxsession/LXDE-pi/autostart

Quelques lignes sont déjà présentes. Vous allez tout en bas et vous ajoutez ça. En modifiant toujours les noms de dossiers comme il faut.

@lxterminal --command="/home/LOGIN/téléchargements/test.py"

Pour enregistrer, il faut suivre le bandeau en bas : quitter avec "Ctrl+X", puis répondre oui avec la lettre "O" et "entrer", puis encore "entrer" pour valider le nom du fichier.

Vous vous retrouverez alors dans le terminal. Vous pouvez redémarrer le Raspberry en cliquant sur la framboise > "Déconnection" > "Redémarrer".

Vous allez constater que le script va se lancer tout seul lorsqu'on démarre le Raspberry.

6. Et plus encore (encore facultatif)

Sachez que VLC peut aussi lancer des vidéos, faire des playlists et de nombreuses autres commandes et instances sont possibles (autre que "play", "pause" et "stop").

Parmi lesquels "player.is_playing()" qui permet de savoir si un son est en cours de lecture.

Il est donc possible de faire une action SI le son est en lecture ou non ("if"). Par exemple, vous pourriez lancer puis relancer le même fichier si aucun fichier n'est en lecture ("== 0"). en modifiant le boucle "while True:" comme ceci :

while True:
    if player.is_playing() == 0 :
        lecture()

Avec cette même instance, vous pouvez allumer une led branché sur le GPIO du Raspberry si le son est en lecture ("== 1"), comme ceci :

if player.is_playing() == 1 :
    # Code pour allumer une LED

Voici un code (presque) complet, avec ces deux idées, que vous pouvez copiez-collez :

import time, vlc

player = vlc.MediaPlayer()
player.audio_set_volume(100)

def lecture():
    player = vlc.MediaPlayer("/home/LOGIN/Téléchargements/test.wav") # Remplacer "LOGIN" (par le nom de votre Raspberry) et "Téléchargements" (si le dossier avec le fichier son est différent) !
    player.play()

while True:
    if player.is_playing() == 0 :
        lecture()
    else :
        # Code pour allumer une LED ?

    time.sleep(0.5)

Vous noterez que j'ai ajouté un "time.sleep()" d'une demi-seconde. Ce n'est pas obligatoire, mais c'est toujours bien pour éviter que le micro-controleur ne s'emballe pour rien...

7. Et bien plus encore (encore plus facultatif)

Maintenant que vous êtes opérationnel sur ce point, sachez qu'il est possible d'en faire n'importe quoi. Vous pourriez :

  • Utiliser le GPIO de votre Raspberry pour lancer des fichiers différentes lorsqu'un visiteur appuie sur des boutons dans une exposition.
  • Lancer des sons lorsque quelqu'un décroche un combiné de téléphone.
  • Brancher un capteur de mouvement pour faire dire un message de bienvenue lorsque quelqu'un entre dans votre magasin.
  • Etc.
  • Etc.
  • Etc.

Conclusion

Je ne dirais jamais assez qu'il est possible de faire des choses de dingue. Le Raspberry est peu cher et permet de grandes choses. Dans un premier temps, vous n'y verrez peut-être pas toutes les opportunités, mais elles vont vous apparaitre. De mon coté, suivant mon projet, j'utilise un simple DF Player, parfois couplé à un Arduino, puis parfois un Raspberry. Un régal !

Quoi qu'il en soit, si vous avez la moindre question, n'hésitez pas à la poser sur le forum dédié au bricolage électronique ! J'y répondrais personnellement, avec l'aide de la communauté.

- Joseph SARDIN - Fondateur et Sonothécaire de BigSoundBank.com et LaSonotheque.org - Contact

Découpez suivant les pointillés