【问题标题】:Java stop MIDI playbackJava 停止 MIDI 播放
【发布时间】:2011-01-04 12:50:56
【问题描述】:

您好,我有一个 java 应用程序,它可以从序列中播放 midi 消息。我正在使用 jfugue 库进行此操作。

问题是当我尝试使用停止按钮(调用 sequencer.stop() 和 sequencer.close())停止播放时,最后播放的音符在整个休息时间都是正常的,我无法停止。

所以我也在询问有关停止所有音频和 MIDI 的解决方案!来自 java 应用程序的声音播放。

注意: 如果你想建议只是静音,你需要知道我希望最终用户能够再次按下播放按钮并再次听到声音,所以静音不是解决方案,或者请解释。

谢谢!

【问题讨论】:

    标签: java audio midi


    【解决方案1】:

    我猜您需要先致电Player.allNotesOff(),然后再致电sequencer.stop()。未经测试,所以如果它不起作用,请告诉我。

    【讨论】:

    • 不,它没有。当前播放的音符仍然是声音。很奇怪。 (((
    【解决方案2】:

    当 MIDI 播放音乐时,它使用 NOTE_ON 和 NOTE_OFF 事件的组合。听起来就像当您按下停止按钮时,序列在发送 NOTE_ON 事件之后停止,但在发送 NOTE_OFF 事件之前。这意味着声音将无限期地继续播放。

    JFugue 中的Player.allNotesOff() 在 Channel 类中调用 JavaSound 的 allNotesOff() 方法;这个调用是针对每个 MIDI 通道(有 16 个通道)进行的。不幸的是,这个解决方案不起作用。尝试拨打Player.allNotesOff() 之后 sequencer.stop(),看看是否有帮助。

    【讨论】:

      猜你喜欢
      • 2022-12-21
      • 2011-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多