List storage & queries
Oct 22, 2011 at 2:17am
List storage & queries
Hello C74 community! I’m relatively new to Max, but not to programming.
I’ve built a virtual MIDI keyboard, analog synth, and sequencer. In a patcher, I have two separate inlets recieving unique, equal KEYDOWN and KEYUP values, and a third inlet recieving velocity information (to be ignored in case of a KEYUP message).
All that’s left to do (in order to make the connection between the PC keyboard and sequencer/synth) is to take the keydown messages, store them in a list, and wait for a corresponding keyup message to remove the keydown from the list (firing a noteoff). This list will then be sent to an outlet, at which point will be converted to raw midi data. I need to store it like this so that I can mimic my own “flush” object, in case a note gets stuck in the noteon position.
Any ideas? Perhaps there’s a better way to go about this entirely?
Oct 22, 2011 at 2:49am
[zl sub] can find matches in a list, but for your purposes, you could probably just use [makenote]. Maybe look to [borax] depending on what you eventually want to happen, it’ll give you the current status of the notes it’s holding.
you can use [sel] for basic number matching as well, use multiple ones to get “polyphony”. And the [kslider] has some storage/flush features built-in…you don’t have to have it interactive (or even visible) to use these. They can be very handy.
And when working with anything MIDI, always have a
[ctlout 123 1]
…sending this a “1″ will turn off all MIDI notes on channel 1, “2″ for channel 2, etc. [uzi 16 1] into it will be an All Notes Off for all 16 channels. tie it to your ESC key so you don’t let stuck notes drive you crazy…stuck notes require a corresponding note-off, a channel notes-off, or quitting Max to shut them up!
Oct 22, 2011 at 4:08am
Thanks a million! Borax seems to suit my needs perfectly.
Oct 22, 2011 at 5:35am
Hrmm… ok so borax was working fine a bit ago, but after messing with an onslaught of noteons it’s not outputting any data? It’s rendered completely unresponsive to anything I plug into it…
I’ve tried sending a bang to the rightmost inlet (to reset borax and release noteons), but that didn’t seem to do the trick. Neither did a bang to the leftmost inlet. Neither did the ctlout trick (if I’m doing it right). I’ve even tried restarting Max, as well as my laptop, to no avail!
I’m not hearing any audio, and when I open my sequencer patcher (contained in the same project), it seems to output to midiout just fine. So it’s just something wrong within my keynote patch. Everything in the patch works fine until it reaches borax, though…
I’ll include the patch here:
Oct 22, 2011 at 6:19am
Nevermind, I figured it out… It was actually a problem with my keymapping patch. Fixed!
You must be logged in to reply to this topic.