Page 1 of 2

APC20 : having the Record Arm row always in shift mode

Posted: Wed Feb 09, 2011 10:44 am
by SBRK
Hello, I just bought an APC20, and have a question : is it possible to keep the Record Arm row always in shift mode ?
Because when I play live, I don't use the arm buttons, but on the other hand I switch a lot between volume, send a, b, c, and user 1 2 3... So it's a pain in the ass having to push shift all the time, and not seeing at any moment in which mode I am...

And if it's not possible (I guess it's the case...) It would be a feature to consider, don't you think ? :roll:

EDIT :
Since I found a solution, I'll share it with everyone.
Read more and download here :

http://midicontrolds.blogspot.com/2011/ ... t-for.html

Re: APC20 : having the Record Arm row always in shift mode ?

Posted: Wed Feb 09, 2011 12:48 pm
by seattletruth
I don't have an APC but from what I understand its just sending MIDI msgs, correct? Ones that are automapped to Live, right?

So you should be able to accomplish what you wish using Bome's MIDI translator (the classic edition will work for your case and its free).

You can program without-shift to act as if it's with the shift, and program with-shift to act as if it's without-shift very easily by capturing the incoming MIDI messages for the incoming and outgoing settings. You also need to install MIDI Yolk (or the mac equivalent) to be able to use the Midi translator. I made a youtube tutorial on the whole process (which will apply to your APC also.. same business).

http://www.youtube.com/watch?v=o3ggc1D3xb8

let me know if you need any help!

Re: APC20 : having the Record Arm row always in shift mode ?

Posted: Wed Feb 09, 2011 3:47 pm
by Hanz_Petrov
The APC20 remote script re-assigns the slider functionality (changes modes) if an arm button is pressed while Shift is held down. The same MIDI messages and channels are used for all modes. Haven't used Bomes myself, but it would need to intercept the Arm button Note On and replace with a Shift button Note On, followed by the Arm button Note On, then Note Offs for both. To do the opposite action, it would need to intercept the Shift Note On, then check for an Arm Note On happening before the Shift Note Off, then forward only the Arm Notes (but not the Shift Notes).

Probably easier to mod the APC20 script to invert the arm button shifted modes.

Best,

Hanz

Re: APC20 : having the Record Arm row always in shift mode ?

Posted: Wed Feb 09, 2011 7:13 pm
by SBRK
If i send those note messages to the APC, via a midi channel in live, will they trigger the original functions in the APC ?

Edit :
I read your message again. If i understand right, everything is handled software-side, by the scrit, and not hardware side (much like a Novation Nocturn communiczting with Automap and Automap sending the midi to the softwares and sending the visual feedback to the Nocturn) ? In that case, yeah, modding the script would be a solution, but i've never done that beforr. They're coded in Python, right ?

Edit bis :
How can I edit the APC 20 remote scripts ? ^^ is there a way to de-compile them ? It looks like you managed to do that (I've been on your blog), how did you do ?

Edit ter :

Nevermind, I found the links to the decompiled APC20 scripts. I hope they will work with Ableton 8.2

Re: APC20 : having the Record Arm row always in shift mode ?

Posted: Wed Feb 09, 2011 8:17 pm
by SBRK
So, I transformed this part in ShiftableSelectorComponent.py :

Code: Select all

            if self._mode_index == int(self._invert_assignment):
                self._slider_modes.set_mode_buttons(None)
                for index in range(len(self._select_buttons)):
                    self._mixer.channel_strip(index).set_arm_button(self._arm_buttons[index])
            else:
                for index in range(len(self._select_buttons)):
                    self._mixer.channel_strip(index).set_arm_button(None)
                self._slider_modes.set_mode_buttons(self._arm_buttons)
Into that :

Code: Select all

            if self._mode_index == int(self._invert_assignment):
                for index in range(len(self._select_buttons)):
                    self._mixer.channel_strip(index).set_arm_button(None)
                self._slider_modes.set_mode_buttons(self._arm_buttons)
            else:
                self._slider_modes.set_mode_buttons(None)
                for index in range(len(self._select_buttons)):
                    self._mixer.channel_strip(index).set_arm_button(self._arm_buttons[index])
Will that work ?

And subsidiary question : how do I compile it ? :)

Re: APC20 : having the Record Arm row always in shift mode ?

Posted: Wed Feb 09, 2011 9:58 pm
by SBRK
Yeah ! it worked. Apparently, Ableton Live compiles the .py files automaticaly at launch, so I put my modified ShiftableSelectorComponent.py and removed the original ShiftableSelectorComponent.pyc from the folder, and now, the shift mode of the Arm buttons is inverted.

EDIT :

for some reason, the Up and Down buttons are inverted. I'm not sure why, and I'll try to see if other odd stuff happens.
Left and right are inverted aswell. It must have something to do with the code I changed... Or maybe it's because it comes from an older version of Ableton and some things changed in the meantime ? Different constant names maybe ?

EDIT bis :
Found it. I had to change index 6 and 7, and index 4 and 5 here :

Code: Select all

self._session.set_track_bank_buttons(self._select_buttons[5], self._select_buttons[4])
self._session.set_scene_bank_buttons(self._select_buttons[7], self._select_buttons[6])
self._zooming.set_nav_buttons(self._select_buttons[7], self._select_buttons[6], self._select_buttons[5], self._select_buttons[4])

Re: APC20 : having the Record Arm row always in shift mode ?

Posted: Wed Feb 09, 2011 10:39 pm
by SBRK
Here's the script I created, you can download it at that link :

http://midicontrolds.blogspot.com/2011/ ... t-for.html

Re: APC20 : having the Record Arm row always in shift mode

Posted: Thu Feb 10, 2011 1:53 pm
by The Leveller
I am going to say it since no-one else has. Bloody good work in solving your problem man! well done. 8)

Re: APC20 : having the Record Arm row always in shift mode ?

Posted: Fri Feb 11, 2011 3:00 am
by Hanz_Petrov
Nice work SBRK. :-)

Just a couple of things:
SBRK wrote:I had to change index 6 and 7, and index 4 and 5 here :

Code: Select all

self._session.set_track_bank_buttons(self._select_buttons[5], self._select_buttons[4])
self._session.set_scene_bank_buttons(self._select_buttons[7], self._select_buttons[6])
^Looks like this is correct; the left/right and up/down button assignments were inadvertantly switched in the decompiled APC20 script.

On the other hand, I don't think the following line needs to be fixed:

Code: Select all

self._zooming.set_nav_buttons(self._select_buttons[6], self._select_buttons[7], self._select_buttons[4], self._select_buttons[5])
The zooming nav buttons are only used in combination mode with an APC40 (for session overview navigation), since they can't be accessed on the APC20 alone (e.g. shift + left is for track 5 select, not session overview left nav). At any rate, it works fine here in combination mode without fixing.

Salutations,

Hanz

Re: APC20 : having the Record Arm row always in shift mode ?

Posted: Fri Feb 11, 2011 5:31 pm
by SBRK
Hanz_Petrov wrote:Nice work SBRK. :-)

Just a couple of things:
SBRK wrote:I had to change index 6 and 7, and index 4 and 5 here :

Code: Select all

self._session.set_track_bank_buttons(self._select_buttons[5], self._select_buttons[4])
self._session.set_scene_bank_buttons(self._select_buttons[7], self._select_buttons[6])
^Looks like this is correct; the left/right and up/down button assignments were inadvertantly switched in the decompiled APC20 script.

On the other hand, I don't think the following line needs to be fixed:

Code: Select all

self._zooming.set_nav_buttons(self._select_buttons[6], self._select_buttons[7], self._select_buttons[4], self._select_buttons[5])
The zooming nav buttons are only used in combination mode with an APC40 (for session overview navigation), since they can't be accessed on the APC20 alone (e.g. shift + left is for track 5 select, not session overview left nav). At any rate, it works fine here in combination mode without fixing.

Salutations,

Hanz
I think the code I posted was after I corrected it. Anyways, it works like a charm now :)
I'm gonna read your blog more, in order to understand better how the script works and how to male more advanced stuff.

Re: APC20 : having the Record Arm row always in shift mode

Posted: Fri May 27, 2011 9:41 am
by allareone_tcf
nice scripting mod! i like the inverted slider mode idea

i put in the changes in my personal script, but noticed a tiny glitch maybe..... after shifting to arm view and you release shift, the current mode [vol, pan, user etc.] doesnt light up when it reverts back.... any ideas? still love the mod tho....

Re: APC20 : having the Record Arm row always in shift mode

Posted: Fri May 27, 2011 1:00 pm
by VC
Hi i tried this script but i could not get it to work. I also tried Hanz 822 script and neither of these even showed the red(in my case green) box.
Any ideas what could be done to get it work?

Re: APC20 : having the Record Arm row always in shift mode

Posted: Sun Sep 11, 2011 6:02 am
by Muzik 4 Machines
this is brillant, so i guess i can also be done to have the track select permanently on instead of the transport an other functions? (and use shift for play rec, and arrows, as in a live situation, i'll never ever have to press stop/record, but quickly selecting a track happens pretty often (like for arming vs volume/pan/etc)

Re: APC20 : having the Record Arm row always in shift mode

Posted: Sun Sep 11, 2011 8:59 am
by Hermanus
bookmark *

nice finding SBRK

Re: APC20 : having the Record Arm row always in shift mode

Posted: Fri Jan 27, 2012 2:06 pm
by gilas
Hi I made the script running on live 8.2.2

try here:

http://www.mediafire.com/?5owpcx8jnbcqiq7