APC40 recalling changes to track control mode while disabled

    Aug 30 2010 | 2:05 am
    So I'm working on my own APC40 modes, and I've run into an irregularity that has me stumped.
    I've got it set so that the four buttons above the transport controls are my mode selectors, and the first one puts the APC40 in "normal functionality" mode, with the exception that those four buttons remain as mode selectors.
    When any mode besides "normal" mode is engaged, I've got all the default functionality disabled via enable_0 commands. This seems to work perfectly, with the exception of the pan, send_a, send_b and send_c buttons. While they appear to be disabled (they're not lighting up with presses, etc.), as soon as I re-engage "normal" mode, the APC40 recalls which one of these four was last pressed while disengaged, and returns to normal mode in that state.
    For instance: I'm in normal, and the track control is set to pan. I jump into one of my other modes, and hit the send_a button while in that mode. When I jump back to normal mode, the track controls are set to send_a. Nothing else seems to function this way (i.e. if I press the button that mutes track 1 while in one of my custom modes, and jump back into normal mode, track 1 is not muted. This is what I want to happen here, too.)
    I realize I could just do this manually (set up something to store the track control last set and bang it out when I jump back into normal functionality), but it's bugging me. Is there a command I can send the Track_Control component to stop it from updating while disabled?

    • Aug 30 2010 | 9:39 am
      I haven't ran into what you are talking about yet, as that's the one part of the APC that I'm using stock (well...only with Hanz's alt scripts, anyway). Without seeing how you are going about things, its hard to say. How are you disabling normal functionality of the buttons, by setting the id in the Track Control to zero? Shift modes messes with things a lot for me, and I've found it easier to just keep track of things and put them back the way they should be when I need to....
      If you really want to free that section of the APC, you have to turn off all of the Mode functions which are linked to those buttons as well. Where they are I'm not sure, so my post is probably kind of useless. Are you doing this with Max or js?
    • Aug 30 2010 | 5:54 pm
      I'm sending enable_0 and enable_1 commands to the APC40 (on the uppermost level, that is to the APC40-mapped live.object), via Max. It seems to do precisely what I want, with the exception of the above quirk and the device on/off button (which I deal with separately).
      It makes sense that those four buttons behave differently, since they are only dealing with the APC40's state, rather than Live's state. (That is, "selected track" is a trait that Live has, but "mode of track control knobs" is not a trait of Live's.)
      It's just:
      a) Weird that they sort-of stop working while the APC40 is disabled. i.e. if Pan is lit up and I press Send_A, Send_A doesn't light up until I enable 1 the APC40 again. So they're like half disconnected, which strikes me as odd.
      b) I can't find a message to send them to stop them from behaving this way. I was looking at the "Track_Control" component (I think that's what it's called, I'm at work and can't verify) and can't identify a command to shut their mode-switching functionality off. I don't think I tried dealing with them individually last night like I did the "device_on_off_button", because I had been programming until my brain was mush, and it may be the obvious solution.
    • Aug 30 2010 | 6:08 pm
      You have to reassign the buttons in the module itself...its not a simple thing. I'm assuming that your not doing it via js, but if you are (or understand it) have a look at the js in Monomod for APC40. The method is to find out what the id of the buttons are(controls), then find out their place in the module (components), set that place to id 0, then reassign it with "set_blahblah_button" id (whatever the original button id is).
      I know the syntax in js, but I'm not sure how to do it in Max....I know others are doing it with Max, maybe ask around.
      I didn't know you could disable the whole script by disabling the one you are using LOL. Its good to share ;)
      Lemme know if you need further details, I'll help if I can.