gpt4 book ai didi

java - 为什么 Mac 上的 java midi 合成器停止播放音符

转载 作者:行者123 更新时间:2023-12-01 04:32:54 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 声音合成器适用于除 Lion 之外的所有 OS X 版本。合成器的缓冲区似乎溢出了。几个音符后,它停止播放,如果我发送一记音符,它会再次开始工作并再次停止,..

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

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

谢谢,谢谢!

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

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