I just got a KMI Boppad in the mail and while it’s nice and responsive for doing what other pad controllers do, I’d like to use its robust midi specs for sharpening my Max skillz, and I’ve gotten great help from this board before, so I thought I’d start here.
What I want to do:
Similar to getting a sound by scraping or scratching a surface, I’d like to touch the surface of the boppad to trigger a sound which would then keep playing and would vary in pitch based on how fast I moved along the radius axis of the boppad.
Midi output available from the boppad:
“• Initial Radius - where you initially strike the surface will be used.
• Radius - the position of where you are pressing onto the surface.
• Relative Radius - the difference between where you are currently pressing the surface and where you initially struck the surface.”
What I’ve figured out so far:
Starting and stopping the sound is the easy part: those are note on/off messages, routed in Max like you’d route any other note on/off message.
It’s capturing the speed of the scrape that has me puzzled. I’m assuming that the process will look something like:
*note on message begins the process
*process counts tiny chunks of time
*process divides timespan by difference in midi values
*difference converted by [computer magic] into a new cc that can be routed to pitch
Where do I start?
Recommendations for relevant max object, tutorials, or example patches are all welcome. Thanks in advance!
I think MAX has some sort of timing object that you can poll for the elapsed time since the last bang? I that would make the timing portion less complex.
This is better than what I suggested because it will go to zero without having new CC values coming in. Just pull out the ‘abs’ if you want negative values.
Man, everything has been helpful, thanks y’all.
I never took calculus, so I had to go google ‘derivative’, but this is all seeping in slowly.
Later tonight I’ll try that bit of code that you posted, _mark, and see if I can get something to do something.