L'arduino et l'audio - Mystère

Bonjour à tous, je suis nouveau sur le forum et nouveau aussi dans le monde des microcontrolleurs.

Je cherche a réaliser un projet audio a base d'arduino. Je veux piloter deux lecteurs sons pour pouvoir ensuite les mixer et les amplifier. Je sais comment réaliser la section mixage et amplification. Là ou je bute, c'est comment lire du son, et comment le piloter par arduino. Je me suis donc mis a la recherche de carte d'extensions pilotables par arduino

Un ami m'a très vite orienté vers ça http://www.ladyada.net/make/waveshield/ Pas possible, la qualité n'est pas au rendez vous (12 bits, 22Khz), je cherche une qualité CD (16 bits/44,1Khz)

j'ai donc cherché des cartes d'extensions audio mais c'est un peu la misère : Il y a du ADPCM (qualité horrible) http://www.4dsystems.com.au/prod.php?id=73 Il y a la music shield de chez Seeed, mais les forums semblent indiquer que leur librairie est sérieusement buggée http://www.seeedstudio.com/wiki/Music_Shield Il y les déclinaisons des puces VLSI sur les cartes de chez Sparkfun, mais le MP3 étant de la compression destructrice, j'aurais préféré du WAV (OK en 320kbps, ça n'est pas si pire) de plus les protocoles SPI sont trop compliqués pour mon niveau, par ex : https://www.sparkfun.com/products/9943 Enfin chez rogue une carte qui a l'air prometteuse,mais apparemment pas parfaitement compatible avec l'IDE 1.0. Et puis c'est cher ! http://www.roguerobotics.com/products/electronics/rmp3

Du coup je suis étonné. Je pensais que lire du son était une opération simple, mais tout ce que je trouve est soit cher soit trop complexe. Ou alors je me plante complétement !

Piloter un moteur, un écran LCD, lire des capteurs, tout ça est super documenté sur arduino. Mais lire du son... pas grand chose

Pourquoi ? Quelqu'un a-t-il déja parcouru toutes ces questions ? Y'a t'il du matériel que je n'aurai pas vu ?

La solution la plus simple et la moins chère (mais pas la plus élégante) semble être ça: http://www.instructables.com/id/MP3-Interface-for-Arduino-Cheap-and-Easy/

D'autres idées ?

En fait le problème c'est que les capacités de l'arduino sont un peu faibles pour traiter du son qualité Hi-Fi. Peu de mémoire, des librairies optimisées pour la facilité de programmation et non pour l'efficacité. Ce n'est pas la meilleur cible pour ce genre de développement ou alors il faut travailler à l'ancienne sans la couche arduino et encore il ne faut trop en demander.

J'ai saisi que l'arduino en lui même n'est pas assez puissant pour gérer de l'audio mais les cartes d'extensions sont concues pour, non ?

Quel serait selon toi alors une cible plus adéquate?

et ça? mp3 player shield https://www.sparkfun.com/products/10628 attention toutefois à la sortie line out qu'il faut protèger en fabricant la protection indiquée

Bonjour,

C’est pas bien de ne pas lire la doc entièrement :wink:

Ogg Vorbis
MP3 (MPEG 1 & 2 audio layer)
WMA 4.0/4.1/7/8/9
General MIDI 1 / SP-MIDI 0
WAV <------

Exemple pour du mp3, pour du wav c’est sensiblement pareil :

Merci, effectivement je suis passé a coté du fait que cette carte lit bien du WAV. Jai relevé ça sur ton site :

J’ai eu cependant un peu plus de mal avec les fichiers WAV, les fonctions digitalRead et digitalWrite étant un peu trop lente pour que la lecture soit fluide … (Mais n’ayez crainte il existe de nombreuse solutions à ce probléme, comme digitalWriteFast par exemple ;) )

Est-ce toujours d'actualité ?

Mais c'est qu'aussi en tant que débutant, j'ai été rebuté par le protocole SPI qui me semblait terriblement compliqué. Enfin si il le faut, je mettrais les mains dedans :D

Comme tu connais ton sujet j'en profite pour te poser une question : Peut on piloter 2 breakout VS1053B avec 1seul arduino ? J'ai besoin d'avoir deux sources audio à mélanger.

Peut-être un lien intéressant : How to use WTV020SD-16P qui semble très proche du Somo14D.

jeremixogg: Est-ce toujours d'actualité ?

Oui, les fonctions digitalWrite / digitalRead sont toujours aussi lentes (elle n'ont pas été conçu pour la rapidité). Il suffit d'utiliser la librairie digitalWriteFast à la place et plus de probléme. Sinon utilise le format ogg vorbis, la qualité est bien meilleur que du mp3.

jeremixogg: Mais c'est qu'aussi en tant que débutant, j'ai été rebuté par le protocole SPI qui me semblait terriblement compliqué. Enfin si il le faut, je mettrais les mains dedans :D

Le SPI c'est vraiment pas compliqué en fait ;)

Tu as 4 lignes : 2 de données, 2 de commande. Une ligne sert d'horloge (CLK). Une ligne transmet les données du maitre vers l'esclave (MOSI). Une ligne transmet les données de l'esclave vers le maitre (MISO). Et une dernière ligne sert à sélectionner l'esclave à qui tu veut parler (SS, SE ou CS, plusieurs notation existent).

jeremixogg: Comme tu connais ton sujet j'en profite pour te poser une question : Peut on piloter 2 breakout VS1053B avec 1seul arduino ? J'ai besoin d'avoir deux sources audio à mélanger.

Théoriquement c'est possible, mais comme je n'ai pas deux modules je n'ai pas essayé. Le truc c'est qu'il faudra à ce moment là utiliser des interruptions (voir attachInterrupt) pour savoir quand remplir le buffer audio des modules. Dans mon code je fait des boucles d'attente, si tu as deux modules tu ne peut pas faire comme cela.

merci encore pour ta réponse

effectivement du ogg pas beaucoup compressé est quasiment similaire à du WAV en terme d'écoute

Pour le SPI et piloter deux cartes en même temps, je laisse ça pour plus tard Je me suis tourné vers le shield rmp3 de chez Rogue Comme ils ont developpé une librairie, j'ai l'impression que ce sera plus facile vu mon niveau.

je continue la liste de modules audios voila le dernier qu'on m'a indiqué http://arduino.cc/forum/index.php/topic,150535.0.html