Forums > MaxMSP

Trying to build a teaching tool!

October 18, 2011 | 1:43 pm

Hey everyone,

I’m a music teacher and I travel from school to school with six midi keyboards and six laptops teaching piano through children’s learning software. I’m trying to build a different program to use with the kids that will make their group piano playing easier and more fun.

What I’m currently stuck on is this:

I have a handful of loops that go well together. If I hit two keys at the same time, the loops play together in snyc. HOWEVER, if I start one and then try to add the other a few bars later, they’re never in time (probably because of some delay). I can get them in sync by playing the second loop a little earlier than the start of the next measure, but that won’t work for kids.

What I want to do is have the grooves start on the NEAREST EIGTH NOTE. So if I hit it just before beat 1, it’ll wait to bang until beat 1 comes around on the transport. If I hit it just before the and of three, it’ll fire on the and of three.

I know how to get bangs on specific eigth notes from my transport, but I need to make it so the grooves called up from the keyboard only start on those bangs and nowhere inbetween. Some kind of list that would take in the keyboard input and hold it until the next eigth note tick.

I’ve been trying timepoint, as well as lots of selectors. I’d love to know what people better at this than I am would do in this situation. I feel like I’m overlooking something obvious, or re-inventing something that’s probably already out there (quantization). Finally, I want this program to be as stable as possible because it’s hard to trouleshoot with a bunch of kids in a room playing pianos :-)

Thank you in advance. This program, website, and forum, are awesome


October 18, 2011 | 1:53 pm

[onebang] will be useful here.

If you bang the right inlet when a key is pressed, it will allow one bang to pass through from the left inlet (connect your 8th note bangs to this).

In the meantime, store the MIDI note number of the key pressed in an [i] object by feeding it into the right inlet. Then you can send the quantised bang that comes from [onebang] into the left inlet of [i] to output this number.


October 18, 2011 | 2:03 pm

YES!!

That was easy. THANK YOU!


October 18, 2011 | 2:05 pm

Heh, no problem. I was just revising my post cos on reflection I thought it was a bit brusque. But hey, "give a man a fish…" and all that :)


Viewing 4 posts - 1 through 4 (of 4 total)