首页/文章/ 详情

上春山,但是CATIA/Excel演奏版

8月前浏览9777

自从几年前发现,CATIA/Excel VBA可以调用蜂鸣器来演奏音乐后,突然发现一个诀窍:

    每年出现一首比较火的歌的时候,都能用同样的方式蹭一波热度!

没错,今天咱们还是硬蹭!

要说今年春节期间的热点,没有“春山学”我是不信的。虽然没看春晚,但这首朗朗上口的歌莫名其妙就会了。

在看了B站各个大神用各种神奇的方式演奏这首歌之后,小狼也跃跃欲试,于是便有了今天这篇文章。

看成品视频之前,我决定有必要秀一下这张“十字绣”风格的Excel画作!这可是小狼一个单元格一个单元格填充画出来的(至于上春山打成了上春上,诶我就不改!你难不难受

然后,是最终效果演示视频!

然后,咱们来解释原理:

首先,CATIA和Excel里都有VBA,在VBA里。我们通过声明,就可以引用win api中的Beep函数,控制电脑的蜂鸣器发声。

该函数有两个参数,第一个是发音频率,频率越高,音调越高。我们可以从网络上轻松地查到不同音阶对应的频率值。

第二个参数是发音的长度,单位是ms。假设一首歌的bpm(beat per minute)是120,那么表示它的速度是每分钟120拍,也就是1拍时间为500ms。

音乐的一个神奇之处是:两个差八度的音,频率值是二倍的关系。再加上《上春山》这首歌,只用到了“宫商角徵羽”,也就是12356五个音阶,因此,我们在程序里,只需定义一个八度内的这5个音的频率,其他八度的音阶通过乘/除2就可以得到。

然后,我们在Excel的表格里写出这样的程序能认识的曲谱:

就可以把这些参数传入自定义的函数,通过Beep演奏出来啦!

完整代码如下:

当然,包含代码和像素图的Excel源文件也为大家准备好啦!

来源:CATIA那点事儿

附件

免费链接 .txt
二次开发CATIA控制
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-03-06
最近编辑:8月前
CATIA那点事儿
本科 CATIA小狼。微信公众号:CATIA那...
获赞 112粉丝 241文章 16课程 16
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈