当前位置: 首页 > 面试题库 >

在MIDI音序器中控制音量的方法是什么?

邵耀
2023-03-14
问题内容

有人可以告诉我如何在 使用声音库或合成器的 情况下 控制MIDI音序器的音量吗?

我想先使MIDI淡出,然后依次继续下一个MIDI

            if(midiplay)
            {

                midi = s + savereq;
                try {
                    //System.out.println("Play MIDI " + midi);
                    if (musicSr != null)
                    {
                                               /* This is where I want it to fade out*/
                        musicSr.stop(); //stop sequencer
                        musicSr.close(); //close sequencer
                    }
                    musicSr = null; 
                    musicS = null;

                    File music = new File(midi);
                    if(music.exists())
                    {
                        musicS = MidiSystem.getSequence(music);
                    }

                    // Create a sequencer for the sequence
                    musicSr = MidiSystem.getSequencer();
                            musicSr.open();
                            musicSr.setSequence(musicS);
                            musicSr.setLoopCount(musicSr.LOOP_CONTINUOUSLY);
                            musicSr.start();

                } catch (Exception ex) {
                    ex.printStackTrace();
                }


                midiplay = false;

            }

问题答案:
  1. 调用getSequence获得Sequence ;
  2. 调用getTracks获取曲目列表;
  3. 在每个轨道中,对于轨道中使用的每个频道,调用add在适当的时间位置添加多个事件:

    track.add(new MidiEvent(
    new ShortMessage(ShortMessage.CONTROL_CHANGE, channel, 7, volume),
    tick));
    
  4. 也许从音轨中删除其他音量变化事件(这会干扰您的淡出效果);

  5. 等待一点时间让淡出发生。


 类似资料:
  • 我正在使用OpenSL ES播放音频剪辑。在我的代码中,我有 在插入耳机时强制音频通过扬声器。它工作正常,但我无法控制音量。在播放剪辑时按下音量按钮会使音量搜索栏出现并移动,但音量不会改变。播放前调用或似乎没有帮助。更改我的应用程序之外的任何音量(例如在Android设置中)不会影响播放音量。当没有应用路由时,音量控制在耳机和扬声器上都可以正常工作。 我还尝试使用在另一个答案中找到的代码将音频发送

  • 1.1.1. 音量控制 1.1.1. 音量控制 这是一个音量控制的接口,可以控制整体音量,也可以控制单个通道的音量。下面是头文件: #include <vol_ctrl/volumecontrol.h> 除了要 include 头文件外,还需要链接 -lrkvolumecontrol.so。 API int set_all_volume(int vol); // 设置整体音量接口,参数vol:

  • fn fn 待测

  • 我现在找了一段时间,想做什么都找不到答案。 我想播放一个midi文件,并在播放时在屏幕上显示音符。当一个音符停止播放时,它应该从屏幕上消失。 我可以用音序器播放midi,但不知道如何让音符播放,或者何时停止播放音符。 我研究过ControllerEventListeners和MetaEventListeners,但仍然不知道如何做到这一点。 任何帮助都将不胜感激。

  • 问题内容: 如何使用Java增加输出的WAV音频流的音量?我在使用各种Java TTS引擎和合成语音的输出量时遇到问题。有可以用来调高音量的API调用或doo- hickey.jar吗? 问题答案: 如果您使用的是Java Sound API,则可以使用MASTER_GAIN控件设置音量。

  • 开始播放音乐和音效后,你可能需要对它们进行一些控制,比如暂停、停止、恢复。这很容易完成,下面介绍: 暂停 #include "SimpleAudioEngine.h" using namespace CocosDenshion; auto audio = SimpleAudioEngine::getInstance(); // pause background music. audio->pa