java - 使用 javax.sound.midi 包设置乐器 channel

标签 java midi

我在 javax.sound.midi 包中设置乐器时遇到问题。

Synthesizer synthesizer = MidiSystem.getSynthesizer();
MidiChannel[] channels = synthesizer.getChannels();

channels[0].programChange(5);
System.out.println(channels[0].getProgram());

来自documentation在 MidiChannel 上,对 channels[0].programChange(int) 的调用应该更改 MidiChannel 设置的乐器并立即反射(reflect)在 channels[0].getProgram() 中。但是我的程序打印“0”,表示没有任何改变。

稍后在代码中,我使用 MidiChannel.getSequencer() 成功播放 midi 声音(尽管仅使用默认乐器。)

我是否打算以错误的方式设置仪器?

最佳答案

我遇到了和你一样的问题,虽然我们没有使用完全相同的实现来制作 MIDI 消息,请随意查看我的问题,因为它可能对你有用:

Changing instrument in Java during playback

关于java - 使用 javax.sound.midi 包设置乐器 channel ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2828820/

相关文章:

java - 什么是原始类型,为什么我们不应该使用它?

java - KitKat 上的按钮文本消失(API 级别 19)

java - Android - 访问 RadioButton 数组时出现 NullPointerException

ios - 如何在 iOS 上增加 MIDI 合成器音量/增益而不失真?

android - Android Mediastore不列出MID和AAC文件

java - 我如何在 Retrofit 库中使用 Gson?

java - Java-好的免费库,可调整图像大小

java - midi 键盘不适用于所有平台

browser - 浏览器之间的MIDI或OSC控件

java - 如何控制 MIDI 序列的音量