搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
繁依Fanyi0
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
2、golang开发工具VScode安装配置_vscode golang
2
python爬虫实战——抖音
3
返回路径平面上的间隙_整整100条!使信号完整性问题最小化的设计原则(超级干货)...
4
BZOJ刷题集_bzoj 题目和数据
5
人工智能版 Photoshop 2024 测试版 ,创成式填充(生成式AI填充也是正正意义上的人工智能AI修图)功能使用教程_ps2024ai功能在哪
6
C语言(循环)单元练习
7
基于SSM的个人健康饮食管理小程序系统源码_私人健康管家小程序代码
8
curl (7) Failed connect to localhost8080; Connection refused_curl: (7) failed connect to localhost:8080; connec
9
力扣大厂热门面试算法题 27-29
10
2024年您应该知道的 12个绝佳且免费的 AI 工具_目前有哪些免费的ai搜索
当前位置:
article
> 正文
midi接口和midi time code(MTC)_midi time decode
作者:繁依Fanyi0 | 2024-03-16 09:15:44
赞
踩
midi time decode
Midi的硬件接口
MIDI 协议是一种特殊的串行通讯协议,是专门为数字音乐传输制订的,因此,它 有着自己的特点:每一条线路允许连接16个MIDI 设备,每个设备有各自的通道号,数据流是单向的,不进行应答,演奏设备只管发出MIDI命令而不检测接收设备是否准确收到,由于音乐自身的特点,接收设备判断收到正确的信号则响应,而错误的信号将被忽略-音乐演奏时,允许丢掉音符,但不能搞乱节奏。
MIDI协议规定, MIDI信号以波特率31.25K的串行异步信号传输,每字节数据包 括10 位,一个起始位,8位数据, 一个停止位,无校验位。每个音符的开(或关)命令有3个字节,经计算,不到1mS即可传输一个音符的开关命令,一条MIDI命令一般为1-3字节,连续发送。
在MIDI协议中, 规定了包括按键的压下/释放,力度,触后压力,各种MIDI控制 器等命令和一些系统信息。实际上,存在数种不同的MIDI协议,1991年制订了 通用MIDI协议(GM)后 ,经实践检验, 并不能解决所有的问题,于是Roland和Yamaha两个公司分别开发了自己的协议称为GS和XG, 试图更好的解决问题,但这两个协议不完全兼容。这几种协议中不兼容部分, 主要是针对比较高级的MIDI 应用,一般性的键盘和控制命令是兼容的。
与RS232口不同的是,MIDI信号用电流的差异代表不同的逻辑,MIDI设备的输出与另一台接收设备的输入连成一个回路,在这条回路里,5mA的电流代表逻辑“0”,0mA代表逻辑“1”,标准的MIDI设备之间,采用光隔离连接,设备之间没有握手信号。
按照MIDI协议,MIDI信号的输入输出均采用5针的DIN插头,每个设备的输出接另一个设备的输入,在多个设备接入的系统里,每个中间设备要负责转发接在其输入口的MIDI信号。
MIDI Time Code(MTC)是MIDI中的一个子协议。在MTC的协议数据中包含了SMPTE的时间信息。
MTC协议由几条MIDI Message组成,并且另外还有几条SysEx Message。
MTC协议中最重要的几个消息叫做Quarter Frame(不包括SysEx Message)。它的状态码为0xF1,接着1个字节为数据字节。Quarter Frame的是根据正在运行的SMPTE来发送的,并且发送的频率是SMPTE的1/4;也就是1个SMPTE Frame的时间内,发送4个Quarter Frame。一个完整的MTC时间帧需要8条Quarter Frame组成,也就是MTC时间帧的更新频率只有SMPTE的1/2;那么对于30fps的SMPTE来说,对应的MTC时间帧只有15fps。
MTC中Quarter Frame的组成格式(2个字节组成):Status Byte(固定为0xF1) + Data Byte
对于Quarter Frame中的Date Byte对应的二级制表示为:nnnn dddd,对应下表中:
nnnn dddd
0000 当前Frames的低4bit(bit0-bit3)
0001 当前Frames的高4bit(bit4-bit7)
0010 当前Seconds的低4bit(bit0-bit3)
0011 当前Seconds的高4bit(bit4-bit7)
0100 当前Minutes的低4bit(bit0-bit3)
0101 当前Minutes的高4bit(bit4-bit7)
0110 当前Hours的低4bit(bit0-bit3)
0111 当前Hours的第5bit(bit4)+当前SMPTE的类型
当nnnn=0111时,将Date Byte的二级制重新定义格式为:nnnn xyyd
x——为不使用的bit,并且置成0
yy——当前使用的SMPTE的类型:
00——24fps
01——25fps
10——30fps(Drop Frame)
11——30fps
d——当前Hours的第5bit(bit4)
例如:连续接收到的数据流为
0xF1 0x01 0xF1 0x12 0xF1 0x23 0xF1 0x34 0xF1 0x45 0xF1 0x56 0xF1 0x67 0xF1 0x77
表示当前的同步时间为:Frames:0x21; Seconds:0x43; Minutes:0x65; Hours:0x17; SMPTE Type:30fps
自我理解:当上述的数据流接收完毕并且解析,当前的时间帧对应的SMPTE应该已经到了0x23。(因为1个完整的MTC时间信息占用的时间对应2帧SMPTE信息)
MTC同步时间信息流,正常播放时是有顺序发送的,对应的nnnn是不断的从0000-0111循环发送;Frames,Seconds,Minutes,Hours的低bit先于高bit发送。但是MTC有倒播的功能,那么就刚好跟正常是相反,对应的高bit先于低bit发送。
在MTC中,0xF1 0x0n 和 0xF1 0x4n 这2个数据帧作为分界点,总是按照实时的SMPTE数据来发送。也就是1个完整的MTC数据包刚好处于2个SMPTE数据帧交界处,那么这个MTC数据包的前半部分是上个SMPTE帧的数据,MTC的后半部分是当前SMPTE的数据。解析的时候特别要注意。
Full Frame
Full Frame是SysEx Message,一个Full Frame包含了1帧SMPTE的时间信息。
数据流格式:(十六进制)
F0 7F cc 01 01 hr mn sc fr F7
cc——SysEx channel(0-127)对应的126个通道设备。如果为0x7F(127)是指所有MIDI链上的设备都需要识别当前Full Frame Message
hr——当前Hours
mn——当前Minutes
sc——当前Seconds
fr——当前Frames
Full Frame只是作为对SMPTE的识别和准备,所有MIDI链上的设备都不会真正工作,除非接到了Quarter Frame Message。主MIDI设备,在发送Full Frame转到发送Quarter Frame之前,必须有个停顿,以满足Slave MIDI设备对SMPTE时间有个预测。
在快进和倒带的时候,主MDI设备应该停止发送Quarter Frame Message,而是应该用Full Frame对应替换。
参考:
http://home.roadrunner.com/
~jgglatt/tech/mtc.htm
http://www.electronics.dit.ie/staff/tscarff/Music_technology/midi/MTC.htm
http://www.elmvideotechnology.com/MIDI/MTC/MTC-Users-Manual-Modular-Midi-Time-Code-Reader.pdf
http://wenku.baidu.com/view/d9761e2eb4daa58da0114a53.html
声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
【wpsshop博客】
推荐阅读
article
鸿蒙初学 在代码中动态改变
Image
的
背景色
(
Harmony
Beginner
:
Change
Im...
在代码中动态改变
Image
的
背景色
(
Harmony
Beginner
:
Change
Image
'
s
backgroun...
赞
踩
article
Real
-time voxel based 3D semantic mapping
with
a h...
环境感知是机器人智能的重要组成部分。为了更好地理解周围的环境,机器人不仅应该了解现实世界中物体的几何形状,还应该了解它们...
赞
踩
article
Gradle
sync
failed
“
read
time
out“_
gradle
sync
fai...
在使用Android Studio进行开发时,经常会碰到以下问题:在
Gradle
进行Project Sync时由于需要从...
赞
踩
article
GRADLE
自动更新出现
READ
TIMEOUT_
gradle
read
time
out...
在导入原始项目,或主动升级
GRADLE
时,
GRADLE
自动处理后,有时会出现
READ
TIMEOUT的错误,经常是下载某...
赞
踩
article
Android
Studio3.5.2初次安装
gradle
时出现Error:
read
time
ou...
最近安装
Android
Studio,总是出现报错,在查询了无数个解决办法后,终于安装成功了。这里提供以下方法,希望对大...
赞
踩
article
Android
Studio进行
gradle
时
read
time
out 解决办法_
android
...
最近在使用更新了后的
Android
studio
编写程序的时候发现
gradle
时老是报
read
time
out ...
赞
踩
article
解决AndroidStudio编译时报错:
org
.
gradle
.
api
.ProjectConfigu...
问题一:
org
.
gradle
.
api
.
ProjectConfigurationException
: A
pr
oblem...
赞
踩
article
Pandas
19 - 日期时间_
"
time
=
data
[\
"
login
_
time
\
"
]-pd.tim...
Pandas
19 - 日期时间文章目录
Pandas
19 - 日期时间一、关于
Pandas
里面的时间偏移别名二、使...
赞
踩
article
Python
常用模块(
time
、
numpy
、
pandas
、
matplotlib
)之简单使用_
time
...
一、
time
模块常用的一种获取当前时间以及格式化模块,模块名称:
time
导入方式:import
time
1. 时间元...
赞
踩
article
在
MySQL
中
DATETIME
和
TIMESTAMP
时间
类型的区别及使用场景 - 实战案例讲解_tim...
在
MySQL
中有两种存储
时间
的数据类型
DATETIME
和
TIMESTAMP
,它们在数据库实际应用中,各有各的...
赞
踩
article
fx33cc
ios.
html
,
View
source
code
: MyQQ.rar_AdminFo...
text/microsoft-
resx
2.0System.Re
source
s.ResXRe
source
Reader,Sy...
赞
踩
article
解决nodejs打前端包时报
npm
ERR!
code
EINVALIDPACKAGENAME
_na...
解决nodejs打前端包时报
npm
ERR!
code
EINVALIDPACKAGENAME
问题重现 解决方法前后端分...
赞
踩
article
【
HTTP
】
10
分钟带你快速了解
HTTP
中常见的
状态
码
(内附大量实例)_
http
code
temp...
目录前言▶ 为什么要了解
状态
码
?正题▶
状态
码
的类别▶
状态
码
——200(OK)▶
状态
码
——204(Not Conte...
赞
踩
article
在
Visual
Studio
Code
软件中利用
快捷键
快速
搭建
vue
实例的模板(
vue
一课一得)_v...
前言 :今天在某站看关于
vue
教学视频的时候,我看到了老师在html页面中使用
快捷键
vh即可
快速
生成基本的
vue
实力框架...
赞
踩
article
使用
vs
code
生成 VUE 自动生成
初始化
模板_
vs
code
如何设置新建一个
vue
文件
就
初始化
...
第一步打开
vs
code
,
文件
-首选项-用户代码片段,选择代码片段
文件
或创建代码片段,选择或新建
vue
.json第二步复...
赞
踩
article
spr
i
ng
boot框架
报错
The
server
t
i
me
zone
value
'
Öйú±ê×¼...
报错
信息如下
报错
原因maven导入MyBat
i
s的时候会自动导入最新版本的8.0.11,然后8.0.11采用了新驱动,之...
赞
踩
article
《
Real
-
Time
Rendering
4th
Edition
》全文翻译 - 第
3
章 图形
处理单元
...
赶在 2019 结束之前把第三章结束,提前祝大家新年快乐!实时渲染(第四版)
Real
-
Time
Rendering
(F...
赞
踩
article
unity
给
头发
添加
物理
_
unity
3d
Hair
real
time
rendering 真实头...
先放上效果惊现塞拉酱算法是Weta Digital根据siggraph2003的论文加以改进,改进之前使用的是Kajiy...
赞
踩
article
unity
给
头发
添加物理_
unity
游戏实时
头发
物理模拟系统
Real
Time
Hair
BETA
...
unity
游戏实时
头发
物理模拟系统
Real
Time
Hair
BETA
,包含基于粒子的
头发
、物理关键股
头发
、可控制的毛...
赞
踩
article
[
PackageManager
] Error System.InvalidOperationExce...
发现是
Failed
to
call
Unity
ID
to
get au
to
code
.的问题,unity的版本是201...
赞
踩
相关标签
harmonyos
鸿蒙
计算机视觉
人工智能
深度学习
gradle
android studio
Androidstudio
python
mysql
数据库
database
fx33cc ios.html
HTTP
状态码
vue.js
vscode
javascript
前端
计算机图形学
unity给头发添加物理