无线电电子与电气工程百科全书 声卡的模数转换器。 无线电电子电气工程百科全书 今天,每个 PC 用户都熟悉“多媒体”这个术语。 对于许多人来说,它与高质量的声音、动画等有关。 但是,Sound Blaster 声卡可以用作具有出色处理能力的模数和数模转换器。 带有这种卡的计算机可以用作示波器、发生器或信号分析仪。 事实上,它的“心脏”是数字信号处理器DSP(Digital Signal Processor)。 为了使用其功能,有必要直接访问包含音频数据的缓冲区和 DSP 的控制模式,即使用底层接口。 在本文中,我们将考虑声卡的设备和标准类型的数据文件的格式,在这些文件中,将声卡输入端接收到的信号数字化而获得的数据存储在计算机的内存中。 可以通过编程方式合成相同的文件以获得给定形状的信号。 通常,声卡(图 1)有两个双(立体声)输入和两个相同的输出。 第一个(线路)输入设计用于幅度约为 1 V 的输入信号,第二个 - 麦克风,用于较弱的信号。 当使用声卡作为模数转换器时,您可以使用这些输入中的任何一个 - 取决于正在处理的信号电平。 与多媒体相关的数据以所谓的 RIFF 格式(Resource Interchange File Format - 用于资源交换的文件格式)[1] 存储在文件中。 RIFF 文件包含嵌套的块(块)。 外部片段由标题和数据区域组成(图 2)。 标头的第一个双字包含一个四字符代码,用于标识存储在片段中的数据。 标头的第二个 dword 是以字节为单位的数据区域的大小(不包括标头本身的大小)。 数据区具有可变长度,条件是它在字边界上对齐并在末尾用零字节填充到整数个字(如有必要)。 RIFF 格式没有描述数据格式。 实际上,RIFF 文件可以包含任何多媒体数据,数据的格式取决于数据的类型。 图 2 中标记为“数据”的区域可能包含其他片段。 对于存储声音数据的文件(wav 文件),该区域包含数据标识符“WAVE”、声音数据格式“fmt”的片段(三个字符“fmt”和末尾的空格),以及一段声音数据(图 2)。 该文件可能还包含其他类型的片段,因此您不应认为 wav 文件的标题具有固定格式。 例如,该文件可能包含“LIST”或“INFO”片段,其中包含有关 .copy 权限和其他附加信息的信息。 让我们看看数据是如何写入的。 首先,您需要打开输入设备,为其指定音频数据格式。 然后,必须通过调用特殊函数对一个或多个内存块进行排序并准备好输入。 之后,准备好的块需要根据需要传递给输入设备驱动程序,输入设备驱动程序用录制的音频数据填充它们。 要将录制的数据保存在 wav 文件中,应用程序必须从由驱动程序输入设备填充的准备好的内存块生成 wav 文件和声音数据并将其写入应用程序文件。 下面是一个程序片段,它允许您将数据块写入文件,这在使用声卡作为模数转换器时是必需的: 使用SysUtils、MMSystem; type TWaveData = array[0..0) of word ;const Discret = 22050;WaveHdr:TWaveHdr=( lpData: nil;(波形缓冲区的地址) dwBufferLength: 0;(缓冲区的长度,以字节为单位) dwBytesRecorded: 0;(缓冲区中有多少数据) dwUser: 0; dwFlags: 0 ; dwLoops : 0; IpMext: nil; 保留: 0 ); 1 );var WaveDate: ^TWaveDate; HSoundDevice:HWaveIn; h文件:HMMIO; res: MMResult;从 WaveHdr 开始开始 dwBufferLehgth : =round(Discret/1);dwBytesRecorded: =round(Discret/8);GetMem(WaveData, dwBytesRecorded);lpData : =PChar(WaveData); 结尾; res : =waveInOpen (@HSoundDevice, WAVE_MAPPER, @WaveFormat, 0); res : =waveInPrepareHeader(HSoundDevice, @WaveHdr, SizeOf(WaveHdr)); res : =waveInUnprepareHeader (HSoundDevice, @WaveHdr,SizeOf(WaveHdr)) ; FreeMem(WaveData); res:=waveInStart(HSoundDevice) ; hfile:=mmio10pen("d: \work\data_10.txt",nil, MMIO_CREATE 或 MMIO_READWRITE); mmioWrite(hfile,WaveHdr.IpData, WaveHdr,dwBytesRecorded); mmioClose(hfile,0,0,0); waveInReset(HSoundDevice) ; waveInClose(HSoundDevice) ;结束。 与默认采用许多参数的 MCI 接口不同,低级接口需要仔细和彻底地考虑写入和读取过程的所有细节。 作为对额外工作的补偿,您可以获得更大的灵活性,并且不仅可以处理音频,还可以实时处理任意信号。 文学 1. Frolov A.V., Frolov G.V. 适用于 Windows 的多媒体。 程序员指南。 - M,“对话-MEPhI”,1994 年,284 页。 (系统程序员库;V. 15)。 作者:O. Baranovsky,明斯克; 出版物:N. Bolshakov,rf.atnn.ru 查看其他文章 部分 业余无线电设计师. 读和写 有帮助 对这篇文章的评论. 科技、新电子最新动态: 控制和操纵光信号的新方法
05.05.2024 Primium Seneca 键盘
05.05.2024 世界最高天文台落成
04.05.2024
其他有趣的新闻: ▪ 太阳能烟囱 免费技术图书馆的有趣材料: 本页所有语言 www.diagram.com.ua |