tocar wav.

Software e Hardware para linha ARM

Moderadores: 51, guest2003, Renie, gpenga

tocar wav.

Mensagempor j.silvestre » 21 Mai 2008 09:39

Senhores

Estou usando o D/A do lpc2148 para reproduzir um som wave, porem estou com alguma duvidas.

1. o som é de 8khz,8bit mono.
2. o tempo do som é de 164,72s(windows media player)

então a cada 125us jogo 8 bits no conversor DA do arm, então o arquivo demora 346 segundos para ser executado, sendo que no media player o tamanho é de 164,72 segundos. o tempo de 125us esta certo, pois estou acompanhando a execução pelo o osciloscópio. O som ainda esta
deformado, preciso colocar um filtro para diminuir os degraus.
porque a execução do arquivo demora + que o dobro ?? este tempo de 125us esta errado ? que filtro que eu coloco para diminuir os degraus ?


se alguém puder ajudar ..



sds

j.silvestre
j.silvestre
Byte
 
Mensagens: 260
Registrado em: 12 Out 2006 22:15

Mensagempor fabim » 21 Mai 2008 11:31

olha não confunda melancolia profunda com melancia na bunda, são coisas diferentes.

8Ksps em 8 bits com Vref de 3,3V.

1S/ 8000 amostras.

= uma amostra a cada 125uS.

Suponha o seguinte. voce le uma eeprom externa por exemplo e espera a interrupção que esta setada para cada 125uS.

Aconteceu a interrupção.
125uS

4 uS que é o tempo que eu levei para ler o byte e jogar para o DAC

4 uS que é o tempo que eu levei para zerar o contador e ligar a interrupt

Quer dizer que o som vai ser jogado a cada
125uS + 4uS + 4uS.

133uS..

1/0.000133 = 7.518KSPS. o som vai ficar distorcido e grave..

Você tem que levar em consideração o seguinte.
Para que a cada exatos 125uS o DAC mostre o novo valor na saida como deve proceder ?

interrupção setada para cada 125uS - (4+4uS).

INT setada para acontecer a cada 117uS.

Na saida do DAC por varios motivos voce tem que colocar um ant aliasing.

Bom levando em consideração 8KSPS em 8 Bits, vamos pensar em reprodução de vóz 300 a 3300hz.
coloque um filtro RC na saida do DAC do LPC calculado para FC de 4khz, jogue em um buffer LM358, na saida do LM voce coloca outro filtro igual ao da entrada, depois de feito tudo isso.
Faça a analize com o osciloscopio novamente. Use a caixinha de som do seu PC para poder ouvir o resultado.

Fabim
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor j.silvestre » 21 Mai 2008 16:08

Grande fabim...

funcionou a bagaça...

primeiro eu estava cometendo uma barbeiragem .. o arquivo estava 8khz but 16 bits transformei para 8 bits.. dei uma corrigida nos times.. fiz o filtro passa-baixa com fc de 8khz..
e não é que funcionou...... valews..


j.silvestre
j.silvestre
Byte
 
Mensagens: 260
Registrado em: 12 Out 2006 22:15

Mensagempor fabim » 21 Mai 2008 16:21

bradesco AG.0535-5 CC:7070, se não der 70 de novo.rs

Fabim
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor j.silvestre » 21 Mai 2008 17:08

hehehe..he..



j.silvestre
j.silvestre
Byte
 
Mensagens: 260
Registrado em: 12 Out 2006 22:15

Mensagempor Viktor » 21 Mai 2008 19:28

j.silvestre escreveu:hehehe..he..



j.silvestre



Se filtro deve ser para 4kHz e não 8kHz.
Viktor
Byte
 
Mensagens: 281
Registrado em: 12 Out 2006 11:33

Mensagempor j.silvestre » 23 Mai 2008 10:13

Viktor


foi pra 4kz , eu que digitei errado.

agora mais uma duvida. com o DA de 10 bits do lpc2148, estarei condenado a reproduzir sons apenas de 8 bits ? ou existe alguma técnica ninja que permita reproduzir sons de 16bits com um DA de 8 bits ?



sds

j.silvestre
j.silvestre
Byte
 
Mensagens: 260
Registrado em: 12 Out 2006 22:15

Mensagempor fabim » 23 Mai 2008 11:09

pô meu. c tá doido ou não prestou atenção no que escreveu ?

Se o DA é de 8 bits como vai reproduzir com definição de 16 ?

Tipo assim... se voce pegar uma word e jogar em um byte, isto é uma converção implicita, o compilador vai pegar o LSB da word e jogar no byte.

Agora 8 bits é 2X menor que 16 certo ?

A := B/255;
DAC := A;
A := C/255;
DAC := A;

Sucessivo.....
"foi só pra voce entender"

mais se estiver de saco cheio, e estiver usando uma LPC da vida..
Pega um drive de CD de PC daqueles antigos com entrada de phone de ouvido frontal. Todos eles tem um DAC de 16Bits canal duplo com Vref de 2.5V e 115KSPS..
Configure o SPI do LCP pra 16 Bits e clk compativel com o DAC que mensionei. Vai ficar mais mió di bão, por enquanto estou fazendo assim.rsrs. Mais não estou usando LPC, to usando PIC18F a 12 mips.

Risca o zóio depois você posta os resultados, vai observar que vai ficar muito bom.:)

Fabim
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor Rodrigo_P_A » 23 Mai 2008 12:14

j.silvestre escreveu:Viktor


foi pra 4kz , eu que digitei errado.

agora mais uma duvida. com o DA de 10 bits do lpc2148, estarei condenado a reproduzir sons apenas de 8 bits ? ou existe alguma técnica ninja que permita reproduzir sons de 16bits com um DA de 8 bits ?



sds

j.silvestre


faça assim:

Pegue o dado de 16 bits, rotacione 6 bits à direite, e utilize somente os bits mais significaticos. Eu fiz isso, e ficou muito bom.

exemplo:

dado16bits;

DAC=( dado16bits>>6 ); // pronto
Avatar do usuário
Rodrigo_P_A
Dword
 
Mensagens: 2237
Registrado em: 12 Out 2006 18:27
Localização: Osasco - S.P - Brasil

Mensagempor proex » 23 Mai 2008 12:50

Cacilda, que bagunça ehehhehehhe.

Afinal:

O sampling rate é 4 ou 8khz?
A palavra de áudio é 8 ou 16 bits?
O conversor A/D do ARM é de quantos bits?
proex
Dword
 
Mensagens: 2101
Registrado em: 11 Out 2006 14:05
Localização: São Paulo

Mensagempor j.silvestre » 23 Mai 2008 12:56

captei...

não existe almoço gratis... hehehe...



sds


j.silvestre
j.silvestre
Byte
 
Mensagens: 260
Registrado em: 12 Out 2006 22:15

Mensagempor j.silvestre » 23 Mai 2008 13:02

Proex

seguinte a bagaça esta funcionando...

palavra de 8bits

8khz uma palavra enviada para DA a cada 125us.

DA de 10 bits...

só queria saber se existia um chuncho.... para aumentar a resolução do DA para 16 bits.
...


sds

j.silvestre
j.silvestre
Byte
 
Mensagens: 260
Registrado em: 12 Out 2006 22:15

Mensagempor Rodrigo_P_A » 23 Mai 2008 13:32

j.silvestre escreveu:Proex

seguinte a bagaça esta funcionando...

palavra de 8bits

8khz uma palavra enviada para DA a cada 125us.

DA de 10 bits...

só queria saber se existia um chuncho.... para aumentar a resolução do DA para 16 bits.
...


sds

j.silvestre


Aumentar pra 16 bits num dá, mas do jeito que eu te falei vc consegue usar em 10 bits , ao invés de 8 como vc está fazendo
Avatar do usuário
Rodrigo_P_A
Dword
 
Mensagens: 2237
Registrado em: 12 Out 2006 18:27
Localização: Osasco - S.P - Brasil

Mensagempor j.silvestre » 23 Mai 2008 13:46

Captei.


j.silvestre
j.silvestre
Byte
 
Mensagens: 260
Registrado em: 12 Out 2006 22:15

Mensagempor barboza » 23 Mai 2008 16:30

J.

Use codificação ALaw ou uLaw com 8 bits que o som fica bem melhor que os 8 bits lineares.

A decodificação é fácil e rápida!
Os homens mentiriam muito menos se as mulheres fizessem menos perguntas.
Avatar do usuário
barboza
Word
 
Mensagens: 948
Registrado em: 17 Out 2006 13:42
Localização: Longe de onde gostaria de estar

Próximo

Voltar para ARM

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x