Foulplay

Sorrt for that, but it was up to date too. here’s the log when I instantiate foulplay:

> 1
> 
> matron
> 
> sc
> 
> # script load: /home/we/dust/code/foulplay/foulplay.lua
> 
> # cleanup
> 
> # script clear
> 
> ERROR (i2c/hp) failed to write
> 
> pset >> write: /home/we/dust/data/system.pset
> 
> # script run
> 
> loading engine: Ack
> 
> >> reading PMAP /home/we/dust/data/foulplay/foulplay.pmap
> 
> m.read: /home/we/dust/data/foulplay/foulplay.pmap not read.
> 
> Engine.register_commands; count: 31
> 
> ___ engine commands ___
> 
> delayFeedback f
> 
> delayLevel f
> 
> delaySend if
> 
> delayTime f
> 
> disableLoop i
> 
> dist if
> 
> enableLoop i
> 
> filterCutoff if
> 
> filterEnvAttack if
> 
> filterEnvMod if
> 
> filterEnvRelease if
> 
> filterMode ii
> 
> filterRes if
> 
> includeInMuteGroup ii
> 
> kill i
> 
> loadSample is
> 
> loopPoint if
> 
> multiKill iiiiiiii
> 
> multiTrig iiiiiiii
> 
> pan if
> 
> reverbDamp f
> 
> reverbLevel f
> 
> reverbRoom f
> 
> reverbSend if
> 
> sampleEnd if
> 
> sampleStart if
> 
> speed if
> 
> trig i
> 
> volume if
> 
> volumeEnvAttack if
> 
> volumeEnvRelease if
> 
> ___ polls ___
> 
> amp_in_l
> 
> amp_in_r
> 
> amp_out_l
> 
> amp_out_r
> 
> cpu_avg
> 
> cpu_peak
> 
> pitch_in_l
> 
> pitch_in_r
> 
> # script init
> 
> ERROR: paramset cannot nest GROUPs
> 
> ERROR: paramset cannot nest GROUPs
> 
> ERROR: paramset cannot nest GROUPs
> 
> ERROR: paramset cannot nest GROUPs
> 
> pset >> read: /home/we/dust/data/foulplay/foulplay-01.pset
> 
> pset :: /home/we/dust/data/foulplay/foulplay-01.pset not read.
> 
> ERROR (i2c/hp) f

And Cyrene shows the same strange behavior in the parameters: Here’s the log for it

# script load: /home/we/dust/code/cyrene/cyrene.lua

# cleanup

# script clear

ERROR (i2c/hp) failed to write

### initializing data folder

including /home/we/dust/code/cyrene/lib/sequencer.lua

including /home/we/dust/code/cyrene/lib/ui/util/devices.lua

including /home/we/dust/code/cyrene/lib/grids_patterns.lua

including /home/we/dust/code/cyrene/lib/euclidean.lua

including /home/we/dust/code/cyrene/lib/ui/euclidean.lua

including /home/we/dust/code/cyrene/lib/ui/util/label.lua

including /home/we/dust/code/cyrene/lib/ui/util/devices.lua

including /home/we/dust/code/cyrene/lib/euclidean.lua

including /home/we/dust/code/cyrene/lib/ui/details.lua

including /home/we/dust/code/cyrene/lib/ui/util/label.lua

including /home/we/dust/code/cyrene/lib/ui/util/devices.lua

including /home/we/dust/code/cyrene/lib/ui/pattern_and_density.lua

including /home/we/dust/code/cyrene/lib/ui/util/label.lua

including /home/we/dust/code/cyrene/lib/ui/util/devices.lua

including /home/we/dust/code/cyrene/lib/ui/more_density.lua

including /home/we/dust/code/cyrene/lib/ui/util/label.lua

including /home/we/dust/code/cyrene/lib/ui/util/devices.lua

including /home/we/dust/code/cyrene/lib/ui/euclidean.lua

including /home/we/dust/code/cyrene/lib/ui/util/label.lua

including /home/we/dust/code/cyrene/lib/ui/util/devices.lua

including /home/we/dust/code/cyrene/lib/euclidean.lua

including /home/we/dust/code/cyrene/lib/ui/util/devices.lua

including /home/we/dust/code/cyrene/lib/ui/grid.lua

including /home/we/dust/code/cyrene/lib/ui/util/devices.lua

pset >> write: /home/we/dust/data/system.pset

# script run

loading engine: Ack

>> reading PMAP /home/we/dust/data/cyrene/cyrene.pmap

m.read: /home/we/dust/data/cyrene/cyrene.pmap not read.

Engine.register_commands; count: 31

___ engine commands ___

delayFeedback f

delayLevel f

delaySend if

delayTime f

disableLoop i

dist if

enableLoop i

filterCutoff if

filterEnvAttack if

filterEnvMod if

filterEnvRelease if

filterMode ii

filterRes if

includeInMuteGroup ii

kill i

loadSample is

loopPoint if

multiKill iiiiiiii

multiTrig iiiiiiii

pan if

reverbDamp f

reverbLevel f

reverbRoom f

reverbSend if

sampleEnd if

sampleStart if

speed if

trig i

volume if

volumeEnvAttack if

volumeEnvRelease if

___ polls ___

amp_in_l

amp_in_r

amp_out_l

amp_out_r

cpu_avg

cpu_peak

pitch_in_l

pitch_in_r

# script init

ERROR: paramset cannot nest GROUPs

ERROR: paramset cannot nest GROUPs

ERROR: paramset cannot nest GROUPs

ERROR: paramset cannot nest GROUPs

pset >> read: /home/we/dust/data/cyrene/cyrene-01.pset

pset :: /home/we/dust/data/cyrene/cyrene-01.pset not read.

ERROR (i2c/hp) failed to write

so starting from the top:

  1. your norns is up to date? Menu > System > Update shows “up to date.”?
  2. your ack is up to date? http://norns.local/maiden/ > Library > Installed shows ack at fbda143?
  3. your foulplay and cyrene are both up to date? (425e9a0 and 4642c46 in Maiden’s library, respectively)
  4. have you slept the device recently? Try sleeping & re-booting

The stack trace says it’s trying to nest param groups, which implies to me you have the new params system, but somehow your versions of the scripts are trying to add the wrong number of parameters in each group (so it starts the next group before it finishes the prior one). ack is the library @justmat and I are both using which manages its own parameters and we’re each putting inside our own custom groups-per-track, so the fact a) it’s broken in both of the scripts, and b) groups are what’s broken for you definitely still has me thinking that your ack is somehow out of date (or has otherwise been modified somehow)

1 Like

Unfortunately I’m rebooting often and my system is up to date. I’ve just gotten the system and Foulplay was the first community app I installed. Although I don’t know lua, I’m a developer by trade so if it helps, I can try to debug some stuff if you point me in the right direction.

Thanks for your time both of you !

In your video above, I see that you are missing a couple of params that were introduced to Ack back in April. Between, Filter env mod and dist, you should have params for sample rate and bit depth. That, plus your track 1 group containing 2 of track 2s params, definitely makes me think Ack is out of date, even though it’s showing the correct version number.

Maybe try deleting/re-installing Ack and sleeping?

2 Likes

WOW. That did it :smiley:
Thanks @Justmat

4 Likes

Yay! Glad you got it sorted! :partying_face:

2 Likes

running into an issue with Foulplay tonight.

i was loading samples and after about loading 5 samples it locked up on me.
maiden didn’t give a readout on anything.
:frowning:
norns was frozen.
i left it alone for a minute to set up some other noiz and came back to the frozen norns.
i refreshed maiden and sent it a ;restart.

tried loading samples again.
to test things…i loaded only four samples and it was playing and syncing to MIDI clock.
stopped everything.
started loading more samples but when i got to sample 6 it froze on me again.

same thing…left it alone for a minute or two and refreshed maiden.
sent a ;restart.

thanks for any help!

eek! :sweat: i will poke around with sample loading today and see if i can reproduce. :grin:

1 Like

Love this app!
I’ve been trying to sync up clock and start/stop between Foulplay and a Moog matriarch to no avail.

Is there anyway to implement a clock out in the parameters section like in the rudiments app?
The rudiments app which uses beatclock does successfully send clock and start/stop to my matriarch.

I’m completely new to scripting/lua so any guidance would be greatly appreciated…thx!

1 Like

Github says midi start/stop was added a couple months ago. Are you updated to the most recent version?

EDIT - although looking at the code, I don’t see actual midi start/stop anywhere - just clock start/stop

Clock should be sent if you have the params CLOCK section set to midi. Start/Stop may NOT be being sent tho… so something like this would be needed in the foulplay script:

(totally untested code)

m.event = function(data)
  local d = midi.to_msg(data)
  if d.type == "start" then
    if stopped then 
      clock.transport.start()
    end
  elseif d.type == "continue" then
    if not stopped then 
      clock.transport.stop()
    else 
      clock.transport.start()
    end
  end 
  if d.type == "stop" then
    clock.transport.stop()
  end 
end
2 Likes

Yeah, the midi start/stop in the commit history is just for Norns clock responding to midi start/stop messages. Foulplay doesn’t send midi s/s… yet. But, I see the value in it, and will try to implement it tomorrow. :sweat_smile:

Thanks for the code snippet @okyeron!!

3 Likes

Just tried this out on my DIY norns (without grids) , seems amazing but I was somewhat thrown by it auto-saving, unlike most other things on norns. :slight_smile: - Is there any way to reset to factory defaults? Want to start from scratch and load new samples without retaining all my initial messing about with the parameters.

1 Like

This is a good thing to have, and should be super easy to do. I’ll put something together later this morning.

1 Like

would be amazing if you can, thanks :slight_smile:

i did not have a chance to get to this today, but it is on my to do list for this week/weekend :sweat_smile:

@Cementimental, took a crack at this today. i can clear the state of everything other than the loaded samples. ack doesn’t seem to support unloading samples at the moment. after some testing i’ll push out an update.

1 Like

I love this script @Justmat but i cant get proper sync with external midi clock.
Sometimes it starts on the first beat, but after a couple of beats it looses sync :frowning:

sorry for the troubles! foulplay uses the new(-ish) clock system, so it should be working/just work. unfortunately, i don’t have anything to test with right now, but i will look into it when i get a chance.

are you able to sync other scripts?

1 Like

Hi @Justmat thanks for the quick response.
Yes im getting good midi sync with other scripts, like archologies, zellen, etc.
Script works great an im using it to output midi, but it looses sync after a few beats. I have tried different settings but with no luck so far :frowning:

1 Like

i’m having trouble getting Foulplay to send midi out, anyone else managing that ok?