Tutorial for writing custom control surface scripts?

Discuss music production with Ableton Live.
continuous
Posts: 1012
Joined: Sat Aug 06, 2005 7:11 pm
Location: PDX

Re: Tutorial for writing custom control surface scripts?

Post by continuous » Mon May 04, 2009 7:31 am

I'm using a MacBook Pro. Been meaning to list my setup in my signature again, as it's a good reference.

fishmonkey
Posts: 4479
Joined: Wed Oct 24, 2007 4:50 am

Re: Tutorial for writing custom control surface scripts?

Post by fishmonkey » Mon May 04, 2009 8:12 am

ok, well if it's really bugging you give LC Xmu (http://www.opuslocus.com) a try... it basically makes it easy to use any old MIDI controller (or combination of controllers) as a Mackie Control device... you can also use it in combination with instant mappings so you get to keep the blue hand functionality for controlling Ableton devices...

using Mackie Control emulation, you can control up to 8 sends on a selected track... and you will be freed from the 8 track limitation of the instant mapping mixer controls...

it does cost USD40 though (and is for Mac OS X)...

Mr-Bit
Posts: 293
Joined: Sat Dec 16, 2006 3:02 pm
Location: The Studio
Contact:

Re: Tutorial for writing custom control surface scripts?

Post by Mr-Bit » Mon May 04, 2009 8:24 am

MrYellow wrote:Python based proper control surface scripts:

http://blogs.bl0rg.net/netzstaub/2008/0 ... e-scripts/

The text file method seems very limited in what can be done.

-Ben
Thanks for that just what I needed a easy to understand tour of the componants ,structure and working methods.

continuous
Posts: 1012
Joined: Sat Aug 06, 2005 7:11 pm
Location: PDX

Re: Tutorial for writing custom control surface scripts?

Post by continuous » Mon May 04, 2009 6:46 pm

fishmonkey wrote:ok, well if it's really bugging you give LC Xmu (http://www.opuslocus.com) a try... it basically makes it easy to use any old MIDI controller (or combination of controllers) as a Mackie Control device... you can also use it in combination with instant mappings so you get to keep the blue hand functionality for controlling Ableton devices...

using Mackie Control emulation, you can control up to 8 sends on a selected track... and you will be freed from the 8 track limitation of the instant mapping mixer controls...

it does cost USD40 though (and is for Mac OS X)...
Ran across that in the BCR setup discussions a while back. Look solid. I will definitely keep that in mind.

cheers

channelite
Posts: 472
Joined: Sat Sep 15, 2007 8:25 pm
Location: Nevada, USA

Re: Tutorial for writing custom control surface scripts?

Post by channelite » Mon Aug 10, 2009 11:46 pm

I've recently made another custom surface control script for the Korg pad kontrol. I've made the XY touch pad and knobs for scenes 1-4 be for the macros. Scene 1 is for macros 1 and 2. The touch pad and knobs are using the same two macros per scene. The remaining scenes use the rest of the 8 macros. I'm having a lot of fun using the touch pad, great for the Auto Filter. Also I can use my custom control surface along with the preset that comes with Live.

madlab
Posts: 1459
Joined: Fri May 02, 2003 6:38 am
Location: France

Re: Tutorial for writing custom control surface scripts?

Post by madlab » Thu Aug 27, 2009 9:11 pm

I did it for the 8 macro pots of a rack because all CCs are set to the generic '-1-' and it worked perfectly. I'm going to do it for the other controls now !
Aboard from V. 1
MBP M1 Pro 2021 - 16 Go RAM - OSX 15.7.7 / MBP 2.5 Ghz I7 16 Go SSD OSX 10.15.7 - iPad + Knobbler
RME FF UC Live 12.4.2 M4L Max 9.14
Band : https://elastocat.org/
Madlab sound unit / objects, guitar, electronics / end_of_transmission

RCUS
Posts: 277
Joined: Tue Mar 17, 2009 4:31 am

Re: Tutorial for writing custom control surface scripts?

Post by RCUS » Sun Oct 25, 2009 12:36 am

Anyone here have luck getting the LockButton to function properly? All of my attempts have failed.

merges
Posts: 290
Joined: Sun Aug 12, 2007 11:06 pm
Location: san francisco

Re: Tutorial for writing custom control surface scripts?

Post by merges » Mon Apr 12, 2010 4:57 am

bump! the user configuration file instructions written by ableton suggest that each control can have its OWN MIDI CC + channel. that is, the global channel is not the only channel that can be used. what's the syntax?

my UC-33e's faders send on Channels 1 through 8, MIDI CC 7. its transport buttons send on Channel 1, MIDI CC 14, 15, 16. how do i notate that in my UserConfiguration.txt file?

StopButton: -1 (before)

StopButton: 1cc14 (after)? or … 1:14? or 1.14? etc. what's the syntax for Channel + MIDI CC?

-----

Also: Is it possible to "get" the included instant mappings so that I can merge them with my file? It's annoying that if I just want to add a button or two to an included instant mapping, it seems to overwrite all the other standard instant mapping. I found some .pyc files in the Ableton Live application package for all the included instant mappings, but they're unintelligible.

Meef Chaloin
Posts: 2164
Joined: Thu Jul 21, 2005 10:09 pm

Re: Tutorial for writing custom control surface scripts?

Post by Meef Chaloin » Mon Apr 12, 2010 8:21 pm

merges wrote:
my UC-33e's faders send on Channels 1 through 8, MIDI CC 7. its transport buttons send on Channel 1, MIDI CC 14, 15, 16. how do i notate that in my UserConfiguration.txt file?
i dont really understand the rest of your post but i think it would be like this:

VolumeSlider1: 7
VolumeSlider2: 7
VolumeSlider3: 7
VolumeSlider4: 7
VolumeSlider5: 7
VolumeSlider6: 7
VolumeSlider7: 7
VolumeSlider8: 7
Slider1Channel: 1
Slider2Channel: 2
Slider3Channel: 3
Slider4Channel: 4
Slider5Channel: 5
Slider6Channel: 6
Slider7Channel: 7
Slider8Channel: 8

and

[TransportControls]
# The transport buttons are also expected not to be toggles.
StopButton: 14
PlayButton: 15
RecButton: 16 etc etc

I think you'll have to make the global channel 1 (at the top of the script for the transport to work.

EDIT: sorry, i just reread your post, i think they only work on global channel.
I'd love you to hear differently...
Last edited by Meef Chaloin on Mon Apr 12, 2010 8:24 pm, edited 1 time in total.

Meef Chaloin
Posts: 2164
Joined: Thu Jul 21, 2005 10:09 pm

Re: Tutorial for writing custom control surface scripts?

Post by Meef Chaloin » Mon Apr 12, 2010 8:23 pm

Ok, to crosspost (sorry):

is it possible use send 1 on one midi channel and send 2 on another channel?

The Oxygen v2 I'm doing this for only has 8 knobs so if they are assigned to Send 1 is it not possible to use Send 2?

I've set it up so far for Send 1 to be on the global channel (2). Maybe I could use another preset on the same channel? I only get to try this out once a week (on the Oxygen) for an hour so any help would be really helpful.

merges
Posts: 290
Joined: Sun Aug 12, 2007 11:06 pm
Location: san francisco

Re: Tutorial for writing custom control surface scripts?

Post by merges » Mon Apr 12, 2010 8:49 pm

I think you'll have to make the global channel 1 (at the top of the script for the transport to work.
EDIT: sorry, i just reread your post, i think they only work on global channel.
I'd love you to hear differently...
it's weird: ableton's file specifically says that different channels and CCs can be used, but there is no example of how to notate that. so i'm not sure how to do it? anyone from ableton here who can help?

Code: Select all

# The Encoders will control the device parameters (you can also
# use knobs or sliders). Replace the -1's with the [b]CCs sent by 
# the respective controls[/b] on your controller. You can [b]also set
# the channel for each controller[/b] if it differs from the global
# channel (if you leave the channel of an encoder at -1, Live
# will assume that the encoder uses the global channel).

Jarvisimon
Posts: 764
Joined: Sat Oct 04, 2008 7:29 pm
Location: England

Re: Tutorial for writing custom control surface scripts?

Post by Jarvisimon » Mon Apr 12, 2010 10:02 pm

Slightly off topic here but I would really like to see better implementation of control scripting in Ableton seeing as interacting with the software is what makes it a "Live" instrument.

I would like to be able to map out my chosen controller EXACTLY, not just the 8 macro's.

Also, I'd like to have different mappings for different instrument/effects, so that I know exactly what happens when I "blue hand" the reverb or the Beat Rpt etc. As it stands, it's auto mapped in a manner that I cannot control and far from how I would do it myself. On top of this, I would like to have multiple layers of mappings, so that I could easily access ALL parameters.

Further to this, I would appreciate this to be accessible using multiple controllers and with a sequencer lane, so that I could pre-program how my set-up worked in a live situation.

It's a useful function as it is and instantly improved my working methods, however, I feel that my suggestions would enhance Live's interactive capabilities and allow ANY controller to be integral part of our tool kit and therefore the application as a whole.

channelite
Posts: 472
Joined: Sat Sep 15, 2007 8:25 pm
Location: Nevada, USA

Re: Tutorial for writing custom control surface scripts?

Post by channelite » Tue Apr 13, 2010 8:03 pm

Jarvisimon wrote:Slightly off topic here but I would really like to see better implementation of control scripting in Ableton seeing as interacting with the software is what makes it a "Live" instrument.

I would like to be able to map out my chosen controller EXACTLY, not just the 8 macro's.

Also, I'd like to have different mappings for different instrument/effects, so that I know exactly what happens when I "blue hand" the reverb or the Beat Rpt etc. As it stands, it's auto mapped in a manner that I cannot control and far from how I would do it myself. On top of this, I would like to have multiple layers of mappings, so that I could easily access ALL parameters.

Further to this, I would appreciate this to be accessible using multiple controllers and with a sequencer lane, so that I could pre-program how my set-up worked in a live situation.

It's a useful function as it is and instantly improved my working methods, however, I feel that my suggestions would enhance Live's interactive capabilities and allow ANY controller to be integral part of our tool kit and therefore the application as a whole.
Here is a feature wish list post about user scripts.

http://forum.ableton.com/viewtopic.php?f=3&t=87215

louiscarter88
Posts: 7
Joined: Sat Apr 30, 2011 12:23 pm

Re: Tutorial for writing custom control surface scripts?

Post by louiscarter88 » Mon May 02, 2011 12:38 pm

Apologies for reviving this ancient thread, but I’m having issues that directly relate to this topic and replying here makes more sense than to start a new thread. For some time, I have been using Ableton Live to control Arkaos GrandVJ (live visualisation software that triggers video with MIDI data) and until recently I have been using a Vestax VCI-100DJ controller for simple live control purposes.

My recent upgrade to an APC40, specifically built to integrate with Live seemed like a logical choice. However, the APC40 doesn’t like being used for anything other than Live, and I can’t map anything in GrandVJ. All hope is not lost, as I can get CC’s recognised by GrandVJ using User Remote Scripts and the CC signal is getting through to the program. The problem now lies in the fact that the signal is not happening in real time when using the knobs on the APC40; it will only send the CC information when I stop turning the knob, not while it’s turning.

Another point of interest: the CC signal happens in real time when using the mouse to turn the macro knob in the MIDI Effect Rack that I have set up in Live, which tells me that there is either some sort of controller issue or I have something set up wrong in the User Remote Script. I'm really hoping it's just the script!

Here is my UserRemoteScript for you to look at.

louiscarter88
Posts: 7
Joined: Sat Apr 30, 2011 12:23 pm

Re: Tutorial for writing custom control surface scripts?

Post by louiscarter88 » Mon May 02, 2011 12:40 pm

Sorry message was too long to fit the script in, here it is.

# Config File for User-defined Instant Mappings

# We assume that the controls on your MIDI controller
# send CCs (except for pads). All controls that do not have
# an explicit channel setting are expected to use the
# global channel. CCs & Notes are counted from 0-127
# and channels from 0-15.

[Globals]
# The channel that the controller should send on
GlobalChannel: 0
# If your controller is connected via USB, replace ControllerName
# with the name of the respective port. Live will then try to
# recognize the ports for you when you select your Instant-Mappings
InputName: ArKaos_neon
OutputName: ArKaos_neon
# If your controller has pads that send notes, you can use them to
# play the visible pads in your DrumRacks. Just replace the -1 for
# the note (and channel) of the respective pad. The arrangement of
# the pads in the DrumRacks is as follows:
# 1 2 3 4
# 5 6 7 8
# 9 10 11 12
# 13 14 15 16
# (If you leave the channel of a pad at -1, Live will assume that
# the pad uses the global channel)
Pad1Note: -1
Pad2Note: -1
Pad3Note: -1
Pad4Note: -1
Pad5Note: -1
Pad6Note: -1
Pad7Note: -1
Pad8Note: -1
Pad9Note: -1
Pad10Note: -1
Pad11Note: -1
Pad12Note: -1
Pad13Note: -1
Pad14Note: -1
Pad15Note: -1
Pad16Note: -1
Pad1Channel: -1
Pad2Channel: -1
Pad3Channel: -1
Pad4Channel: -1
Pad5Channel: -1
Pad6Channel: -1
Pad7Channel: -1
Pad8Channel: -1
Pad9Channel: -1
Pad10Channel: -1
Pad11Channel: -1
Pad12Channel: -1
Pad13Channel: -1
Pad14Channel: -1
Pad15Channel: -1
Pad16Channel: -1

[DeviceControls]
# The Encoders will control the device parameters (you can also
# use knobs or sliders). Replace the -1's with the CCs sent by
# the respective controls on your controller. You can also set
# the channel for each controller if it differs from the global
# channel (if you leave the channel of an encoder at -1, Live
# will assume that the encoder uses the global channel).
Encoder1: 1
Encoder2: 2
Encoder3: 3
Encoder4: 4
Encoder5: 5
Encoder6: 6
Encoder7: 7
Encoder8: 8
EncoderChannel1: -1
EncoderChannel2: -1
EncoderChannel3: -1
EncoderChannel4: -1
EncoderChannel5: -1
EncoderChannel6: -1
EncoderChannel7: -1
EncoderChannel8: -1
# Enter the respective map mode for the encoders here. The following
# map modes are available:
# - Absolute
# - Absolute14Bit
# - LinearSignedBit
# - LinearSignedBit2
# - LinearTwoCompliment
# - LinearBinaryOffset
# - AccelSignedBit
# - AccelSignedBit2
# - AccelTwoCompliment
# - AccelBinaryOffset
# Consult the controller's documentation to find out which mode to use.
EncoderMapMode: Absolute
# Buttons used here are expected to not be toggles (i.e., sending
# value 0 every second time you press it).
Bank1Button: -1
Bank2Button: -1
Bank3Button: -1
Bank4Button: -1
Bank5Button: -1
Bank6Button: -1
Bank7Button: -1
Bank8Button: -1
NextBankButton: -1
PrevBankButton: -1
LockButton: -1

[MixerControls]
# Again enter the appropriate CCs for the respective controls.
# If all sliders use the global channel to send their data,
# you can leave the channels at -1. You can, of course, use
# encoders or knobs instead of sliders.
VolumeSlider1: -1
VolumeSlider2: -1
VolumeSlider3: -1
VolumeSlider4: -1
VolumeSlider5: -1
VolumeSlider6: -1
VolumeSlider7: -1
VolumeSlider8: -1
Slider1Channel: -1
Slider2Channel: -1
Slider3Channel: -1
Slider4Channel: -1
Slider5Channel: -1
Slider6Channel: -1
Slider7Channel: -1
Slider8Channel: -1
MasterVolumeSlider: -1
MasterSliderChannel: -1
Send1Knob1: -1
Send1Knob2: -1
Send1Knob3: -1
Send1Knob4: -1
Send1Knob5: -1
Send1Knob6: -1
Send1Knob7: -1
Send1Knob8: -1
Send2Knob1: -1
Send2Knob2: -1
Send2Knob3: -1
Send2Knob4: -1
Send2Knob5: -1
Send2Knob6: -1
Send2Knob7: -1
Send2Knob8: -1
TrackArmButton1: -1
TrackArmButton2: -1
TrackArmButton3: -1
TrackArmButton4: -1
TrackArmButton5: -1
TrackArmButton6: -1
TrackArmButton7: -1
TrackArmButton8: -1
VolumeMapMode: Absolute
SendsMapMode: Absolute

[TransportControls]
# The transport buttons are also expected not to be toggles.
StopButton: -1
PlayButton: -1
RecButton: -1
LoopButton: -1
RwdButton: -1
FfwdButton: -1

Post Reply