文档章节

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

涂孟超
 涂孟超
发布于 2014/09/26 15:37
字数 463
阅读 14
收藏 0
点赞 0
评论 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
博文 2004
码字总数 14107
作品 0
深圳
程序员
使用Delphi7,LAME_enc制作实时录制MP3的录音机

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

AdaAda ⋅ 2012/02/25 ⋅ 0

Freeverb3 2.5.15 发布,声音处理库

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

红薯 ⋅ 2011/06/07 ⋅ 1

音频处理软件--Gold Wave Editor

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

匿名 ⋅ 2009/09/01 ⋅ 0

Scene Unity3D笔记(三)

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

周志超 ⋅ 2014/07/22 ⋅ 0

Rockbox 3.10 发布,嵌入式 MP3 播放器

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

红薯 ⋅ 2011/12/09 ⋅ 0

【android学习之十四】——多媒体1:音乐播放

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

晨曦之光 ⋅ 2012/03/08 ⋅ 1

flash 独立播放器

FlashPlayer的独立播放器版(Debug版),既可单独播放*.SWF文件,也可创建EXE文件。Debug版适用于开发人员。同时,它也是独立播放器, 运行后,程序会自动关联SWF文件,做为默认的播放器。能够...

dml124 ⋅ 2013/04/10 ⋅ 0

android关于音频的一点问题

请教几个关于audiotrack的问题。 audiotrack在播放音频时可以播放pcm流,但是现在音频pcm并不多,所以如果想让它能播放mp3应该怎么办?网上查找到的信息说是要移植一个第三方库libmad来对mp3...

死亡序曲 ⋅ 2014/01/03 ⋅ 0

Windows Phone 7 - 多媒体开发

前言 在上篇文章讲述了如何新建一个Silverlight for Windows Phone的应用程序,这篇文章讲述如何在WindowsPhone上进行多媒体应用的开发。同时介绍当前Windows Phone Beta版本所支持媒体文件格...

虫虫 ⋅ 2012/02/21 ⋅ 1

多媒体播放器 Songbird 宣布停止开发

跨平台开源多媒体播放器 Songbird 的母公司 POTI Inc 宣布由于经济问题难以维系,Songbird 开发及其他所有服务将于 6 月 28 日全部停止。 本站在 2006 年 Songbird 问世之初就曾报道过,其跨...

oschina ⋅ 2013/06/18 ⋅ 8

没有更多内容

加载失败,请刷新页面

加载更多

下一页

个人博客的运营模式能否学习TMALL天猫质量为上?

心情随笔|个人博客的运营模式能否学习TMALL天猫质量为上? 中国的互联网已经发展了很多年了,记得在十年前,个人博客十分流行,大量的人都在写博客,而且质量还不错,很多高质量的文章都是在...

原创小博客 ⋅ 今天 ⋅ 0

JavaScript零基础入门——(十一)JavaScript的DOM操作

JavaScript零基础入门——(十一)JavaScript的DOM操作 大家好,欢迎回到我们的JavaScript零基础入门。最近有些同学问我说,我讲的的比书上的精简不少。其实呢,我主要讲的是我在开发中经常会...

JandenMa ⋅ 今天 ⋅ 0

volatile和synchronized的区别

volatile和synchronized的区别 在讲这个之前需要先了解下JMM(Java memory Model :java内存模型):并发过程中如何处理可见性、原子性、有序性的问题--建立JMM模型 详情请看:https://baike.b...

MarinJ_Shao ⋅ 今天 ⋅ 0

深入分析Kubernetes Critical Pod(一)

Author: xidianwangtao@gmail.com 摘要:大家在部署Kubernetes集群AddOn组件的时候,经常会看到Annotation scheduler.alpha.kubernetes.io/critical-pod"="",以表示这是一个关键服务,那你知...

WaltonWang ⋅ 今天 ⋅ 0

原子性 - synchronized关键词

原子性概念 原子性提供了程序的互斥操作,同一时刻只能有一个线程能对某块代码进行操作。 原子性的实现方式 在jdk中,原子性的实现方式主要分为: synchronized:关键词,它依赖于JVM,保证了同...

dotleo ⋅ 今天 ⋅ 0

【2018.06.22学习笔记】【linux高级知识 14.4-15.3】

14.4 exportfs命令 14.5 NFS客户端问题 15.1 FTP介绍 15.2/15.3 使用vsftpd搭建ftp

lgsxp ⋅ 今天 ⋅ 0

JeeSite 4.0 功能权限管理基础(Shiro)

Shiro是Apache的一个开源框架,是一个权限管理的框架,实现用户认证、用户授权等。 只要有用户参与一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户...

ThinkGem ⋅ 昨天 ⋅ 0

python f-string 字符串格式化

主要内容 从Python 3.6开始,f-string是格式化字符串的一种很好的新方法。与其他格式化方式相比,它们不仅更易读,更简洁,不易出错,而且速度更快! 在本文的最后,您将了解如何以及为什么今...

阿豪boy ⋅ 昨天 ⋅ 0

Python实现自动登录站点

如果我们想要实现自动登录,那么我们就需要能够驱动浏览器(比如谷歌浏览器)来实现操作,ChromeDriver 刚好能够帮助我们这一点(非谷歌浏览器的驱动有所不同)。 一、确认软件版本 首先我们...

blackfoxya ⋅ 昨天 ⋅ 0

线性回归原理和实现基本认识

一:介绍 定义:线性回归在假设特证满足线性关系,根据给定的训练数据训练一个模型,并用此模型进行预测。为了了解这个定义,我们先举个简单的例子;我们假设一个线性方程 Y=2x+1, x变量为商...

wangxuwei ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部