Hi Guenter, Yes it is true that the standard MIDI Port code in Portcls.sys will expand running status before returning it in KSMUSICFORMAT chunks. As for the timestamp issue, it does appear that as far as capture is concerned only the TimeDeltaMs is filled in by the MIDI Port code. The render code does appear to be using both the presentation time and the TimeDeltaMs for its timestamp. I don't think I fully understand your question, though - what exactly are you trying to accomplish? ::Dave Miller -----Original Message----- From: wdmaudiodev-bounce@xxxxxxxxxxxxx [mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Guenter Hildebrandt Sent: Thursday, October 02, 2003 7:58 AM To: wdmaudiodev@xxxxxxxxxxxxx Subject: [wdmaudiodev] AVS and Midi Hi, I'm developing a AVStreaming driver linked with ks.sys under Windows XP. The driver has a Filter with a Midi source pin. I get the data from the hardware as a byte stream without limits. I indicate the midi data using the data structure KSMUSICFORMAT as a header for each buffer. It seems that Windows requires a complete Midi message in each buffer. So I have implemented a Midi parser which knows the size of each Midi sample and assembles the midi messages. Midi allows a special mode called "running mode", where the device sends a command e.g. 0x90 (note on) and data for several notes with out repeating the command. Now my question: Is it correct that the parser translate the following message 0x90 0x34 0x45 0x35 0x45 0x36 0x45 into Buffer 1: 0x90 0x34 0x45 (note on, note 0x34, after touch 0x45) Buffer 2: 0x90 0x35 0x45 Buffer 3: 0x90 0x36 0x45 The driver changes the data stream in this case. If the parser works like this: Buffer 1: 0x90 0x34 0x45 (note on, note 0x34, after touch 0x45) Buffer 2: 0x35 0x45 Buffer 3: 0x36 0x45 programs like CuBase does not get the notes 0x35 and 0x36. A second problem is the time stamping of Midi data. The DDK says: put a presentation time stamp in the KSSTREAM_HEADER and in the KSMUSICFORMAT.TimeDeltaMs the relative presentation time. This does not work with Cubase. All notes are put to time 0. During experiments I have found the following solution: - no presentation time in KSSTREAM_HEADER - the complete timing in KSMUSICFORMAT.TimeDeltaMs, the time stamp is derived from the system time. - the zero point is set on the call SetDeviceState: KSSTATE_RUN With this method I can loop a midi stream through my hardware. The first time I do so with Cubase I get a time delay of -30ms. The recording data are 30 ms before the playing data. The second and all further runs I get a delay of 8 ms which may the delay in the hardware. This implementation is very different to the documentation. Can somebody give me a hint or comment to this. Thanks Guenter ****************** WDMAUDIODEV addresses: Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx Subscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe Unsubscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe Moderator: mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx URL to WDMAUDIODEV page: http://www.wdmaudiodev.de/ ****************** WDMAUDIODEV addresses: Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx Subscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe Unsubscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe Moderator: mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx URL to WDMAUDIODEV page: http://www.wdmaudiodev.de/