gpt4 book ai didi

java - 为什么 mac 上的 java midi synth 停止播放音符

转载 作者:搜寻专家 更新时间:2023-11-01 03:28:11 24 4
gpt4 key购买 nike

我正在尝试制作一个简单的应用程序,它从 MIDI 端口(硬件)读取并将事件转发到软件合成器。它主要工作除了软合成器不时停止播放。我可以在日志中看到转发的 MIDI 消息,我可以在调试中进行跟踪并看到事件到达了合成器接收器中的 native 代码,但由于某种原因,合成器没有播放音符。如果您等待然后声音再次播放,然后停止,然后再次播放...

这是一个显示问题的演示应用程序。如果您按住控制台中的 enter 按钮,您将反复听到提示音。一段时间后(可能不到一分钟),声音将停止(如果您按住按钮不放),然后又会恢复。

import java.io.BufferedReader;
import java.io.InputStreamReader;

import javax.sound.midi.MidiSystem;
import javax.sound.midi.Synthesizer;

public class TestMidi2 {

public static void main( String[] args ) throws Exception {
Synthesizer synth = MidiSystem.getSynthesizer();
synth.open();

BufferedReader in = new BufferedReader( new InputStreamReader( System.in ) );
boolean on = true;
while ( in.readLine() != null ) {
if ( on ) {
synth.getChannels()[0].noteOn( 45, 127 );
} else {
synth.getChannels()[0].noteOff( 45 );
}
on = !on;
}
}

}

如果这有所作为(我想确实如此),我会使用 MacOS X lion。

有什么想法吗?解决方法?我想尝试其他软件合成器但找不到。我也愿意尝试硬件 midi 合成器,只要他们能弹奏基本的钢琴、长笛和吉他(我不需要任何专业的东西,只要不错的声音)。

谢谢!

最佳答案

这是一个狮子问题。我正在开发一种将 MIDI 发送到不同端口并在许多平台上进行测试的工具。 Java Sound Synthesizer 适用于所有 OS X - Lion 除外的版本。合成器的缓冲区似乎溢出了。几个音符后它停止播放,如果我发出一拳音符它再次开始工作并再次停止,..

然而,遗憾的是,Java 声音合成器是一个古老的东西,似乎没有人再支持它了。

除了将它发送到第三方音序器之外,有谁知道通过 Java 播放 MIDI 声音的其他可能性吗?如果有另一个通用 MIDI 库之类的东西就好了。

谢谢,再见!

关于java - 为什么 mac 上的 java midi synth 停止播放音符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7749172/

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