[gmpi] Re: Topic 6: Time representation

  • From: Tim Hockin <thockin@xxxxxxxxxx>
  • To: gmpi@xxxxxxxxxxxxx
  • Date: Tue, 29 Apr 2003 10:44:04 -0700 (PDT)

> One can imagine using GMPI to implement a MIDI only plugin.  It seems that
> MIDI data should be processed solely in musical time.

With knowledge of tempo and friends, you HAVE knowledge of musical time.

> The host could convert musical events to a sample timeline, but what if we
> adopt a note event structure that has an implicit duration?  Then the
> note-off time (in the future) become corrupt if the tempo changes between

Let's not do that - as I mentioned in my other post - there is no future
beyond this processing block.  By the time a processing block begins, all
events for that block are delivered.  The sequencer will send you a note_off
when it is ready.

> MIDI quantizers and arpeggiators fall into this category.  It's not only
> about being able to deal with tempo changes, its about being able to
> position musical (output) data on the song's timeline without worrying the
> position might change later.

Keep your beliefs about the future internal.  An arpegiator knows that the
next note must be played in (for example) 1 beat.  Store the tick position
of it internally.  If you're an arpegiator, you are also tracking tempo and
meter and play position.  If any of those change, you have to adjust your
notion of the future, but that is OK.  When the process() block comes up
which includes the tick you want, send your event.

Maybe I am missing something?

----------------------------------------------------------------------
Generalized Music Plugin Interface (GMPI) public discussion list
Participation in this list is contingent upon your abiding by the
following rules:  Please stay on topic.  You are responsible for your own
words.  Please respect your fellow subscribers.  Please do not
redistribute anyone else's words without their permission.

Archive: //www.freelists.org/archives/gmpi
Email gmpi-request@xxxxxxxxxxxxx w/ subject "unsubscribe" to unsubscribe

Other related posts: