asynchronous digital tape looping interface for grids + max for live

a grid interface for softcut designed for asynchronous composition. offers 4-8 loops or delays with buffer and output routing options.

a lot of work thus far went into making the rate/octave switch feel v playable using rate_slew “glides” activated by a two-finger hold > release gesture. it already feels very nice, if not a little buggy. will likely hone that in as I go.

as usual plzzz help test and post bugs when you find them !


Ableton Live

Max for Live

64 or 128 grid


grid layout

first steps

  1. open a live set, drop a device in a track.

  2. select your grid from the dropdown on anachronism

  3. press the top left key on the grid to create a loop. make a sound. press the top left key again to end recording.

  4. recording while a channel is not playing results in a new loop.

  5. speed controls both record and and play rate. hold two keys and release to glide - this is very expressive (!)

  6. ‘buffer’ selects which buffer the voice reads/writes to (either 1-4 or 5-8) (there are 8 buffers). using separate voices to record to and pay back from buffer, for example, yields additional performance options.

  7. pattern record captures key presses on the grid. cycle through record > (press some other buttons) > playback > reset. each pattern button only captures changes made on its own row.

  8. on the standalone .amxd there are options for dry signal + voice levels, voice-wide overdub (for exploring delays), and voice-wide panning (width).

  9. the current repo includes some beta tests - ekphras.satellite and anachronism.remote. place 4 or 8 instances of ekphras.satellite in Ableton (use the yellow selector at the top to assign the right row) along with the remote device. now anachronism is controlling each ekphras, which can be addressed individually with separate audio tracks and modulation sources. you can also drop samples into the buffer window.

  10. an experiment: with multi-tracking set up, place the .remote device in a separate audio track from the ekphras tracks. the ‘route’ key now sends the audio out for the ekphras track to the track that the remote device is in. so, for example, if you set all your tracks to a common audio source, you can now route back into that main track and into the other loops from the grid.




Can’t wait to mess around with the 64 version. :sparkling_heart:


actually, hold up - all the essential functionality is on the left half - go ahead and load it up you can still have fun with this

You’re right. It works! Thank you.


ah hellllllll yea niklas this is super good - super cool to hear you gellin’ with it

1 Like

new version - fixed some issues with the buffer switcher switcher which was notttt working well ---- should b better now if not all the way fixed

1 Like

I’m finding that I need to hold two and release one, at which point it glides fast towards the one released last. Is that correct?

I’m also finding the loop lengths seem longer than the time I held the leftmost button down.

At any rate it’s great fun so far!

this looks wonderful

it shooould glide toward the second key pressed, there might be some edge case bugs though.

by how much ? If it’s ~ 100ms or so I may not me noticing the issue, If it’s more It may be in the realm of a performance isssue (this app eats up yr dang cpu)

I’ll try to check more this evening…


also put a new version up last night with location keys && a fade parameter. might’ve fixed some bugs too I forget

this is twenty characters of dopeeee. Is there any way to route the buffers through send/returns?

Upon testing this out it seems that there is a delay in the incoming audio from the press of the record button at the beginning of the loop. I turned fade down to 0 but still notice a decent amount of delay in signal. This test was done by routing audio from another Ableton instrument into anachronism though. I’m not sure if that would have any affect on the outcome.

like ableton return tracks ?

currently: you can put metonymy a separate track, send up to four lines to metonymy

soon: you can make 8 tracks with an instance of ekphras.satellite in each track, use the sends on the track


meh yea this is latency - the way I handled the diction thing to send data between the devices is kind of dumb. I need to work on a way that’s more efficient. I’ll work on testing what the latency is like on my machine. It’ll vary between computers probably.

This is what I was experiencing as well…

@Prnts @eblomquist are you able to share an audio example of the record latency thing (and re-download to the latest version first) ? I’m testing fine but I also may not be quite as sensitive to it if it’s something small.

NB that softcut parameter changes are not sample accurate but are enacted on audio buffer boundaries. So maybe check buffer size and experiment with making it as small as possible

ahh, this could be related - buffer size is 8 minutes by design but I could make that more dynamic.

but there’s also a real possibility my data streaming between grid <-> softcut is causing delays, I’m basically updating and reading from a big-ish JSON string (between js objects)

Im talking about the audio processing buffer size… not the record buffer. maybe not relevant but something to keep in mind. The thing was made for norns where it is assumed the buffer is small and control jitter correspondingly low. In ableton it’s common to have much larger buffers to accommodate lots of disk streaming &c

riiiiight this makes more sense. so this bit:

my shoddy javascripting seems like a more likely candidate but worth messing with