Vc中如何通过声卡发出指定频率的声音?

eeixy2000 2002-06-16 03:33:36
查阅MSDN发现有Beep(......)函数,但是此函数只能使计算机内置的Speaker发声,声卡并没有发声,不知道还有没有别的方法,另外,我不想通过播放文件的方法来实现。
...全文
159 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
seanhut 2002-06-16
  • 打赏
  • 举报
回复
如果需要具体代码,那不可能,我没时间.
但是,我可以给讲得更详细些,声卡有一个声音缓冲区,这里面的内容就是要输出波形信息.声卡每隔一定时间就把缓冲区的数据通过D/A转换器变成模拟的音频信号输出。在windows下,访问这个缓冲区的标准方法就是通过directX的directSound,在这里你即可以直接向缓冲区写数据,也可以先写到directsound的声音缓冲区,在由操作系统将其送到声卡的缓冲区播放.directsoound的缓冲区是环形的,所以,你只要向其中填写一次数据,系统就会不断地将其反复送到声卡的缓冲区中.你只要用一个三角函数产生你想要的频率的声音波形,把它送到该处,那么,目的就达到了.
kingfire 2002-06-16
  • 打赏
  • 举报
回复
directsound()
yz95 2002-06-16
  • 打赏
  • 举报
回复
GZ
zhishao 2002-06-16
  • 打赏
  • 举报
回复
waveOutOpen()
=>
waveOutPrepareHeader()
=>
waveOutWrite()
=>
waveOutUnprepareHeader()
=>
waveOutClose()
pcman1990 2002-06-16
  • 打赏
  • 举报
回复
PlaySound(),但不是发出指定频率的声音。
seanhut 2002-06-16
  • 打赏
  • 举报
回复
可以用directX来实现,你可以向声卡的缓冲区中填写你所需要的波形数据
声卡就会把该波形播放出来,具体可以学习directX SDK中的例子

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧