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

标签: java midi


【解决方案1】:

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

【讨论】:

  • 也许但是使用 set-message 方法只会让我从头开始重新创建消息。当我不知道原始消息是什么时该怎么办。(我需要从MIDI 事件,只是修改通道,但我不知道该怎么做)。
  • 你已经拥有消息对象;只要问它其他参数是什么。
猜你喜欢
  • 1970-01-01
  • 2019-09-07
  • 2012-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-20
相关资源
最近更新 更多