VBA-API:通过BEEP函数(扬声器)播放音乐

42 篇文章 17 订阅
Private Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long '响铃API函数声明

Private Const K = 0 '空拍
Private Const C4 = 523
Private Const C_4 = 554
Private Const D4 = 588
Private Const D_4 = 623
Private Const E4 = 660
Private Const F4 = 700
Private Const F_4 = 742
Private Const G4 = 786
Private Const G_4 = 833
Private Const A4 = 884
Private Const A_4 = 936
Private Const B4 = 992
 
Private Const C5 = 1046
Private Const C_5 = 1108
Private Const D5 = 1176
Private Const D_5 = 1246
Private Const E5 = 1320
Private Const F5 = 1400
Private Const F_5 = 1484
Private Const G5 = 1572
Private Const G_5 = 1666
Private Const A5 = 1768
Private Const A_5 = 1872
Private Const B5 = 1984
 
Private Const C6 = 2092
Private Const C_6 = 2216
Private Const D6 = 2352
Private Const D_6 = 2492
Private Const E6 = 2640
Private Const F6 = 2800
Private Const F_6 = 2968
Private Const G6 = 3144
Private Const G_6 = 3332
Private Const A6 = 3536
Private Const A_6 = 3744
Private Const B6 = 3968
Private Const P = 125

'Stave的格式:音名-时间,音名-时间
Sub PlayStave(Stave As String) '按照曲谱BEEP
    Dim DIC As Object
    Set DIC = CreateObject("Scripting.Dictionary")
    DIC.Add "K", 0 '空拍
    DIC.Add "C4", 523
    DIC.Add "C_4", 554
    DIC.Add "D4", 588
    DIC.Add "D_4", 623
    DIC.Add "E4", 660
    DIC.Add "F4", 700
    DIC.Add "F_4", 742
    DIC.Add "G4", 786
    DIC.Add "G_4", 833
    DIC.Add "A4", 884
    DIC.Add "A_4", 936
    DIC.Add "B4", 992
    
    DIC.Add "C5", 1046
    DIC.Add "C_5", 1108
    DIC.Add "D5", 1176
    DIC.Add "D_5", 1246
    DIC.Add "E5", 1320
    DIC.Add "F5", 1400
    DIC.Add "F_5", 1484
    DIC.Add "G5", 1572
    DIC.Add "G_5", 1666
    DIC.Add "A5", 1768
    DIC.Add "A_5", 1872
    DIC.Add "B5", 1984
    
    DIC.Add "C6", 2092
    DIC.Add "C_6", 2216
    DIC.Add "D6", 2352
    DIC.Add "D_6", 2492
    DIC.Add "E6", 2640
    DIC.Add "F6", 2800
    DIC.Add "F_6", 2968
    DIC.Add "G6", 3144
    DIC.Add "G_6", 3332
    DIC.Add "A6", 3536
    DIC.Add "A_6", 3744
    DIC.Add "B6", 3968
    DIC.Add "P", 125
    
    Dim notes, arr As Variant
    notes = Split(Stave, ",")
    For i = 0 To UBound(notes)
        s = Split(notes(i), "-")
        Beep DIC(s(0)), Int(s(1)) * 100
    Next
End Sub

'Stave的格式:音名-时间,音名-时间
Sub play() '欢乐颂
    PlayStave "E5-4,E5-4,F5-4,G5-4" _
           & ",G5-4,F5-4,E5-4,D5-4" _
           & ",C5-4,C5-4,D5-4,E5-4" _
           & ",E5-4,D5-2,D5-10" _
           & ",E5-4,E5-4,F5-4,G5-4" _
           & ",G5-4,F5-4,E5-4,D5-4" _
           & ",C5-4,C5-4,D5-4,E5-4" _
           & ",D5-4,C5-2,C5-10"
End Sub

Sub play2()
    Beep E5, 400
    Beep E5, 400
    Beep F5, 400
    Beep G5, 400
    Beep G5, 400
    Beep F5, 400
    Beep E5, 400
    Beep D5, 400
End Sub

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值