文号
t63990
阅读
16260
回复
13
收藏
10
单片机MIDI控制器设计
2014/02/19
IP:天津
本帖最后由 novakon 于 2014-2-19 19:30 编辑

1. 什么是midi

(通常来说)midi是一种能够让电子乐器与计算机音乐软件,或者让计算机音乐软件与电子音色合成器通信的协议,协议包含软硬件规范。

2. midi控制器是什么

通过midi通信,能够控制计算机音乐软件的电子装置。

3. 硬件怎么连接

硬件上使用5针圆口(有点像老式键盘口)。两个用线缆连接起来的接口,两端针脚一一对应,其一端为发送,另一端为接收;这是因为大部分情况下,midi通信都是单向的。

QQ截图20140219184253.png
我买了这一条USB转MIDI线缆,有IN和OUT两个接口,因为这里只需要发送信息到电脑,故只需要使用IN接口

midi通信,底层协议是TTL串口通信,波特率固定为31250,通过发送不同的字节表示不同的命令和参数。故,可以用单片机的串口实现midi通信。

这里有一个5针插座,用它和万用板搭一个接口电路,把脚都引出来。led不是必需的,只是为了指示工作状态。
DSC_9888.jpg
DSC_9889.jpg
DSC_9892.jpg

为了实现不同对地电平器件间的通信,硬件上midi通信双方是不共地、光耦隔离的。可以把发送方理解为用信号驱动发光二极管,接收方则是用光敏三极管还原信号。
具体电路接法,以及midi命令、规范等等,请看: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

简单的说就是单片机串口发送脚TX接到第5脚,单片机电源5V接到第4脚,发送字节时TX脚拉低(平时为高),与电源产生电压差,驱动接收端的发光二极管。其他不再赘述,请参考上面所述网址。
我相信这条USB-MIDI线不会坑爹,所以该串的电阻我都没有串。为了防止短路损坏单片机IO,应串联电阻。

DSC_9886.jpg

4. 软件发送什么

请参考链接网页中的表格,此处不赘述。在这个例子里面,按下按键发送的是note-on(音符开始),释放按键发送的是note-off(音符结束)。
第一个字节是命令,第二个字节是音高,第三个字节是按键力度。

参考我的STM8代码:



5. 看视频吧。软件是FL Studio

点击此处查看视频
[ 修改于10年5个月前 - 2016/07/21 22:55:42 ]
13
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的