Factotum mods (oneshot, saving/loading, sample players)


#1

Hi!

I started modding the factotum because I wanted to use its stretch/pitchshift stuff in sampler type patches, thought I'd share in case they're useful...

VERSION 2 OBJECTS

Updates of fact player/recorder

fact player v2.0 upload.axp (24.1 KB)

VERSION 1 OBJECTS

First up, here's all the objects in one patch for easy copy and paste (example patches below)

fact objects.axp (36.3 KB)

FACT MINI

fact mini upload.axp (9.4 KB)

This is a stripped down version of the factotum, basically a Looper with pitchshift, stretch and rate controls.

FACT PLAYER

fact player sustain upload.axp (22.0 KB)

fact player no sustain upload.axp (18.7 KB)

Here, I've split the fact mini into separate recorder and player objects. It uses an external table (so samples can be saved/loaded. It has a one shot playback mode and simple editing (start and end points). You can also set a 'sustain point' which lets you select a portion of the sample to sustain (sample triggers from the start point, and then it loops the sustain portion and crossfades between it, and the same portion reversed). I've included versions without the sustain feature because it isn't always needed and uses more resources.

You could add several players playing the same recording, but with different start/end points, which can be nice for chopping.

FACT POLY PLAYER

fact poly player upload.axp (32.4 KB)

fact poly player no sustain upload.axp (28.7 KB)

Here I've split it up further, geared towards playing samples with keyboards- the 'editing' features of the player are in a new object so you can set global start/end/sustain points for the sample, and then put the voice player object inside a polyphonic subpatch and use it in synth type setups. The example patch allows you to record a sample, and then play it back with midi, synth style but with the stretch/pitch features of the factotum, with a simple adsr vca. It's pretty cool for one long shot notes, or recording tiny loops and using them like an oscillator, etc etc.

FACT MINI AUTOSAMPLER /DELAY SORT OF THING

fact delay upload.axp (144.1 KB)

And finally, the patch that got me started with all this, it's a 'delay' effect that's actually 7 sequenced fact minis, with lots of scope for reversed/pitch/stretch/granular delay style effects, it's got arp-like features, can be synced and I'm loving it.

There's detailed notes inside the patches. Hopefully there's no zombie objects and I got all those uploads right...

Thanks for the magic @SirSickSik

Enjoy!


#2

Jesus, that's a hell of a lot of work, thanks Matt, some very interesting objects, quite curious about the sustainer....looking forward to jumping into these later


#3

very nice! It's been such a long time I wrote this module, I can't even remember what and how I did it xD
But thinking right now.. might it be useful to have a scatter/allpass function in it, so it has some adjustable reverberation?
This reverberation module has a "scatter/allpass" function given in the local data, that could be copied and used in other projects. Note the explanations I wrote in the module to know which things to copy extra (like the array allocation and inbuild LP damping)

FDN allpassed.axp (27.0 KB)


#4

That's a cool idea, thanks! I'll have a look at the module


#5

you can use the function to read any signal and then immediatly overwrite that signal at the same position, so it's also very useful to build into snare and hihat modules to create that washing tail or to add scattering in delay modules that scatters the sound with each loop (like the eurorack mimeophone).


#6

All of this looks super exciting but almost a bit overwhelming for trying out... do you have any video examples maybe?


#7

Yeah, gonna do a video (been busy adapting the patches for my hardware).

But most are actually pretty simple to use - just record some sound with the record button and fiddle with the labeled controls. Poly patches will need a midi keyboard input, so you'll need to select your channel/input in the subpatch. The delay one just needs an audio input (and maybe clock if you want to sync). Notes on all controls in the patch.


#8

Dude, thanks! Never had much luck with the full factotum and haven't really like the control on other loopers but these have been working really great!

I'll probably post some up later on but between your mini module and the fact player module, I've been able to get some really fun microlooping/mangling patches together that I was not able to get right before. Things very similar to the CooperFX Outward, Hexe Revolver, and just some really nice sounding ambient layering patches. Really digging what I've been able to throw together so far


#9

Nice one, glad it's useful!

Would be really interested to see your patches if you post some at some point


#10

Morning all,

I made a video showing off the fact delay patch with some random guitar playing and me mumbling about the controls. It's the same patch as posted above, but modified for my hardware (I had to simplify some things to fit in control/screen/preset stuff).

https://youtu.be/mg58X3jlu3c


#11

from 11:30 it is so good that it deserves a real drummer and a bass player


#12

This is great - definitely have to play around with your full patch now that I hear all you did!

Awesome case as well!


#13

Hey @MattilynMattroe

These objects are sick! I've long loved the Factotum for weirdo sampling/looping, but one thing has always bugged me: adjusting the start position on each loop. But it looks like you've solved that! Can I ask how you did that? I really like the Poly module that you've created, but I still love messing with the other aspects of the OG Factotum like the window settings to get reeeeeally gritty sounds, and I couldn't work out how to do that on your version...


#14

Hi, glad you like them!

I'm going from memory and may be forgetting something but:

Start point - I think it needed some math to get the inlet into the right range, and then the length that the object uses when reading the sample needed adjusting to compensate. And then a matter of adding the start to the index it is using to read the table. I think this last bit was in the local data tab.

Window - my mods don't have access to the window function at the moment, but I don't think it would be that tricky to put it back, if I have time at some point I'll see what I can do. Was it the poly object you wanted it on? I think the code is still there but it's using a variable that doesn't change. It should just be a matter of doing some math on a window inlet/dial.


#15

Thanks for getting back to me!

TBH I'm not 100% sure the implementation I'm looking for, but I reckon a modded version of the Poly (w/ sustain) would be awesome! Just reading your post makes me realise how very little I understand about the coding side of things.

My aim is to get semi-granular with it, and the Window parameter is the thing that seems to get that vibe.

I'm guessing that the Poly patch wouldn't be capable of stereo - it might be too heavy for it?

Either way, great mods to a great device!


#16

Hi all,

I found a small bug where samples weren't triggering quite from the start (it seems to be to do with the windowing it uses, the reset inlet on the original factotum does it too I think).

I've fixed it but I haven't had time to update all the objects yet. I've updated the fact player and recorder, plus I've added some stuff. The new player/recorder aren't compatible with the previous versions...

Fact player changes:

  • window inlet back by popular demand. I still
    almost always leave it set to maximum

  • internal vca inlet added.

  • stop inlet added.

  • fades added to kill clicks when triggering/retriggering. It has a short (1ms if my maths is correct) fade when triggered or stopped. If the sample is already playing when it is triggered it fades out, and then fades in again (2ms). It's pretty smooth.

  • timing errors fixed

  • start/end changes now don't take affect until the sample is triggered again

Fact recorder changes:

  • overdubbing with feedback. The recorder can now overdub. It needs a trigger to keep it synced with the player (usually the same trigger that triggers playback) otherwise it will overdub to the wrong position on the sample. This is the 'dubtrig' inlet. It has a 'dubtrig' attribute. If the attribute is set to external the object relies on the dubtrig inlet to keep overdubbing in sync. If set to internal it will trigger the overdub sync when the recorder hits the loop point. This probably sounds really confusing by this point...

  • length outlet. Puts out the length of the sample

  • start outlet. Puts out a trigger when recording stops

  • delay mode. This is experimental, I'm still playing with it. When delay mode is on the recorded sample becomes a delay buffer (so length of the recording is your max delay time). The delay time inlet is the delay time as a proportion of the recording length. Feedback is feedback. This works differently to most delays: Instead of delaying the playback it actually records with a delay. Repeats are written into the sample (buffer). I'm not sure how useful this will be for others, but I needed it in a patch I made.

You can also get a delay type response by recording a loop with overdub on and delay mode OFF. In this case the recording length becomes your delay time.

I'm not sure if I'm explaining this properly, let me know if its confusing :slight_smile:

fact player v2.0 upload.axp (24.1 KB)


#17

Whoa, Overdubbing is HUGE Matt and coupled with the length outlet, I have some looper patches that are getting an major upgrade, thanks so much, idiot grin on my face


#18

Great update ! Thanks !


#19

Finally getting a chance to try this out, definitely a fan of the updates - overdub definitely add a new layer (see what I did) to how much I like this object

Not sure it would be possible, but rather than overdub, I'd really love to work out a way to work in the "replace" feature thats on the old Echoplex Digital Pro loopers (and now i believe on the Loupe and Poly Beebo loopers). Rather than adding another layer on top of the audio with Overdub, replace would swap that section of the original loop so loops can evolve over time. Judging by the way the overdub works retriggering from the start of the loop, I feel like replace would be a lot more difficult to get working


#20

Hmmm, it would be very cool to have the replace feature. But yeah, it would get tricky positioning wise. At the moment it needs the overdubbing trigger because playback can be triggered at any time (if using as a one shot sample, for example). Also the dubbing doesn't take the stretch/pitch settings into account (it dubs into the sample as if the sample is playing naturally) so it can already get a bit random...

However, I've been building a looper/slicer patch which I've got working (it sounds amazing!) And am thinking of turning into one object. When it's an object it may be possible to do the replace stuff with the slicing mechanism because the timing info would be there. You could replace a slice...
I'm not sure when I'll have time to get around to it, I've got too many ideas and not enough time!

I dunno, just thinking out loud.