Coder Social home page Coder Social logo

autoclip's Introduction

AutoClip

Stable Badge

Single Clip

Order Maintained From Duplicate

Order Maintained From Delete

Session View Naming

Clip Creates Named Track

By: Cory Boris
ยฉ 2024 MIT License

A Control Surface for Automatically Changing Clips' Names Based on the Name of their Parent Track In Ableton Live 11+ WITHOUT PLUGINS ;)

**for Mac or Windows**

6 Steps to setup:

Note: this assumes you are using the default user library folder. If you have moved this folder externally or otherwise, make a Remote Scripts folder inside of whatever user library folder you have pointed Ableton to, and start from step 2:

  1. Mac users:
    Go to /Users/your_username/Music/Ableton/User Library
    Windows users:
    Go to \Users\your_username\Documents\Ableton\User Library
  2. Create a folder 'Remote Scripts' if it's not already created.
  3. Create a folder titled 'AutoClip' inside the 'Remote Scripts' folder.
  4. Download both .py files, "AutoClip.py" and "__init__.py", and place them in the 'Remote Scripts/AutoClip' folder.
  5. Restart or open Ableton Live
  6. In Ableton, select 'AutoClip' in the "Link|Tempo|Midi" tab, and make sure the input and output are set to 'None'.

Note: You can add the 2 mentioned files from here to their respective folders as shown by my tutorial while Ableton is open or quit, but if Ableton is open, then you will have to restart Ableton for the selected control surface to go into effect. The reason being is that Ableton compiles python and loads python code into memory when Ableton starts, but not after it loads up. For you using the software, this means that in order to update this script if and when it is updated, then you will have to restart Ableton to use the updated software.

Lit af features:

  1. In Arrangement View: Rename a Midi track named 'Midi' or an Audio track named 'Audio' and then the names of every clip are magically changed to the name of their individual tracks + the number the clip is in order from left to right. Order is always maintained.
  2. In Session View: Rename a Midi or Audio Track and then the clips you drag to these tracks or the clips already existing will be renamed the name of the track + the number of the clip from top to bottom.
  3. The number in a renamed clip's name in Session view is not based on the next adjacent clip but rather the next adjacent clip slot whether or not there is a clip. I thought this made more sense for session view.
  4. Anytime you drop a clip in a track, it will automatically be renamed to match the above rules.
  5. Take Lanes are unaffected by this script.
  6. If there is one clip in a track in arrangement view, it won't have a number, it keeps its original name.
  7. If you have your default Audio and Midi tracks named 'Audio' and 'Midi', then upon dropping one or more clips into the clip/device area or into a default track, the default track's name now becomes the same as the clip's name without the last number separated by a space. So Clip 3 becomes Clip, Clip 3 4 becomes Clip 3, etc.
    Note: With multiple clips dragged simultaneously into a blank clip/device area, the newly created track's name will then become that of the first clip without its appended number from left to right.
  8. Lastly, when this control surface is enabled, you won't be able to name clips manually, as their names will always be reset whenever you drag a single clip.

Note 2: You may notice that undo has additional steps from this script. That is normal. Basically, this script adds various custom actions and so two actions are added to your undo stack whenever you do the following:
-Drag a clip to the clip/device area
-Drag a clip to a default track
-Add a clip to a track
-Rename a track with clips in it
-Duplicate a clip

Final note: By default, Ableton includes '#' in the name of the default audio and midi tracks as a way to number the tracks automatically. But when using this program, if you have a '#' in the name of any default track, then when dropping a clip into the clip/device area, this will cause an infinite recursion glitch. The only way to prevent this error when working with this script is to not have '#' in the track name. I will be trying to make it so this glitch doesn't happen, but for now this is the only way to abate the glitch. And getting this to not conflict with '#' is proving to be nigh-impossible so far.

I am confident to say that the '#' character has two functions: numbering the track in its top to down order, as well as naming a track after its clip. However, there are a couple things to make note of here. When the automatic track naming function that is built into the '#' symbol takes place, the number of the track still gets added, proving to be frustrating if a clip has the unfortunate fate of starting with a number. My solution does fine to name the track after a clip if and only if the default name of your track is 'Audio' or 'Midi'.

After a bunch of troublshooting what happens when '#' interacts with my script, '#' is replaced with its number or clip name as an internal process in C++, and anytime I try and interfere with that particular process, I fail because the transformative process of replacing '#' takes precedence over my script.

If I find other bugs or glitches I will post them here.

Open Issues:

Can't interact with '#' character, and attempting to do so causes infinite recursion.

Future Updates:

I was thinking it would be cool to use the name of the track to determine if clips will be renamed or not based on a code word.
For now, every clip is named at once when loading the control surface, I can understand if this is a bit 'all or a nothing' but I figured you always have the option to deselect the control surface in settings.

Other Related Programs:

TrueAutoColor
A stunning custom color layout maker for Ableton Live 11+ on Mac AND Windows which instantly changes track and clip colors based on name, no plugins necessary.

Coffees Welcome!

  • GitHub Sponsors
  • PayPal
  • Venmo: @Cory-Boris
  • Ethereum Address: 0x3f6af994201c17eF1E86ff057AB2a2F6CB0D1f6a

Thank you! ๐Ÿ”ฅ๐ŸฅฐโœŒ๐Ÿป๐Ÿ™๐Ÿป

autoclip's People

Contributors

corywboris avatar

Watchers

Kostas Georgiou avatar

autoclip's Issues

conflict with TrueAutoColor

Currently, this script works as expected with TrueAutoColor, but there are errors, most likely cause by having conflicting event handlers on clips. I'm trying to find a more robust way to get rid of event handlers if there is a conflict like this, but it may be that the only solution is to combine both scripts into one. Open to any suggestions!!

Undo history issue

Undo history is interfered with, making this script a bit problematic at the moment. Use at your own risk until this issue is closed!

A '#' in the default Audio or Midi track causes infinite recursion

Pretty much what the title is. This glitch is avoided entirely if your default Audio and MIDI tracks don't contain this symbol at all. Working on a way to ignore it, but this is actually pretty difficult because Ableton evaluates the '#' symbol as soon as a track is created before the script can deal with it. This is probably an error more nuanced than what I can fix with a remote script, as the evaluation of the '#' symbol is probably happening internally at the C++ level. Open to any help on this!!

deleting tracks really quickly causes this error

I don't know why, but deleting tracks very quickly causes this error. But, there is no error if you delete each track and pause for like a second for some reason.

...
INFO:root:866 - Type of clip_slot: <class 'ClipSlot.ClipSlot'>
ERROR:ableton.v2.base.task:929 - Error when executing task
Traceback (most recent call last): File "output/Live/mac_universal_64_static/Release/python-bundle/MIDI Remote Scripts/ableton/v2/base/task.py", line 235, in do_update File "output/Live/mac_universal_64_static/Release/python-bundle/MIDI Remote Scripts/a
if clip_slot.has_clip:Boost.Python.ArgumentError: Python argument types in
None.None(ClipSlot)
did not match C++ signature:
None(TPyHandle)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.