Pergunta

Eu tenho uma pergunta interessante hoje.

Eu preciso converter alguns arquivos de áudio pokemon a uma lista de amostras de 8 bits (0-255 valores). Eu estou escrevendo uma rotina de montagem no chipset MC6800 que vai exigir esses sons para ser jogado. I planejar incluindo uma matriz com as amostras de 8 bits, que o ciclo do programa através vontade quando uma função é chamada.

Alguém sabe uma maneira de converter arquivos de áudio (wav / mp3) em uma lista de valores separados por vírgula amostra de texto de 8 bits? Ou qualquer coisa desse método parente?

Muito obrigado antecipadamente!

Foi útil?

Solução

Você pode usar a linha de comando "sox" ferramenta ou o editor de áudio Audacity para converter o arquivo para um, não assinado de 8 bits matéria-mono arquivo de áudio.

No Audacity 1.3 ou superior, abra o áudio, em seguida, selecione Exportar, escolha "Wave, AIFF, e outros tipos não comprimidos" como o formato, em seguida, clique em Opções ... -, em seguida, escolha "Outro ..." para o formato, "RAW" para o cabeçalho, e Assinado PCM de 8 bits como a codificação. (Desculpe, não assinado não está disponível.)

A partir da linha de comando, tentar sox com -c 1 para um canal, em bruto -t para nenhum cabeçalho, -u para linear sem sinal, e -1 para uma byte por amostra.

Em seguida, você pode usar uma ferramenta como o "hexdump" para despejar os bytes do arquivo como números e colá-los em seu código.

Outras dicas

Se sox não tem isso, você vai ter que usá-lo para gerar cru (sem cabeçalho) arquivos e converter os arquivos brutos para separados por vírgula si mesmo.

EDIT: sox tem "dados textuais Raw" como um de seus formatos, a partir da página web. Você pode torná-lo converter seus arquivos de som para unsigned 8-bit linear amostras em uma primeira passagem e, em seguida, provavelmente obter exatamente o resultado que você quer usar esta opção para a saída.

Para .wav é um processo muito simples. Você pode encontrar a especificação .wav facilmente com uma pesquisa no google. Compreende um cabeçalho, em seguida, simplesmente amostras cruas. Você deve ler o cabeçalho primeiro, depois percorrer todas as amostras. Geralmente eles são 16 amostras bit, assim que você quer normalizar-los a partir do intervalo -32768 a 32767 para sua faixa de 0-255. Sugiro escala simples à primeira vista. Se isso não for bem sucedida, talvez encontrar o min real e máximo entre as amostras e ajustar sua escala de conformidade.

Bem, um monte depende do seu formato de áudio. O formato de onda, por exemplo, consiste em não comprimido dados PCM intercalada.

ou seja, para um arquivo de som de 8 bits cada amostra será organizado da seguinte forma.

[Esquerda Amostra 1] [Sample direita 1] [Sample Esquerda 2] [Direita Sample2] ... [Esquerda Amostra n] [amostra de direito n].

ou seja, cada uma das amostras de som de 8 bits é armazenada em 2 bytes. 1 para o canal esquerdo e um para a direita. Este é o formato de dados de seu hardware de som provavelmente irá exigir.

A 16 ou 24 bits arquivo de áudio irá trabalhar em cada caminho, mas as amostras esquerdo e direito será de 2 ou 3 bytes cada, respectivamente.

Obviamente um arquivo de onda tem uma carga de informações extyra nele. Ele segue o formato RIFF. Você pode encontrar informações sobre ele e os "pedaços" onda arquivos usar em lugares tais como www.wotsit.org.

Para descomprimir um MP3 é mais complicada. Você é melhor fora de começar a preensão de um descompressor e executá-lo no áudio MP3 codificado. TI vai cuspir dados PCM como acima do outro lado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top