#9 Need monophonic note assignement logic

closed
Nick Copeland
5
2009-02-24
2009-01-22
Anonymous
No

The current note logic is a little underwhelming when emulating the old mono synths, it uses most recent key with no history. This should be kept as an option since there were plenty of later mono's that used it. It does not do a good job of emulating the groovy legato mode of the highest note precedence. We need something like the following spec:

Mode:

Last Note Precedence: the current algorithm
Lowest Note Precedence: KEY_ON for first note, KEY_REON for subsequent events, optional of note_off events.
Highest Note Precedence: KEY_ON for first note, KEY_REON for subsequent events, optional of note_off events.
Duophony: highest and lowest note events (only if '-voices 2' specified).

For duophony the emulator would have to decide what to do with the voices, ie, which one plays which oscillators since that was generally how they worked. This mode may be dropped into a separate enhancement depending on how this one progresses, ie, how much extra impact it takes.

For implementation I need some kind of logic for which notes are pressed, something that is partially done for the arpeggiator code however that is not really well implemented, it has a note stack that is ordered by time, that is kldugy to manage, is a little unpredictable and so it should be collapsed back on to this new implementation. This would allow the arpeggiator to scan through notes ordered by key number rather than time: The alternative of turning this stack into one ordered by key id using a sort algorithm is ugly.

Discussion

  • Nick Copeland
    Nick Copeland
    2009-01-22

    • labels: --> MIDI Library
    • assigned_to: nobody --> ncopeland
     
  • Nick Copeland
    Nick Copeland
    2009-02-22

    An implementation of monophonic note logic shipped with 0.30.6. The code was only lightly tested but worked for high note precedence, low note precedence, glide, retriggers, last note precedence. The polyphonic code did not seem affected by the changes but that was largely due to flag checks.

    The code puts the mono synth with precedence into 'continuous' mode where the voice never stops generating a signal however the signal might be zeros due to the closed envelopes. Last note precedence still behaves as per the polyphonic process, ie, the voices will only generate sound when gated by the envelopes.

     
  • Nick Copeland
    Nick Copeland
    2009-02-23

    • status: open --> pending
     
  • Nick Copeland
    Nick Copeland
    2009-02-24

    • status: pending --> closed
     
  • Nick Copeland
    Nick Copeland
    2009-02-24

    Closing this feature request. Any issues found with its operation can be taken up with bug reports.