如何更改' master'合成器/音序器的音量?

时间:2014-04-19 12:45:21

标签: java midi

我希望能够控制'主人'或者我播放的midi文件的总体积。

设置:

  • 我在我想玩的java gui程序中有一个midi文件
  • 我还有一些界面允许用户通过键盘/鼠标/ midi设备输入播放声音
  • 最后我还采样了音频效果

我想要的是什么:

  • 能够在后台播放时动态控制midi文件的整体音量,而不会影响任何其他音频元素的音量

通常的解决方案:

    用于播放midi文件的合成器中每个频道的
  • change the channel volume
  • 此方法的问题是,如果midi文件将任何卷消息发送到合成器,则会覆盖我的卷设置

我的解决方案(尚未完成)

  • 实现一个朴素的接收器/发送器,以放入序列发生器和合成器之间
  • 我计划拦截来自Sequencer的与通道音量相关的消息,应用我的JSlider设置的增益,然后将编辑过的消息中继到Synthesizer。

相关问题:

  • 如果我的解决方案是除了频道音量消息之外的唯一方式,那么我还需要拦截和编辑其他任何与音量相关的消息吗?

主要问题:

我怎样才能改变主人' midi文件的音量?

1 个答案:

答案 0 :(得分:1)

在MIDI中,所有与音量相关的控制器(音符速度,表情,音量,主音量)组合在一起;每个都可以独立更改。

每个与GM兼容的合成器都应支持Master Volume消息:

F0 7F 7F 04 01 LL MM F7

其中LLMM是14位值的低7位和高7位。 (大多数设备都有7位主卷,只需忽略LL。)

大多数MIDI文件不会更改主音量;你应该能够盲目地发送这条消息。