0x01.关于
这是2015沪港黑客马拉松的获奖作品,获得了全场大奖,并获得香港参赛机会。
关于源码,已经上传到github上了。https://github.com/2015-hackathon/hackathon
作品通过超声波传感器检测距离,类似特雷门琴,通过距离变化弹奏音符,以此来弹奏游戏中的音符。
下面是关于作品几张图片:
作品演示视频:
比赛路演:
0x02.作品原理
原理如下:
超声波测距获取超声波与手之间的距离(不同距离即模拟钢琴的不同按键),
通过socket发送给socket服务端sever,服务端转发数据给web客户端client,
web端client用当前符与超声波发送距离比对,检测是否正确,正确即加分。
另外,显示的超级玛丽视频是用于界面效果,与游戏无关。
基本Socket流程图如下:
服务器端socket使用php,树莓派端socket使用python,这里用到了一个pyhon的socket转websocket模块,模块在github上搜得到,https://github.com/GulDmitry/php-websocket-server。
关于前端音符编码
发音模块使用的是underscorejs的库:http://underscorejs.org/
该库需要将音符转码,把音符声调、音长、音高低转成电子码,由于没有音乐知识,这部分浪费了队友3d很多时间。
1、do、re、mi、fa、so、la、xi、du,编码换算表如下:
var NOTE_MAP_REVERSE = {//换算公式
1: 'C',
2: 'D',
3: 'E',
4: 'F',
5: 'G',
6: 'A',
7: 'B'
};
2、关于还有音高和音低,3、4、4等代表升调。
3、另外关于音长与音短,0.25、0.5代表半拍、一拍音长。
换算结果类似如下,一串数组:
[["E4", 0.5], ["E4", 0.5], ["E4", 0.5], ["C4", 0.25], ["E5", 0.25], ["G4", 0.5]]
0x03.关于本次hackathon
这是我第五次参加hackathon了吧,每一次都能遇到很多很有能力的队友,在很短的时间内做了很多平时这么短时间内做不完的事情。
本次黑客马拉松很开心认识了两位好码友。
还是本着那个最初的想法,只做好玩的东西,只做有创意的东西。
下面是团队照片:
本文出自 夏日小草,转载请注明出处: http://homeway.me/2015/03/30/play-music-through-senses/
by 小草
2015-03-30 17:19:20
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。