该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
最近研究了一下主板的蜂鸣器发声规律,前些日子看到一位朋友用VB写了一个由此启发,特地总结了一下发声规律:
有一定物理常识的人都知道,音调的高低与震动频率成正比,也就是说物体震动速度越快则音调越高
do re mi fa sol la si do 频率跟do的频率比 1:1 9:8 5:4 4:3 3:2 5:3 15:8 2:1
(以下单位均为Hz)
我们设do的频率为440(标准频率)
1 do 440
2 re 495
3 mi 550
4 fa 587
5 sol 660
6 la 733
7 si 825
提一个八度
1` 880
2` 990
3` 1100
4` 1174
5` 1320
6` 1466
7` 1650
我在编歌的时候发现VB不能写出空拍,但是发现VB的允许频率是37Hz到35000Hz左右.人耳的听力范围是20Hz到20000Hz,所以37Hz的频率空拍是不可取的.那么我们可以选择高频率来空拍,只要把频率定为20000Hz就听不到了(18000Hz的频率我就听不到了).
这样一来只要有谱而且看的懂,大多数歌都可以准确的编出其音调和速度了
下面是我编的一个音阶:
Private Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
Private Sub Command1_Click()
playsnd 440