Velocity: Kineme Global Input All MIDI Notes

jersmi's picture

Velocity output is normalized using the Kineme Global Input All MIDI Notes, correct? Seems I am getting only 1's and 0's for velocity, like gates. What am I missing?

jersmi's picture
MidiTools: access denied

Also, searching Kineme for MidiTools leaves me with "Access Denied" when trying to visit the "official" page(s)....

jersmi's picture
Re: Velocity: Kineme Global Input All MIDI Notes

Here's a qtz. Needs midi input. Any help understanding what's going on with the Kineme midi patch, or advice on other good ways to get midi velocity, would be greatly appreciated.

Edit: attached a Live project file as well as a test .mid file to demonstrate "problem" (bug? expected behavior?). I am using an IAC midi port. The general question is, how can I get polyphonic velocity into QC as a structure?

PreviewAttachmentSize
MidiViz.qtz22.54 KB
midiTester Project.zip21.65 KB

jersmi's picture
Re: Velocity: Kineme Global Input All MIDI Notes

And one more qtz, not using kineme, using stock Midi Notes Receiver patch instead. I'm probably doing something stupid -- getting what looks like good data when rolling over ports but not rendering inside the iterator.

PreviewAttachmentSize
MidiViz2.qtz23.14 KB

jersmi's picture
Re: Velocity: Kineme Global Input All MIDI Notes

Just found this post, which might provide some answers: http://kineme.net/forum/Discussion/DevelopingCompositions/MIDINoteDetect...

Still, if anyone has a chance to look, maybe someone has some insight.

itsthejayj's picture
Re: Velocity: Kineme Global Input All MIDI Notes

This seems to be working fine for me!? midi velocity are being displayed. And the composition seems to be working as it is meant to be.

I am using MIDI tools dated June 23 2009

itsthejayj's picture
Re: Velocity: Kineme Global Input All MIDI Notes

First thing to note here is to change the middle C on the MIDI note receiver down two octaves to 3. There is lots of information on this around. Its not a bug just the way QC handles things

jersmi's picture
Re: Velocity: Kineme Global Input All MIDI Notes

Thanks itsthejayj, good to know the Kineme patch is working for you. I do have the version of MidiTools dated from 2008, but I still can't access the webpage to try anything newer. Hope it works like you say!

Transposing octaves is not the issue. It's only velocity that's not working. I have behavior as expected for gates.

And, actually, the Toneburst javascript midi detector is quite a nice thing to explore without the Kineme plugin.

itsthejayj's picture
Re: Velocity: Kineme Global Input All MIDI Notes

Velocity is working as expected, you need the new midi tools plugin.

Sound like you haven't ticked the beta tester box in your kineme account settings.

Goto my account bottom left of this page, then in edit tick the box that says I would like to beta test new and updated software.

then go to http://kineme.net/release/MIDITools/20090623

watchout of the global midi note out bug though.

Incidentally i'm currently working on using OSC to output my midiclip information to quartz composer, no need for an IAC driver :)

harrisonpault's picture
Re: Velocity: Kineme Global Input All MIDI Notes

The structure returned by Kineme's Global Input All MIDI Notes is not sorted, it is keyed. So for example the Note 60 on/off value is somewhere in the "Gates" substructure, with the key "gate_60", and the Velocity value for Note 60 is somewhere in the Velocity substructure with the key "velocity_60". Therefore your iterator needs a bit of logic to pull together the gate 60 and velocity 60 values to present on the color organ. Same goes for "Pressure" if you receive after-touch from your MIDI input source.

I have attached a version that does this key-extraction logic, and also added a pressure sensitivity so the notes get wider if the pressure is higher.

cheers, Paul

PreviewAttachmentSize
MidiViz_fixed.qtz26.49 KB

jersmi's picture
Re: Velocity: Kineme Global Input All MIDI Notes

That's the one, harrisonpault -- keyed structures -- great answer! And the method you used for string / key matching is enlightening as well (for this non-programmer). Thanks a ton.

And, yes, the beta testing setting was unchecked in my account. And yes, I see now that velocity works with the newer and not with the older version. It's been selected since I started using kineme stuff. I forgot about it and somehow it got unchecked. Who knows how. Sigh. Thanks for your patience.

jersmi's picture
Re: Velocity: Kineme Global Input All MIDI Notes

As a footnote, Pressures in the Kineme patch is technically AfterTouch, according to the midi spec, since it is per note (whereas pressure is one message for the entire keyboard).

http://home.roadrunner.com/~jgglatt/tech/midispec/pressure.htm

jersmi's picture
Sorting the Key Structure Before the Iterator

So everything works as expected, except I want to add a feature, which introduces another problem:

I'd like to use Structure Range before the Iterator for midi keyboards with different amounts of keys. However, the "gate_", "velocity_" and "pressure_" key structures are not sorted.

Hoping Structure Sort could do the job but I can't get it to work. Then there's javascript, which might be good because there's always 128 members that always need to be in the same order (though will Gates, Velocities and Pressures match up if sorted?). I'm digging around looking for solutions in JS but can't get it yet. Sigh.

PreviewAttachmentSize
MidiViz3.qtz43.04 KB

jersmi's picture
Re: Sorting the Key Structure Before the Iterator

This solution uses a separate iterator for sorting. Using harrisonpault's nice method for removing / replacing strings within keys, sorted members are queued for output. This sorted structure then gets sent to the next iterator with consumer patches. This allows doing stuff between the iterators, like setting structure range for number of members, for midi input devices with specific numbers of keys, etc. :)

PreviewAttachmentSize
MidiViz4.qtz38.73 KB