[live.object] SIMPLER parameters
I try to automate or control the "env" in SLICE mode. There is a couple of parameters available with [live.object] for simpler but not this one. Who's create parameters to objects, LIVE or MAX ?
Unfortunately that parameter is not available in the API. A good rule of thumb -> If you can't MIDI map it, it's not available in the API.
...would be really great if Ableton made some more parameters map- and controllable in SIMPLER,
my favorite would be 'sensitivity' in slice-mode..
let's all go annoy ableton!
I had all sorts of visions for Max For Live when it first came out - I was going to control everything!
Unfortunately, it is not possible to control many of the most interesting parameters in Ableton this way. Indeed, even many things that are controllable through MIDI mapping require trickery. For example, try turning the looper on and off through Max For Live - as of the last time I asked here (a couple of years ago) there's no direct way to do it, even though it's easy enough to attach MIDI to that button.
The solution is the IAC bus (this might be OS/X only). Max For Live unfortunately only allows MIDI output to one channel and one device, so I generally have an empty track with a tiny M4L patch that receives a Max "send" from my main patch, and which then sends MIDI to the IAC bus, that then leaves Ableton Live, goes through Apple's Audio/MIDI, is routed back into Ableton Live and finally controls the looping button.
On reading this, I'm finding it hard to believe that the only way to control a scriptable button is to send a message to a completely different process which sends it back to the original process, but that's what my notes say. If anyone has a better solution to this, I'd welcome it.
hi,
there's quite a few new things added to the API in 9.5, more in some 9.5 betas. there's actually new Device classes available for different device types, these aren't yet documented in the LOM documentation.
to have a look at what they are you need to focus a [live.object] on the id of a Simpler device and then send it the message "getinfo".
here's what I got with a quick check of Simpler's device type info and then parameters:
print: info id 1
print: info type SimplerDevice
print: info description This class represents a Simpler device.
print: info children parameters DeviceParameter
print: info child canonical_parent Track
print: info child view View
print: info property can_have_chains bool
print: info property can_have_drum_pads bool
print: info property can_warp_as bool
print: info property can_warp_double bool
print: info property can_warp_half bool
print: info property class_display_name unicode
print: info property class_name unicode
print: info property is_active bool
print: info property multi_sample_mode bool
print: info property name unicode
print: info property pad_slicing bool
print: info property playback_mode PlaybackMode
print: info property playing_position float
print: info property playing_position_enabled bool
print: info property retrigger bool
print: info property slicing_playback_mode SlicingPlaybackMode
print: info property type DeviceType
print: info property voices int
print: info function crop
print: info function get_bank_count
print: info function get_bank_name
print: info function get_bank_parameters
print: info function guess_playback_length
print: info function reverse
print: info function store_chosen_bank
print: info function warp_as
print: info function warp_double
print: info function warp_half
print: info done
live.object: get: no valid object set
print: name Device On
print: name Snap
print: name Sample Selector
print: name S Start
print: name S Length
print: name S Loop On
print: name S Loop Length
print: name S Loop Fade
print: name Spread
print: name Glide Mode
print: name Glide Time
print: name Transpose
print: name Detune
print: name Pitch < LFO
print: name Pe On
print: name Pe < Env
print: name Pe Attack
print: name Pe Decay
print: name Pe Sustain
print: name Pe Release
print: name Volume
print: name Vol < Vel
print: name Vol < LFO
print: name Pan
print: name Pan < Rnd
print: name Pan < LFO
print: name Ve Attack
print: name Ve Decay
print: name Ve Sustain
print: name Ve Release
print: name Fade In
print: name Trigger Mode
print: name Fade Out
print: name F On
print: name Filter Type
print: name Filter Circuit - LP/HP
print: name Filter Circuit - BP/NO/Morph
print: name Filter Slope
print: name Filter Freq
print: name Filter Res
print: name Filter Morph
print: name Filter Drive
print: name Fe On
print: name Fe < Env
print: name Fe Attack
print: name Fe Decay
print: name Fe Sustain
print: name Fe Release
print: name Filt < Key
print: name Filt < Vel
print: name Filt < LFO
print: name L On
print: name L Wave
print: name L Sync
print: name L Rate
print: name L Sync Rate
print: name L R < Key
print: name L Attack
print: name L Retrig
print: name L Offset
Hey @EASE
I'm working on the same problems (I want to controle the algorythme sample type, and automatise the movement of the simplersimpler...), and I am serching a way maybe via python, but I have to learn this language, a almost never code before.
If you want some links tell me.
I'm sorry my english is so bad, I'm going to work on this language too !
Hi
Thanks to Myr for your comment (even if it was 7 years ago !)
I have a problem though, when i send getinfo to my simpler live.objet
here is what i got
print: info type SimplerDevice
print: info description This class represents a Simpler device.
print: info children parameters DeviceParameter
print: info child canonical_parent Track
print: info child view View
print: info child sample Sample
print: info property can_have_chains bool
print: info property can_have_drum_pads bool
print: info property class_display_name str
print: info property class_name str
print: info property is_active bool
print: info property name str
print: info property type DeviceType
print: info property can_warp_as bool
print: info property can_warp_double bool
print: info property can_warp_half bool
print: info property multi_sample_mode bool
print: info property pad_slicing bool
print: info property playback_mode int
print: info property playing_position float
print: info property playing_position_enabled bool
print: info property retrigger bool
print: info property slicing_playback_mode int
print: info property voices int
print: info function store_chosen_bank
print: info function crop
print: info function guess_playback_length
print: info function reverse
print: info function warp_as
print: info function warp_double
print: info function warp_half
print: info done
I don't retrieve all the print: name ... parameters
(the one i try to modulate is S Start)
Does anyone know the reason ?
Thanks
The sentence before his list was "here's what I got with a quick check of Simpler's device type info and then parameters". You have to query the parameters separately. You may find this helpful: https://www.maxforlive.com/library/device/4925/liveapi-interactive
Hi
Thanks for the link (and congrats for Straightjacket piece are you playing an acoustic piano ?)
When i launch your app, the parameter i see are the same as those i have in my list, i don't see any hint about queriying parameter.
When you say "You have to query the parameters separately", my problem is that to query parameter i need their name.
In the live.object message i can see only there is only getinfo.
With parameter in Myr list, i try to send the message "get s_start" with or wihout quote/uppercase/underscore and also with value keyword. All test failed, i always received the message "object has no attribute ..." while for instance "get name" print the name of my simpler instance so i guess i am querying the right device and my message are correctly received.
Still searching...
and when i send "get parameters"
i receive
print: parameters id 4 id 5 id 6 id 7 id 8 id 9 id 10 id 11 id 12 id 13 id 14 id 15 id 16 id 17 id 18 id 19 id 20 id 21 id 22 id 23 id 24 id 25 id 26 id 27 id 28 id 29 id 30 id 31 id 32 id 33 id 34 id 35 id 36 id 37 id 38 id 39 id 40 id 41 id 42 id 43 id 44 id 45 id 46 id 47 id 48 id 49 id 50 id 51 id 52 id 53 id 54 id 55 id 56 id 57 id 58 id 59 id 60 id 61 id 62 id 63 id 64 id 65 id 66 id 67 id 68 id 69 id 70 id 71
I guess this is the list of all parameters.
Apart from the fact that it is not very explicit, i guess it is useful to retrieve param value of a given param using its id but i don't know what commant to send to retrieve this value.
Oh, I see the misunderstanding now I think. Myr must've just iterated (like [zl.iter 2]) through the list of ids returned by "get parameters" and then queried their name via [live.object]
All access to API objects is via id <number> or the path (e.g. live_set tracks 0 devices 0 parameters 4), not by "name". You can't say "get s_start" unless there is a property of Simpler called s_start in the list printed by the "getinfo". Hence the "object has no attribute ..." error message.
A property is not the same as a parameter. So if in the UI you see a knob named "s_start" that you want, you need to iterate over the list of parameter ids until you find one that, when you send the message "get name", returns "name s_start".
With LiveAPI-Interactive, if you know you only want a couple parameters, you can just use the Map button to click on one you want to inspect. That will then show the id / path / value / name of the parameter. For programming a M4L device to interact with Simpler, the parameter path number will be the part that's always consistent. So like, if you have two Simpler devices at these paths:
live_set tracks 0 devices 0
and
live_set tracks 2 devices 1 chains 0 devices 0
... putting "parameters 3" at the end of either path will always get you the parameter named "S Start" for that Simpler device, even though the id for the knob/parameter in each device is different.
(And thanks for listening... it's a sampled piano that I was playing :)
It works thanks !
to sum up
message in live.path :
path live_set tracks 1 devices 1 parameters 3
message in live.object :
get value