do you mean you want the broken one or the working one?? I can just send the compiled external??? will probably end up with something in the library tonight

till tonight then — :pray:

1 Like

@andrew i opened a PR with a number of fixes (and some TODOs.)

1 Like

lovely! updated top post, added a new release for the non-building, did some clearer roadmapping

if anyone did download the last version (1.0) you’ll probably want to update (aka I probably shouldn’t have made that a release w/o testing)

How difficult or different would the process be in porting Softcut to Pure Data?

should be pretty easy

Nice, I’m relatively new to Pure Data, but this may be a good way to learn about creating externals. Sorry to interrupt your thread @Andrew. :slight_smile:

haha - I feel like this would be a decent location to work on the pd external. might make sense to share the repo too. anyway I imagine there’s like 200 max external to pd external guides. I wonder if any part of the cyclone source is useful for this? or were those all manual ports?

i have a c++ template to dig up and then its just replacing the wrapper file


i added a puredata c++ template here. it’s rough and ready but should help getting started. tested on linux only here but it should be ok on other platforms.

[ ]

haven’t worked out tabread~ style table access, never did it before.

(of course there well be better resources out there)

1 Like

anyway just a mega-appreciation post for the max port.

I’ve been experimenting today with feedback loops between multiple voices and downsamplers (which also use the source) and it’s been incredibly beautiful/inspiring/getting me out of a creative block with performance. softcut embodies so much of what I want to express.


Thanks @zebra for the pointer. I’ve been looking over the code as well as this repo:

So we would need to use these but not the other header files (those seem to be max specific)?

#include "m_pd.h"
#include "src/SoftCutVoice.h"
#include "src/FadeCurves.h"

The format of the Max SDK and Puredata wrappers is very similar, which makes me think I’d be better starting from scratch.

Also, would we keep the src code changes you made for Andrew’s repo?

hey sorry for late response been busy

yes, that is certainly the best resource for actually learing the PD api.

the main reason for me to make that template is just to have a simple makefile with all the right linker invocations for c++ shared lib and no addditional fuss in the build setup


yes. at least some should be upstreamed also. likewise i have some changes in pipeline for norns version that should be propagated down. so it seems well past time for softcut to be factored out into its own repo, built as an external lib with an actual public header and stuff. (realistically, i don’t think i’m gonna get to that this week, but it’s not impossible.)

if things like customizing the xfade shapes is wanted that can be exposed. (bearing in mind that the tricky part is how the xfade applies to rec/pre levels. i made some posts on GH describing the issue, and the compromise i arrived at; the parameters of this scheme (call it “delayed raised-cosine”) are those exposed in FadeCurves etc.

1 Like

Is this possible to use this in M4L on a Mac?


You can build a M4L device with it or use ekphras that andrew also shared :slight_smile:

Nice sounds! Are you using an external input as the source material for softcut, or norns synth engines? Either way, nice work :slight_smile:

piano sample and kalimba for the first two, operator for the second two. anachronism, dirge, and assonance doing the processing. the trick was that the voices feeding back were reading and writing to the same buffer, and passing through dirge repeatedly, which gets weird.


I’m getting the Error 126 when trying to load the windows versions. some looking around seems to suggest a dll i’m missing.

paging @taubaland for this, as I’ve not yet messed with windows myself

Hi @zaqwithaq,

As far as I can tell, the reason it isn’t working for you is a lack of a Microsoft VS Redistributable.

Try installing from here:


Just checking if this worked? Not sure if I need to look into to the Windows version more!

If anyone can chime in with if they have the Windows version working apart from me?