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通信协议(翻译)相关推荐

  1. MIDI通信协议-数据字节:找到中央C(音名:C4)

    MIDI通信协议 之 MIDI数据字节:找到中央C(音名:C4) 背景 找到中央C 引用自维基百科 由符合基本音阶的音程结构所构成的音列的音高位置,就叫作调. 调的命名建立在主音的基础上,如由7个自然 ...

  2. MIDI通信协议-数据字节:GM1打击乐器音色库(带乐器中文名称)

    /*General MIDI Level 1 打击乐器对照表在MIDI通道10上,下列每一种打击乐都能发出一种独特的音色.GM1打击乐只包含下列这些乐器.只要支持GM标准就一定支持这些乐器.虽然一些厂 ...

  3. 【低功耗蓝牙】④ 蓝牙MIDI协议

    摘要 蓝牙MIDI协议是智能乐器与计算机之间数据通信的协议格式,本文章主要介绍了通过低功耗蓝牙实现MIDI协议的步骤,以及MIDI指令的数据格式,并且依托ESP32芯片MicroPython平台给出了 ...

  4. OSI七层 TCP/IP四层 TCP/IP协议栈: 不同的通信协议的大集合

    应用层: 网络服务与最终用户的一个接口. 协议有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP 表示层: 数据的表示.安全.压缩.(在五层模型里 ...

  5. 物联网通信协议全解析

    来源于软件新视界,转载自物联网世界,图片来源于网络 随着物联网设备数量的持续增加,这些设备之间的通信或连接已成为一个重要的思考课题.通信对物联网来说十分常用且关键,无论是近距离无线传输技术还是移动通信 ...

  6. 【BLE MIDI】开发 BLE MIDI 硬件电子乐器设备需要遵循的相关规范 ( 资料收集 )

    文章目录 前言 一.Android 相关的 BLE MIDI 资料 二.iOS 相关的 BLE MIDI 资料 三.支持 BLE-MIDI 模块 BT401 四.单片机制作电子乐器 五.博客资料 前言 ...

  7. 常见的物联网通信协议

    文章目录 1 TCP 2 UDP 3 HTTP 4 MQTT 5 CoAP 6 LwM2M 1 TCP TCP 是一种面向连接的.可靠的.基于字节流的传输层通信协议. 特点: 面向连接 可靠通信方式 ...

  8. 我也聊聊串口通信协议:用户层通信协议的编制

    1.闲话闲聊 最重要的写在前面:用户层通信协议就是数据包格式!!! 没有进行串口通讯实践的朋友可能会想:为什么要编制用户通信协议呢?通信过程中为什么要进行数据处理呢?在设计中编过串口通信程序的读者应该 ...

  9. MPU6050开发 -- 进阶之I2C/SPI通信协议

    如需转载请注明出处:https://blog.csdn.net/qq_29350001/article/details/78611309 上一篇基本概念讲了一通,大体上对MPU6050有了一个了解.对 ...

最新文章

  1. 【怎样写代码】对象克隆 -- 原型模式(四):浅克隆与深克隆
  2. 使用AWSTATS自动分析Nginx日志
  3. 三招教你如何判断ERP软件是否适用
  4. linux kernel中的中断处理流程
  5. C++中什么时候用new[]申请,可以用delete释放
  6. 一个高级的makefile文件
  7. SQLAlchemy in 查询空列表问题分析
  8. linux编程课后作业,Unix/Linux 编程实践教程第三章习题
  9. 前端主流的 Javascript,缺失了哪些技能?
  10. Android UI 之WaterFall瀑布流效果 [复制链接]
  11. iOS分析友盟错误报告
  12. 单目深度估计论文(1)— Depth Map Prediction from a Single Image using a Multi-Scale Deep Network (NIPS 2014)
  13. vs2015 professional 密钥
  14. 多迪技术总监揭秘:UI设计都是用什么软件?
  15. visio画箭头时,如何去掉箭头的自动连接连接点(吸附)功能?
  16. 标准C语言程序设计第七版pdf,C语言程序设计 201607.pdf
  17. Android N 程序适配要点
  18. Zend 发送邮件报错
  19. 电脑网页游戏微端服务器失败,电脑重装后微端游戏玩不了,网页也进不了
  20. 图像处理之高斯混合模型

热门文章

  1. java函数修饰符_Java 函数 面向对象,修饰符,类,构造方法,this
  2. C语言练习---杨辉三角
  3. [置顶]Ceph源码解析:PG peering
  4. Nape实现坐标旋转角度回弹
  5. php 判断华为手机,一招教你如何看穿华为手机的内存类型
  6. 用VHDL编写testbench激励文件
  7. 互联网访问检测服务器
  8. tkmybatis 默认值 问题
  9. 苹果充电器怎么辨别真假_airpods怎么辨别真假?
  10. 二极管的三种击穿形式