琴键建模
要想弹琴,我们首先要画一个琴。小编很懒,于是只拉伸了几个凸台画了琴键↓
DMU仿真
我们还需要这个琴键可以动,可以按下去。所以小编为每个琴键添加了一个独立驱动的DMU运动副↓
键盘控制
通过VBA中的窗体接受键盘按下和抬起的事件,并用代码控制DMU驱动命令的值,就可以实现用键盘控制琴键啦!
发出声音
解决了按键的问题,接下来就是如何发出对应音符的声音啦!
我们在VBA里引用一下Windows的API
就可以使用Beep函数控制电脑的蜂鸣器发声啦!
Beep(a,b)
其中:
参数a表示蜂鸣器发音的频率,不同频率对应的音高不同;
参数b表示蜂鸣器发声的时间,单位是毫秒。
之后,我们把常用音符的频率定义为常量
最后,再把不同按键的键盘事件中,把对应的音符频率赋给变量,并调用Beep进行发声,我们就可以进行演奏啦!
美中不足
直接通过键盘控制DMU运动基本无延迟,但加入了Beep之后,在电脑“哔——”的过程中是无响应的状态,这就导致了音画不同步的现象,键盘的按下动作和声音比会有滞后。有一种说法是可以把Beep放到新线程中执行,但昨天晚上搞到了半夜2点多,实在没有精力了
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删