[résolu] Échantillonnage audio Arduino due

Bonjour,

J'ai effectué mon petit montage audio avec la librairie Audio fournie dans l'IDE Arduino http://arduino.cc/en/Reference/AudioWrite Lorsque je veux lire une musique, soit elle passe en accéléré soit eau ralenti, j'ai donc regarder échantillonnage des musiques, et apparemment c'est ce qui pose le problème, en effet dans l'exemple de l'IDE arduino la fréquence est de 44.1 KHz, je me demandais donc si il y avait un moyen de récupérer l'information de la fréquence d’échantillonnage à partir du fichier sur la carte SD de la musique avant de la lire, ou de faire un nouvel échantillonnage moi même.

Merci, Mini

Hello,

La fréquence d'échantillonnage ainsi que d'autre paramètres (nombre de canaux, signal entrelacé ou pas) se trouve dans l'en-tête du fichier WAV. https://en.wikipedia.org/wiki/WAV

D'accord, comment on peut lire l'entête avec l'arduino ?

en lisant le fichier, et en interprétant le format binaire.

Si tu veux plus simple, convertis tous tes fichiers avec Audacity, pour qu’ils aient la bonne fréquence d’échantillonnage demandée.

OK je vais essayer de voir tout ça mais ca a pas l'air d'être simple :p Ouais enfin is les MP3 font ca par exemple on a pas fini ^^

Quel lien avec les MP3 ? On parle de lecture des WAV avec le shield audio...

Ouais je voulais dire que peu importe le format is on doit reechantilloner tous les fichiers audio on est pas au bout de nos peine. bon doit avoir moyen de lire facilement l'info en fait merci

Ton shield et logiciel ne seront pas capables de lire "tous les fichiers audio". Certains format, dont le MP3 (ou ogg, ou flac) demandent un certain nombre de traitements.

Concentre-toi sur les fichiers PCM ou RAW en WAV.

Oui je sais, je reste sur le .wav avec la lecture de tout les wav ca sera un excellent debut

les wav en PCM... (pas ceux avec DRM ou virgule flottante, ou avec compression zarbi), pas "tous les wav".

Parce qu'y'a des wav différents ? Oo bon alors les wav simple lol

Le format de l'entête ici : https://ccrma.stanford.edu/courses/422/projects/WaveFormat/ Rien de bien sorcier. Le sample rate peut ensuite être passé en paramètre à Audio.begin()

Le fameux ausio.begin c'est pour récupérer l'entete ?

Non, c'est pourdémarrer la production audio. audio.begin ne sait pas d'où vient l'info... C'est le code qui fait le lien entre un fichier et le système audio, rien ne t'empêcherait de produire du son à la volée (un petit synthétiseur par exemple).

Donc audio.prepare je peux lui faire lire un ficher txt avec des valeurs analogiques ?

non. Tu dois le faire toi-même, pour lui donner ensuite les valeurs.

Ah ok ! Par contre, ça m'aide pas a résoudre mon problème, j'ai essyé d'ouvrir en binaire, mais ça me met des lettres... plutôt étrange :(

C'est pas des lettres, c'est des données. On les interprète en se référant au format décrit dans les liens que nous t'avons données. Il faut arrêter de croire que tout est décrit sous forme textuelle dans les fichiers. La majorité des fichiers contiennent des données numériques (des nombres) et pour les faire imprimer, si tu veux voir à quoi elles ressemblent, il faut préciser dans le printf de les afficher sous forme de nombres en ajoutant ,DEC ou ,HEX.

Je sais que c'est des données ^^ Mais c'est pas du binaire c'est de l'ascii et j'aime pas l'ascii :p moi j'ai ça : RIFF$ä WAVEfmt    "V "V   data ä

je vois bien le RIFF avec pour valeur $ä J'ai le WAVE en fmt mais le reste j'ai un peu de mal, j'ai converti en DEC fin je comprend rien meme avec le lien donner -_-

Sur le lien, la description du header dit par exemple que - les octets 22, 23 codent le nombre de canaux - les octets 24, 25, 26, 27 code la fréquence d'échantillonnage.

Tous les champs du header sont décrits avec une explication