Programming the Live Step Sequencer to shift multiple notes up/down (need a dynamic bangbang object)

3 posts / 0 new
Last post
bleego
Offline
Joined: 06/05/2010
Programming the Live Step Sequencer to shift multiple notes up/down (need a dynamic bangbang object)

I am building an arpeggiator patch that takes inputs from a Wacom table and controls the live.step object.
 
The main problem I am having at the moment is processing a note offset value, like -3 or +4 to pitch shift each note in the live.step up or down the number of steps corresponding to the offset.  The input could come in at any time, and I want to adjust the values of the notes in the sequence as quickly as possible.
 
In the example Step Sequencer max4live sample instrument, there is a clever live.arrows implementation to control the overall pitch and position of notes within the sequence.  This is exactly what I want to manipulate.  The problem is the API will only allow for one shift at a time.
 
The Step Sequencer will listen for the user to press down the SHIFT key, and then using bangbang, quickly repeat the same value into a prepend object that sends a message 4 times to shift the note values.
 
My ultimate question is how can i make this dynamic?  I need something like a bangbang that can change and rewire itself programmatically to fire off N number of bangs given a change in the incoming note offset value. 
 
Is there a max object that can help me with this?
 
tl;dr - I need help programming something that can be like a dynamic bangbang, and output N number of bangs as quickly as bangbang dynamically based on an int input.

bleego
Offline
Joined: 06/05/2010

Okay so I figured this out using the js object. I wrote an extremely basic script that just interpreted an int input and outputs a bunch of bangs. The code is trivial:


function msg_int(x) {
  for (var i=0; i<x; i++) {
    outlet(0, "bang");
  }
}

I have moved on to other more tedious problems now. If any of you have a better solution than the above, let me know.

mchenetz's picture
mchenetz
Offline
Joined: 09/17/2009

It sounds like you could just use the command, "UZI". Uzi allows you to send a bunch of bangs out of it...

Example:

uzi 5

The above example will send 5 bangs. You can also set a message through the left input to set and trigger the bangs.

Mike