Skip to content

PacketProtocol.md

Shirasawa edited this page Jan 11, 2022 · 14 revisions

PacketProtocol

一个包有两部分组成:

  1. 包ID (int8)
  2. 包内容

Serverbound

0 - Reply

Field Name Field Type Notes
ID int32 用于记录本次事件
包体 ... 真正的封包内容

1 - Set Project Status

设置当前工程状态信息

Field Name Field Type Notes
BPM double
timeInSeconds double
isPlaying boolean
timeSigNumerator uint8
timeSigDenominator uint8
sampleRate uint16

2 - Get Explorer Data - Reply

导航栏读取

Field Name Field Type Notes
类型 int8 类型如下表
路径 string 表示客户端当前要读取的路径

客户端收到回复:

Field Name Field Type Notes
目录数量 int32
n个目录... string[]
文件数量 int32
n个文件... string[]

导航栏类型:

  1. 收藏
  2. 插件

3 - CreateTrack

新增轨道

Field Name Field Type Notes
轨道名 string
颜色 string
序号 uint8 表示在哪个轨道前面添加轨道
VST标识 string 如为空则不加载

4 - Refresh Info

刷新全局信息 (轨道/BPM等)

Field Name Field Type Notes

5 - MidiMessage

发送midi信息

Field Name Field Type Notes
轨道下标 uint8
byte1 uint8 看JUCE的定义
byte2 uint8 看JUCE的定义
byte3 uint8 看JUCE的定义

Clientbound

0 - Reply

与 Serverbound#0 一致

1 - Project Status

当前工程状态信息

Field Name Field Type Notes
端序 int16 直接为 1 (short int)
PPQ uint16
BPM double
timeInSeconds double
startTime int64
isPlaying boolean
timeSigNumerator uint8
timeSigDenominator uint8
sampleRate uint16

2 - Sync Track Info

同步轨道信息

Field Name Field Type Notes
轨道数 uint8 接下来会有这么多个轨道
UUID string
名字 string
颜色 string
音量 uint8
是否静音 boolean
是否独奏 boolean

3 - Track Midi Data

某些轨道的midi数据

Field Name Field Type Notes
轨道数 uint8 接下来会有这么多个轨道
UUID string
MidiOn的数量 uint16 接下来会有这么多个MidiOn
音符 uint8 1~127
力度 uint8 1~127
时间 uint32 PPQ时间
结束时间 uint32 相对于上面那个时间的PPQ时间