Time Stretch Plugin

I am currently working on a time stretch / pitch shifting plugin. before attempting my more ambitious plugins for the platform.

Essentially it is a sample player with decoupled time stretch and pitch shift with multiple TS algos. PSOLA WSOLA, Phase Vocoder.

will work on both a “live” and a “recorded” attempt here… My experience isn’t with live however.

I dont want to reinvent any wheels here. but in my research it seems in the kick starter many people wanted this and didnt get it

1 Like

I am getting closer!!

2 Likes

ELAS = Elastic Stretch. Using SignalSmith’s Stretch approach

Params:

  • one-shot or loop
  • start and end with trim
  • time stretch algorithm selection
  • forment control
  • fade
  • pitch
  • stretch
1 Like

Once I get all this working. Then I’ll work on the slicing logic.

I have a file browser page kinda working but no files are showing

@thetechnobear maybe knows?

/media/linaro/SYNTHOR/samples/

is my first thought

but then again maybe it mounts somewhere else… like… /mount//samples

so this is more an offline/classic timestretch?

no clock signal or tempo sync ?

would be nice if we could control the timestretch amount with note info (or any other modulation)

/media/BOOT/samples/

do you not have a ethernet / wifi dongle to connect into SSP?

personally, Id say this is almost vital if you are doing development.
so that you can easily copy across builds, and restart synthor without having to continually remove sdcard.
also, it enables you to just ssh in to check out details like above.

the other thing I find useful, when using in linux vm, is mount the ssp’s (ext4) root file system (from sdcard reader) - easy way to dig in and check what is there etc.


a couple of points, that you mind find helpful as a dev.
a) user network access
most users do not have access via wifi/ethernet, and while not difficult to setup, it can be tricky / problematic for some.

b) have a dev and factory sdcard
at times Ive found it useful to alter the linux setup on the ssp to be more dev friendly.
but that runs the risk of introducing differences from end-user setup, so can be good to have 2 images.

that said, now the ssp is using a buildroot image its not as common for me to install ‘other stuff’ on the SSP, as you cannot pull from a pkg source or build on the SSP itself.

Right. My experience being a Linux engineer. (Been working with Linux since I was 12. And I am 43 now) and from I know Buildroot only gives you want the machine requires to run. No package manager. Nothing. Great because it keeps it light. Bad because of updates. I think we are stuck on GCC 8.4?

I just started with c++ last year. When I started making my own firmwares for modules I have.

Other than that since 2014 I’ve worked with Python, Perl, Java higher scripting languages. Essentially all the “DevOps” ish that are all corporate derived. Automation. Etc.

Before getting the Percussa, from a friend from
The Rack Pack, I researched its history. (I do it it with all the DSP’s I get into). I noticed in the kickstarter people were asking for a slicer and Time Stretch but it didn’t make it in the factory plugin list.

The power of the Percussa 192khz sample rate. 32-bit/24-bit with 2Gb of Ram. Makes it very viable to be a great time stretcher and slicer

1 Like

So what Inam doing now is starting with Time Stretch. Lock this down so it works with “recorded to a buffer” or wav files. And then from there add Octatrack style slicing.

So essentially you slice. And instead of making them playable across a 1v/oct thing. Of volt specific. Allow those slices to be assigned to individual busses essentially allowing for polyphony. I would also slow triggering over a 12-Tet etc. but right now it’s bringing the Octatrack style into the Percussa but with more power. And greater advancements in sonic quality

Transient slice detection. Etc. assign slice 3 to gate input 3 and pitch input 3 perhaps. Or assign slice 3, 4, 5 to the same gate/trigger and pitch inputs.

Finally will be individual slice manipulation. Or what I am calling Slice State saving.

1 Like

I wasn’t aware we could SSH into the box…. I am guessing using the USB 1 slot. Which according to the manual has Ethernet capabilities

Yeah we will get there. :slight_smile:

My plan is to add a slicing page, options page, which will have clock info, and recording page.

I also exposed input and output params. Last night.

Also add both manual stretching think Nebulae V2 vs time synced stretching like the Abelton does.

1 Like

the manual is out of date, check my wiki for details

Some uodates.

Trying to get the audition button to work. And the real Time stretch and pitch shifting. I got the overlay for the file browser working now.





The fade in and fade out UI animation I am stil working on

So there will be a multitude of pages/tabs. Right now there are 4 … max is 8….

Each page is either cycled through with the arrow keys. Or quickly accessed with the 8 buttons.

Start and stop indicators are used with trim as well. After trimming you can then process to warp the sample across the bar while keeping pitch.

Left shift is the “audition trigger”

Params with no “trigger” can be pushed and turned for faster speed.

In the file browser you will be able to choose a stored wav file or create a buffer, recently used, and a favorites.

To-do pages: slice, record, options, finalize (which will have export, normalize, save, etc)

Slice logic. Will be Octatrack stile where with one key you put a slice the next slice will close that slice group. Insert a slice where a slice is already is removed that slice. After creating a slice group (start and end slice) you can assign it to a trigger and pitch bus or assign to 12-tet. Or use transient detection

In options you can set what kind of time stretching algo, also if it’s beat, bar, clocked, or free.

2 Likes