您现在所在的是:

电脑编程

回帖:0个,阅读:6079 [上一页] [1] [下一页]
* 帖子主题:

声卡编程的WIN函数

29727
思南 管理员
文章数:14045
年度积分:54
历史总积分:29727
注册时间:2001/3/12
发站内信
发表于:2002/2/27 22:05:00
#0楼
转自:http://www.driverdevelop.com/forum/viewthread.php?tid=2460
在Win32 API中提供了约四十多个函数可供对声卡编程:
1。声音输入
waveInGetNumDevs();
waveInGetDevCaps(0,&incaps,sizeof(WAVEINCAPS));
waveInOpen(&m_inwave,0,&m_WaveFormat,(DWORD)m_waveinevent.m_hObject,NULL,CALLBACK_EVENT);
waveInPrepareHeader(m_inwave,&m_waveinheader1,sizeof(WAVEHDR));
waveInUnprepareHeader(m_inwave,&m_waveinheader1,sizeof(WAVEHDR));
waveInAddBuffer(m_inwave,&m_waveinheader1,sizeof(WAVEHDR) );
waveInStart( m_inwave );
利用以下几个函数即可对声卡输入进行采样,如采用的是回调用函数或线程,则可在回调函数或线程中周期性的获得数据,可参阅MSDN或SDK来获得函数和相关数据结构详细的使用说明。
2。声卡输出
声卡的输出则相对较简单
waveOutGetNumDevs();
waveOutGetDevCaps(0,&outcaps,sizeof(WAVEOUTCAPS));
waveOutOpen(&m_outwave,0,&m_WaveFormat,
0,NULL,CALLBACK_NULL);
waveOutPrepareHeader(m_outwave,&m_waveoutheader1,sizeof(WAVEHDR) );
waveOutUnprepareHeader(m_outwave,&m_waveoutheader1,sizeof(WAVEHDR) );
waveOutWrite(m_outwave,&m_waveoutheader1,sizeof(WAVEHDR) );

如需要输出一定频率的正弦波,可事先通过某些工具获得该正弦波的数据,周期性的通过waveOutWrite函数输出即可。

上面是从我的程序中摘录下来的。详细的编程可参阅MSDN或SDK中的函数和数据结构的使用说明进行。

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2025 Gkong.com, All Rights Reserved

31.2002