在DELPHI或C++BUILDER中如何使用有关MCI的API函数(主要需要从麦克风得到数据)?(100分)

  • 主题发起人 主题发起人 msnail
  • 开始时间 开始时间
M

msnail

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在需要编制一个声音分析的程序,需要从麦克风中读取数据,进行分析,有
哪位大侠编制过这样的程序,please help me!
 
要对声卡编程吧。
 
不是,仅仅知道相关的api函数的使用方法,函数的使用顺序就可以了。要求不高,就
相当于数据采集吧!
函数我已用过一些了,以下是部分原程序:
if waveInGetNumDevs=0 then

begin

//
exit;
end;


pwaveFmt:=AllocMem(sizeof(TWAVEFORMATEX));
pwaveFmt^.wFormatTag:=WAVE_FORMAT_PCM;
pwaveFmt^.nChannels:=1;
pwaveFmt^.nSamplesPerSec:=SampleHz;
//If wFormatTag is WAVE_FORMAT_PCM, then
common values for nSamplesPerSec
//are 8.0 kHz, 11.025 kHz, 22.05 kHz, and 44.1 kHz.

pwaveFmt^.wBitsPerSample:=8;
//If wFormatTag is WAVE_FORMAT_PCM, then
wBitsPerSample should be equal
//to 8 or 16.

pwaveFmt^.nBlockAlign:=8;
//If wFormatTag is WAVE_FORMAT_PCM,equal to the product of nChannels
//and wBitsPerSample

pwaveFmt^.nAvgBytesPerSec:=SampleHz*8;
//If wFormatTag is WAVE_FORMAT_PCM, nAvgBytesPerSec should be equal to
//the product of nSamplesPerSec and nBlockAlign.

pwaveFmt^.cbSize:=0;
//Note that for WAVE_FORMAT_PCM formats (and only WAVE_FORMAT_PCM formats),
//this member is ignored.

tmp:=waveInOpen(@WaveIn,WAVE_MAPPER,pwaveFmt,DWORD(@audiocallback),0,
CALLBACK_FUNCTION);
//这一句总出错,提示地址冲突

不知是何原因?
 
老毛病, 我也见过啦......
waveInOpen 在没有任何程序打开声卡播放通道之前可以正确打开
但为什么是这样,我就不知道了,我都被搞晕了当时
有那位大虾能够解释一下么?
 
msnail:如果你还要继续讨论请定期提前你的帖子,如果不想继续讨论请结束帖子。
 
多人接受答案了。
 
后退
顶部