2012-01-19 1 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); 

처럼 재생하기 전에 (재생 속도 제어) 템포를 변경,하지만 난 한 가지 문제가 있습니다. midistream의 위치가 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 파일 이를 피하기 위해 "mixtureime"BASS_SYNC_MIDI_EVENT 동기화를 사용하여 파일의 이벤트를 대체 할 수 있습니다. 이것의 데모는 이벤트가 MIDI 파일의 값으로 재설정되기 때문에

{ // 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); 
} 

참고 그것도 BASS_SYNC_SETPOS 동기화를 설정하는 것 ... MIDITEST 예 (다른 플랫폼 BASSMIDI 패키지 중 하나에서 그것을 얻을)에서 찾을 수 있습니다 추구 할 때.