A solution for the "Delete clip button missing" problem!

Share your Ableton Live secrets here
Post Reply
nc2010
Posts: 301
Joined: Fri Jul 02, 2010 9:34 am

A solution for the "Delete clip button missing" problem!

Post by nc2010 » Fri Aug 30, 2019 11:00 am

Hello,
There are many threads such as this one about the fact we cannot delete a clip in session view from a MIDI controller. There are some workarounds with M4L (I haven't tested), or with Bomes, etc.

Here is an easy solution for Launchpad :

1. Just launch this miditokey.exe (only 197 KB) and that's all. (No MIDI OX, MIDI Yoke, Bomes, etc. needed)
2. It will automatically open any MIDI device connected to computer containing the word "Launchpad" in its name
3. It will assign the bottom right button (MIDI note 119 in Session mode) to the DELETE keyboard key.
4. As long as the Ableton Live window has the focus and the session view has the focus, all you need to do is press the clip you want to delete (like if you want to play it), and press the bottom right button of the Launchpad. Done! The clip is deleted!

Very useful if you want to do many takes of an instrument, and immediately erase the bad takes.

Image

Remarks:
* For now it's a very simple tool, but I could modify it to accept any other MIDI device than Launchpad, and any other mapping MIDI note xx => shortcut key yy
* Comments are welcome !
* To avoid this bottom right pad to behave like a Play/stop button of the 8th row, first test with a Live set containing maximum 7 scenes, so it won't act as a normal button for the 8th row. This can easily be bypassed, I'll explain in another post if needed.

nc2010
Posts: 301
Joined: Fri Jul 02, 2010 9:34 am

Re: A solution for the "Delete clip button missing" problem!

Post by nc2010 » Thu Nov 28, 2019 1:22 pm

An even better solution here: viewtopic.php?f=1&t=236768

rynhardt
Posts: 1
Joined: Wed Aug 12, 2020 4:34 pm

Re: A solution for the "Delete clip button missing" problem!

Post by rynhardt » Wed Aug 12, 2020 5:04 pm

How to delete the current clip in session view, using a MIDI message from a foot controller (or any other MIDI controller)

I have manage to code a tiny remote script that deletes the current clip when it receives a MIDI note message.
This is after several hours collating stuff from everywhere, including but not limited to:

https://livecontrol.q3f.org/ableton-liv ... k-classes/

viewtopic.php?t=200513

For a more complete explanation reference these two links for file locations and control surface setup. My explanation below will be brief.

My current setup is an FCB1010 controller midi-out to an UMC404HD which has usb-midi into Ableton Live 10 Lite.

1. Create a folder called DeleteClip in C:\ProgramData\Ableton\Live 10 Lite\Resources\MIDI Remote Scripts\, i.e.
C:\ProgramData\Ableton\Live 10 Lite\Resources\MIDI Remote Scripts\DeleteClip

2. Create two python (text) files in the DeleteClip folder, __init__.py & DeleteClip.py, using the code below

3. Start up Ableton, go to Preferences, Link MIDI, and hopefully you'll see DeleteClip listed as a control surface. Choose your MIDI input device to use with the control surface, and you should be done. I did not activate any of Track/Sync/Remote options for this MIDI port, and it still works. Your mileage may vary.

4. The note value 100 is hard coded in the script. You can change it to any another note. :) You can also uncomment the self.show_message lines if you need to troubleshoot.

Code: Select all

#__init__.py
from .DeleteClip import DeleteClip

def create_instance(c_instance):
    return DeleteClip(c_instance)

Code: Select all

#DeleteClip.py
from __future__ import with_statement
import Live
from _Framework.ControlSurface import ControlSurface # Central base class for scripts based on the new Framework
from _Framework.ButtonElement import ButtonElement # Class representing a button on the controller
from _Framework.InputControlElement import * # for MIDI_NOTE_TYPE

CHANNEL=0
IS_MOMENTARY=True

class DeleteClip(ControlSurface):

    def __init__(self, c_instance):
        ControlSurface.__init__(self, c_instance)
        with self.component_guard():
            #self.show_message('DeleteClip started')
            self.deleteButton=ButtonElement(IS_MOMENTARY, MIDI_NOTE_TYPE, CHANNEL, 100) # Use MIDI note 100 to trigger the action
            self.deleteButton.add_value_listener(self._delete_clip,identify_sender= False)

    
    def _delete_clip(self, value):
        #self.show_message('Deleting clip')
        CurrentSlot = self.song().view.highlighted_clip_slot
        if CurrentSlot.has_clip:
            CurrentSlot.delete_clip()

Post Reply