Você está aqui: Delphi ::: Dicas & Truques ::: BASS (bass.dll - Biblioteca de Áudio) |
BASS - O que é, como baixar e testar esta DLL de áudio em seus programas DelphiQuantidade de visualizações: 15693 vezes |
A BASS é uma biblioteca de áudio para uso no Windows e no software Mac OSX. Seu propósito é fornecer aos desenvolvedores uma ferramenta poderosa de sampleamento (samples), stream (MP3, MP2, MP1, OGG, WAV, AIFF, formatos customizados e outros mais via add-ons), MOD music (XM, IT, S3M, MOD, MTM, UMX), MO3 music (MP3/OGG compressed MODs) e funções de gravação. Tudo isso em uma pequena DLL, apenas 97,5 Kb na versão 2.4. No Windows a BASS requer o DirectX 3 ou mais recente para saída de áudio e tira vantagem dos drivers de aceleração de hardware DirectSound and DirectSound3D, quando disponíveis. No OSX, a BASS use o CoreAudio para saída, e o OSX 10.3 ou mais recente é recomendado. Tanto o PowerPC quanto o Intel Macs são suportados. Além disso, a BASS também está disponível para as plataformas Win64, WinCE, Linux e iPhone. Nesta dica mostrarei como baixar e testar a BASS a partir de suas aplicações Delphi. Siga atentamente os passos abaixo: a) Acesse http://www.un4seen.com ou pesquise no Google ou seu site de busca favorito por "bass.dll". Baixe a versão mais recente e descompacte em um diretório de sua preferência. No diretório delphi você encontrará um arquivo bass.pas contendo as importações das funções da bass.dll. Copie este arquivo para o diretório do seu projeto Delphi; b) Agora copie a DLL bass.dll para o diretório de seu projeto ou para os diretórios Windows, System ou System32; c) Crie um nova aplicação Delphi e adicione a unit Bass no seu uses; d) Chegou a hora de testar. Acrescente o código abaixo no evento Click de um botão: ---------------------------------------------------------------------- Precisa de ajuda? Chama no WhatsApp +55 (62) 98553-6711 (Osmar) Este código foi útil? Paga um cafezinho pra mim :-( PIX: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- procedure TForm1.Button1Click(Sender: TObject); begin // vamos verificar se a versão da bass.dll corresponde à versão contida // no Bass.pas (BASSVERSION = xxxx;) if HIWORD(BASS_GetVersion) <> BASSVERSION then begin // An incorrect version of BASS.DLL was loaded MessageBox(0, 'Uma versão incorreta da BASS.DLL foi carregada', nil, MB_ICONERROR); Halt; end; // Initialize audio - default device, 44100hz, stereo, 16 bits // Vamos inicializar o áudio - dispositivo padrão, 44100hz, stereo, 16 bits if not BASS_Init(-1, 44100, 0, Handle, nil) then // Error initializing audio! Error('Houve um erro ao inicializar o áudio') else ShowMessage('Áudio inicializado com sucesso.'); end; Neste código nós efetuamos uma chamada à procedure Error. Mais abaixo você encontrará o local no qual ela deverá ser inserida. Uma vez inicializada a bass.dll, podemos executar uma música WAV, AIFF, MP3, MP2, MP1 ou OGG da seguinte forma: ---------------------------------------------------------------------- Precisa de ajuda? Chama no WhatsApp +55 (62) 98553-6711 (Osmar) Este código foi útil? Paga um cafezinho pra mim :-( PIX: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- procedure TForm1.Button2Click(Sender: TObject); var arquivo: String; // nome do arquivo MP3 musica: HSAMPLE; // um handle para a amostra (sample) ch: HCHANNEL; // um handle para o canal de execução begin if not OpenDialog1.Execute then Exit; // vamos carregar a música WAV, AIFF, MP3, MP2, MP1 ou OGG a ser executada arquivo := OpenDialog1.FileName; musica := BASS_SampleLoad(FALSE, PChar(arquivo), 0, 0, 3, BASS_SAMPLE_OVER_POS); // vamos obter o canal de execução ch := BASS_SampleGetChannel(musica, False); // vamos centralizar o som (igual dos dois lados) BASS_ChannelSetAttribute(ch, BASS_ATTRIB_PAN, 0); // vamos definir o volume (0 = silêncio; 1 = volume total) BASS_ChannelSetAttribute(ch, BASS_ATTRIB_VOL, 1); if not BASS_ChannelPlay(ch, False) then // Error playing sample! Error('Erro ao executar a amostra!'); end; E, para facilitar o estudo dos iniciantes, segue o código completo para a unit usada nesta demonstração: ---------------------------------------------------------------------- Precisa de ajuda? Chama no WhatsApp +55 (62) 98553-6711 (Osmar) Este código foi útil? Paga um cafezinho pra mim :-( PIX: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Bass, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; OpenDialog1: TOpenDialog; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } procedure Error(msg: string); public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Error(msg: string); var s: string; begin // Error code s := msg + #13#10 + '(Código de erro: ' + IntToStr(BASS_ErrorGetCode) + ')'; MessageBox(Handle, PChar(s), nil, 0); end; procedure TForm1.Button1Click(Sender: TObject); begin // vamos verificar se a versão da bass.dll corresponde à versão contida // no Bass.pas (BASSVERSION = xxxx;) if HIWORD(BASS_GetVersion) <> BASSVERSION then begin // An incorrect version of BASS.DLL was loaded MessageBox(0, 'Uma versão incorreta da BASS.DLL foi carregada', nil, MB_ICONERROR); Halt; end; // Initialize audio - default device, 44100hz, stereo, 16 bits // Vamos inicializar o áudio - dispositivo padrão, 44100hz, stereo, 16 bits if not BASS_Init(-1, 44100, 0, Handle, nil) then // Error initializing audio! Error('Houve um erro ao inicializar o áudio') else ShowMessage('Áudio inicializado com sucesso.'); end; procedure TForm1.Button2Click(Sender: TObject); var arquivo: String; // nome do arquivo MP3 musica: HSAMPLE; // um handle para a amostra (sample) ch: HCHANNEL; // um handle para o canal de execução begin if not OpenDialog1.Execute then Exit; // vamos carregar a música WAV, AIFF, MP3, MP2, MP1 ou OGG a ser executada arquivo := OpenDialog1.FileName; musica := BASS_SampleLoad(FALSE, PChar(arquivo), 0, 0, 3, BASS_SAMPLE_OVER_POS); // vamos obter o canal de execução ch := BASS_SampleGetChannel(musica, False); // vamos centralizar o som (igual dos dois lados) BASS_ChannelSetAttribute(ch, BASS_ATTRIB_PAN, 0); // vamos definir o volume (0 = silêncio; 1 = volume total) BASS_ChannelSetAttribute(ch, BASS_ATTRIB_VOL, 1); if not BASS_ChannelPlay(ch, False) then // Error playing sample! Error('Erro ao executar a amostra!'); end; end. Há duas funcionalidades que devem ser acrescentadas a este código: a) Possibilidade de parar a música em execução; b) Fechar os canais de execução e a bass.dll, liberando a memória usada na alocação dos recursos. Em outras dicas desta seção você verá como isso pode ser feito. Para fins de compatibilidade esta dica ou anotação foi escrita usando Delphi 2009. |
![]() |
Desafios, Exercícios e Algoritmos Resolvidos de Delphi |
Veja mais Dicas e truques de Delphi |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |