录音/制作/创作 吉他 扩声技术 视频技术 作品展示 生活 信息 更多... | 音频应用专卖店

[教程] 利用arduino开源硬件和超声波测距模块制作的MIDI控制器

( 4 )
 
[收藏]
#1 13-12-10 10:07

利用arduino开源硬件和超声波测距模块制作的MIDI控制器


110
前言:作为一个吉他手(万能贝司手)和伪电工以及穷苦人民,一直喜欢使用吉他软件效果器(如amplitube3),以及其他的DAW(数字音频工作站)软件 ,这些音乐软件都有一个十分普及的通讯协议--MIDI通讯协议,各种midi键盘、midi控制发出的midi信号可以对软件进行全方位的控制,midi外设在演出中特别重要

   
电吉他演奏中,常常需要对于效果器的参数进行控制,例如最常用的哇音踏板,就是通过脚踩踏板输出不同的音色效果。手头正好有一个超声波测距模块,再看了叉叉同志的超声波测距贴,就打算用超声波测量手的运动之后输出midi信号去控制效果器软件。
首先去研究了midi协议



MIDI(Musical Instrument Digital Interface)乐器数字接口 ,是20 世纪80 年代初为解决电声乐器之间的通信问题而提出的。MIDI 传输的不是声音信号, 而是音符、控制参数等指令, 它指示MIDI 设备要做什么,怎么做, 如演奏哪个音符、多大音量等。它们被统一表示成MIDI 消息(MIDI Message) 。传输时采用异步串行通信, 标准通信波特率为31.25×( 1±0.01) KBaud。

MIDI文件有很多信息构成的指令。一些信息,只由1字节构成,有些有2个字节,还有一些有3个字节。有一类的MIDI信息,甚至可以包含无限的字节数。所有的信息有一点是共同的,那就是第一个字节的信息是状态。
状态字节的0x80到0xef是可以在16个MIDI通道的任何一个出现的信息。正因为如此,这些是所谓的声音信息。这些状态字节有8位二进制数,可以把8个二进制位分成两个 4位,即一个高位和一个低位 。例如,一个状态字节的0x92可细分成9 (高位 )和2 (低位 ) 。高位告诉你是什么类型的MIDI信息,低位说明信息操作的MIDI通道序号。以下是所有可能的高位值,每个代表的声音信息类型:
8 =停止发声
9 =开始发声
a =轮指
b =改变控制器
c =改变音色
d =通道演奏压力(可近似认为是音量)
e =音高


看得出,midi只是一个简单的串行通讯而已,我们DIY主要需要解决的问题就是要知道传输数据是什么,在网上没有太多的信息,就直接使用了一个midi监视器,研究了一下我原来的一个midi控制器的midi数据
   




第一个数据 B0   B是控制器,0代表通道,后一位数据data1   07 还是通道 最后data2 是控制器的值,在0到127之间(发送时是十六进制数据),这里就打算使用超声波测距的数据送到data2的midi信号。

然后开始搞程序....

(见楼下
实际图片
  
arduino果体照

midi接口,从某电鼓上拆的。。。


工业脚踏。。。。


超声波模块

使用视频示范~~~


http://v.youku.com/v_show/id_XNjQ1NzgwNzcy.html


我们下一步还会做什么??

下一步主要会提高整体的稳定性(舞台上对于稳定性的要求是很高的),制作一个符合人机工学的外壳(实用才是正道),以及制作无线midi接口等~~~
欢迎讨论~~


打个小广告,欢迎喜欢DIY的人来东莞创客空间吹水扯淡折腾....(http://weibo.com/p/1005053912065546/home?from=page_100505&mod=TAB#place
观众反应

276
#2 13-12-10 11:51
受启发  谢谢

1133
#3 13-12-10 12:48
动手能力真强

4423
#4 13-12-11 00:09
这种创新首先支持一个~
看演示觉得精度不行啊  但是最重要的是  国外已经有很多类似的体感设备都已经成型而且都公开发售了
具体请论坛搜索  leap motion   也可以上U2B搜这个.

1181
#5 13-12-11 19:42
MIDI控制器表网上满天飞啊。。。随便找个芯片的说明书里就一整套。。。

现在你这个系统比较烦的是延迟,我已经能听出延迟了(也可能是你视频没对准),上无线你怎么传输?要是Wifi延迟更大,不用Wifi你就得从信道协议开始慢慢写。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

搜索