gpt4 book ai didi

Java MIDI 合成器 - 无法更改乐器

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:52:25 25 4
gpt4 key购买 nike

我似乎无法改变乐器。我切换了仪器的值,但输出没有任何不同。无论我尝试什么值(value),我都只能得到一个钢琴乐器来演奏。这是下面的简单代码。有没有人有什么建议?还是我缺少仪器对象的基础知识?

import javax.sound.midi.*;
//import javax.sound.*;

public class Drum {
static int instrument = 45;
static int note = 100;
static int timbre = 0;
static int force = 100;
public static void main(String[] args) {
Synthesizer synth = null;
try {
synth = MidiSystem.getSynthesizer();
synth.open();
}
catch (Exception e) {
System.out.println(e);
}
Soundbank soundbank = synth.getDefaultSoundbank();
Instrument[] instr = soundbank.getInstruments();
synth.loadInstrument(instr[instrument]); //Changing this int (instrument) does nothing
MidiChannel[] mc = synth.getChannels();
mc[4].noteOn(note, force);
try { Thread.sleep(1000); }
catch(InterruptedException e) {}
System.out.println(instr[instrument].getName());

synth.close();

}
}

最佳答案

您需要告诉 channel 使用仪器。我承认我从未在 Java 中使用过 MIDI,但像 mc.programChange(instr.getPatch().getProgram()) 之类的东西听起来很有希望。

关于Java MIDI 合成器 - 无法更改乐器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4881541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com