Support |
I forget what the question was, but in general Max/MSP is going to be more powerful than Mobius scripts, not so much due to limitations in the scripting language but due to MSP's object architecture. The Mobius architecture is relatively fixed, you have a great deal of control over how it behaves but you can't add fundamentally new behavior such as your "pedal controlled portamento" example. The tradeoff is that there are things built into Mobius that would be incredibly difficult to do in Max. Not impossible mind you, but hard enough that no one would bother. (Your question about Mobius buffer handling touches on some of that, I don't have time to respond to that one right now.) > 5. However, I hook up my expression pedals to two inlets in the object > (~line) that determines the start pitch, end pitch, and duration times, >such > that with one pedal I control the ending pitch (or it could be >beginning), > and the other pedal controls the time it takes for the pitch change from > beginning to end point to occur). As Per says, the fundamental missing feature is continuously variable pitch shifting, Mobius only exposes shifting in chromatic steps. Internally of course a pitch shift is just a floating point number, I just restrict the selection of those numbers in the UI. If there were enough interest I could expose a new CC controller for continuous pitch and rate shift. Assuming for a moment that we did have the ability to set arbitrary pitches, you would script this something like this: - Write three "control scripts" that monitor the CCs for start pitch, end pitch, and duration. These take the raw MIDI CC values and store them in a global variable. This is their only function, they just set global variables. - Write a portamento script that does the following: - gets the "start pitch" global variable, scale it from a MIDI CC number to a pitch value (with some provided conversion functions) - enter a loop for some predefined number of iterations, this number forms the "granularity" of the portamento, there is never actually continuous portamento, you just set the pitch to a value, waiting a short amount of time, then setting the pitch to the next value. The granularity needs to be fine enough so that you don't hear the "steps". - pause for a number of milliseconds calculated from the duration global variable and the granularity - Raise/lower the pitch to move toward the end pitch global variable. The amount of shift is calculated from the current duration, the number of remaining granules, and the distance to the target pitch. - repeat the loop until we reach the desired pitch While I think this is possible, there is likely to be a lot more math involved than the corresponding Max configuration. Jeff