Shield VS1053B lecteur enregistreur audio stéréo MP3 et MIDI

Utilisation de capteurs et composants électroniques avec Arduino.
Une fiche de tutoriel pour chaque.

Shield VS1053B lecteur enregistreur audio stéréo MP3 et MIDI

Messagepar tiptop » Mer 7 Avr 2021 18:23

Shield VS1053B lecteur enregistreur audio stéréo MP3 et MIDI pour Arduino

Image

Matériel utilisé

Principe de fonctionnement
Ce module de développement MP3 pour Arduino enregistre et relit des fichiers audio MP3 / MP4 stockés sur une carte micro SD, ainsi que de la musique en format MIDI. Il est alimenté (5V) par la carte Arduino sur laquelle il se branche directement, sans fils.

Cette carte audio MP3 est conçue sur la base de la puce VS1053B de VLSI. C'est un processeur de codec MP3 polyvalent, capable de décoder une variété de formats de musique : audio Ogg Vorbis / MP3 / AAC / WMA / MIDI inclus.

Pour une meilleure expérience d'écoute au casque, le VS1053 comprend le traitement spatial EarSpeaker qui simule avec précision le son d’une pièce avec haut-parleurs stéréo.

En plus de pouvoir décoder tous les principaux formats, le VS1053 est capable d’enregistrer dans un fichier Ogg Vobis.

Le shield est muni d'un slot pour carte mémoire, d'où on peut lire des fichiers mp3
Il est commandé depuis votre microcontrôleur Arduino par l'interface SPI.

Le shield comporte : 1 micro intégré, 1 bouton reset, 1 prise jack pour le micro et1 prise jack pour le casque stéréo (ou haut parleur amplifié).

Il décode les formats suivants
  • Ogg Vorbis
  • MP3 = couche audio MPEG 1 & 2 III (CBR + VBR + ABR)
  • MP1 & MP2 = couches audio MPEG 1 & 2 I & II en option
  • MPEG4 / 2 AAC-LC (+ PNS), HE-AAC v2 (niveau 3) ) (SBR + PS)
  • WMA4.0 / 4.1 / 7/8/9 tous les profils (5-384 kbps)
  • Audio sans perte FLAC avec plug-in de logiciel (jusqu'à 24 bits, 48 kHz)
  • WAV (PCM + IMA ADPCM)
  • MIDI général 1 / Format SP-MIDI 0

Entrées / Sorties
Il enregistre en temps réel avec codage Ogg Vorbis compressé ou en WAV (pcm 16 bits) avec son microphone intégré, ou par son interface d'entrée line-in.
Les lignes de signal de commande sont reliées à une sortie casque stéréo.
On peut brancher des écouteurs de 30 ohm, ou deux hauts parleurs stéréo amplifiés.
Casque : brochage Left, Right et Gnd (attention, ce n'est pas une sortie Line-Out).

Image

Fonctions MIDI
On peut lire du MIDI au débit 31250 kbauds sur un mode MIDI spécial (sans messages SysEx) sur une broche UART et obtenir un synthétiseur ou boite à rythme avec des dizaines d'effets de batterie et d'échantillons intégrés.

Ce shield relit le format General MIDI 1 / SP-MIDI format 0 files (page 2 de la Datasheet).
Les formats 1 et 2 doivent donc être convertis pour être lus.
Un convertisseur de MIDI gratuit est disponible ici (GN1:0)

Image

La polyphonie maximale est de 64 notes (40 pour le sustain).
Les instruments GM1 sont implémentés ainsi que les percussions GM2, avec 128 instruments de general Midi et 61 percussions.
(bank0= mélodique, et bank1 = percussions).
Image

On obtient ainsi un synthétiseur MIDI polyphonique à 64 voix et percussions.
Image

Fonctions MIDI disponibles :
Image


Brochage du Shield
Image

Pins rouges gauche :
  • RST
  • 3V
  • 5V
  • GND
  • Vin

Pins bleus gauche
  • 0-5 = broches A0 à A5 E/S analogiques de l'arduino

Pins rouges droite
  • 15 Aref
  • 14 Gnd
  • 13 = SCK (Serial Clock du port SPI)
  • 12 = MISO (Master In, Slave Out du port SPI)
  • 11 = MOSI (Master Out, Slave In du port SPI)
  • 10 (pin libre)
  • 9 = CS (chip select ) (SD-CS du data card)
  • 8 = X_reset (Reset du VS103CS)
  • 7 = X-Dcs (MP3_DCS, c'est le DataCS_VS103CS)
  • 6 = X_Cs (MP3_CS, c'est le CS_VS103CS)
  • 5 (pin digitale libre de l'arduino)
  • 4 = GPIO1
  • 3 = MIDI-IN
  • 2 = MP3-DREQ (data request)
  • 1 =TX (pour programmer la carte Arduino avec l'UART)
  • 0 = RX (idem)

Ce shield laisse donc libre d'usage les pins 0, 1, 5 10, A0, A1, A2, A3, A4 et A5.

Créer ses propres fichiers MP3 ou MIDI
  • Le logiciel gratuit MUSESCORE vous permet de créer vos propres fichiers musicaux polyphoniques sur une partition puis de les exporter en MIDI ou en MP3.
  • Le logiciel gratuit AUDACITY vous permet d'enregistrer des fichiers de sons ou de musique en WAV, en MP3...

Image

Préparer la carte micro SD à insérer
  • Formater la carte en FAT32
  • Copier dessus vos fichiers audio en MP3 (jusqu'à 320 kbps, échantillonnage jusqu'à 48 kHz), disponibles par exemple ici :MP3 libres de droits à télécharger.
  • Leurs noms ne doivent comporter que 8 caractères et 3 pour l'extension, comme track001.mp3, etc
  • Pour les fichiers WAV (p30 de la Datasheet), le shield relit le PCM 8 ou 16 bits jusqu'à 48 kHz mono ou stéréo.

Image

Bibliothèques à installer
Image
[list]
[*]On utilise les libraries SFEMP3Shield pour l'audio, et SdFat pour gérer la carte mémoire
[list]
Elles sont disponibles ici (utiliser le bouton Code/DownloadZip)
https://github.com/madsci1016/Sparkfun- ... no-Library
Redémarrer l'IDE arduino après leur installation.

Image

Exemple de code
Monter le shiedl sur une carte Arduino
Image

Régler le Serial monitor sur 115200 bps.
Lancer l'exemple File/exemples/SFEPMShield/Example/FilePlayer qui fait partie des démos de la librairie.

On voit le menu :
Code: Tout sélectionner
COMMANDS:
 [1-9] to play a track
 [f] play track001.mp3 by filename example
 [F] same as [f] but with initial skip of 2 second
 [s] to stop playing
 [d] display directory of SdCard
 [+ or -] to change volume
 [> or <] to increment or decrement play speed by 1 factor
 [i] retrieve current audio information (partial list)
 [p] to pause.
 [t] to toggle sine wave test
 [S] Show State of Device.
 [b] Play a MIDI File Beep
 [e] increment Spatial EarSpeaker, default is 0, wraps after 4
 [m] perform memory test. reset is needed after to recover.
 [M] Toggle between Mono and Stereo Output.
 [g] Skip to a predetermined offset of ms in current track.
 [k] Skip a predetermined number of ms in current track.
 [r] resumes play from 2s from begin of file
 [R] Resets and initializes VS10xx chip.
    [O] turns OFF the VS10xx into low power reset.
 [o] turns ON the VS10xx out of low power reset.
 [D] to toggle SM_DIFF between inphase and differential output
 [V] Enable VU meter Test.
 [B] Increament bass frequency by 10Hz
 [C] Increament bass amplitude by 1dB
 [T] Increament treble frequency by 1000Hz
 [E] Increament treble amplitude by 1dB
 [l] Display list of music files
 [0####] Enter index of file to play, zero pad! e.g. 01-65534


Les fichiers sont trouvés sur la carte SD
Code: Tout sélectionner
Received command: d
Files found (name date time size):
2021-03-17 16:35:26     945985 test001.ogg
2021-03-17 16:32:36     983234 track004.mp3
2021-03-17 16:30:22    1364635 track003.mp3
2021-03-17 16:27:28    1115370 track002.mp3
2021-03-17 16:27:04     840616 track001.mp3
2020-07-10 14:32:42     244571 200709-005.mp3


Memory Test Results = 83FF
Result should be 0x83FF.

Astuces
[D] to toggle SM_DIFF between inphase and differential output permet d'inverser la phase si le fichier a un son bizare.

Références
La librairie (en anglais, Sparfun)
http://www.billporter.info/2012/01/28/sparkfun-mp3-shield-arduino-library/

Tutoriel en anglais
https://learn.sparkfun.com/tutorials/mp3-player-shield-hookup-guide-v15
tiptopboards - admin
Avatar de l’utilisateur
tiptop
Administrateur du site
 
Messages: 93
Inscription: Mar 13 Aoû 2013 20:38
Localisation: 38

Retourner vers Capteurs et composants

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 7 invités

cron