7258浏览
查看: 7258|回复: 1

[高级教程] 好好搭搭haodaMIDI模块掌控板Python编程

[复制链接]
本帖最后由 潘虹辉 于 2019-10-1 22:22 编辑

一、硬件
本教程使用了掌控板+扩展板+haodaMIDI模块
大家要问:“什么是MIDI模块?”
我就用现成的,请看下图
好好搭搭haodaMIDI模块掌控板Python编程图1
接线很简单,MIDI模块接口分别是G\V\控制信号,2.54插座
可以用杜邦线接掌控扩展板的G\V\P13
2、程序
[mw_shl_code=python,true]from mpython import *
from machine import UART
import time,json

#初始化MIDI接口,MIDI模块接P13,设置为tx发送端,rx用不到,随便指定一个
uart1 = UART(1, baudrate=31250, tx=Pin.P13, rx=Pin.P8)

file_name="midi1.json"#MIDI数据文件名
i = 0
t = 0
midifile = open(file_name,'rb')#打开文件
midi_data = json.load(midifile)#读JSON数据
midifile.close#关闭文件
song = eval(midi_data["song"])#song[]存放MIDI命令
sudu = eval(midi_data["sudu"])#sudu存放速度
title = midi_data["title"]#title存放曲目名称
l = len(title)*12
#显示曲名
oled.fill(0)
oled.DispChar(title, int((128-l)/2), 22, 1)
oled.show()
while True:
    #播放开始
    while i < len(song)-4:
        uart1.write(bytes([song[i+1],song[i+2],song[i+3]]))
        t=song[i+4]*sudu;
        if t!=0:
            time.sleep_us(t)
        i = i + 4
    #播放结束
    i = 0
    t = 0
    time.sleep(2)#停2秒,重复播放   

[/mw_shl_code]说明:
1、MIDI控制命令传输时采用异步串行通信, 标准通信波特率为31250,我们可以直接使用掌控板的软件串口2、MIDI控制命令的数据是通过转换MIDI乐曲文件得到的,转换工具是下载附件midiconv.rar
转换方法是解压midiconv.exe,把要转换的MIDI文件拖到midiconv.exe图标上,转换完成后会在MIDI文件同目录下生成midi.c文件。
这是用于Arduino\microbit\徽章板\掌控板的c语言程序,我们要按JSON的格式把相应的数据编写进midi1.json文件,文件格式如下[mw_shl_code=python,true]{
"title":"\u8ba9\u6211\u4eec\u8361\u8d77\u53cc\u6868",
"sudu":"0x005088",
"song":"[
0x00,0xC0,0x00,0x00,
0x00,0xB0,0x07,0x7D,
0x00,0xB0,0x0A,0x32,
0x00,0xC1,0x00,0x00,
0x00,0xB1,0x07,0x78,
......

......
0x04,0xB1,0x0A,0x54,
0x0D,0xB1,0x0A,0x55,
0x43,0x90,0x58,0x00,
]"
}
[/mw_shl_code]title是中文曲名,在json文件中要使用中文转Unicode工具转码,如\u8ba9\u6211\u4eec\u8361\u8d77\u53cc\u6868,可以使用以下网址转码,http://tool.chinaz.com/tools/unicode.aspx
sudu就是midi.c中的uint32_t sudu=后的值。
song对应的就是song[]值,一定要按JSON的格式制作,所有的值都是加引号的字符串

3、上传程序
我使用的是mPython X 0.3.5版
连接上掌控板,使用文件系统上传midi1.json文件到掌控板
使用Python代码模式编写程序,刷入运行。

以后要换曲目,直接重新上传json文件就可以了
稍加修改,就可以选择播放多个曲目,就像一个midi播放器
4、视频



程序和数据文件下载:下载附件midi程序和数据.rar





rzyzzxw  版主

发表于 2019-10-2 11:00:14

潘老师精品教程
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail