Ok, Merci.
Quand j'intègre le fichier "son" directement dans le programme, c'est uniquement une étape pour vérifier que "ça marche"sur le principe.
Après je crée le *.h et *.cpp des fichiers audio et je les copie dans le répertoire.
Je rajoute les <include *.h> dans le *.ino.
Etat d’avancement du projet (provisoire)Les fichiers "son" originaux sont convertis à l'aide de"Audacity.
1) Arduino + *.wav + carte SD + sortie PWMAvantages :
Bonne qualité de son
Simplicité de gestion des fichiers son : *.wav
Capacité Mémoire (directement liée à la capacité de la carte SD)
Inconvénients :
« Blanc » à chaque changement de lecture de fichier « sons »
#include <SD.h>
2) Arduino + EncodeAudio + Bibliothèque <PCM.h> + sortie PWMAvantages :
Qualité de son moyenne mais acceptable pour réaliser du bruitage (8 bits – 8kHz)
Fichiers « son » codé avec EncodeAudio -> fichiers « son » de petite taille
Inconvénients :
Essentiellement lié au fait que l’arduino ne possède que peu de mémoire (Flash ou RAM)
#include <PCM.h>
…………………………………………
const unsigned char sample1[] PROGMEM = {
39, 26, 26, 62, 80, 97, …………………………..
};
startPlayback(sample2, sizeof(sample2)); // sortie sur une pin PWM Arduino
3) Teensy + Wav2Sketch + Bibliothèque <Audio.h> + sortie PWMAvantages :
Bonne qualité de son moyenne (8 bits ulaw– 11025 kHz) - ulaw est un codage qui permet d'avoir "un sentiment" de résolution 12 bits en n'utilisant que 8 bits
Inconvénients :
Les fichiers obtenu par Wav2Sketch sont très lourds (taille supérieur au fichier *.wav original !!). Cela s’explique en partie parce que le fichier « son » est en fait codé en ASCII).
Donc, l’avantage de la capacité mémoire du Teensy est perdu
#include <Audio.h>
// Audio data converted from WAV file by wav2sketch
// Converted from Demarrage BR99.wav, using 44100 Hz, u-law encoding
const unsigned int Demarragebr99[29441] = {
0x0101CC00,0x17001724,0x2431362C,0x00800080,0xABA4980, ………………………..
};
……………………………….
analogWriteFrequency(SoundPin, 8000); // Teensy pin 3 also changes to 8kHz
analogWriteResolution(8); // analogWrite value 0 to 256 (8 by default)
analogWrite(SoundPin, DemarrageBR99); // sortie sur une pin PWM Teensy AnalogWrite (n° pin, int -> 0 to 256)
4) Teensy + EncodeAudio + sortie DAC – A14 (en cours d’essai)Le problème est que EncodeAudio fournit un tableau de « const unsigned char » alors que le DAC demande des données « de type « int ». (analogWrite(A14, (int)val);
Réponse de Forun PJRC :
You could pretty easily make such a program, since 8 kHz is so very slow. Just use IntervalTimer to run a function that reads the next byte and do analogWrite. Also use analogWriteFrequency in setup() so the frequency is higher. Details here:
IntervalTimer:
https://www.pjrc.com/teensy/td_timin...rvalTimer.html
analogWriteFrequency:
https://www.pjrc.com/teensy/td_pulse.html