The Clyphx Tricks and Tips Thread

Share your favorite Ableton Live tips, tricks, and techniques.
re:dream
Posts: 4598
Joined: Fri Dec 28, 2007 9:42 am
Location: Hoerikwaggo's sunset side...
Contact:

The Clyphx Tricks and Tips Thread

Post by re:dream » Tue Jan 14, 2014 9:47 pm

TomViolenz and others have been singing the praises of Stray's (a.k.a metastatik's) ClyphX, an enormously useful and powerful scripting tool for Live.

It is clearly a tool with great potential, particularly for those interested in using Live for performance.

Tom suggested that we start a ClyphX Tips and Tricks thread.

So here it is


8)

Tom and others have done most of the work here but I will use this first post as a kind of TOC and list of useful links


Resources

ClyphX's board on ProBoards http://beatwise.proboards.com/board/5
Last edited by re:dream on Thu Jan 16, 2014 5:11 am, edited 4 times in total.

TomViolenz
Posts: 6854
Joined: Mon Dec 13, 2010 6:19 pm

Re: The ClypX tips and tricks thread

Post by TomViolenz » Tue Jan 14, 2014 11:02 pm

Ok, to start off this thread, I think it would be good to give a short description of what clyphx actually is and what it can do for you:

Every professional software should have the capability if being scriptable. And Live of course does! What does that mean? It means mostly that common tasks the program can do, can be automated, so that you don't have to do them over and over again.

And just as Microsoft has developed VisualBasic for their Office suite and Apple has AppleScript, so has Live used the common language of Phyton to give you the possibilities to make your own scripts.
These scripts are called Midi remote scripts, and everyone, who has ever used a controller with Live, has used and installed one already.

But people here are musicians and many don't want to learn a language like Phyton!
That's where the ever great Stray from NativeKontrol comes in. He basically did all the heavy lifting for you and developed with clyphx a tool where many, many functions you could want to script are already programmed into little routines that you just call with a single command. What parameters you will be able to control in this manner is easy to find out. Press the Midi button in Lives upper right corner. Everything that lights up blue, can be controlled in this way, and everything that doesn't, you can't. (Sorry for all the people wanting to control Samplers Loop parameters - still no go :-( )
In addition to all the commands, he provided means to call those commands in three very useful ways.
1: directly from Lives Session view, by just typing the command you want as a name to your session clip. Basically any clip that you will name [ID] (where ID is a identifier of your choosing) becomes a clyphx clip. This [ID] is then followed by the commands of your choice out of the whole tool set clyphx provides.
Triggering this clip will now always execute this command
2: You can do exactly the same with Arrangement view Locators. Now whenever your play head passes over the Locator, the command will be triggered.
3: The third method is even better. If you write this command in a certain .txt file that clyphx provides, along with information of Midi channel and Midi cc of your controller of choice, it enables you to trigger this command with just the push of a button from your contoller!

These commands can also be written as a whole list of events, that will be triggered all by the same trigger.
In clyphx lingo these three methods are called xTriggers.

A short example from the clyphx manual here should demonstrate this:
Each X-Trigger can perform an Action List. As an example, a simple Action List might toggle
Overdub on/off: OVER.
A more complex Action List might mute Tracks 1 – 2, arm Track 4 and turn
on the 2nd Device on Track 4: 1/MUTE ON ; 2/MUTE ON ; 4/ARM ON ; 4/DEV2 ON
There are more than a 100 different commands already scripted for you in clyphx and they range from "arm track" over "insert envelope for parameter of choice that ramps up from value x to value y in z amount of time" to make a "snapshot of all the current controls in the selected track and its devices, store that information in a clip name and then lets you recall those exact settings like a preset just by triggering this clip"! And all of this is only a very simple command ("Snap" in this case) where the only information you need to provide is what, when and where.

But it goes even further!

Stray also provided a tool that is automatically installed along with clyphx, that adds new functionality to Lives Racks. All by just giving a Live Rack a specific name. It lets you assign things to Macros that you could not assign before, like mixer parameters or parameters belonging to different tracks.
A very special Rack lets you also morph between presets of your devices that you stored into the aforementioned Snap clips, by using a Macro!

This is not all yet, but I don't want to rewrite the manual here.

So I just leave you with the Link to Strays Beatwise forum thread, where in the first post you will always find the link to the current version of clyphx and its manual. For free!!! Enjoy :-)

http://beatwise.proboards.com/thread/99 ... e-8?page=1
Last edited by TomViolenz on Wed Jan 15, 2014 10:09 am, edited 1 time in total.

TomViolenz
Posts: 6854
Joined: Mon Dec 13, 2010 6:19 pm

Re: The ClypX tips and tricks thread

Post by TomViolenz » Wed Jan 15, 2014 10:03 am

Ok with this out of the way, I will now ask my question from the other thread again. I'm sure there must be tinkerers here, who already know all of the above and can maybe help me with my problem:
Does anyone know how I can add timing to my event lists? Preferably without having to use looping (lseq).

What I want to do is, make a Midi trigger that always raises the Send A parameter via a ramp to 0dB within 4 bars.

I know I can do this when I'm willing to add an envelope to the playing clip, but I don't want to add an envelope, I just want to slowly raise the reverb send smootly in a potential live situation, by just pressing a button on my Launchpad.

broc
Posts: 1151
Joined: Mon Jul 26, 2004 8:37 am

Re: The ClypX tips and tricks thread

Post by broc » Wed Jan 15, 2014 11:22 am

TomViolenz wrote:Ok with this out of the way, I will now ask my question from the other thread again. I'm sure there must be tinkerers here, who already know all of the above and can maybe help me with my problem:
Does anyone know how I can add timing to my event lists? Preferably without having to use looping (lseq).

What I want to do is, make a Midi trigger that always raises the Send A parameter via a ramp to 0dB within 4 bars.

I know I can do this when I'm willing to add an envelope to the playing clip, but I don't want to add an envelope, I just want to slowly raise the reverb send smootly in a potential live situation, by just pressing a button on my Launchpad.
As I understand it, ClypX doesn't provide any timing features (in contrast to M4L).

TomViolenz
Posts: 6854
Joined: Mon Dec 13, 2010 6:19 pm

Re: The ClypX tips and tricks thread

Post by TomViolenz » Wed Jan 15, 2014 4:28 pm

broc wrote: As I understand it, ClypX doesn't provide any timing features (in contrast to M4L).
I kinda figured that there was no direct way to do it, but maybe someone can come up with a workaround (that doesn't involve me programming my own user actions)

I already thought about doing something like first adding an envelope and then removing it again immideatly

something like:

CLIP ENVINS SEND A IRamp; CLIP ENVCLR Send A

Problem here is that I think it does not wait with executing command 2 until command 1 is done. Also the timing would depend on the length of the running clip (or the length of its loop). So it would raise the Send A volume faster for a 2 bar clip than a 4 bar clip. This is undesired.

I could do the same with including a stop action into the Action list. This is done when you use a comma instead of a semicolon to seperate the commands. Like so:

CLIP ENVINS SEND A IRamp, CLIP ENVCLR Send A

This would first execute command 1 (raising Send A volume linearly) and then command 2 (deleting the same envelope again upon stopping the action (by releasing the button or hitting it again - depending if it is set to momentary or toggle))
But the bigger problem remains, the timing is still dependent on the clip length and another problem arises: if I wait too long with stopping, the clip will just loop, looping the Send A envelope with it. I don't want that.

Another approach using loop sequences (lseq):

Sel/(lseq)SEND A <

(This will raise the Send A volume on the track that is selected at the time by 1 each time the clip that triggers the action loops)
Advantage: the looping of the triggering clip and the affected clip (track actually) are independent from each other and no envelope is inserted (unless I record of course)
So this looks much more like the road to take, except that I want to trigger this via Midi and not via a clip on another track (preferably anyways). But does (lseq) even work via a xControl?! I don't think it does, because the whole looping thing doesn't make sense without a clip that is actually looping...

Maybe I just have to use my button to trigger an actual clip containing this command. It does clutter the Session view though and I like to keep that orderly ;-)

OK, those are my thoughts, somebody has any other ideas?

metastatik
Posts: 318
Joined: Tue Mar 13, 2007 3:28 pm

Re: The ClypX tips and tricks thread

Post by metastatik » Wed Jan 15, 2014 6:17 pm

For the sake of clarity, ClyphX does provide timing features. For example, check out BPM Ramp or the smoothing functionality of Snap.

BPM Ramp-like functionality for arbitrary parameters isn’t currently possible, but I’ll look into it for the future as that would be the most direct way of doing this sort of thing.

In the interim, there really is no elegant way to do this via an X-Control (aside from creating a User Action) that wouldn’t clutter your set. And, yes, LSEQ is exclusive to X-Clips. However, you can insert an LSEQ X-Clip (AddClip action + Name action) or change some other clip into an LSEQ X-Clip (Name action) via an X-Control. Not sure if that helps or not.

TomViolenz
Posts: 6854
Joined: Mon Dec 13, 2010 6:19 pm

Re: The ClypX tips and tricks thread

Post by TomViolenz » Wed Jan 15, 2014 6:51 pm

metastatik wrote:For the sake of clarity, ClyphX does provide timing features. For example, check out BPM Ramp or the smoothing functionality of Snap.

BPM Ramp-like functionality for arbitrary parameters isn’t currently possible, but I’ll look into it for the future as that would be the most direct way of doing this sort of thing.

In the interim, there really is no elegant way to do this via an X-Control (aside from creating a User Action) that wouldn’t clutter your set. And, yes, LSEQ is exclusive to X-Clips. However, you can insert an LSEQ X-Clip (AddClip action + Name action) or change some other clip into an LSEQ X-Clip (Name action) via an X-Control. Not sure if that helps or not.
Yes, I think this would be my favorite feature request, to add the functions for BPM or even the same shapes that the envins functions provide to any parameter!
It would open up a lot of ways to use clyphX as it would really add the time dimension!

And thanks for the tip with the naming function, I will think about how that could help my desired use.

And thanks for all your great work Stray! It is much appreciated!

re:dream
Posts: 4598
Joined: Fri Dec 28, 2007 9:42 am
Location: Hoerikwaggo's sunset side...
Contact:

Re: The ClypX tips and tricks thread

Post by re:dream » Wed Jan 15, 2014 7:49 pm

OK, I figured out how to use ClyphX to resolve my Push scales and keys issue:



To 'capture' the keythat Push is currently in

- create a clip called [] PUSH SCL
- When Push is in the desired key, trigger the clip.
- The Clip will now be renamed to reflect the correct scale e.g. "[] Push SCL 10 1 27 False True scale_p4_vertical"
- When you load the set, trigger the clip and Push will be in the corrrect key

To set the default scale for Push

- Go to the ClyphX Midi Remote Script folder
- Find the file called UserSettings. Make a copy and save it, just for safety's sake
- In the file, find the heading called EXTRA PREFS
- Find the STARTUP_ACTIONS command.
- Replace the Text "Off" with your desired scale command - e.g. PUSH SCL TYPE MINOR
- When you open Live, Push scale will default to your desired choice

8)

TomViolenz
Posts: 6854
Joined: Mon Dec 13, 2010 6:19 pm

Re: The Clyphx Tricks and Tips Thread

Post by TomViolenz » Wed Jan 15, 2014 8:09 pm

Maybe another feature request in the same vein as my timed parameter ramp, that could possibly achieve the same result, but also many other things as well.

The manual states that an action list is executed successively, but very fast, so that it appears to happen all at the same time. Which is great for many functions. But how about if we could also specify how long clyphX waits after it has executed one command until it jumps to the next command in the list (in beats or normal time).
This would be tremendously useful!
I don't know anything about coding in Phyton, but I could even imagine that this might be easier to code for.

Just an idea :)

re:dream
Posts: 4598
Joined: Fri Dec 28, 2007 9:42 am
Location: Hoerikwaggo's sunset side...
Contact:

Re: The Clyphx Tricks and Tips Thread

Post by re:dream » Wed Jan 15, 2014 8:31 pm

TomViolenz wrote: how long clyphX waits ... in beats
Can't this be done by normal follow actions?

TomViolenz
Posts: 6854
Joined: Mon Dec 13, 2010 6:19 pm

Re: The Clyphx Tricks and Tips Thread

Post by TomViolenz » Wed Jan 15, 2014 9:01 pm

The Finn wrote:
TomViolenz wrote: how long clyphX waits ... in beats
Can't this be done by normal follow actions?
No what I mean is waiting between the commands in an action list.

Let's look at this one:
[ID] REC ON ; 1/ARM ; 2/ARM, UNARM ; REC OFF

And now this (this is how I would imagine it)

[ID] (1)REC ON ; 1/(1)ARM ; 2/ARM, (2)UNARM ; REC OFF

This event list would wait 1 beat each time after the first 2 commands before executing the next command and then after the stop, 2 beats after the 4th command before triggering Rec off.

It would even be more useful for other commands like parameter changes.
Appart from the fact that using follow actions is not possible to really do from a controller, it would also be impossible to do the above with them. I mean this action list is even affecting different tracks!

dredd i knight
Posts: 326
Joined: Thu Nov 29, 2007 6:33 pm

Re: The Clyphx Tricks and Tips Thread

Post by dredd i knight » Fri Feb 07, 2014 3:57 am

Subscribed :P

eyeknow
Posts: 5822
Joined: Fri Jul 15, 2005 6:16 am

Re: The Clyphx Tricks and Tips Thread

Post by eyeknow » Fri Feb 07, 2014 5:58 am

Yeah, thanks for the clear explanation.

TomViolenz
Posts: 6854
Joined: Mon Dec 13, 2010 6:19 pm

Re: The Clyphx Tricks and Tips Thread

Post by TomViolenz » Fri Feb 07, 2014 10:46 am

Now that you all have finally installed clyphX ;-)
I want to introduce you to one of its most amazing functions:

The ClyphX Snap action:

What it does is, it records all the parameter settings in your devices, the track mixer controls or the play state upon triggering, and writes them into the name of the clip the Snap action was triggered from. When you re-trigger this clip it will always set the parameters/states back to where they were, when you recorded them.

As with most clyphX actions it can be directed to act only upon the things you want it to act upon.
So in essence it stores a preset within Live that spans, if you desire, multiple devices over multiple tracks along with the Volume and Send parameters.
Upon re-triggering this clip, this exact state will be recalled. No matter what you did in the mean time.
Because the preset (or Snap in clyphX lingo) is written into the clip name and is recalled from there, this function can only be used with x-clips, housed within your set. You can have as many different Snaps in your set as you want to house the Snap clips for.

To try it out, go ahead and name a clip in your set:

Code: Select all

[PresetName] 1/Snap Devall Mix
When you trigger this clip it will record the parameters of all devices ("Devall") on Track 1 ("1/" ) and the values of its mixer parameters ("Mix").
Within the brackets you can write the name that you want to give to your preset. As mentioned the brackets themselves are important, as they are what tells clyphX that this is a x-clip, instead of a regular clip without clyphX actions.

When you trigger the x-clip the first time, the name of the clip will change to something like:

Code: Select all

[PresetName] || {u'1-Drum Rack Push': [[0.85000.......   <-- Followed by a very long list of values.
Now do some changes on your devices on Track 1 and its Mixer settings and then re-trigger this clip.

You will see that all your parameters snap back to the values you had set when you first recorded that Snap.

You can also use different modifiers to store different things:

The clyphX manual states:
DEV: Store the settings of the first Device on the Track.

DEVx: Store the settings of the Device where x is the number of the Device.
Example: SNAP DEV2, SNAP DEV3

DEVx-y: Store the settings of the Devices in the specified range where x is the Device number to start with and y is the Device number to end with. To operate on all Devices, specify ALL.

Example: SNAP DEV1-4, SNAP DEV2-5, SNAP DEVALL

MIX: Store the Volume, Pan and Sends settings of the Track.

MIX+: Store the Volume, Pan, Sends, Mute, Solo and Crossfade settings of the Track.

MIX-: Store the Volume, Pan, Mute, Solo and Crossfade settings of the Track.

PLAY: Store the playing status of the Track. This does not apply to Group Tracks, Return Tracks or the Master Track.

The Snap Action can store all parameters that are accessible to Lives API. That generally means, device parameters that can also be Midi assigned (Light up blue when you hit the Midi button in Lives upper right corner).
Changes to parameters that are not, like for example Samplers Loop parameters, will not be recalled.
When you use plug-ins, then only parameters that are configured will be stored/recalled. At the maximum 128 parameters.
I found it useful to make the change to the Options.txt that makes Live automatically configure all vst parameters upon loading it. (-_PluginAutoPopulateThreshold=-1)
How to change/make an Options.txt is described elsewhere.

In the next installment I will show you how to transition smoothly between your different Snaps, taking as much time for this, as you specify. Even in beats, synced to Lives tempo, if you so desire.
I will also show you how you can use a Midi controller to morph between two presets in your own time.
If you don't want to wait that long, all of this is described very well in the clyphx manual, go and give it a thorough read.

Have fun :-)

glamourboy
Posts: 253
Joined: Thu Jul 26, 2007 11:57 am
Location: Copenhagen

Re: The Clyphx Tricks and Tips Thread

Post by glamourboy » Tue Feb 11, 2014 4:56 pm

Yes, Clyphx really is amazing. I took the Codecademy Python course just to have an idea of what goes on inside the script. Time well spent, and lots of fun.

However, I've been trying to edit the "ClyphXSnapActions.py" to not store "nested_device" values. The reason is that the long clip names crashes the iPad app "touchable", which is essential to my setup.

I can't get it to work. Any change I make in the .py file (using Wing IDE) breaks snap functionality completely and I've only, cautiously, commented out some lines containing "nested_device".

Can someone help me modify the "ClyphXSnapActions.py" to not include nested_devices?

Post Reply