CATIA创意无限:工科男的文艺之旅——虚拟弹琴

琴键建模

要想弹琴,我们首先要画一个琴。小编很懒,于是只拉伸了几个凸台画了琴键↓

CATIA里也能弹琴?工科男也可以很文艺的图1

DMU仿真



我们还需要这个琴键可以动,可以按下去。所以小编为每个琴键添加了一个独立驱动的DMU运动副↓

CATIA里也能弹琴?工科男也可以很文艺的图2

键盘控制


通过VBA中的窗体接受键盘按下和抬起的事件,并用代码控制DMU驱动命令的值,就可以实现用键盘控制琴键啦!

CATIA里也能弹琴?工科男也可以很文艺的图3

发出声音



解决了按键的问题,接下来就是如何发出对应音符的声音啦!

我们在VBA里引用一下Windows的API

CATIA里也能弹琴?工科男也可以很文艺的图4

就可以使用Beep函数控制电脑的蜂鸣器发声啦!

Beep(a,b)


其中:

参数a表示蜂鸣器发音的频率,不同频率对应的音高不同;

参数b表示蜂鸣器发声的时间,单位是毫秒。

之后,我们把常用音符的频率定义为常量

CATIA里也能弹琴?工科男也可以很文艺的图5

最后,再把不同按键的键盘事件中,把对应的音符频率赋给变量,并调用Beep进行发声,我们就可以进行演奏啦!



美中不足

直接通过键盘控制DMU运动基本无延迟,但加入了Beep之后,在电脑“哔——”的过程中是无响应的状态,这就导致了音画不同步的现象,键盘的按下动作和声音比会有滞后。有一种说法是可以把Beep放到新线程中执行,但昨天晚上搞到了半夜2点多,实在没有精力了


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空