Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 一般来说,MIDI文件播放是如何处理的?_Android_Android Mediaplayer_Playback_Midi - Fatal编程技术网

Android 一般来说,MIDI文件播放是如何处理的?

Android 一般来说,MIDI文件播放是如何处理的?,android,android-mediaplayer,playback,midi,Android,Android Mediaplayer,Playback,Midi,我正在编写一个android应用程序,涉及MIDI文件播放。我想使用Android的动态回调方法来可视化声波,它看起来像这样: mVisualizer.setDataCaptureListener(new Visualizer.OnDataCaptureListener() { public void onWaveFormDataCapture(Visualizer visualizer, byte[] bytes, int samplingRa

我正在编写一个android应用程序,涉及MIDI文件播放。我想使用Android的动态回调方法来可视化声波,它看起来像这样:

 mVisualizer.setDataCaptureListener(new Visualizer.OnDataCaptureListener() {
        public void onWaveFormDataCapture(Visualizer visualizer, byte[] bytes,
                int samplingRate) {
            mVisualizerView.updateVisualizer(bytes);
        }

        public void onFftDataCapture(Visualizer visualizer, byte[] bytes, int samplingRate) {}
    }, Visualizer.getMaxCaptureRate() / 2, true, false);
}

据我所知,位深度和采样率是计算机用于录制/播放音频的两个参数,但这是否也适用于MIDI文件格式?正如我所读到的,其他文件格式(如mp3和wav)包含“实际”音频信息,但MIDI仅包含指令,并且只有在播放MIDI文件时才会创建音频。因此,如果我播放MIDI文件而不是mp3文件,我仍然能够获得波形播放参数吗?

是的!无论音频格式如何,都将捕获声波。

我相信您可以在互联网上的许多地方找到有关MIDI标准的信息。但简单地说,您是正确的:MIDI由指令组成,这些指令按时间顺序排列,指定在不同时间打开或关闭哪些音符,以及其他表达式指令等。它不包含任何波形或音符质量的内容。这是音调发生器或MIDI解释器的工作。大多数声卡都有内置的音频发生器。MIDI中没有“波形”信息。但您知道在播放时,MIDI解释器是否会生成波形信息吗?在某些时候,必须生成波形,但可能无法捕获。不过,有很多方法可以捕捉到它。在某些情况下,某些声音软件可能支持使用声卡的功能从MIDI生成WAV文件。我还用一张声卡演奏了MIDI,并用声卡中的唱片捕捉到了它(或者可能是第二张声卡,我不记得了,很久以前)。它成功了!XD我刚刚测试了它,我确实从MIDI回放中得到了波形数据回调。