Página 1 de 1

Conversão de 16 para 12 bits?

MensagemEnviado: 16 Fev 2018 19:04
por Vonnilmam
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

Re: Conversão de 16 para 12 bits?

MensagemEnviado: 16 Fev 2018 21:05
por eletroinf
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);

Re: Conversão de 16 para 12 bits?

MensagemEnviado: 16 Fev 2018 23:10
por andre_luis
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...

Re: Conversão de 16 para 12 bits?

MensagemEnviado: 17 Fev 2018 09:35
por eletroinf
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:

Re: Conversão de 16 para 12 bits?

MensagemEnviado: 17 Fev 2018 10:54
por Red Neck Guy
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....)

Re: Conversão de 16 para 12 bits?

MensagemEnviado: 17 Fev 2018 11:38
por pamv
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/

Re: Conversão de 16 para 12 bits?

MensagemEnviado: 17 Fev 2018 21:05
por Vonnilmam
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

Re: Conversão de 16 para 12 bits?

MensagemEnviado: 18 Fev 2018 11:11
por Vonnilmam
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.?

Re: Conversão de 16 para 12 bits?

MensagemEnviado: 19 Jan 2019 01:04
por Guri
Agradecendo a todos os amigos,

Realmente, a técnica em principio seria deslocar a direita os dados para reduzir a resolução mais alta ou fazer ao contrário para alocar o buffer menor em outro maior.

A perca de dados é muito pequena e não provoca danos ao produto final.

Vejam aqui um exemplos de uma senoide criada em 16bits e reajustada para uma saida DAC de 12 bits, no meu caso foi utilizado um ARM m0.

https://soundcloud.com/user-452496119/p ... synth-m114

Obrigado