Fórum VU Meter - Medidor de áudio - Componente gráfico #506084
02/01/2015
0
Olá.
Procurei um player que tivesse um medidor de áudio. Eu costumo usar o GomPlayer e o VLC player, mas nenhum deles possui uma forma de visualizar a evolução do áudio que está sendo executado.
Também as pesquisas de outro player com essa característica não me trouxeram nenhum resultado.
Eu consegui alguns componentes que podem ser usados para o que preciso. O que falta agora é fazer a conexão do componente com a saída de áudio do Windows, de forma a ter uma visualização da evolução do áudio quando executar qualquer arquivo do tipo MP3 ou mesmo um vídeo AVI ou MP4.
Eu ainda uso Delphi 7. Por esse motivo o código para controlar a ligação do componente com a Saída WaveOut deve ser compatível com Delphi 7.
Pesquisando, eu acabei encontrando essa informação:
Eu fiz um teste com esse código acima.
O componente que estou usando possui a propriedade Position, do tipo Double. Eu fiz a seguinte atribuição, dentro de um evento Timer:
O ponteiro corre direto para o valor máximo, mesmo que não eu não esteja executando nenhum vídeo ou áudio.
Como deveria ser a correta atribuição?
O Valor atual do Wave_ObterVolume.Esquerdo é de 65535.
Está parecendo que é algum limite.
Lembrando que esse valor aparece mesmo sem nada estar sendo executado, ou seja, silêncio absoluto.
Deve haver algum ajuste ou conversão, para exibir o valor verdadeiro.
Qual ajuste?
Por isso, eu pergunto aos colegas como fazer a correta atribuição e obter os valores reais da saída de som do Windows.
Obrigado.
Procurei um player que tivesse um medidor de áudio. Eu costumo usar o GomPlayer e o VLC player, mas nenhum deles possui uma forma de visualizar a evolução do áudio que está sendo executado.
Também as pesquisas de outro player com essa característica não me trouxeram nenhum resultado.
Eu consegui alguns componentes que podem ser usados para o que preciso. O que falta agora é fazer a conexão do componente com a saída de áudio do Windows, de forma a ter uma visualização da evolução do áudio quando executar qualquer arquivo do tipo MP3 ou mesmo um vídeo AVI ou MP4.
Eu ainda uso Delphi 7. Por esse motivo o código para controlar a ligação do componente com a Saída WaveOut deve ser compatível com Delphi 7.
Pesquisando, eu acabei encontrando essa informação:
Controlar volume de sons Wave
Inclua na seção uses: mmSystem
Acessam a API do Windows para controlar o volume de sons wave.
A primeira função verifica se o dispositivo Wave instalado suporta o controle de volume.
O retorno desta função é true em caso positivo.
As duas funções seguintes permitem obter e definir o volume, respectivamente.
O tipo TVolume permite controlar os canais esquerdo e direito individualmente.
Observações
Um bom lembrete! O valor $0000 (zero) indica ausência de som e $FFFF indica o volume máximo.
Autor: Daniel P. Guimarães
Home-page: www.tecnobyte.com.br
Fonte: http://www.tecnobyte...ca6.html#dica90
Inclua na seção uses: mmSystem
Acessam a API do Windows para controlar o volume de sons wave.
function Wave_SuportaControleVolume: boolean;
var
Caps: TWaveOutCaps;
begin
if WaveOutGetDevCaps(WAVE_MAPPER, @Caps,
SizeOf(Caps)) = MMSYSERR_NOERROR then
Result := Caps.dwSupport and WAVECAPS_VOLUME <> 0
else
Result := false;
end;
type
TVolume = record
Esquerdo: Word;
Direito: Word;
end;
function Wave_ObterVolume: TVolume;
begin
waveOutGetVolume(integer(WAVE_MAPPER), @Result);
end;
procedure Wave_DefinirVolume(Volume: TVolume);
begin
waveOutSetVolume(integer(WAVE_MAPPER), LongWord(Volume));
end;A primeira função verifica se o dispositivo Wave instalado suporta o controle de volume.
O retorno desta função é true em caso positivo.
As duas funções seguintes permitem obter e definir o volume, respectivamente.
O tipo TVolume permite controlar os canais esquerdo e direito individualmente.
Observações
Um bom lembrete! O valor $0000 (zero) indica ausência de som e $FFFF indica o volume máximo.
Autor: Daniel P. Guimarães
Home-page: www.tecnobyte.com.br
Fonte: http://www.tecnobyte...ca6.html#dica90
Eu fiz um teste com esse código acima.
O componente que estou usando possui a propriedade Position, do tipo Double. Eu fiz a seguinte atribuição, dentro de um evento Timer:
procedure TForm1.Timer1Timer(Sender: TObject); begin VrAngularMeter1.Position := Wave_ObterVolume.Esquerdo; end;
O ponteiro corre direto para o valor máximo, mesmo que não eu não esteja executando nenhum vídeo ou áudio.
Como deveria ser a correta atribuição?
O Valor atual do Wave_ObterVolume.Esquerdo é de 65535.
Está parecendo que é algum limite.
Lembrando que esse valor aparece mesmo sem nada estar sendo executado, ou seja, silêncio absoluto.
Deve haver algum ajuste ou conversão, para exibir o valor verdadeiro.
Qual ajuste?
Por isso, eu pergunto aos colegas como fazer a correta atribuição e obter os valores reais da saída de som do Windows.
Obrigado.
Gab Arito
Curtir tópico
+ 0
Responder
Posts
08/01/2015
Gab Arito
Quase uma semana depois e nenhuma resposta.
Será que alguém que entende do assunto não chegou a ver a pergunta?
Por isso, repito a questão.
Será que alguém que entende do assunto não chegou a ver a pergunta?
Por isso, repito a questão.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)