MIDI 通道轨道相关

Posted

技术标签:

【中文标题】MIDI 通道轨道相关【英文标题】:MIDI-Channel-Track-Correlation 【发布时间】:2014-06-17 00:35:15 【问题描述】:

我一直在使用 JAVA MIDI 工作一段时间,但偶然发现了一个问题。 我已经使用 Receiver,Transmitter 方法将 MIDI 设备和 MPD 与音序器,然后将音序器链接到 Java 合成器。

我已经设法将来自设备的数据记录在单独的轨道上,例如:

track[0] 有一些 Midi 事件

track[1] 有一些 Midi 事件等。

问题是因为如果轨道改变声音,所有轨道在录制时都使用相同的通道 PROGRAM_CHANGE 当音序器开始播放时,所有轨道都会改变为该声音。我猜 MIDI 设备只使用 1 个通道:通道 1 来传输数据到音序器,当音序器将数据写入音轨时,它们都有相同的通道,所以我不能用不同的乐器播放音轨。 “Record_Enable”仅在通道 1 上工作(只有在那里我从设备获取数据到定序器)。 我认为有两种解决方案,但我不知道如何实现它们。

1.为每首曲目更换频道。

所以 track[0] 在通道 0 上有所有 MIDI 事件。

track[1] 在通道 1 上有所有 MIDI 事件。等等

2.使设备以某种方式在不同的通道上向定序器发送数据。

【问题讨论】:

在 MIDI 中,一个通道实际上就是一个轨道。合成器不允许您将两个乐器分配到一个通道......它怎么知道要发送什么消息到哪个乐器? 是的,我正在尝试修改数据,以便更改频道! 【参考方案1】:

要更改事件消息的通道,请使用 setMessage 和不同的 channel 参数。 对轨道中的所有事件执行此操作。

【讨论】:

也许但是使用 set-message 方法只会让我从头开始重新创建消息。当我不知道原始消息是什么时该怎么办。(我需要从MIDI 事件,只是修改通道,但我不知道该怎么做)。 你已经拥有消息对象;只要问它其他参数是什么。

以上是关于MIDI 通道轨道相关的主要内容,如果未能解决你的问题,请参考以下文章

在音轨播放期间更改乐器 - MIDI/Java

BLE MIDIMIDI 文件格式分析 ( MIDI 轨道分析 | MIDI 轨道头 | MIDI 轨道长度 | delta-time 间隔 )

BLE MIDIMIDI 文件格式分析 ( MIDI 轨道分析 | MIDI 轨道头 | MIDI 轨道长度 | delta-time 间隔 )

如何在 CoreMidi 曲目中播放特定频道?

BLE MIDIMIDI 文件格式分析 ( MIDI 文件头解析 | MIDI 文件头标识 | MIDI 文件头长度 | MIDI 文件格式 | MIDI 轨道个数 | 基本时间 )

BLE MIDIMIDI 文件格式分析 ( MIDI 文件头解析 | MIDI 文件头标识 | MIDI 文件头长度 | MIDI 文件格式 | MIDI 轨道个数 | 基本时间 )(代码