Come processare file audio WAV in sistemi embedded
Il primo ostacolo che ho incontrato consisteva nel determinare in che modo la produzione dei suoni sarebbe apparsa. La descrizione "Ho bisogno di un suono che simula la pressione di un pulsante" è abbastanza sufficiente, ma ... come si fa a renderlo realmente? Per fortuna, ci sono molti siti web che forniscono file WAV per applicazioni in un PC. Mi sono imbattuto in questi accidentalmente ma ero felice di trovare vari suoni che ben si adattavano alla descrizione: Soundjay, Pachd, Soundsnap.
{BLOCK:45}
Solo una volta ho trovato i suoni "digitali" che mi servivano e ho capito che il problema principale era la mancanza di memoria. Tutti i suoni su questi siti sono relativamente di buona qualità, il che significa che vengono campionati a 44.1 kHz e ogni campione è codificato con 16 o 32 bit. Naturalmente, questo non pone alcun problema per un PC che ha molta memoria disponibile, ma purtroppo per il mio povero "sistema embedded", mi sono reso conto che per un breve audio di buona qualità della durata di circa 200 ms (44,1 kHz con 16 bit /campione) io avevo bisogno di ... 17640 byte di ROM sul chip. A causa dei costi sono stato costretto a non utilizzare alcun chip di memoria esterna per il microcontrollore, ma un unico suono ha preso più di tutto il programma di memoria disponibile (16kbyte)!
Chiaramente doveva essere creata un’alternativa. Quello che ho capito subito era che per suoni semplici, che sono lontani dall’essere musica o addirittura discorso, non vi era alcuna necessità di buona qualità. E mi sono reso conto che invece di 44,1 kHz di frequenza di campionamento potevo richiedere di meno. E anche 16bit/campione mi sembrava troppo, ero sicuro di poter abbassare ancora di più (il mio obiettivo era 8bit/ campione).
Facendo di nuovo i calcoli, ero felice nel rendermi conto che le nuove condizioni mi permettevano un suono a 200ms campionato a 20kHz con 8bit/campione da memorizzare con soltanto 4000 byte ... il che significava che la mia memoria di programma a 16kbyte era sufficiente per tre suoni e il programma stesso. Ma finora tutto questo è solo teoria. Tutto quello che avevo erano questi calcoli e alcuni file WAV.
giovedì, marzo 10, 2011
Iscriviti a:
Commenti sul post (Atom)
Nessun commento:
Posta un commento