APC40 - Step Sequencer, Note Mode, 2nd Device Control, etc.

Discuss music production with Ableton Live.
Dalski
Posts: 204
Joined: Sun Dec 28, 2008 10:59 pm

Re: Note Mode for the APC40 - Python Scripts

Post by Dalski » Thu May 20, 2010 9:47 pm

No Live 7 support :cry:

HeadrickProductions
Posts: 612
Joined: Fri Sep 11, 2009 7:41 pm

Re: Note Mode for the APC40 - Python Scripts

Post by HeadrickProductions » Fri May 21, 2010 2:48 am

Request or suggestion how to get this to work.


Your in session in live setting

So let's say you have a beat made and going (battery 3 or whatever)

then you want to do another loop in time (Massive lead or anything for that matter).
You have already set the length of midi clip to the same length as the battery 3 loop

I want to be able to press the launch all clips of the apc for that row so that it re-triggers the drum loop while at the same time starting to record the massive loop recording so they are in perfect time.

I've found that when I press the launch all button on the apc for that row it re-triggers the drum loop and just plays the massive loop and does not record. I have to reach and press both buttons. Now when it is just two button that is not bad but you can imagine when you have many loops that it is a problem.

Any way to fix this or suggest any type of work around


If I'm not clear just let me know but I thought you'd be a good source to see if there is something that can be done.
In a K induced Haze (the old K kind not the special K kind ), but an Asian spizz can sometimes bring me out! If ya don't get it, ya never will.

Swing like your life depends on it

Hanz_Petrov
Posts: 119
Joined: Sat Feb 06, 2010 2:39 pm
Contact:

Re: Note Mode for the APC40 - Python Scripts

Post by Hanz_Petrov » Sun May 23, 2010 2:06 am

HeadrickProductions wrote:Request or suggestion how to get this to work.

Your in session in live setting

So let's say you have a beat made and going (battery 3 or whatever)

then you want to do another loop in time (Massive lead or anything for that matter).
You have already set the length of midi clip to the same length as the battery 3 loop

I want to be able to press the launch all clips of the apc for that row so that it re-triggers the drum loop while at the same time starting to record the massive loop recording so they are in perfect time.

I've found that when I press the launch all button on the apc for that row it re-triggers the drum loop and just plays the massive loop and does not record. I have to reach and press both buttons. Now when it is just two button that is not bad but you can imagine when you have many loops that it is a problem.

Any way to fix this or suggest any type of work around


If I'm not clear just let me know but I thought you'd be a good source to see if there is something that can be done.
Not sure what to suggest. Might be easier to program a solution for this in M4L, however, if you could describe how you would imagine such a solution, I might be able to tell you how feasible it would be to implement as a python script.

Best,

Hanz
http://remotescripts.blogspot.com/ - an introduction to the Framework classes

Hanz_Petrov
Posts: 119
Joined: Sat Feb 06, 2010 2:39 pm
Contact:

Re: Note Mode for the APC40 - Python Scripts

Post by Hanz_Petrov » Sun May 23, 2010 2:09 am

I've updated the APC40 Note Mode scripts so that all of the new features are now shifted controls (with the exception of Note Mode). This leaves the original APC40 assignments unchanged.

- Shift + Tap Tempo = Device Lock.
- Shift + Nudge- = Undo.
- Shift + Nudge+ = Redo.
- Shift + Cue Volume = Tempo Control.
- Shift + Arm = Slider Reassignment. 8 Modes are available (from left to right): Vol, Pan, Send A, Send B, Send C, User 1, User 2, User 3.

I've left Note Mode mapped to the Master button (as it is with the APC20), since Shift + Master is a bit awkward. I figure that if it's good enough for the APC20, then it's good enough for the APC40. ;)

Also, the lower left 4 x 4 section of the Note Mode grid will now follow the Drum Rack selection box (can't make it any bigger, however, since the LiveAPI limits pad translations to 16 notes).

The new files are available at my blog.

Enjoy.

Hanz

PS: Guess this thread should really be moved to the Tips & Tricks forum, since the new Board Index now states clearly: "Share your Ableton Live secrets here". ;)
http://remotescripts.blogspot.com/ - an introduction to the Framework classes

dna598
Posts: 888
Joined: Tue Sep 23, 2008 3:42 am

Re: Note Mode for the APC40 - Python Scripts

Post by dna598 » Sun May 23, 2010 4:02 pm

WOW

I think Ableton need to hire you.
ctrl + left/right = select transient

ctrl + shift + left/right = select between transients

ctrl + space = play selection

dna598
Posts: 888
Joined: Tue Sep 23, 2008 3:42 am

Re: Note Mode for the APC40 - Python Scripts

Post by dna598 » Mon May 24, 2010 1:50 am

Just wondering....

any way to implement a "user" mode? Perhaps shift + master could get to it? (edit-just realised thats for master track)

Its easy to run out of clip buttons on one channel if you have more than 5 clips and you are improvising, for example.

Its not so practical to move the red box while improvising at speed, so it would be cool to stick all my drum clips in the user mode,

This would be good when triggering loads of drum clips (in my case) anyway, and would go some way to completing the incomplete feature set we were given before your wonderful hack....

Thank you again!
Last edited by dna598 on Mon May 24, 2010 2:20 pm, edited 1 time in total.
ctrl + left/right = select transient

ctrl + shift + left/right = select between transients

ctrl + space = play selection

Markemark
Posts: 250
Joined: Mon Jun 22, 2009 3:51 pm

Re: Note Mode for the APC40 - Python Scripts

Post by Markemark » Mon May 24, 2010 4:32 am

Hanz_Petrov wrote:I've updated the APC40 Note Mode scripts so that all of the new features are now shifted controls (with the exception of Note Mode). This leaves the original APC40 assignments unchanged.

- Shift + Tap Tempo = Device Lock.
- Shift + Nudge- = Undo.
- Shift + Nudge+ = Redo.
- Shift + Cue Volume = Tempo Control.
- Shift + Arm = Slider Reassignment. 8 Modes are available (from left to right): Vol, Pan, Send A, Send B, Send C, User 1, User 2, User 3.

I've left Note Mode mapped to the Master button (as it is with the APC20), since Shift + Master is a bit awkward. I figure that if it's good enough for the APC20, then it's good enough for the APC40. ;)

Also, the lower left 4 x 4 section of the Note Mode grid will now follow the Drum Rack selection box (can't make it any bigger, however, since the LiveAPI limits pad translations to 16 notes).

The new files are available at my blog.

Enjoy.

Hanz

PS: Guess this thread should really be moved to the Tips & Tricks forum, since the new Board Index now states clearly: "Share your Ableton Live secrets here". ;)
Hey Hanz, excellent work, any sign of notemode feedback available in the api? I tried the new files and encountered one bug, seems like the tap tempo is still on the shifted button, probably just left over from the first scripts you made. Device lock is also on the tap tempo button when shifted which is correct.

Hanz_Petrov
Posts: 119
Joined: Sat Feb 06, 2010 2:39 pm
Contact:

Re: Note Mode for the APC40 - Python Scripts

Post by Hanz_Petrov » Mon May 24, 2010 2:33 pm

@dna598: Sounds like a good idea - it should be possible to have two User modes, like the LaunchPad does (one for notes, and one for custom mapping). I'll try to look into it when I have a chance.

@Markemark: Unfortunately, Note Mode feedback is not so simple. As you know, the APC40 grid uses identical notes on multiple channels, so feedback would need to do the same. My script actually uses note & channel translations to get around this, but it works for outbound data only. I'll let you know if I come up with anything clever.

Thanks also for finding the double-mapping on Shift + Tap Tempo - it's now been fixed.

Best,

Hanz
http://remotescripts.blogspot.com/ - an introduction to the Framework classes

Ernst
Posts: 34
Joined: Wed Aug 18, 2004 7:49 pm

Re: Note Mode for the APC40 - Python Scripts

Post by Ernst » Mon May 24, 2010 5:12 pm

This is great! Personally though, I would only occasionally use the note mode whereas I'm constantly shifting between Master and Track for fx tweaking when I play live. Would love if Note Mode could be shift-activated too, leaving the Master button to it's original function. Keeps it all consistent too. ;-)

Hanz_Petrov wrote:I've updated the APC40 Note Mode scripts so that all of the new features are now shifted controls (with the exception of Note Mode). This leaves the original APC40 assignments unchanged.

- Shift + Tap Tempo = Device Lock.
- Shift + Nudge- = Undo.
- Shift + Nudge+ = Redo.
- Shift + Cue Volume = Tempo Control.
- Shift + Arm = Slider Reassignment. 8 Modes are available (from left to right): Vol, Pan, Send A, Send B, Send C, User 1, User 2, User 3.

I've left Note Mode mapped to the Master button (as it is with the APC20), since Shift + Master is a bit awkward. I figure that if it's good enough for the APC20, then it's good enough for the APC40. ;)

Also, the lower left 4 x 4 section of the Note Mode grid will now follow the Drum Rack selection box (can't make it any bigger, however, since the LiveAPI limits pad translations to 16 notes).

The new files are available at my blog.

Enjoy.

Hanz

PS: Guess this thread should really be moved to the Tips & Tricks forum, since the new Board Index now states clearly: "Share your Ableton Live secrets here". ;)

Hanz_Petrov
Posts: 119
Joined: Sat Feb 06, 2010 2:39 pm
Contact:

Re: Note Mode for the APC40 - Python Scripts

Post by Hanz_Petrov » Mon May 24, 2010 5:39 pm

You guys are hard to please. ;)

I had done a version with Shift + Master for Note Mode, but found it inconvenient to use. Since you've asked, however, I've uploaded it as an alternate version.

Best,

Hanz
http://remotescripts.blogspot.com/ - an introduction to the Framework classes

Ernst
Posts: 34
Joined: Wed Aug 18, 2004 7:49 pm

Re: Note Mode for the APC40 - Python Scripts

Post by Ernst » Mon May 24, 2010 6:51 pm

Aw man, I hope I didn't come across as ungrateful! You truly are the man and I'm happy for whatever extra functionality and tweaks you have the time to supply. Thank you so much for the alternate version! ;-D

Cheers,

/E
Hanz_Petrov wrote:You guys are hard to please. ;)

I had done a version with Shift + Master for Note Mode, but found it inconvenient to use. Since you've asked, however, I've uploaded it as an alternate version.

Best,

Hanz

Markemark
Posts: 250
Joined: Mon Jun 22, 2009 3:51 pm

Re: Note Mode for the APC40 - Python Scripts

Post by Markemark » Mon May 24, 2010 7:55 pm

Hanz_Petrov wrote:You guys are hard to please. ;)

I had done a version with Shift + Master for Note Mode, but found it inconvenient to use. Since you've asked, however, I've uploaded it as an alternate version.

Best,

Hanz
Thanks, I agree, consistency with shift is key. Now how 'bout those available clip stop buttons!!! :lol:

Markemark
Posts: 250
Joined: Mon Jun 22, 2009 3:51 pm

Re: Note Mode for the APC40 - Python Scripts

Post by Markemark » Tue May 25, 2010 3:53 am

Hey Hanz in max4live I was able to remove "session overview" from the shift button yet still keep the shift working for the "device control" banks. In this way maybe you could implement the available 8 clip stop buttons like this:
Shift + clip stop button
1. Clip Launch
2. Session Overview
3. Note Mode
4. User Mode
5. ????
6. etc.......

This way "Master Track Select" is free to use how people choose again.
I know you mentioned earlier about maybe using the clip stop buttons for velocity or octave shifts in Note Mode, well this would still be possible once in Note Mode. Then once shift is pressed they are to switch modes again.

Hanz_Petrov
Posts: 119
Joined: Sat Feb 06, 2010 2:39 pm
Contact:

Re: Note Mode for the APC40 - Python Scripts

Post by Hanz_Petrov » Wed May 26, 2010 3:09 am

I've started to look at implementing a User Mode, but this will likely take some time - the APC scripts are not currently structured to use more than 2 modes, and so the required changes are relatively complex (plus, I never seem to have enough spare time as it is.. ;)

In the meantime, however, I've made the Note Mode buttons user-mappable. This means that any of the Note Mode buttons can be MIDI-mapped, and the rest will continue to send MIDI notes.

The updated files are available at my blog (shifted and non-shifted versions now together in one download).

Best,

Hanz
http://remotescripts.blogspot.com/ - an introduction to the Framework classes

flippo
Posts: 486
Joined: Fri Feb 05, 2010 6:06 am
Location: Melbourne

Re: Note Mode for the APC40 - Python Scripts

Post by flippo » Wed May 26, 2010 3:16 pm

rightio.

Python (and coding) noob here.

I'm trying to achieve a note grid that uses the full 8 columns, as apposed to two groups of 4.

like so


36 37 38 39 40 41 42 43
44 45 46 47 48 49 50 51
52 53 54 55 56 57 58 59
60 61 62 63 64 65 66 67
68 69 70 71 72 73 74 75


and, I also want the lights to look like this (the ones with white bars over them are flashing)

Image


with my rudimentary coding skills I had a go and this is what I came up with. However, when I use this Live fails to connect with the APC40 at all.

Code: Select all

    def _on_note_mode_changed(self):
        if not self._master_button != None:
            raise AssertionError
        if self.is_enabled() and self._invert_assignment == self._toggle_pressed:
            if self._note_mode_active:
                self._master_button.turn_on()
                for scene_index in range(5):
                    #TODO: re-map scene_launch buttons to note velocity...
                    scene = self._session.scene(scene_index)
                    for track_index in range(8):
                        clip_slot = scene.clip_slot(track_index)
                        button = self._matrix.get_button(track_index, scene_index)
                        clip_slot.set_launch_button(None)                        
                        button.set_enabled(False)
                        button.set_channel(9) #remap all Note Mode notes to channel 10
                        if track_index < 8:
                            button.set_identifier(36 + (8 * scene_index)  + track_index))
                            if (scene_index = 4):
                                buton.send_value(6)
                            if ((scene_index < 4) and (scene_index > 0)) and (track_index < 3):
                                buton.send_value(5)
                            if (scene_index =  0 abd track_index= 2):
                                button.send_value(5)
                            if (scene_index < 1) and ((track_index = 3) or (track_index = 4) or (track_index = 5)):
                                button.send_value(2)
                            if (scene_index > 1 and scene_index < 4) and (track_index > 3 and track_index < 7):
                                button.send_value(1)
                            if (scene_index > 1 and track_index < 2):
                                button.send_value(3)
                            if (scene_index = 2 or scene_index = 3) and (track_index = 7):
                                button.send_value(4)
                            else:
                                button.send_value(0)
                self._rebuild_callback()
            else:
                self._master_button.turn_off()
        return None

I assumed, rightly or wrongly, from looking at the existing code that the top-most scene and the left-most track = 0, not 1?

I'm sure I've done some very basic coding error. I will do some more reading on python, but I thought in the meantime someone might be able to shortcut me :)

Post Reply