【发布时间】: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 中,一个通道实际上就是一个轨道。合成器不允许您将两个乐器分配到一个通道......它怎么知道要发送什么消息到哪个乐器?
-
是的,我正在尝试修改数据,以便更改频道!