gpt4 book ai didi

JavaX MIDI - 使用自定义音色播放 MIDI 文件

转载 作者:行者123 更新时间:2023-11-30 10:08:06 26 4
gpt4 key购买 nike


我试图为 Java 程序实现一个 MIDI 播放器。所以我开始使用 javax.sound.midi 库。我在那里加载了我的 Sequencer 和我的 Synthesizer:

private void playMidiFile() {

Soundbank soundfont = MidiSystem.getSoundbank(Util.internalFile("FluidR3_GM.sf2").getInputStream());
Sequencer sequencer = MidiSystem.getSequencer();
Synthesizer synthesizer = MidiSystem.getSynthesizer();

sequencer.open();
synthesizer.open();
synthesizer.loadAllInstruments(soundfont);

sequencer.getTransmitter().setReceiver(synthesizer.getReceiver());
sequencer.setSequence(Util.internalFile("MyMusic.mid").getInputStream());

sequencer.start();
}

第一秒我可以清楚地听到我加载的 soundfont,但在那之后 midi 以某种方式用标准的 soundfont 播放。我检查过,javax.sound.midi 库支持 SF2 文件(synthesizer.isSoundBankSupported(soundfont) 返回 true)。
有人知道为什么我的程序会这样吗?

最佳答案

关闭所有发射器可以解决正在播放的标准字体问题,但更简单的解决方法是创建一个没有任何发射器的音序器:

Sequencer sequencer = MidiSystem.getSequencer(false);

将自定义合成器连接到以这种方式创建的音序器只会产生自定义声音。

关于JavaX MIDI - 使用自定义音色播放 MIDI 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53922543/

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