RGB LED Pixel Touch reaktiva Gaming tabell (13 / 18 steg)
Steg 13: Programvara - strömmande ljud
Strömmande ljud är en uppgift i sig själv. Jag vill kunna spela musik och ljudeffekter att gå med på spelen så att göra detta krävs en programvara rutin att tillåta mig att öppna en fil på SD-kortet och sedan ut filen ett prov i taget på min DSP ljudutgång ombord.
Vi kan göra ljudet utan DSP styrelsen genom att bara använda en PWM kanal på mikrokontroller på en hög frekvens för att mata signalen. Jag använde ursprungligen PWM som produktion men då jag fick tag i EB086 DSP Audio Output styrelsen och än kvalitet när du använder ombord DAC och ljudkvaliteten är betydligt bättre än PWM ensam. DSP styrelsen också ger mig en variabel filter, högtalare och justerbar förstärkare så jag behöver inte bry sig med dessa objekt.
Det första jag gjorde var att skapa min musik. Jag gick och hittade musik som gick med spelet i fråga och skapade ett medley av alla spår använda den fria programvaran Audacity. Jag sparade filen på SD-kortet som en 16KHz 16-bitars WAV-fil.
Det är då bara ett fall av öppna filen i programvara och läsa in filen i en buffert. Produktionen drivs sedan med hjälp av en timer avbryta dra prover ut bufferten och skicka dem till DAC eller PWM på en vanlig 16KHz fästing. Eftersom den är ganska liten (20KB i min firmware) vi måste vara säkra på att åter fylla bufferten varje så ofta för att hålla audio streaming. När vi når slutet av ljudfilen finns det en kort paus och är den re-öppnat att börja direktuppspelning igen från början.
För att styra volymen på ljudet jag skär potentiometer volym kontroll av EB086 styrelsen och sedan fast i en ny potentiometer med ledningar tillräckligt länge för att når kanten av fallet. Potten monteras sedan fallet så det lätt kan justeras.
Här finns de funktioner som används för ljudbearbetning.
WAVStartStream - används för att ange namnet på den WAV-fil på kortet till ström och börjar strömma bearbeta genom att fylla bufferten och starta timern kör.
WAVFillBuffer - kallas regelbundet för att upprätthålla en stadig tillförsel av byte i sund bufferten. Bufferten kan ta ca 0.4 sekunder prover @ 16K samplingar per sekund.
WAVStreamInterrupt - kallas automatiskt vid 16 KHz av timern perifera på mikrokontroller enheten.
WAVStopStream - slutar ljudströmmen och rensar ljudbufferten.