Ir para conteúdo
Fórum Script Brasil
  • 0

ajuda audio Wav.


fabim

Pergunta

Bom dia amigos.

já procurei pelo forum alguma discução que se encaixe na minha necessidade mais não encontrei nada, por isto criei este tópico.

seguintiu..

Trabalho com desenvolvimento de sistemas eletronicos Ucontroladores microchip e ARM7.

Por hoby depois de dar uma pesquisada pela net, vi algumas Edrum´s bem legais.

Desenvolvi um sistema que comunica com o PC viu USB HID, utilizando um UC 18F da microchip.

O Sistema mensura a força aplicada nos Pad´s com as baquetas, atravéz de transdutores piezoeletricos, e pode mandar o protocolo para o PC da forma que eu necessite, dentro do meu programinha criado no delphi eu recebo os bytes e os trato, tambem da forma que eu necessito.

Pois Bem aí que a porca esta torcendo o rabo, para que o meu sisteminha fique muitissisimo bonzio, eu preciso tratar trez coisas nos samples Wav.

suponha que o som tem 300mS.

1° A função deve ser passada de tal forma que eu inicie a reprodução do som de qualquer ponto dentro dos ditos 300mS.

"exemplo sndPlaySound(arquivo, ponto inicial de execução);"

2° A função deve se passada de tal forma que eu inicie a reprodução do som com dado volume podendo variar de 0 mudo a 128 máximo.

"exemplo sndPlaySound(arquivo, ponto inicial de execução, volume);"

3° Por eu fazer alguns testes percebi que se eu usar o mmsystem e executar o audio pelo disco existem um delay entre a ocorrencia de clik no botão e o inicio do audio, este delay é um pé no saco.

Precisava descobrir um forma de carregar os audios nas var´s, tipo.

Var

X : Tfile;

X := 'C:/samples/prato1.wave'

SndPlaySound(X, 150ms, 64); //= prato1, inicia do meio dos 300mS, volume 50%.

Se possivel, de houver a ajuda dos amigos, gostaria de disponibilizar o projeto para que os hobystas de plantão pudessem montar também, e sair um pouco da rotina de.!!

Trampo, "chega em casa muié e fio pra torrar o saco", dorme, trampo.......

rsrs

Abraços

Fabim

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

fabim, este é o tipo de coisa difícil de encontrar por aí, acho que não vai ser muito fácil não.

Mas, dê uma olhada neste componente Wave Audio v1.88. Se ele não recursos lá tão revolucionários, pelo menos você poderá aproveitar muito do código que o autor disponibiliza (veja p.e., WaveUtils).

Você provavelmente obterá uma possível ajuda com relação ao item 3. Nas notas da revisão consta:

Added two new classes for converting wave audio stored in memory and file on the fly

ou

Adicionado duas classes novas para converter o áudio da wav armazenado na memória e arquivo em "tempo real"

Boa sorte.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --fabim --

intão micheus.

Ta um sofrimento só.

já tinha instalado este componente, e tentado faze-lo funcionar.

Mais cara é muitissimo complexo, tem que dar a volta no mundo pra poder fazer alguma coisa.

Se voce pudesse me dar uma força, em um simples exemplo usando ele.

Tipo carrega o arquivo na ram, play..

Só isto já me iluminaria muito.

Fabim

Link para o comentário
Compartilhar em outros sites

  • 0
já tinha instalado este componente, e tentado faze-lo funcionar.

Mais cara é muitissimo complexo, tem que dar a volta no mundo pra poder fazer alguma coisa.

fabim, posso estar enganado, mas acho que você não chegou a dar uma olhada, com carinho, nos exemplos.

Sugiro que instale-o novamente, e dê uma olhada nos exemplos para fins de estudos - conhecer eventos, métodos e propriedades dos vários componentes (com ênfase aos que tem potencial para sua aplicação).

Haverão dois projetos exemplos que apresentarão erro de compilação. Parece que o cara não testou os exemplos ou, mais provavelmente, realizou alterações nos componentes que não atualizou nos demos:

1) no projeto Receiver em Live Audio\ReceiverFile

lá pela linha 112 onde aparece:

if WaveFile.State = wssNone then // Getting Wave Format

trocar por:

if WaveFile.State = wssReady then // Getting Wave Format

ocorre que wssNone não está declarada e não é utilizada em mais lugar algum.

2) no projeto Receiver em Live Audio\Receiver

ao compilar acusará erro nos parâmetros dos métodos referentes aos eventos OnDataPtr e OnFormat do componente LiveAudioPlayer (LiveAudioPlayerDataPtr e LiveAudioPlayerFormat). Este é mais chato de corrigir.

Se precisar construir um streamer para uma rede, então avise que passo o arquivo corrigido.

Com uma alteração bem simples no exemplo que ele fornece na pasta WavePlayer, você verá que os itens 1 e 2 serão facilmente implementados. Quanto ao item 3, acho interessante você testar por você mesmo. Eu não percebi qualquer demora.

Faça assim, copie o projeto que citei para uma nova pasta de teste e faça as seguintes alterações:

- Aumente o tamanho do form (na largura e altura);

- adicione 2 TrackBar (paleta Win32), lado a lado, e ajuste as propriedades:

-> Orientation = trVertical;

-> Frequency = 5

-> no 1º TrackBar ajuste Min = -100 e deixe Max = 0; Usar a escala negativa, fará com que o ajuste do track ocorra de baixo para cima e o valor 100 corresponderá a 100% para o volume;

-> no 2º TrackBar estes informações serão ajustada no código;

- no evento OnChange do TrackBar1 (volume), coloque o seguinte código:

procedure TMainForm.TrackBar1Change(Sender: TObject);
begin
  StockAudioPlayer.Volume := -TrackBar1.Position; // revertemos a escala para positivo
end;
- no evento OnChange do TrackBar2 (ponto de início para "tocar" o som), coloque o seguinte código:
procedure TMainForm.TrackBar2Change(Sender: TObject);
begin
  StockAudioPlayer.Position := -TrackBar2.Position; // revertemos a escala para positivo
end;
- altere o código no evento OnClick do btnPlay para ficar assim:
procedure TMainForm.btnPlayClick(Sender: TObject);
begin
 // por Micheus
  StockAudioPlayer.Volume := 75; // Inicia música com volume sempre neste valor (75%)
 // ajustar a barra de volume para representar o ajuste
  TrackBar1.Position := -StockAudioPlayer.Volume;  // este "-" é porque usamos escala negativa no TrackBar
 // fim

  StockAudioPlayer.PlayFile(WaveFileName.Text);
end;
- no evento OnClick do btnSelectFile acrescente a parte assinalada com meu nome:
...
    try
      AudioFormatLabel.Caption := WaveFile.AudioFormat;
      Progress.Position := 0;
      Progress.Max := WaveFile.Length;
     // por Micheus
     // ajustar a barra de posição para o início do áudio
      TrackBar2.Position := 0; // inicializamos sempre no início do áudio
     // ajustar o maior valor possível para posição do áudio
      TrackBar2.Min := -WaveFile.Length;  // este "-" é porque usamos escala negativa no TrackBar
     // fim
      EndPosLabel.Caption := MS2Str(WaveFile.Length, msSh) + ' s';
    finally
...
end;

O ajuste do volume afeta apenas esta sua wave - não interfere nos ajustes do Windows.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --fabim --

Obrigado micheus.

Vou dar uma brigada aqui com esses exemplos.

Conseguindo pelo que eu pude entender, asyncrono..

Eu posso colocar 10 stock, carregar wav para cada um e controla-los em parte, que os audios irão tocar simultaneos comos e fosse um mixer. É acho que este componente irá servir sim.

Muito obrigado pelo seu help e atenção, esquemo que me permita que caso eu esteja levando outra surra eu possa lhe pedir outro help.

Grato,

Fabim

Link para o comentário
Compartilhar em outros sites

  • 0

fabim, acho que você conseguirá fazer isto facilmente sim.

Eu esqueci de mencionar que no componente StockAudioPlayer foi necessário habilitar em Options o item Volume.

No dia post eu não tinha acesso ao site de compartilhamento, mas já coloquei o exemplo lá. Baixe-o do link constante em minha assinatura, está na pasta Programacao\Multimidia - Wave Player.zip

Abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...