MIDI通信协议(翻译)
MIDI通信协议
- 概述
- MIDI命令字节
- MIDI通道
- MIDI数据字节
原文:https://blog.csdn.net/weixin_43572492/article/details/84966690
【修订记录】
1、20210810,翻译文本本地化
2、20230430,文本优化
概述
音乐数字接口(Musical Instrument Digital Interface,简称MIDI)是电脑CPU为8bit时期的产物,MIDI数据以字节为单位进行单项传输。(高端的MIDI芯片可能同时支持发送和接收)
MIDI数据以UART通信:波特率=31250,数据位=8b,开始位=1b,停止位=1b,无校验。
通常,MIDI数据包由两部分组成:①命令字节,②数据字节;但也有一些MIDI数据包不含数据字节。
表1 MIDI数据包的组成
进制 | 命令字节 | 数据字节 |
---|---|---|
十进制 | [128,255] | [0,127] |
二进制 | 0b1XXXXXXX | 0b0XXXXXXX |
十六进制 | [0x80,0xFF] | [0x00,0x7F] |
命令字节的最高位为1,数据字节的最高位为0,可见,用二进制或十六进制来查看更直观。
命令字节是MIDI消息序列的第一个字节,后面跟着一定数量的MIDI数据字节。数据字节用于传送诸如音高、音量、音色、力度等信息。
例如,以第100级力度演奏C4的MIDI数据包是:0x90→0x3C→0x64。0x80是命令字节,它表示“演奏”。后跟有2个数据字节:前者是“C4”的常数,后者是“以第100级力度”的常数。
注意:A4=440(Hz)
MIDI命令字节
命令字节可按照高低位,拆分为表示命令的高4位、表示某条通道的低4位。如前文所述的“演奏”命令,高4位是0b1001,表示“演奏”,低4位是0b0000,表示“在通道1上”,所以0x90的完整意思是“在通道1上演奏”,进而,上述数据包的完整意思是“在通道1上,以第100级力度演奏C4”。
表2 命令字节的分解
进制 | 高4bits | 低4bits |
---|---|---|
二进制 | 1XXX | XXXX |
十六进制 | [0x8,0xF] | [0x0,0xF] |
MIDI通道
要使用多条音轨发声时,往往要用到MIDI通道。即:将不同的声部交给不同的通道去处理和演奏。可以像理解电视频道一样去理解MIDI通道的概念。
表3 命令字节简表
命令类型 | 命令字节的内容 | 数据字节1的内容 | 数据字节2的内容 |
---|---|---|---|
关闭音符 | 80+CH | 音符音高 | 关闭力度 |
开启音符 | 90+CH | 音符音高 | 打开力度 |
触后压力 | A0+CH | 音符音高 | 触后压力值 |
控制器 | B0+CH | 控制器编号 | 控制的数值 |
音色切换 | C0+CH | 音色编号 | - |
通道压力 | D0+CH | 该通道全部键盘的触后压力 | - |
弯音轮 | E0+CH | 弯音轮低位数据 | 弯音轮高位数据 |
系统普通信息、实时信息、及高级信息代码 | F0+CH | 0或若干个数据字节 |
MIDI数据字节
参见下列文章
MIDI数据字节:找到中央C(音名:C4)
MIDI数据字节:GM1旋律乐器音色库(带中文名称)
MIDI数据字节:GM1打击乐器音色库(带乐器中文名称)
MIDI通信协议(翻译)相关推荐
- MIDI通信协议-数据字节:找到中央C(音名:C4)
MIDI通信协议 之 MIDI数据字节:找到中央C(音名:C4) 背景 找到中央C 引用自维基百科 由符合基本音阶的音程结构所构成的音列的音高位置,就叫作调. 调的命名建立在主音的基础上,如由7个自然 ...
- MIDI通信协议-数据字节:GM1打击乐器音色库(带乐器中文名称)
/*General MIDI Level 1 打击乐器对照表在MIDI通道10上,下列每一种打击乐都能发出一种独特的音色.GM1打击乐只包含下列这些乐器.只要支持GM标准就一定支持这些乐器.虽然一些厂 ...
- 【低功耗蓝牙】④ 蓝牙MIDI协议
摘要 蓝牙MIDI协议是智能乐器与计算机之间数据通信的协议格式,本文章主要介绍了通过低功耗蓝牙实现MIDI协议的步骤,以及MIDI指令的数据格式,并且依托ESP32芯片MicroPython平台给出了 ...
- OSI七层 TCP/IP四层 TCP/IP协议栈: 不同的通信协议的大集合
应用层: 网络服务与最终用户的一个接口. 协议有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP 表示层: 数据的表示.安全.压缩.(在五层模型里 ...
- 物联网通信协议全解析
来源于软件新视界,转载自物联网世界,图片来源于网络 随着物联网设备数量的持续增加,这些设备之间的通信或连接已成为一个重要的思考课题.通信对物联网来说十分常用且关键,无论是近距离无线传输技术还是移动通信 ...
- 【BLE MIDI】开发 BLE MIDI 硬件电子乐器设备需要遵循的相关规范 ( 资料收集 )
文章目录 前言 一.Android 相关的 BLE MIDI 资料 二.iOS 相关的 BLE MIDI 资料 三.支持 BLE-MIDI 模块 BT401 四.单片机制作电子乐器 五.博客资料 前言 ...
- 常见的物联网通信协议
文章目录 1 TCP 2 UDP 3 HTTP 4 MQTT 5 CoAP 6 LwM2M 1 TCP TCP 是一种面向连接的.可靠的.基于字节流的传输层通信协议. 特点: 面向连接 可靠通信方式 ...
- 我也聊聊串口通信协议:用户层通信协议的编制
1.闲话闲聊 最重要的写在前面:用户层通信协议就是数据包格式!!! 没有进行串口通讯实践的朋友可能会想:为什么要编制用户通信协议呢?通信过程中为什么要进行数据处理呢?在设计中编过串口通信程序的读者应该 ...
- MPU6050开发 -- 进阶之I2C/SPI通信协议
如需转载请注明出处:https://blog.csdn.net/qq_29350001/article/details/78611309 上一篇基本概念讲了一通,大体上对MPU6050有了一个了解.对 ...
最新文章
- 【怎样写代码】对象克隆 -- 原型模式(四):浅克隆与深克隆
- 使用AWSTATS自动分析Nginx日志
- 三招教你如何判断ERP软件是否适用
- linux kernel中的中断处理流程
- C++中什么时候用new[]申请,可以用delete释放
- 一个高级的makefile文件
- SQLAlchemy in 查询空列表问题分析
- linux编程课后作业,Unix/Linux 编程实践教程第三章习题
- 前端主流的 Javascript,缺失了哪些技能?
- Android UI 之WaterFall瀑布流效果 [复制链接]
- iOS分析友盟错误报告
- 单目深度估计论文(1)— Depth Map Prediction from a Single Image using a Multi-Scale Deep Network (NIPS 2014)
- vs2015 professional 密钥
- 多迪技术总监揭秘:UI设计都是用什么软件?
- visio画箭头时,如何去掉箭头的自动连接连接点(吸附)功能?
- 标准C语言程序设计第七版pdf,C语言程序设计 201607.pdf
- Android N 程序适配要点
- Zend 发送邮件报错
- 电脑网页游戏微端服务器失败,电脑重装后微端游戏玩不了,网页也进不了
- 图像处理之高斯混合模型