https://training.eeworld.com.cn/course/3926/learn#lesson/9148
我这人从小就喜欢听节奏感强的音乐,上中学的时候家里给买了一个随身听,本来是用它学英语的,没过几天我就去别人家录了一本舞曲磁带《野人》,又买了一个大耳机,扣耳朵上冬天不冷那种,每天骑着自行车听着嗨曲,感觉踩着鼓点骑车就是特别有劲。后来被我爸知道了,一气之下,啪,给摔了,我捡起来用听了一下没坏,顺便还拆了几回,看看啥原理。
那以后还是经常听这种音乐,每次听歌的时候都在脑袋里把音乐里的各种乐器分享出来,尤其是架子鼓的声音,现在听到比较劲暴的音乐时偶尔也会用脚踩踩,用手敲敲,想象自己正在鼓捣架子鼓的感脚。有段时间也想过买一套玩玩,后来还是忍住了,挺大岁数,两天热,血不敲了东西还没地儿放。
那时想过如果有两只鼓棒在空中乱敲就能实现架子鼓的功能该有多好,把这个想法记下来,又用我当时掌握的技术分析了一下,觉得不好实现就放下了。
后来下了些APP,有个叫Real Drum的虚拟架子鼓不错,那时晚上无聊会带上耳机乱敲一会儿。因为是运行在手机屏幕上的APP,每个鼓的距离都很近,只能用手指有限有空间上点来点去,比较别手,不是很爽。
这次借着ST AMG SensorTile开发大赛想把这个虚拟鼓棒再弄弄, SensorTile上集成了很多力学传感器,还有一颗数字麦克风,体积又小做这个东西是个不错的选择。
实现虚拟鼓棒最理想的方案是利用航位推算计算出鼓棒实时位置,将鼓棒的落点转换成对应的鼓声,查了些资料觉得这东西不是一搬的难,也找不到现成的资料,还有一个原因是我觉得现有的低重力传感器的噪声、量程、分辨率这些指标很难在2米的范围内精确计算出鼓棒的位置,因为鼓棒不光有单纯移动,还有敲击动作,这要求传感器有比较大的量程,量程大了就需要很高的分辨率才能保证位置的精度。
最LOW的方案让鼓棒敲打不同的物体,比如桌子,电脑,书本,然后是利用数字麦克风采集声音信息,识别出敲打了什么物体,然后播放不同的鼓声。这样做就要求鼓棒一定要落到某种物体上,有敲打的快感,同时也会产生额外的噪音,还容易敲坏东西。
折中一点的方案是通过检测鼓棒的角度来判断鼓棒落下时应该敲在哪个鼓上,再播放对应的鼓声,也能实现想要的空中鼓棒功能。把鼓棒当成一个指南针,打哪指哪,利用ST提供的算法库osxMotionFX得到鼓棒的角度数据,想法不错,最后决定使用这种方案实现我的虚拟鼓棒,取个名字就叫AirDrum吧。
本帖最后由 littleshrimp 于 2017-4-12 14:00 编辑