euclidean rhythms with logic and probability

foulplay is based on @tehn’s Playfair, using the Ack engine written by @jah. foulplay’s grid implementation was coded by @junklight, and pattern rotation came from @okyeron.


Norns 2.0
Grid recommended, but not required.


click here


v1.1 - foulplay (last updated on 8/3/19)


Foulplay + mangl


I haven’t tried this script yet but do the 8 steps/rhythmic sates get save by the 25 memory cells? thanks!

1 Like

20 characters of, They do indeed. :sweat_smile:

Edit: I’ll do a longer run through video soon.

1 Like

that would be great :slight_smile:
I must be missing something in the documentation because I can’t get it to save :thinking:
great script @Justmat thanks!

That should definitely work. I’ll go over the script this weekend, maybe something broke? :sweat_smile:

no worries, thanks!
for what I can understand in the PARAMS page I press K1 and save in a slot. the 25 memory cells on the grid recall those slots, is that correct?

fun with foulplay


You are partially correct :smiley:

Foulplay stores two types of data. PSET data is your manually saved PARAMS settings, including samples and sample related settings. You can recall/load these different PSETs by holding the PSET load button, and pressing the desired memory cell.

Foulplay also stores it’s pattern data as a .data file. Pattern data includes the Step, Fill, and Rotation settings as well as Mute states, Probability, and Logic settings per track. These settings are saved automatically anytime you leave the script. You can load different patterns by pressing the desired memory cell.

Edit: looking at my docs, this isn’t spelled out very clearly. I’ll edit those today. :slight_smile:

this I understood from the documentation :slight_smile: the PSET data is saving and recalling ok

ok, that is good info to know :slight_smile:

for some reason Foulplay is not saving those settings automatically… do I have to create something for the data file to be created? I only used Foulplay in norns 2.0, keep that in mind :wink:

You are right, something is not working as intended. Looking into it now.

1 Like


first run and I get

pset >> read: /home/we/dust/data/foulplay/foulplay.pset
pset :: /home/we/dust/data/foulplay/foulplay.pset not read.

and /home/we/dust/data/foulplay/ is empty.

So… on first init() there isnt a pset file and one needs to be created?

Also - I think this might need to be a full path and not justmat (line 713)?

params:read("justmat/foulplay-" .. string.format("%02d", cellfromgrid(x, y)) .. ".pset")

Also… maybe this needs to include the foulplay sub directory in the path?

local file = .. "", "w+")


local file = .. "foulplay/", "w+")
1 Like

You are right, I’ve already fixed these on my end. Just need to fix the pset loading now, and I will update github.

Might be a little later on tho, apologies for the bugs!


I added a params:write() at the end of init() to test and that seemed to work - dunno if that has some other consequences tho.


@sno things should be working now. Auto-saving of pattern data now happens in the background every 10 seconds. PSET loading from grid is working as well. :slight_smile:


cool, I’ll test it asap. thanks for fixing this! I think I’ll be using foulplay a lot in the future :smiley:

1 Like

so i crashed this one. (sorry about that)
loaded 8 samples…everyone was playing perfectly…started to adjust volumes and such…still all good…then…

i was adding in Delay and blammo…
it happened while i was with Delay Time and Feedback.

it started oscillating so i made adjustments to stop the oscillation and then there was no audio.

all the tracks are playing on the screen but no sound.

hmmm…just a sec…
looking a bit more…it looks like it unloaded all eight samples after the Delay was oscillating.

i just tried to re-create the problem after loading just four samples.

after sending the Delay into oscillation madness it killed all of the playback again but it did not kick out the loaded samples.

it just does not play the samples or if it is…it’s not allowing audio out.

did a RESET and got out of Foulplay. Loaded Awake and then re-loaded Foulplay.

patterns were all there but all of the samples had been kicked out again.
it started making noiz as soon as i re-loaded some samples.

other than the above tech issue…
is there a way to group all of the sample slots at the top of the Parameters page for easier loading?
or do they all have to live together with their respective parameter adjustments?

oh boy, I have never seen this before. I will try to recreate it on my end, and look for a fix. @jah, have you ever noticed anything like this with Ack?

I’ve thought about this before, I’ll look into it :slight_smile:


No, but perhaps feedback rate 125% on the ack delay is a weird max value.

1 Like

Thanks to @okyeron, the external clocking issues have been fixed! :star_struck::star_struck::star_struck:

To update just re-download and replace.