2012-01-19 6 views
0

私はiPhone開発でBASS_MIDIを使用しています。このようなファイルからmidiStreamを作成します。BASS_MIDI_StreamEventゼロの位置

midiStream = BASS_MIDI_StreamCreateFile(false, filePath, 0, 0, 0, 44100); 

次に、音量とテンポを変えて再生/位置/一時停止します。 私はそれは良い作品この

BASS_MIDI_StreamEvent(midiStream, 0, MIDI_EVENT_TEMPO, currentTempo);//microseconds per quarter note 
BASS_ChannelPlay(midiStream, false); 

のように再生する前に(再生速度制御のための)テンポを変更、しかし、私は一つの問題があります。ミッドストリームの位置が0の場合、テンポは変更されず(ボリューム、別のBASS_MIDI_StreamEventも機能しません)。この

BASS_ChannelPlay(midiStream, false); 
BASS_MIDI_StreamEvent(midiStream, 0, MIDI_EVENT_TEMPO, currentTempo);//microseconds per quarter note 

のような変更コールの順序は、私は(いくつかの遅れを持っている再生が正しくないスピードで始まり、それが第二の半分の後に変更した場合は 、以下。 は、私はそれを解決することができますか?コールする方法はありますかゼロ位置でプレーする前にイベント?悪い英語のための

PS申し訳ありません。

答えて

0

回答がoffecial BASSのフォーラムに設立されました。

あなたのイベントは内のイベントによって上書きされていることがある問題MIDIファイルこれを避けるには、「ミキシム時間」のBASS_SYNC_MIDI_EVENTシンクを使ってファイルのイベントをオーバーライドすることができます。このデモはMIDITEST例で見ることができる(他のプラットフォームBASSMIDIパッケージのいずれかからそれを得る)...

{ // override the initial tempo, and set a sync to override tempo events and another to override after seeking 
    SetTempo(TRUE); 
    BASS_ChannelSetSync(chan,BASS_SYNC_MIDI_EVENT|BASS_SYNC_MIXTIME,MIDI_EVENT_TEMPO,TempoSync,0); 
    BASS_ChannelSetSync(chan,BASS_SYNC_SETPOS|BASS_SYNC_MIXTIME,0,TempoSync,0); 
} 

イベントがMIDIファイルの値にリセットされますので、それはまたBASS_SYNC_SETPOSの同期を設定しています。注シークするときも。

関連する問題