如题,是指由系统产生的,不是WAV等文件形式的,不是beep。有个参考例子:http://dike.6168.net/qzsa/sweepgen.zip
请教用什么办法(API)能实现这个发声功能?谢谢!
请教用什么办法(API)能实现这个发声功能?谢谢!
解决方案 »
- 如何保证同一个对象的IUnknow接口的一致性。
- 在VB中怎样将数据库表的内容通过TDBGRID控件显示出来?
- Setup Bootstrap for Visual Basic Setup Toolkit制做的SETUP安装包怎么能用别的工具修改其中的内容
- 有关显示器分辩率
- 如何得到标准窗口标题栏的高度值
- 请问有哪个API可以播放MP3文件
- 四川五粮液将隆重推出一款CPU:"五粮液 Inside",促销口号:“买一块五粮CPU 送一瓶五粮液”,预购从速
- 怎样才能把MSChart显示时的网格线去掉?在线等待!!
- ........这是怎么回事?.....
- 在局域网里使用SQL SEVER,客户端需不需要安装SQL SEVER 客户端组件?
- 我不懂刚看了看这个!他为何要这样?
- 求VB表单设计打印源程序
waveOut函数是WAV的吧,音频范围从20HZ到22000HZ,如果每个频率做一个WAV文件,那软件岂不是要几张光盘才放得下?
【VB声明】
Private Declare Function Beep Lib "kernel32" Alias "Beep" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long【说明】
用于生成简单的声音
【返回值】
Long,TRUE(非零)表示成功,否则返回零。会设置GetLastError
【备注】
在windows95中,这个函数简单的播放默认系统响铃
【参数表】
dwFreq --------- Long,声音频率(从37Hz到32767Hz)。在windows95中忽略
dwDuration ----- Long,声音的持续时间,以毫秒为单位。如为-1,表示一直播放声音,直到再次调用该函数为止。在windows95中会被忽略
Private Declare Function apiBeep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
Private Sub Command1_Click()
' Attempt to play a note at 800 Hz for 2 seconds. This will only
' behave this way on Windows NT/2000; users of Windows 95/98 will only hear the
' default sound.
Dim retval As Long ' return value
retval = apiBeep(800, 2000) ' ideally, an 800 Hz tone for 2 seconds
End Sub
如果是的话,我明天把我那本书上的代码给你抄上来.
我现在已经不从事IT了,并且我以前做的是VC和DELPHI,没做过VB,但我对VB很感兴趣.
那本书上的代码我也没试过,不知道能通过不,恐怕你得费一番工夫调试.
不是做音乐,是想做个简单的音频信号发生器,目的和我找到的那个程序一样。但我要做个内嵌在我程序中的,不是调用别人的程序。
[email protected]
【操作系统】
Win9X:Yes
WinNT:Yes【说明】
用于生成简单的声音 【返回值】
Long,TRUE(非零)表示成功,否则返回零。会设置GetLastError 【其它】
在windows95中,这个函数简单的播放默认系统响铃【参数表】
dwFreq --------- Long,声音频率(从37Hz到32767Hz)。在windows95中忽略
dwDuration ----- Long,声音的持续时间,以毫秒为单位。如为-1,表示一直播放声音,直到再次调用该函数为止。在windows95中会被忽略
BEEP还可以用,只不过不是机箱蜂鸣器了,而是系统定义的声响,好像是默认的那个。
现在是别人的机器,上面没有VB,并且也不方便下载东西,所以你最开始给的实例我没办法看到.
不过还是把这段代码放上去,也许有的哥们用得着.
///////////////////////////////////////////////////
1.引入下面四个API函数或过程:
OpenSound,CloseSound,SetVoiceNote,StartSound
2.在Form1中放一个由7个按钮组成的控件数组:
Sub Command1_Click(Index As Integer)
a%=OpenSound()
Select Case Index
Case 0: f=37
Case 1: f=39
Case 2: f=41
Case 3: f=42
Case 4: f=44
Case 5: f=46
Case 6: f=48
End Select
m1%=SetVoiceNote(1,f,4,0)
m2%=StartSound()
End Sub
/////////////////////////////////////////////////
改一下,放入键盘事件中,即可实现奏乐.
请用过并调试过的朋友,给出最后的代码.
不过还是要谢谢 COM1的热心帮助。
OpenSound,CloseSound,SetVoiceNote,StartSound不行的这几个api函数在win32中已经废弃不用了,事实上,上面这几个函数最开始由windows 1.0定义,实际能在windows 2.0中工作,在windows 3.x里事实上已被废弃(尽管仍能支持),直至最后完全消亡
可以使用一些低阶的api函数,在内存中生成波形数据,然后送到声卡,然后再生成,再送到声卡建议查询下列函数的用法:
waveOutOpen
waveOutPrepareHeader
waveOutClose
waveOutReset
waveOutUnprepareHeader