Hello, Since Todor told me i can't get a periodic advise from the clock , i try to use the ReferenceTime timestamp on my midi events. But there is few things I want to know: When the midi in port receive an event, I record it into a "Pattern" (Own made) with the reference_Time given by the clock REFERENCE_TIME rt; DWORD dwGroup; DWORD cb; BYTE* pb; while (m_pBuffer->GetNextEvent(&rt, &dwGroup, &cb, &pb) == S_OK) { if (pb[0] != 0x1A && pb[0] != 0xFE) { CALL_EVENTS( MidiInEvent, (this, DMMidiEvent(rt, dwGroup, cb, pb[0], pb[1], pb[2])) ); // here I create my MidiEvent and call an event } } //--------------------- OnInitRecord() { m_rtStartTime = m_pDirectMusic->GetMasterClock()->GetTime(&rt); //this is for retrieve the time when record start } //-------------------- So after recording my Midievents I have to set the reference time correctly: //-------------------- For (int I = 0; I < MyPattern.GetMidiEventCount(); i++) { // assume pEvent is a valid MidiEvent in the list // --- Convert Current time to music time --- // MUSIC_TIME Mt = 0; m_pDMusic->GetPerformanceInterface()->ReferenceToMusicTime(pEvent->m_Ref Time, &Mt); // --- convert the Start Time to music time --- // MUSIC_TIME StartMt = 0; m_pDMusic->GetPerformanceInterface()->ReferenceToMusicTime(m_llPlayTime, &StartMt); // --- Set the relative time --- // pEvent->reftime = pEvent->reftime - m_rtStartTime; //now I have a relative time // --- Set the relative Musictime --- // pEvent->m_MusiTime = Mt - StartMt; } for playing I'm doing the same reversed function: // assume pEvent is a valid MidiEvent in the list REFERENCE_TIME rt = 0; MUSIC_TIME MtOrigine = 0; MUSIC_TIME MtTotale = 0; MtOrigine = pEvent->m_MusiTime; MtTotale = StartMt + MtOrigine; //Convert total to REFERENCE_TIME m_pDMusic->GetPerformanceInterface()->MusicToReferenceTime(MtTotale, &rt); // now send the event to the port // assume dwMsg is a valid DWORD msg hr = m_pBuffer->PackStructured(rt, 1,dwMsg); hr = m_pPort->PlayBuffer(m_pBuffer); this work pretty well, the probleme is for playing, it play well but I can't change the tempo, if I do: // assume fTempo is ok hr = m_pDirectMusic->GetPerformanceInterface()->SetGlobalParam( GUID_PerfMasterTempo, (void*)&fTempo, sizeof(float)); So My question is : Why the tempo of the playback never change ? does the convertion from MUSIC-TIME to REFERENCE_TIME is dependant of the performance tempo ? If not what can I do ? Please HELP !!! Thanks in advance