Etape 13 : Logiciel - le Streaming Audio
Le streaming audio est une tâche en soi. Je veux être capable de jouer une musique et effets sonores pour aller avec les jeux pour cela requiert une routine de logiciel pour me permettre d’ouvrir un fichier sur la carte SD et ensuite ce fichier de sortie un échantillon à la fois à ma planche de sortie audio DSP.
Nous pouvons faire la sortie audio sans le Conseil DSP en utilisant simplement un canal PWM sur le microcontrôleur à haute fréquence pour le signal de sortie. J’ai utilisé initialement PWM comme sortie, mais ensuite j’ai mis la main sur le circuit de sortie Audio EB086 DSP et comparé la qualité lorsque vous utilisez le DAC embarqué et la qualité sonore est nettement mieux que le PWM seul. La Commission DSP aussi me donne un filtre variable, un haut-parleur et l’amplificateur réglable donc je n’ai à se soucier de ces éléments.
La première chose que j’ai faite a été de créer mes morceaux de musique. Je suis allé et trouvé la musique qui accompagne le jeu en question et créé un medley de toutes les pistes en utilisant le logiciel gratuit Audacity. Puis, j’ai enregistré le fichier sur la carte SD comme un fichier WAV de 16KHz 16 bits.
Il s’agit alors simplement d’ouvrir le fichier dans le logiciel et lire le fichier dans un tampon. La sortie est alors conduite à l’aide d’une interruption de la minuterie pour tirer les échantillons sur le tampon et les envoyer à la DAC ou PWM sur une tique régulière de 16KHz. Comme la mémoire tampon est assez petit (20KO dans mon firmware) nous devons être sûrs à re-remplir la mémoire tampon de temps en temps pour garder l’audio en streaming. Une fois que nous arrivons à la fin du fichier audio il y a une courte pause et ensuite le fichier est ré-ouvert pour commencer en streaming à nouveau depuis le début.
Pour contrôler le volume de l’audio j’ai coupé le potentiomètre de contrôle volume hors du plateau de EB086 et ensuite câblé dans un nouveau potentiomètre avec fils assez long pour atteindre le bord de l’affaire. Le pot est ensuite monté à l’affaire, ainsi il peut être facilement ajusté.
Voici les fonctions utilisées pour le traitement audio.
WAVStartStream - utilisé pour définir le nom du fichier WAV sur la carte de flux et commence la diffusion en continu du processus en remplissant la mémoire tampon et en lançant le minuteur en marche.
WAVFillBuffer - appelée périodiquement pour maintenir un approvisionnement régulier d’octets dans le tampon acoustique. Mémoire tampon peut prendre environ 0,4 secondes d’une valeur d’échantillons @ 16K échantillons par seconde.
WAVStreamInterrupt - appelé automatiquement à 16 KHz par la minuterie périphérique sur le périphérique de microcontrôleur.
WAVStopStream - arrête le flux audio et efface le tampon de son.