Note stack/priority


#1

Hope I've put this in the right section, seems like it's about object behaviour rather than patching.
I've noticed that the midi input object doesn't seem to have any kind of note priority (high/low/last), which wouldn't matter for sequencing but doesn't make for a very nice keyboard action. In fact monophonic patches play more like a polyphonic patch that only has one voice, with new notes voice stealing from old ones but not 'giving the voice back' after they're released.

I'm very new to Axoloti so perhaps I'm using the wrong object? If not, may I suggest a 'mono' MIDI input with an attribute to select note priority? I did do a forum search, but apologies if I missed something.


#2

The "midi/in/keyb zone lru" has last note priority. Highest or lowest note priority is currently not implemented.


#3

Ah cool. I didn't try that one because I wasn't looking to use keyboard zones. I guess I can just set the zone to encompass the entire keyboard? Out of interest, why does this object have a note stack and the non-zoned one not?

p.s. Selectable low/high/last priority would be great, even if only for the zoned version. I was making a 'string machine' style patch and they usually had a monophonic bass voice that used low note priority to beef up the bottom note in a chord.


#4

I think this will come, once we turn our eyes towards 'user definable' voice allocation... currently the 'algorithm' used for allocation, is defined in java code*, so we need to move this to where it can be controlled by axoloti objects.. but obviously in a very efficient manner.

(* this is why you see them as a setting in patch settings)


#5

I think I've found a bug in "midi/in/keyb zone lru". The retriggering gate outlet does retrigger when a new note is played legato, but it doesn't retrigger the still-held previous note. At least I'm guessing it's a bug, usually when a synth is set to retrigger it retriggers every note. Is it like this by design?


#6

I'll look into it and add highest/lowest note priority mono keyboard objects.


#7

Hey ! Bumping this up !
I'm willing to make some tests by stripping some comparator objects and see if I make my way into a 3, 4 voices lowest note priority filter.

Its a really useful function to have in certain setups and I could not find other solutions yet .

Did anyone walked this path before in all this years ?


#8

Hi DrKoma,
I was looking at this too and I found this thread where @samgrober shared a subpatch to output all the notes from a polyphonic subpatch, and with this and some comparators I was able to get the lowest note from a chord.
Here is a screencap of both patches:
Subpatch:

Patch:

I hope this helps :slight_smile:


Polyphonic voice allocation from subpatch?
#9

I think this should be quite easy to do if we add an extra module in the main parent.
As midi just comes in as a stream of serial data, which could then be send internally further to the main patch for monophony or to a patcher object in case of polyphony, we can save the incoming midi notes into a simple table.
Each new note would add into the table and when a saved midi-note gets it's off message, it would be removed from it. If there's still another note before it which hasn't been removed, it could be retriggered using the same data and goes off if it finally gets its midi-note-off message, repeating this till the whole table is empty.
And as we're using a table, it's easy to quickly find the lowest, highest, middle, oldest, newest, loudest or whatever note..


#10

last priority is working and giving back voices :slight_smile:


#11

midi note priority.axp (53.1 KB)