Stutter effect

Hi,
it’s juste a small example, with a daisy seed into modular synth.
This is a stutter effect, stereo, all CV controlable.

11 Likes

THAT is great! How are the patterns generated? Preset in code or algorithmically?

Hi,
Thanks.

There are 2 way: internal = simple regular trig.
Or external signal: in this cas, I’m using the Befaco Burst:

I hesitate to show my code, because it’s a dirty code…

We don’t do code shaming here!

4 Likes

Don’t worry, my plans to learn code for Daisy were preempted by life so I remain a kludging cut and paste hack with little idea what I am doing at all. My brain works in signal flow, not code, so this whole thing is breaking my brain and I don’t have much time right now for it anyway so… Happy to beta test things and report repeatable bugs, no clue how to make an LED blink to the tempo.
–yet

Source code (For Arduino IDE) is here:
http://www.rpanis-tekhne.fr/DATA/STUTTER_03b_ALL.ino

Audio part is built with code extracted from a FAUST code.
The rest of the code is dirty (it works like that, and I don’t have so much time, so…)

For sure, a lot of improvements are possible !

Is the Faust source repeater.dsp or something else?

Yes and no:
My code is inspired by.
But I’m re-writting all the clock and logical part. For non audio process, I prefere to not use FAUST, it’s often more efficient to write it in C++.

Here my original FAUST code:

import(“stdfaust.lib”);

shap = hslider(“shap”, 0.001, 0.001, 0.5, 0.001 );// En secondes

gateL = hslider(“gateL”, 0, 0, 1, 0.1 );
gateR = hslider(“gateR”, 0, 0, 1, 0.1 );

PosL = hslider(“PosL”, 0, 0, 44100, 1 );
PosR = hslider(“PosR”, 0, 0, 44100, 1 );

rec_play_tableST(count_playL, count_playR, inputL, inputR) = rwtable( size+1, init, int(windex), inputL, int(rindexL)), rwtable( size+1, init, int(windex), inputR, int(rindexR))
with{

size = 48000;
init = 0.;

count_rec = (0):+~(+(1):%(size)); //: min(size+1)

windex = count_rec;
rindexL = (count_rec + count_playL) : %(size); //(count_rec - 1000) : %(size);
rindexR = (count_rec + count_playR) : %(size);
};

process = rec_play_tableST(PosL, PosR) : *(en.are(shap,shap,gateL)), *(en.are(shap,shap,gateR));

Nice, I will give it a try on OWL firmware on Daisy Patch. It runs Faust patches with no issues, has access to MIDI input, memory on SDRAM, all CV inputs/outputs, etc.

I suppose you were changing samplerate and PosL/PosR should have 48000 as max value now?

Yes, In fact I design my FAUST code inside MAX (with fastgen). So maybe I was forgetting to change sample rate…

It should be possible to use the code for OWL inside the Daisy. I know that GRAME work to add DAISY in FAUST target, but it looks like they have some difficulties (of course, the Daisy CPU is very simple compare to some others targets).
But the code is (more or less) easly modifiable for any target. You can do a mix with specific Daisy code (MIDI).

Yeah, I know how FAUST works and actually made various updates to arch file used by OWL firmware :wink: As for work Stephane is doing, he’s porting it to run with libDaisy. While I’ve made it possible to run the same firmware that is used by Rebel Technology devices on Daisy Patch. This is completely different firmware.

is there way to control this with an XY pad? control speed

Good :slight_smile:I was working on BELA integration. Also completely different …

Yes it should:
controles are all easly modifiable inside the code.
And externally all (hm…most) are CV controlable.
Maybe you’re thinking about adafruit touchscreen ?
My code don’t use SPI and I2C, so it should be possible to add this device without rebuild everything.