基于树莓派的体感音乐游戏


Raspberry-Pi




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

Fork me on GitHub