文档章节

用多媒体库 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
【android学习之十四】——多媒体1:音乐播放

声明:学习的书籍《Android应用开发揭秘》,这里记录学习该书籍的日志,引用的相关代码与总结描述,没有商业的用途,完全是自我学习的一个记录,刚刚学习不可避免会出现很多问题,若是有错误...

晨曦之光
2012/03/08
2.8K
1
Scene Unity3D笔记(三)

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

周志超
2014/07/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

五类数据存储模型行、列、键值对、文档、图

1、行存储 定义:关系模型使用记录(行或者元组)进行存储,记录存储在表中,表由架构界定。表中的每个列都有名称和类型,表中的所有记录都要符合表的定义。SQL是专门的查询语言,提供相应的...

PeakFang-BOK
25分钟前
1
0
部署springcloud到docker中

1.在centos7中安装docker 2.打包eureka-server: 修改application.properties: 此处,eureka.instance.perfer-ip-address=true 表示实例地址为服务器的ip地址 使用maven命令打包: cmd进入项...

狼王黄师傅
40分钟前
1
0
赋能,打造不确定性敏捷团队

writeademo
41分钟前
1
0
Go interface{} to string

package mainimport "fmt"func main() {var a interface{}a = "dsadjaldaldad"var b stringb = a.(string) // 话说,用人话说的话,这叫什么操作?fmt.Println(a, b)}...

taadis
43分钟前
0
0
数据库防火墙

数据库防火墙顾名思义是一款数据(库)安全设备,从防火墙这个词可以看出,其主要作用是做来自于外部的危险隔离。换句话说,数据库防火墙应该在入侵在到达数据库之前将其阻断,至少需要在入侵...

突突突酱
53分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部