• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: DLS MusicDevice and note ordering
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: DLS MusicDevice and note ordering


  • Subject: Re: DLS MusicDevice and note ordering
  • From: Urs Heckmann <email@hidden>
  • Date: Thu, 24 Jul 2003 08:31:07 +0200

Am Donnerstag, 24.07.03, um 01:30 Uhr (Europe/Berlin) schrieb Jeremy Sagan:

I am wondering about this sequence of events and how synth (or synth plug-ins) are expected to behave.

C3-NoteOn time 0
C3-NoteOn time 1000
C3-NoteOff time 1000
C3-NoteOff time 2000

The measurement of time is in samples but does not matter. I would think this sequence would cause the second note on to continue to sound between times 1000 and 2000 but in the case of DLS Musicdevice it does not.

Is this considered a bug?

Jeremy


Hi Jeremy,

dunno in case of the DLS, but I have some general thoughts to offer:

Via the MusicDevice APIs, a plugin may behave "correctly", because there's this NoteInstanceID stuff. - The "logic" is left to the hosting app. Naturally, an MD has to also react on Midi, where an assignment of the NoteOffs is not possible anymore.

There are several possibilities:

a) Make only one Note sound and increment an internal counter for expected Note offs, then hold until NoteOffs == NoteOns for a sounding Note

b) Like a, but play new notes and treat stuff like a FIFO...

c) Ignore subsequent NoteOns and stop the Note on first NoteOff

d) Before a double NoteOn, send yourself a NoteOff internally and stop that on last expected NoteOff

e) like d, but stop the new note on first NoteOff

f) more?

I have seen about all of these implemented in hardware Gear, so there's no common rule I think.

However. Despite I feel that b) is the better solution, I tend to prefer d). So far, I think I only managed to implement e), which was really hard enough...

As a famous developer said, the queueing of Note Events, their Assignment To Voices, Note Stealing and different Play/Trigger Modes is the bigger challenge in Synth Design. More so than any dsp. I tend agree with that 8-)

You can look at my implementation in the Source Code I provided here: http://www.u-he.com/MultiTimbralSynth.sit - The Note Handling stuff is just crazy. It grew to a sort of spagetti code. At least, hanging notes have become seldom.

Just some thoughts...

;) Urs



(Hehe, one could implement two schemes: A "strong" behaviour on MD APIs, and a "weak" behaviour on Midi. But well, that would be overkill, right?)
_______________________________________________
coreaudio-api mailing list | email@hidden
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/coreaudio-api
Do not post admin requests to the list. They will be ignored.
References: 
 >DLS MusicDevice and note ordering (From: Jeremy Sagan <email@hidden>)

  • Prev by Date: MusicEventIterator problems
  • Next by Date: Audio Device minimum buffer size
  • Previous by thread: DLS MusicDevice and note ordering
  • Next by thread: MusicEventIterator problems
  • Index(es):
    • Date
    • Thread