文档章节

用多媒体库 Bass.dll 播放 mp3 [13] - 混响(Reverb)效果

涂孟超
 涂孟超
发布于 2014/09/26 15:37
字数 463
阅读 14
收藏 0
本例效果图:



代码文件:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    OpenDialog1: TOpenDialog;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    TrackBar1: TTrackBar;
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure TrackBar1Change(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses Bass;

var
  hs: HSTREAM;  {流句柄}
  reverb: BASS_DX8_REVERB; {混响的参数结构, 不能是局部变量; 本例只测试了结构中的 fReverbTime 参数}
  fx: HFX; {DX 的效果句柄}

procedure TForm1.FormCreate(Sender: TObject);
begin
  {reverb.fReverbTime: 0.001 - 3000.0; 默认 1000}
  TrackBar1.Min := 1;
  TrackBar1.Max := 3000;
  TrackBar1.Position := 1000;

  if HiWord(BASS_GetVersion) <> BASSVERSION then
    MessageBox(0, '"Bass.dll" 文件版本不合适! ', nil, MB_ICONERROR);

  if not BASS_Init(-1, 44100, 0, 0, nil) then ShowMessage('初始化错误');
end;

{打开}
procedure TForm1.Button1Click(Sender: TObject);
var
  Mp3Path: AnsiString;
begin
  BASS_StreamFree(hs);

  OpenDialog1.Filter := 'Mp3 文件(*.mp3)|*.mp3|Wav 文件(*.wav)|*wav';
  if OpenDialog1.Execute then
    Mp3Path := AnsiString(OpenDialog1.FileName);

  {实现混响等效果, 需要指定 BASS_SAMPLE_FX 参数}
  hs := BASS_StreamCreateFile(False, PAnsiChar(Mp3Path), 0, 0, BASS_SAMPLE_FX);

  if hs < BASS_ERROR_ENDED then
    Text := '打开失败'
  else begin
    Text := string(Mp3Path);
    {设置并返回效果句柄}
    fx := BASS_ChannelSetFX(hs, BASS_FX_DX8_REVERB, 0);
  end;
end;

{播放}
procedure TForm1.Button2Click(Sender: TObject);
begin
  BASS_ChannelPlay(hs, False);
end;

{暂停}
procedure TForm1.Button3Click(Sender: TObject);
begin
  BASS_ChannelPause(hs);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  BASS_Free;
end;

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
  reverb.fReverbTime := TrackBar1.Position;
  BASS_FXSetParameters(fx, @reverb);
  Label1.Caption := Format('混响时间: %f', [reverb.fReverbTime]);
end;

end.

 
 
 
 
 

 

 

  
窗体文件:
object Form1: TForm1
  Left = 222
  Top = 114
  Caption = 'Form1'
  ClientHeight = 119
  ClientWidth = 299
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  Position = poDesigned
  OnCreate = FormCreate
  OnDestroy = FormDestroy
  PixelsPerInch = 96
  TextHeight = 13
  object Label1: TLabel
    Left = 40
    Top = 67
    Width = 52
    Height = 13
    Caption = #28151#21709#26102#38388':'
  end
  object Button1: TButton
    Left = 32
    Top = 25
    Width = 75
    Height = 25
    Caption = #25171#24320
    TabOrder = 0
    OnClick = Button1Click
  end
  object Button2: TButton
    Left = 113
    Top = 25
    Width = 75
    Height = 25
    Caption = #25773#25918
    TabOrder = 1
    OnClick = Button2Click
  end
  object Button3: TButton
    Left = 194
    Top = 25
    Width = 75
    Height = 25
    Caption = #26242#20572
    TabOrder = 2
    OnClick = Button3Click
  end
  object TrackBar1: TTrackBar
    Left = 26
    Top = 86
    Width = 243
    Height = 23
    ShowSelRange = False
    TabOrder = 3
    OnChange = TrackBar1Change
  end
  object OpenDialog1: TOpenDialog
  end
end

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2008/08/22/1274179.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
使用Delphi7,LAME_enc制作实时录制MP3的录音机

录音控件使用的是AudioRecord,压缩使用的是LAME_enc,播放mp3 使用的Bass.dll多媒体函数库,详情见附件,所有的资料均来自网络,归原作者所有 以下代码介绍AudioRecord的相关代码: {-------...

AdaAda
2012/02/25
0
0
Freeverb3 2.5.15 发布,声音处理库

Freeverb3 是一个声音处理库,其中包括采样率缩放功能的一些修复的freeverb版本,NReverb延长执行CCRMA,对脉冲响应混响,FIR滤波器构造带分 离器,softknee执行/ hardknee压缩机,softknee ...

红薯
2011/06/07
565
1
音频处理软件--Gold Wave Editor

Gold Wave Editor 是一款功能丰富的经典音频处理软件。它是集声音编辑,播放,录制,和转换的音频工具,体积小巧,功能却不弱。可打开的音频文件相当多,包括 WAV, OGG, VOC, IFF, AIF, AFC...

匿名
2009/09/01
2.7K
0
Scene Unity3D笔记(三)

1、游戏对象新建默认位置是Scene视图中心位置坐标;;Component:游戏对象实现其用途的功能件;游戏对象都有Transform组件;给游戏对象添加组件Ctrl+Shift+A; 2、7类组件:空对象添加组件后形...

周志超
2014/07/22
0
0
Rockbox 3.10 发布,嵌入式 MP3 播放器

Rockbox 是一个功能非常强大的嵌入式 MP3 播放器。 新版本值得关注的特性包括更好的目录处理、改进了主题风格,全功能的混响,支持大量的游戏音频格式,附加嵌入专辑支持,提升 Ogg 解码性能...

红薯
2011/12/09
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

MySQL 乱七八糟的可重复读隔离级别实现

MySQL 乱七八糟的可重复读隔离级别实现 摘要: 原文可阅读 http://www.iocoder.cn/Fight/MySQL-messy-implementation-of-repeatable-read-isolation-levels 「shimohq」欢迎转载,保留摘要,谢...

DemonsI
41分钟前
2
0
Spring源码阅读——2

在阅读源码之前,先了解下Spring的整体架构: 1、Spring的整体架构 1. Ioc(控制反转) Spring核心模块实现了Ioc的功能,它将类与类之间的依赖从代码中脱离出来,用配置的方式进行依赖关系描...

叶枫啦啦
今天
1
0
jQuery.post() 函数格式详解

jquery的Post方法$.post() $.post是jquery自带的一个方法,使用前需要引入jquery.js 语法:$.post(url,data,callback,type); url(必须):发送请求的地址,String类型 data(可选):发送给后台的...

森火
今天
0
0
referer是什么意思?

看看下面这个回答(打不开网页可以把网址复制到搜索栏): https://zhidao.baidu.com/question/577842068.html

杉下
今天
1
0
使用U盘安装CentOS-解决U盘找不到源

1. 使用UltraISO制作CentOS安装盘 如果需要安装带界面的系统,为保证安装顺利,可选择Everything版本的ISO制作安装盘。 2. 在BIOS中选择使用U盘安装 系统启动后,进入安装选择界面,其中有三...

Houor
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部