java - MIDI channel 轨道关联

标签 java midi

我已经使用 JAVA MIDI 工作了一段时间,并且偶然发现了一个问题。 我已经使用接收器、发送器方法链接了 MIDI 设备和 MPD带有音序器,然后将音序器链接到Java合成器。

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

track[0] 有一些 Midi 事件

轨道[1]有一些 Midi 事件等。

问题是因为,如果一个音轨改变了声音 PROGRAM_CHANGE,那么当音序器开始播放时,所有音轨都会更改为该声音。我猜 MIDI 设备只使用 1 个 channel : channel 1 来传输声音。数据到音序器以及当音序器将数据写入音轨时,所有音轨都具有相同的 channel ,因此我无法使用不同的乐器演奏音轨。 “Record_Enable”仅适用于 channel 1(只有在那里我才能从设备向定序器获取数据)。 我认为有两种解决方案,但我不知道如何实现。

1.更改每个轨道的 channel 。

因此 track[0] 具有 channel 0 上的所有 MIDI 事件。

轨道[1]具有 channel 1上的所有MIDI事件。等等

2.让设备以某种方式向不同 channel 上的定序器发送数据。

最佳答案

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

关于java - MIDI channel 轨道关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24254152/

相关文章:

一个文件中的 Midi 十六进制代码表示法不同

cocoa - 核心 MIDI : when I send a MIDIPacketList using MIDISend() only the first packet is being sent

flash - 迷笛 |我如何判断弦的声音何时是 Pizzicato(一种手指捏的噪音)

c++ - RtMidi MIDI 控制信号到 Ableton Live

java - 将 Boolean 更改为 boolean 会在 MapStruct 中引发 noSuchMethodError

Java NIO - 连接到 telnet/bash/等。命令行实用程序

java - 重写方法以将一组不同的分隔符传递给扫描仪

java - 尝试用问号替换字符串中的字母,但继续用问号替换空格

Java I/O 类和性能

ios - 使用 audiokit 在 AKsequencer 中创建额外 MIDI 轨道的问题