操作 Wave 文件(15): 合并与剪裁 wav 文件
摘要:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button...
阅读全文
posted @
2009-11-12 16:09
万一
阅读(3741)
推荐(0) 编辑
操作 Wave 文件(14): waveOutSetPlaybackRate、waveOutSetPitch
摘要:这两个参数也都是可以 Get(waveOutGetPlaybackRate、waveOutGetPitch)设备默认的播放速度是 $00010000, 此值乘以 2 是快一倍, 除以 2 是慢一倍; 最快可到 $000F8000.设备默认的音高参数是 $00010000, 此值乘以 2 是高一倍, 除以 2 是低一倍; 最高可到 $000F8000.可能有很多声卡不支持, 我的 IBM 手提就不支...
阅读全文
posted @
2009-11-11 23:18
万一
阅读(3301)
推荐(0) 编辑
操作 Wave 文件(13): waveOutGetVolume、waveOutSetVolume
摘要:左右声道的音量是单调的; 表示音量的 32 位整数的低 16 位是左声道、高 16 位是右声道.代码文件:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm)...
阅读全文
posted @
2009-11-11 21:52
万一
阅读(4672)
推荐(0) 编辑
操作 Wave 文件(12): 使用 waveOut...重复播放 wav 文件
摘要:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton...
阅读全文
posted @
2009-11-11 17:05
万一
阅读(3083)
推荐(0) 编辑
操作 Wave 文件(11): 使用 waveIn...函数录制 wav 文件
摘要:使用窗口接受音频设备发出的消息:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Button1: TButton; Button2: TButton; ...
阅读全文
posted @
2009-11-11 15:14
万一
阅读(4174)
推荐(1) 编辑
操作 Wave 文件(10): 输入输出设备与格式支持
摘要:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) ListBox1: TListBox; ListBox2: TListBox; Button1: TBu...
阅读全文
posted @
2009-11-11 10:20
万一
阅读(2667)
推荐(0) 编辑
操作 Wave 文件(9): 使用 waveOut... 函数播放 wav 文件
摘要:下面是使用低级音频函数播放 wav 的两个方法, 对这个感兴趣的人恐怕很少, 免注释了.使用窗口接受音频输出设备的消息:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class...
阅读全文
posted @
2009-11-10 18:18
万一
阅读(3898)
推荐(0) 编辑
操作 Wave 文件(8): 使用 TMediaPlayer 录制 wav 文件
摘要:TMediaPlayer 录音是基于一个已存在的 wav 文件, 上次建立空白 wav 的函数可派上用场了.TMediaPlayer 的功能是基于 MCI 的, 都是该淘汰的东西了, 只是简单了解下.接下来还要学习用 waveIn...系列函数录音、用 DirectSound 录音.unit Unit1;interfaceuses Windows, Messages, SysUtils, Var...
阅读全文
posted @
2009-11-10 13:48
万一
阅读(2723)
推荐(0) 编辑
操作 Wave 文件(7): 建立一个空的 Wave 文件(三种方法)
摘要:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); end;var Form1: TForm1...
阅读全文
posted @
2009-11-10 00:17
万一
阅读(2908)
推荐(0) 编辑
操作 Wave 文件(6): 获取 Wave 文件的波形数据
摘要:读取函数及测试代码:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(S...
阅读全文
posted @
2009-11-07 00:05
万一
阅读(3546)
推荐(0) 编辑
操作 Wave 文件(5): 获取 Wave 文件的格式信息
摘要:装载格式信息的结构有:能看出它们是依次递增一个字段, 并且也是 Wave 文件的一个构成部分; 现在要做的就是从 Wave 文件中把它们取出来.获取函数及测试代码:
阅读全文
posted @
2009-11-06 23:34
万一
阅读(2737)
推荐(0) 编辑
操作 Wave 文件(4): 获取 Wave 文件主块与子块的信息
摘要:有两个相关的结构体: TMMIOInfo、TMMCKInfo.TMMIOInfo 是多媒体文件打开后的状态信息, mmioOpen 函数的第二个参数就是这个结构的指针.现在先用到了 TMMCKInfo, 这是文件内部 "块" 的信息, 构成如下:TMMCKInfo = record ckid: FOURCC; {块标识} cksize: DWORD; {块大小} fccType: FOURC...
阅读全文
posted @
2009-11-06 18:09
万一
阅读(2066)
推荐(0) 编辑
操作 Wave 文件(3): 接触 mmio 系列函数
摘要:mmio 系列函数用于 Wave 等多媒体文件的 I/O 操作, 相关函数有:mmioOpenmmioClosemmioReadmmioWritemmioFlushmmioSeekmmioRenamemmioGetInfommioSetInfommioCreateChunkmmioAscendmmioDescendmmioAdvancemmioSetBuffermmioStringToFOURCC...
阅读全文
posted @
2009-11-06 15:26
万一
阅读(4002)
推荐(0) 编辑
操作 Wave 文件(2): 判断一个文件是否是 Wave 文件
摘要:Wave 文件的前 12 个字节可以这样描述:TRiff = record ckId : DWORD; {'RIFF'} ckSize : DWORD; {文件大小, 不包括前 8 个字节} fccType : DWORD; {'WAVE'}end;我们读出文件的前 12 个字节进行判断, 就基本可以确认它是不是 Wave 文件.uses MMSystem, IOUtils; {这里准备用...
阅读全文
posted @
2009-11-06 12:11
万一
阅读(2657)
推荐(0) 编辑
操作 Wave 文件(1): 关于 Wave 文件的基础知识与文件格式
摘要:最近准备学习 DirectSound、DirectMusic、DirectShow, 但刚一接触就碰到了关于 Wave 文件的诸多问题, 只好先回头学学 Wave 文件.Wave 文件的基础知识经常见到这样的描述: 44100HZ 16bit stereo 或者 22050HZ 8bit mono 等等.44100HZ 16bit stereo : 每秒钟有 44100 次采样, 采样数据用 16...
阅读全文
posted @
2009-11-06 02:56
万一
阅读(4117)
推荐(0) 编辑
合并两个 Wav 文件流的函数 - 回复 "刘文强" 的问题
摘要:问题来源: http://www.cnblogs.com/del/archive/2008/10/25/1069523.html#1351197 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;...
阅读全文
posted @
2008-10-25 22:07
万一
阅读(3042)
推荐(0) 编辑
合并两个 Wav 文件的函数
摘要:unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button...
阅读全文
posted @
2008-10-25 21:54
万一
阅读(4083)
推荐(0) 编辑
WinAPI: waveOutWrite - 向输出设备发送一个数据块
摘要:提示: 把数据缓冲区传给 waveOutWrite 之前, 必须使用 waveOutPrepareHeader 准备该缓冲区; 若未调用 waveOutPause 函数暂停设备, 则第一次把数据块发送给设备时即开始播放. //声明: waveOutWrite( hWaveOut: HWAVEOUT; {设备句柄} lpWaveOutHdr: PWaveHdr; {TWaveH...
阅读全文
posted @
2008-02-20 22:20
万一
阅读(5544)
推荐(0) 编辑
WinAPI: waveOutUnprepareHeader - 清除由 waveOutPrepareHeader 完成的准备
摘要:提示: 设备使用完数据块后, 须调用此函数; 释放(GlobalFree)缓冲区前, 须调用此函数; 取消一个尚未准备的缓冲区将无效, 但函数返回 0 //声明: waveOutUnprepareHeader( hWaveOut: HWAVEOUT; {设备句柄} lpWaveOutHdr: PWaveHdr; {TWaveHdr 结构的指针} uSize: UINT ...
阅读全文
posted @
2008-02-20 22:07
万一
阅读(6557)
推荐(0) 编辑
WinAPI: waveOutGetPlaybackRate - 设置输出设备的播放速度(默认速度值的倍数)
摘要:提示: 参数 dwRate 虽然是 4 字节的正整数, 但表示的是个小数; 两个高位表示整数部分, 两个低位表示小数部分; $8000 表示一半, $4000 表示四分之一; 譬如: $00010000 表示 1.0, 说明速度没有改变变; $000F8000, 表示 15.5 倍; 修改播放速度不会改变采样速度, 但肯定会改变播放时间. //声明: waveOutSetPlaybackRa...
阅读全文
posted @
2008-02-20 21:53
万一
阅读(2170)
推荐(0) 编辑