j'utilise l'arduino GIGA R1 , je souhaite lire un fichier depuis une clé usb.
le programme fonctionne très bien avec le dac0 ou le dac1, mais lorsque je souhaite diffuser en stéréo, c'est a dire, utiliser le DAC0 et le DAC 1, en même temps, le fichier est lu avec une vitesse X2 (mesuré au chrono) .
voici mes paramètres :
AdvancedDAC dac0(A12);
AdvancedDAC dac1(A13);
dans le loop :
dac_output_sq(dac0);
dac_output_sq(dac1);
void dac_output_sq(AdvancedDAC &dac_out) {
if (dac_out.available() ) {
/* Read data from file. */
uint16_t sample_data[256] = { 0 };
fread(sample_data, sample_size, 256, file);
/* Get a free buffer for writing. */
SampleBuffer buf = dac_out.dequeue();
//dac0.dequeue() = dac1.dequeue();
/* Write data to buffer. */
for (size_t i = 0; i < buf.size(); i++) {
/* Scale down to 12 bit. */
uint16_t const dac_val = ((static_cast<unsigned int>(sample_data[i]) + 32768) >> 4) & 0x0fff;
buf[i] = dac_val;
}
/* Write the buffer to DAC. */
//dac0.write(buf);
dac_out.write(buf)
je suppose qu'étant donné l'initialisation de deux dac , la conversion se fait deux fois plus vite ? mais alors comment regler la vitesse ?
Pour info : pour la sortie de flux audio stereo l'I2S des ESP32 donne de bons résultats.(web radio, fichiers sur carte SD, fichiers en mémoire Flash......) L'I2S des Giga n'est sans doute pas en reste, c'est fait pour.
Ton code est très peu lisible, il y a une balise qui permet un affichage optimun.
Pour cela tout est indiqué dans le fil de discution "les bonnes pratiques"