Quantcast
Channel: KVR Audio
Viewing all articles
Browse latest Browse all 5492

Tracktion • Ableton Live-Style Timeline Duplication

$
0
0
Hey all,

I've been trying Waveform again and have been really impressed. I've never been 100% happy with any DAW I've used but Waveform now does pretty much everything I would want a DAW to do. All the annoyances and pain points from when I tried it years ago seem to have since been resolved. One thing I do miss is being able to duplicate a time selection like in Ableton Live. Basically you select time across one or more tracks and as many times as you hit ctrl/cmd+d it will duplicate that selection. Like this:
custom-duplicate2.gif
Waveform duplicate does not work like this but as you can see I've created a macro to mimic Live's functionality. I thought I would share the script in case anyone else is interested in it. Here it is:

Code:

if(Tracktion.getPosition ('markOut')){    // There is a range set    // Comment this line to avoid splitting clips partially in the marked region (they will instead be ignored    // if they start before the marked region)    Tracktion.splitMarkedRegion();    // Select all marked clips, then get them in an array    Tracktion.selectClips ('marked');    var selectedClips = Tracktion.getSelectedEditElements ('clip');    if(selectedClips.length){        // There are clips in the marked region        // Iterate over the array to find the offset from markIn of the clip with the earliest start        var offset = Math.pow(10, 1000);        for(var i = 0; i < selectedClips.length; i++){            var clipOffset = selectedClips[i].getProperty ('start') - Tracktion.getPosition ('markIn');            if(clipOffset < offset){                offset = clipOffset;            }            if(offset === 0){                break;            }        }        if(offset < 0 || offset === Math.pow(10, 1000)){            offset = 0;        }        // Copy clips in the current time selection        Tracktion.copy();        // Paste in place - pasted clips are selected automatically        Tracktion.paste();        // Move the cursor to markOut plus the offset of the earliest clip        // and then move the selected clips (i.e. the ones that were just pasted) there as well        Tracktion.setPosition ('cursor', Tracktion.getPosition ('markOut') + offset);        Tracktion.moveStartOfSelectedClipsToCursor();        // Shift the marked region over by one length        // Grab current markOut position        var markOut = Tracktion.getPosition ('markOut');        // Move markOut one length forward        Tracktion.setPosition ('markOut', markOut + (markOut - Tracktion.getPosition('markIn')));        // Set markIn to the old markOut position        Tracktion.setPosition ('markIn', markOut);    }    // No marked clips - do nothing}else{    // No range set - just call regular duplicate method    Tracktion.duplicate();}
Let me know if you find it useful (or encounter any issues)!

Statistics: Posted by Greenstorm33 — Thu Feb 29, 2024 12:03 am — Replies 2 — Views 58



Viewing all articles
Browse latest Browse all 5492

Trending Articles