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

圣诞节来了!小编这几天一直在琢磨如何花式给大家送祝福。最后决定,就在CATIA中为大家弹奏一首《Jingle Bells》圣诞歌吧!

说干就干!

琴键建模


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

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

DMU仿真


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

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

键盘控制


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

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

发出声音


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

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

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

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

    Beep(a,b)

其中:

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

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

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

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

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

演示视频请点击以下链接观看!

https://v.qq.com/x/page/e0818lqbrcc.html

美中不足


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

Anyway,祝各位小伙伴圣诞&新年快乐,2018年没有实现的愿望在2019年全部实现!

想要源文件和代码的朋友,请关注微信公众号“CATIA那点事儿”,在历史推文中自行下载!

登录后免费查看全文
立即登录
App下载
技术邻APP
工程师必备
  • 项目客服
  • 培训客服
  • 平台客服

TOP

4
4