[Stk] MIDI event timing relative to audio stream

Tim Grant tim at rootdown.net
Tue Apr 12 14:05:14 PDT 2022


Hello!

I've recently started prototyping a synthesizer project using RtAudio and
RtMidi. I'm doing the initial development in Windows and I plan to
eventually port the project to something like a Raspberry Pi if the
prototype goes well.

I have the audio output and MIDI input working, and I'm starting to think
about triggering the synth voices with MIDI notes. I would like to keep the
jitter between the notes and the triggered sounds low, but I'm not quite
sure how to achieve this with these two APIs.

A diagram might be helpful here:
MIDI      -----N----------------------N-------------------------->
Input          |                      |
               |                      |
Audio     |----*-----|----P-----|-----*----|-----P----|---------->
Stream       Frame 1    Frame 2    Frame 3    Frame 4    Frame 5

My thinking is that I need to know at what point in the current audio frame
an MIDI note arrives. From the diagram, assume a note (N) arrives at the
moment corresponding to the 5th sample in Frame 1; knowing this, I can
begin playback at the 5th sample on the next frame (P). This way, the
latency is held constant at 1 frame and the amount of jitter is minimized.

So with that long-winded introduction out of the way, my question is:

Is it possible to recover the timing of MIDI events relative to the audio
stream? I can't see how to do this using the delta time provided with the
MIDI note and the stream time provided by RtAudio, but my hope is that I'm
missing something.

Thanks!

Tim
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://cm-mail.stanford.edu/pipermail/stk/attachments/20220412/37f951f9/attachment.html>


More information about the Stk mailing list