Ofereço ajuda em Java, C/C++, Python, C#, LISP, AutoLisp, AutoCAD
+55 (062) 98553-6711
Ofereço ajuda em PHP, Python, C#, JavaScript, Laravel, Google Ads e SEO
+55 (062) 98243-1195

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 Delphi

Quantidade 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.

Link para compartilhar na Internet ou com seus amigos:

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

E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 20 usuários muito felizes estudando em nosso site.