【体感音乐游戏】沪港黑客马拉松全场大奖小组

2015-03-319443
AI 快速预览详细 收起
体感音乐游戏是一个使用树莓派和超声波传感器的项目,通过检测手与传感器之间的距离来模拟钢琴按键弹奏音符。该项目在2015沪港黑客马拉松上获得了全场大奖,并提供了完整的源码。通过Socket通信,实现了前端与后端的数据交互。这个项目不仅展示了技术的应用,还为STEM教育和编程启蒙提供了有趣的实践案例。







0x01.关于

这是2015沪港黑客马拉松的作品,获得了全场大奖,并获得香港参赛机会。

关于源码,已经上传到github上了。https://github.com/2015-hackathon/hackatho

作品通过超声波传感器检测距离,类似特雷门琴,通过距离变化弹奏音符,以此来弹奏游戏中的音符。

下面是关于作品几张图片:











作品演示视频:


比赛路演:





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'
  • };

[color=rgb(49, 132, 219) !important]复制代码




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]]

[color=rgb(49, 132, 219) !important]复制代码



0x03.关于本次hackathon

这是我第五次参加hackathon了吧,每一次都能遇到很多很有能力的队友,在很短的时间内做了很多平时很长时间内做不完的事情。

还是本着那个最初的想法,只做好玩的东西,只做有创意的东西。

下面是团队照片:












感谢每个队友,感谢团队。


本文出自 [夏日小草](http:/homeway.me),转载请注明出处: http://homeway.me/2015/03/30/play-music-through-senses/

by 小草

2015-03-30 17:19:20

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(5)
LinuxFans
LinuxFans
What a great idea!
qq815076543322
qq815076543322
想知道苦海那天展示的那个有实物不
微笑的rockets
微笑的rockets
欢迎黑客马拉松的作品在DF创客社区分享。
很有趣的项目,非常高兴能获得大奖。
林子大了
林子大了
期待ing
Ash1
Ash1
这个好棒啊,还能演奏别的歌么 :lol
homeway
homeway
作者
回复Ash1
目前还不可以,因为音符是根据游戏画面调节的,并且音符长度要对应上游戏长度,所以,要同时把音符和画面处理。
- 没有更多了 -