inter-inter / clip-commander Goto Github PK
View Code? Open in Web Editor NEWClip-based command triggering of parameters in Ableton Live.
Clip-based command triggering of parameters in Ableton Live.
Assuming cue point means locator, I made a locator named "stpt" and then executed the command "stpt" and nothing happened
(Logically it should be able to do this, I just didn't get around to it).
More terminal-like functionality in the text box, ideally storing past messages in a text file so they can be recalled using the up/down-arrow, maybe an autofill feature (but perhaps this is overkill… better to just implement OSC so commands can be fired from an external command-line application)
This would allow continuous observation of the state of a control
Would be nice to be able to set a curvature for fades. This is a truncated version of supercollider's curve algorithm:
lincurve { arg inMin = 0, inMax = 1, outMin = 0, outMax = 1, curve = -4;
var grow, a, b, scaled;
// ... snip clipping stuff ...
if (abs(curve) < 0.001) {
// don't calculate exponents if it's close enough to 0
^(this-inMin)/(inMax-inMin) * (outMax-outMin) + outMin;
};
grow = exp(curve);
a = outMax - outMin / (1.0 - grow);
b = outMin + a;
scaled = (this - inMin) / (inMax - inMin);
^b - (a * pow(grow, scaled));
}
It would also be ideal if the ID dictionary would automatically update every time the Live set is saved. I haven't been able to figure out how to get a "bang" in Max for Live when the Live Set is saved.
Currently you must click "Update Clips" in order for ClipCommander to reflect changes to the clip-based cuelist. It would be ideal if the clip list would just update automatically every time a clip name is changed (I've tried to do this using callback functions in the Javascript and it's very clunky). The alternative to this would be for the function in to grab information from the actual live objects rather than pulling from the arrays stored in global variables - eliminating the need to update. But this could get slow with very large sets.
(To make the cuelist pretty).
I've noticed that it sometimes trips up when trying to set/fade multiple parameters in multiple tracks at the same time… Need to do lots more real-world-situation testing and stress testing to determine the actual reliability of this tool. … I imagine I will probably use the fade/delay feature of this sparsely and opt for clip automation instead when I can.
The really nice thing about it is that it fades from the current value whatever it is, so you can fade values that have been handled manually without glitches.
Things I had to experimentally figure out:
At very least success or error, ideally some sort of information about what went wrong
For me, the example
trackone db -20 fade 3 pan -50 delay 2 tracktwo db -20 fade 4 pan 50
sets both track levels immediately and begins both fades immediately
(The one I'm using now is a polynomial approximation I found online, because I didn't want to get into Javascript computing exponentials).
(If used with other applications, a set of two ClipCommanders could be used, one to control Live and another to send messages to another application like SuperCollider/TouchDesigner. This would require a toggle for "Live Control" and an interface to set OSC ports/addresses to send/receive).
Support for a "get" command similar to the "set" command which reports the current value of parameter/parameters. This would be important if integrating with more sophisticated GUIs in other applications.
Similar to clip name issue, when I changed a track name to "trackone" I had to hit "reset ids" and "update clips" buttons before I could talk to it
tracks disarm tracktwo arm
causes entire Live set to freeze
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.