Domanda

Ho una domanda interessante oggi.

Ho bisogno di convertire alcuni file audio Pokémon per un elenco di campioni a 8 bit (0-255 valori). Sto scrivendo una routine di montaggio sul chipset MC6800 che richiederà questi suoni per essere giocato. Ho intenzione comprendente un array con i campioni di 8 bit che il loop volontà attraverso quando viene chiamata una funzione.

Qualcuno sa un modo per convertire i file audio (WAV / MP3) in un elenco di valori separati da virgole testo di esempio a 8 bit? o nulla di questo metodo parente?

Grazie mille in anticipo!

È stato utile?

Soluzione

È possibile utilizzare lo strumento da riga di comando "sox", o l'editor audio Audacity per convertire il file in un file raw, senza segno a 8 bit mono audio.

In Audacity 1.3 o superiore, aprire l'audio, quindi selezionare Esporta, scegliete "Wave, AIFF, e di altri tipi non compressi" come formato, quindi fare clic su Opzioni ... - poi scegliere "Altro ..." per il formato, "RAW" per l'intestazione e firmata PCM a 8 bit come codifica. (Scusate, non firmato non è disponibile.)

Dalla linea di comando, provate sox con -c 1 per 1 canale, -t prima per nessuna intestazione, -u per lineare senza segno, e -1 per 1 byte per campione.

Quindi è possibile utilizzare uno strumento come "hexdump" per scaricare i byte del file come numeri e incollarle nel codice.

Altri suggerimenti

sox non ce l'ha, si dovrà usare per generare cruda (senza intestazione) file e convertire i file raw per separati da virgola te.

EDIT: sox ha "dati testuali grezzi" come uno dei suoi formati, dalla pagina web. Si può rendere convertire i file audio a campioni a 8 bit lineari non firmati in un primo passaggio e quindi probabilmente ottenere esattamente l'output che si desidera utilizzare questa opzione per l'uscita.

Per .wav si tratta di un processo molto semplice. È possibile trovare la specifica .wav facilmente con una ricerca su Google. Esso comprende un'intestazione poi campioni semplicemente prime. Si consiglia di leggere l'intestazione prima, poi un ciclo tra tutti i campioni. Di solito sono 16 campioni bit, così si vuole normalizzare i loro dalla gamma -32.768-32.767 alla vostra gamma 0-255. Suggerisco semplice scala in un primo momento. Se questo non è successo forse trovare il minimo reale e massima tra i campioni e regolare la vostra scala di conseguenza.

Beh molto dipende dal vostro formato audio. Il formato onda, per esempio, è costituito da dati non compressi PCM interleaved.

vale a dire per un file stereo a 8 bit ogni campione sarà organizzato come segue.

[Esempio Sinistra 1] [Esempio Destra 1] [Esempio Sinistra 2] [Destra Sample2] ... [Esempio Sinistra n] [campione Destra n].

Per esempio ogni campione stereo 8 bit è memorizzato in 2 byte. 1 per il canale sinistro e 1 per il diritto. Questo è il formato dei dati dell'hardware suono sarà molto probabilmente richiederà.

Un file audio 16 o 24 bit funzionerà in ogni modo, ma i campioni sinistro e destro sarà, 2 o 3 byte rispettivamente ciascuna.

Ovviamente un file wave ha un carico di extyra informazioni in esso contenute. Si segue il formato RIFF. Si possono trovare informazioni su di esso e le file wave "pezzi" utilizzare in luoghi come www.wotsit.org.

Per decomprimere un MP3 è più complicato. Lei è migliore fuori entrare in possesso di un decompressore e in esecuzione sul audio MP3 codificato. IT sarà sputare fuori i dati PCM come sopra dall'altra parte.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top