Stap 13: Software - Streaming Audio
Streaming audio is een taak op zich. Ik wil zitten kundig voor muziek en geluidseffecten te gaan samen met de games, zodat hiervoor een routine van de software vereist voor verstrekken mij voor een bestand op de SD-kaart openen en vervolgens output dat bestand een steekproef tegelijk spelen op mijn bord DSP audio-uitgang.
De audio-uitvoer zonder de DSP-board kunnen we doen door simpelweg met een PWM-kanaal op de microcontroller op een hoge frequentie voor de uitvoer van het signaal. Ik gebruikte oorspronkelijk PWM als de uitvoer maar dan ik kreeg bezit van de EB086 DSP Audio Output Board en ten opzichte van de kwaliteit bij het gebruik van de ingebouwde DAC en de geluidskwaliteit is aanzienlijk beter dan de PWM alleen. De DSP-board biedt ook mij een variabele filter en een instelbare versterker en luidspreker zodat ik niet hoef te moeite met deze items.
Het eerste wat dat ik deed was om mijn muziektracks. Ik ging en muziek die ging met het spel in kwestie en gemaakt van een medley van alle tracks met behulp van de vrije Audacity-software gevonden. Ik heb vervolgens het bestand naar de SD-kaart opgeslagen als een 16KHz 16-bits WAV-bestand.
Het is dan gewoon een geval van het openen van het bestand in de software en u het bestand in een buffer leest. De output wordt vervolgens gedreven met behulp van een timer-interrupt te trekken van monsters uit de buffer en stuur ze naar de DAC of PWM op een regelmatige 16KHz teek. Als de buffer vrij klein is (20KB in mijn ingebouwde programmatuur) we hebben om zeker te zijn te opnieuw vullen de buffer elke zo vaak, zodat de audio streaming. Zodra we bereiken het einde van het audio-bestand er is een korte pauze en vervolgens het bestand heropend is stroomsgewijs opnieuw vanaf het begin.
Om het volume van het geluid ik de volume controle potentiometer uit de EB086 Raad knippen en vervolgens in een nieuwe potentiometer met wired draden lang genoeg tot op de rand van het geval. De pot is vervolgens aan de zaak gemonteerd zodat het gemakkelijk kan worden aangepast.
Hier zijn de functies die worden gebruikt voor audioverwerking.
WAVStartStream - gebruikt voor het instellen van de naam van het WAV-bestand op de kaart naar stroom en start de streaming verwerken door vullen de buffer en de lopende timer te starten.
WAVFillBuffer - gezette tijden geroepen om te handhaven van een constante aanvoer van bytes in de geluidsbuffer. Buffer kan ongeveer 0.4 seconden waard van monsters @ 16K samples per seconde duren.
WAVStreamInterrupt - genaamd automatisch bij 16 KHz door de timer perifere op de microcontroller-apparaat.
WAVStopStream - stopt de audio stream en wist u de geluidsbuffer.