Entrar    Registrar

Conversão de 16 para 12 bits?

Software e Hardware para uC STM

Moderadores: andre_teprom, 51

  • Autor
    Mensagem

Conversão de 16 para 12 bits?

Mensagempor Vonnilmam » 16 Fev 2018 19:04

Olá a todos os colegas,

Meus caros, estou com uma dúvida cruel, para variar...peço a ajuda de vocês.

Eu tenho uma amostra em 16 bits, sample rate de 44.100hz...até aí tudo certinho.

O problema é que quero converter esses 16 bits em 12 bits, alguém sabe como eu faço isso ou tem uma dica de algum programa que o faça.

Pois no soundforge só há conversões (geração de novas amostras) em 8, 16, 24 bits...

Eu vou utilizar o DAC do STM32 que é de 12 bits para fazer a conversão D/A...

Obrigado
VonNilmam "Assembler" e agora "C"
Avatar do usuário
Vonnilmam
Byte
 
Mensagens: 446
Registrado em: 19 Out 2006 14:25
Localização: espacial

Re: Conversão de 16 para 12 bits?

Mensagempor eletroinf » 16 Fev 2018 21:05

Como provavelmente no armazenamento e manuseio dos dados tanto faz se é 12 ou 16 bit, tu vai sempre ocupar 16 bit (2 bytes), uma solução é passar para o DAC o valor shiftado pra direita.
Exemplo:
Se a função que escreve do DAC é void DAC_Write(unsigned int16) e o valor que tu quer escrever, de 16 bit, está armazenado em ValorDAC, tu pode utilizar, na chamada:
DAC_Write(ValorDAC >>4);
"De cada um segundo sua capacidade a cada um segundo sua necessidade."
Avatar do usuário
eletroinf
Word
 
Mensagens: 738
Registrado em: 12 Out 2006 14:59
Localização: Santa Maria - RS

Re: Conversão de 16 para 12 bits?

Mensagempor andre_teprom » 16 Fev 2018 23:10

Inicialmente pensei na mesma coisa, mas achei que seria meio obvio e ofendido ele me desse uma resposta malcriada :lol: e presumi que na verdade ele pudesse estar procurando algo que compactasse os valores lidos num frame maior, sem desperdicio dos 4 bits à esquerda, e deu preguiça de responder :mrgreen: mas também posso estar errado e ser apenas o shift á direita, enfim...
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_teprom
Dword
 
Mensagens: 5265
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: Conversão de 16 para 12 bits?

Mensagempor eletroinf » 17 Fev 2018 09:35

kkkkkkkkkkkkkkkkkkkk
Eu fiquei com a mesma dúvida que tu escreveste aí Andre, mas só descobriria escrevendo o que eu escrevi, vamos ver se vem uma voadora...
:mrgreen:
"De cada um segundo sua capacidade a cada um segundo sua necessidade."
Avatar do usuário
eletroinf
Word
 
Mensagens: 738
Registrado em: 12 Out 2006 14:59
Localização: Santa Maria - RS

Re: Conversão de 16 para 12 bits?

Mensagempor Aquino » 17 Fev 2018 10:54

Você pode fazer um programa que leia o stream de audio e converta para 12 bits, algo como: var_12 = var_16>>4;
Porém, como o armazenamento em memoria é justificado em 8 bits, você não ganharia nada com isso, pois apenas teria bits zerados dentro do stream(Tá bom, economizaria a operação de shift em real time....)
"...People who are really serious about software should make their own hardware..." Alan Kay
Avatar do usuário
Aquino
Dword
 
Mensagens: 1812
Registrado em: 12 Out 2006 22:24

Re: Conversão de 16 para 12 bits?

Mensagempor pamv » 17 Fev 2018 11:38

Aqui tem um tutorial rápido sobre o DAC do STM32 com um exemplo em C no final

http://embedded-lab.com/blog/stm32-digi ... erter-dac/
pamv
Word
 
Mensagens: 536
Registrado em: 20 Jun 2016 21:47

Re: Conversão de 16 para 12 bits?

Mensagempor Vonnilmam » 17 Fev 2018 21:05

Obrigadão a todos...

Mas vejam só, por enquanto estou apenas nas teorias, ainda vou colocar o treco todo para "rodar"...mas antes quero entender os procedimentos corretos...

Eu também pensei em shiftar para a direita, no caso seriam 4 casas apenas, que no frigir dos ovos, 4 casas seriam perdidos nada mais nada menos que 16 pontos menos significativos na resolução
final, até ai eu acho que não seria percepitivel (bom, obviamente vou reproduzir uma senoide em cima desse DAC), se valendo de que a resolução original é de 16bits de audio (ou seja são 65536 pontos de resolução), perder apenas 16 pontos é quase nada, eu ACHO!!!

Só para exclarecer, vou repoduzir uma onda senoidal que esta "sampleada" em 16 bits, 44100hz, localizada em memória, ok...

Vou fazer o teste no PC, para ver o que acontece e retorno os resultados...

Obrigado :D
VonNilmam "Assembler" e agora "C"
Avatar do usuário
Vonnilmam
Byte
 
Mensagens: 446
Registrado em: 19 Out 2006 14:25
Localização: espacial

Re: Conversão de 16 para 12 bits?

Mensagempor Vonnilmam » 18 Fev 2018 11:11

Então, fazendo o deslocamento a direita, no caso 16 pontos dentro de um sample de 16bits, realmente não afetou o som, pelo menos aparentemente.

Agora e se eu desejar criar uma nova amostragem com resolução de 12 bits, para não ter que fazer essa matemática, minha pergunta é:

Alguém sabe se é possível fazer isso no sound forge ou em outro programa.?
VonNilmam "Assembler" e agora "C"
Avatar do usuário
Vonnilmam
Byte
 
Mensagens: 446
Registrado em: 19 Out 2006 14:25
Localização: espacial

Voltar para STMicroelectronics

Quem está online

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