2013-07-24 26 views
0

我正在編程一個涉及MIDI文件播放的Android應用程序。我想用Android的動態回調方法以可視化的聲波,它看起來是這樣的:如何處理一般的MIDI文件播放?

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文件,我還能得到波形播放參數嗎?

+0

我相信你可以在互聯網上的許多地方找到關於MIDI標準的信息。但簡單地說,你是正確的:MIDI是由指令組成的,它們按時間順序排列,指定在不同時間上下或上下的筆記以及其他表達式指令等。它不包含任何波形或記錄高質量的內容。這是音頻發生器或MIDI解釋器的工作。大多數聲卡都有內置的音源。 MIDI中沒有「波形」信息。 – lurker

+0

但是,您是否知道播放過程中MIDI解釋器是否會生成波形信息? – StephenChen

+0

在某些時候必須生成一個波形,但它可能不會被捕獲。但是,有方法可以捕獲它。在某些情況下,某些聲音軟件可能支持使用聲卡的功能從MIDI生成WAV文件。我還用聲卡播放了MIDI,並用聲卡的錄製內容捕獲了它(或者它可能是第二張聲卡,我不記得 - 很久以前)。 – lurker

回答

1

所以是的!無論音頻格式如何,聲波都會被捕獲。