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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值