Skip to content

Conversation

@ldraney
Copy link

@ldraney ldraney commented Jan 15, 2026

Summary

  • Fix duplicate_clip_to_arrangement to pass clip_slot.clip instead of clip_slot
  • Add null check to prevent errors when clip_slot is empty

Problem

The Track.duplicate_clip_to_arrangement() method in Ableton's Python API expects a Clip object, not a ClipSlot object:

Track.duplicate_clip_to_arrangement(clip, destination_time)

The current implementation passes the clip_slot directly, which causes a Boost.Python.ArgumentError:

Boost.Python.ArgumentError: Python argument types in
    Track.duplicate_clip_to_arrangement(Track, ClipSlot, float)
did not match C++ signature:
    duplicate_clip_to_arrangement(class TTrackPyHandle self, class TPyHandle<class AClip> clip, double destination_time)

Solution

Changed line 147 in track.py from:

track.duplicate_clip_to_arrangement(clip_slot, time)

To:

if clip_slot.clip:
    track.duplicate_clip_to_arrangement(clip_slot.clip, time)

Test plan

  • Verified fix works in Ableton Live 12.3.2
  • Clips are successfully duplicated from session view to arrangement view at specified beat positions
  • Empty clip slots are handled gracefully (no error, just no-op)

🤖 Generated with Claude Code

The Ableton API expects a Clip object, not a ClipSlot object.
Changed from clip_slot to clip_slot.clip with null check.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@CLAassistant
Copy link

CLAassistant commented Jan 15, 2026

CLA assistant check
All committers have signed the CLA.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants