Best practices to handle monophony

This forum is for developers of Rack Extensions to discuss the RE SDK, share code, and offer tips to other developers.
User avatar
RE Developer
Posts: 338
Joined: 21 Apr 2016
Location: Las Vegas

Post 08 Jun 2021

Hi guys

I am just wondering how a plugin should react if its polyphony is set to 1 (so no polyphony) and it receives multiple notes (for example coming from a chord player). Are there standards? Best practices?

I guess the question extend to polyphony set to N and it receives M notes with M > N.

How did you guys handle this use cases in your plugins?


Posts: 1189
Joined: 03 May 2020

Post 08 Jun 2021

I'm not an RE dev but I know what you are asking. The term for what you are asking about is Note Priority.
Some synths, hard or soft, have it as a user setting offering a choice of some or all of:
- Highest Note
- Lowest Note
- First Note
- Last Note

In each case that is the note that is used when notes overlap. The one you usually want on a monosynth is last note priority so that the new note plays as soon as it sees it rather than hanging on to the previous note whilst your sluggish fingers release that key!

Posts: 45
Joined: 10 Dec 2017

Post 17 Jun 2021

A great question, and one I've been thinking about myself on a 'back burner' level. The Quad Note Generator Player has a switch to select the Output mode, which I think would capture all the options commonly used, which include Poly (not relevant to this thread), Mono Hi, Mono Lo, Mono Last, and "Mono Line," which I feel is pretty specific to the Quad Note Generator itself and probably not applicable in most other cases. In the Quad Note Generator manual there are even illustrations of how these different modes work.

I'm working on an extension that outputs Note and Gate CV data and have been thinking about polyphonic data going into the device. In the code I've shamelessly stolen from the Hello World Tutorial to detect note events, it looks like it loops through the list of code notes. I've got my plugin's logic hinged on when one of those notes doesn't have a velocity of 0, and when I come across one, I take action and break out of the loop and effectively ignore any other notes that might be on above this first note. I'm guessing this would be a "Lowest Note" approach to monophony, and I could easily cobble together a "Highest Note" approach by just going through the note list from 127 to 0 rather than from 0 to 127. Last Note monophony I would have to think harder about, as I've not worried about time (YET) in my extension beyond basic use of the RenderBatch method.

  • Information
  • Who is online

    Users browsing this forum: CommonCrawl [Bot] and 0 guests