[wdmaudiodev] Re: MIDI Capture Timestamping

  • From: "Stephan Kappertz" <stephan@xxxxxxxxxx>
  • To: <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Wed, 6 Aug 2003 15:31:10 +0200

Apparently the problem is that the user mode call timeGetTime() and the
kernel mode call KeQueryPerformanceCounter() do not increment with the same
rate on some systems.

DirectMusic MIDI Timestamps are usually calculated using
KeQueryPerformanceCounter() while Cubase & Co use timeGetTime() for their
internal timing. Thus the MIDI message time stamp is drifting on those
systems.

As a side note: Cubase supports using ASIO driver time stamps to calculate
its clock. Since the ASIO dll runs in user mode, it's up to the driver to
use one or the other time stamping method.

If ASIO uses timeGetTime and MIDI uses KeQueryPerformanceCounter, the MIDI
time stamps will drift as well.

    Stephan


----- Original Message ----- 
From: "Mathieu Routhier" <MRouthier@xxxxxxxxxxxxx>
To: <wdmaudiodev@xxxxxxxxxxxxx>
Sent: Wednesday, August 06, 2003 3:01 PM
Subject: [wdmaudiodev] Re: MIDI Capture Timestamping


> I should have given this address in the first place:
> http://forum.cubase.net/forum/Forum2/HTML/038028.html
>
> It describes the problems that people have seen with sonar and cubase.  It
> does not refer to DirectMusic drivers; this is mostly a musician's forum.
I
> am not sure about this but I guess legacy midi drivers are also affected.
>
> You must be right when you say it is possible to use a different master
> clock.  Can you explain how to do this?  It's probably done by connecting
> things in the filter graph.  Is it?
>
> Mat
>
> -----Original Message-----
> From: Evert van der Poll [mailto:e.j.van.der.poll@xxxxxxxxx]
> Sent: Tuesday, August 05, 2003 5:46 PM
> To: wdmaudiodev@xxxxxxxxxxxxx
> Subject: [wdmaudiodev] Re: MIDI Capture Timestamping
>
> Hi,
>
> I'm currently developing a DirectMusic driver for a MIDI device and I got
a
> little confused by your answers. It was my understanding that it was
> possible for an application to provide it's own masterclock, which would
> then be used by all active DirectMusic devices. This can be very useful,
for
> instance if you want to link everything to the samplerate of an audio
> device.
> I am curious about the problem you described with Sonar and Cubase. I have
> noticed some strange things with the timestamping of input messages
myself.
> My driver sends the incoming MIDI data as unprocessed bytes. Somewhere in
> the internals of the DirectMusic API these loose bytes are made into full
> MIDI messages. These I can then receive by calling
IDirectMusicPort::Read().
> But the timestamp I get with that function is not the timestamp that the
> driver gave the incoming MIDI bytes. I would suspect that the full MIDI
> message would get the timestamp of either the first or the last byte of
> which it consists. But apparently that is not the case.
> You mention that the applications (Cubase or Sonar) can be configured to
> ignore timestamps? How is that done?
>
> Evert
>
>
>
>
> ----- Original Message -----
> From: "Mathieu Routhier" <MRouthier@xxxxxxxxxxxxx>
> To: <wdmaudiodev@xxxxxxxxxxxxx>
> Sent: Tuesday, August 05, 2003 11:00 PM
> Subject: [wdmaudiodev] Re: MIDI Capture Timestamping
>
>
> > The master clock is provided to you as a reference clock.  When the note
> > comes in from your hardware, the time stamp should be relative to this
> clock
> > depending on how you want it time-stamped (how long before or after the
> > current time, if that applies).  Why do you need to use another clock?
> >
> > Btw, lately, we had to debug our midi input port timestamps because of a
> > problem we noticed with sonar: there seems to be an increasing skew
> between
> > the application clock and the midi timestamps.  The longer the
application
> > was opened, the longer it took for a note to be processed by the
> > application.  Restarting the application reset the skew.  When the
> > application was configured to ignore the timestamps, the problem
> > disappeared.  We finally found out that the problem was in the
> application's
> > way to handle the timestamps.  Apparently Cubase has the same problem.
> >
> > I suppose some of you already dealt with this (or at least heard about
> this
> > issue).  I was wondering if there was something you'd like to add to the
> > discussion.
> >
> > Mat
> >
> > -----Original Message-----
> > From: BlazeAudio Developer [mailto:developer@xxxxxxxxxxxxxx]
> > Sent: Tuesday, August 05, 2003 3:09 PM
> > To: wdmaudiodev@xxxxxxxxxxxxx
> > Subject: [wdmaudiodev] MIDI Capture Timestamping
> >
> > Can anybody tell what the ullPresTime100Ns in DMUS_KERNEL_EVENT is
> supposed
> > to be?
> >
> > It's in 100 ns units - but is it the absolute system time or is it
> relative
> > to some other event.
> >
> > We have a MIDI capture driver(portclass miniport) where we cannot just
use
> > the MasterClock object provided in IMiniPortDMus::NewStream call.
> >
> > Thanks.
> > Devendra.
> > ******************
> >
> > 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/
> ******************
>
> 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/

Other related posts: