@mlogger and @moono, I’ll see if I can put some kind of basic pset sequencer together for the upcoming update. It’ll be just for Flora, but I have a vague feeling it may be portable to other apps. We’ll see how it goes…

3 Likes

The Flora v0.2.1-beta is now available and includes the following new features:

PSET sequencer (thanks to @mlogger for the idea)

  • The sequencer’s controls are themselves defined with PSETs, so PSET sequencing can be triggered via midi (as suggested by @vehka in the norns ideas topic).
  • The PSET sequencer also features user definable ‘exclusion sets.’ Parameters that are part of an enabled exclusion set will be excluded when a PSET is saved. Accordingly, parameters in an enabled exclusion set won’t be overwritten when the sequencer loads a PSET. Please note that for this feature to work, exclusion sets need to be enabled (in the PARAMETERS menu) before saving the PSETS. Enabling a PSET exclusion set while the PSET sequencer is playing will have no immediate effect.

Envelope modulation

  • New probability controls allow the time, level, and curve values for each envelope node to be modulated. The controls may be accessed by pressing k1+k3 on the plow screen as well as from the PARAMETERS menu.

Other new features

  • The active plant instructions and plant angles may now be saved in PSETS.
  • Midi is now included in the 4th OUTPUT option (requested by @Mad86).

Additional documentation of the new features may be found on GitHub (see link above)

The attached video demonstrates many of these new capabilities. It was recorded with an exclusion set enabled for the envelope modulation parameters.

19 Likes

Awesome :clap: thank you for all these new implementations.
That’s really really nice.
I know what I will explore today :wink:
I have to say very smart job ! :rose::cherry_blossom::hibiscus:

1 Like

[quote=“jaseknighter, post:72, topic:40261”]
PSET sequencer[/quote]

Wooah - amazing - thankyou so much! I didn’t think this could be done :slight_smile:

2 Likes

My pleasure @mlogger! The basic code to setup a sequencer and load PSETS was actually pretty straightforward. Also, although I’ve just done very basic testing, it appears the PSET sequencer code is portable to other scripts. I put instructions for using the PSET sequencer with other scripts in the pset_sequencer.lua file.

6 Likes

Wow, really nice. :heart: Can’t wait to give this a spin over the weekend! Also, the PSET sequencer sounds awesome. Do you reckon it would be a lot of work to make it a lib for including in other scripts too?

1 Like

Thanks @vehka. I hope you have fun with it!

Since I haven’t done much testing with other scripts, I’m not sure how much work it would be to make the PSET sequencer code into a lib.

That said, as I mentioned previously, I did get the basic sequencer functionality to work in a few other scripts (with just three simple lines of code) and the steps are documented in the pset_sequencer.lua file for anyone who wants to try it in other scripts for themselves on their local norns devices.

i gave it a quick test drive and so far i can say: this is simply awesome - the preset sequencing feature and all the other improvements made this already amazing script even more amazing! thank you @jaseknighter for implementing this killer feature which will hopefully find its way into many other scripts around here …

1 Like

I don’t know what I’m doing but Flora is one of my gotos for generative background house music (literally house music) when I’m at home.

Since the idea of sharing PSETs was discussed at some point, and the new features of Flora engage with PSETs I’m including it.

PSET
-- flora
"rev_eng_input": 0.22922330238564
"rev_cut_input": -inf
"rev_monitor_input": -inf
"rev_tape_input": -inf
"rev_return_level": -9.6432746655329e-16
"rev_pre_delay": 60.0
"rev_lf_fc": 537.48938814499
"rev_low_time": 2.326
"rev_mid_time": 7.096
"rev_hf_damping": 4452.1063336486
"comp_mix": 0
"comp_ratio": 4.0
"comp_threshold": -18.0
"comp_attack": 5.0
"comp_release": 50.0
"comp_pre_gain": 0.0
"comp_post_gain": 9.0
"cut_input_adc": -9.6432746655329e-16
"cut_input_eng": -9.6432746655329e-16
"cut_input_tape": -9.6432746655329e-16
"page_turner": 1
"active_plant_switcher": 1
"scale_mode": 5
"root_note": 45
"crow_clock": 1
"output": 4
"midi_out_device": 2
"midi_out_channel1": 1
"midi_out_channel2": 3
"plant1_instructions": 5
"plant2_instructions": 4
"plant1_angle": 90
"plant2_angle": 90
"plow1_cc_channel": 1
"plow2_cc_channel": 3
"num_plow1_controls": 5
"num_plow2_controls": 5
"plow1_max_level": 6.0
"plow1_max_time": 1.0
"plow1_time1": 0
"plow1_level1": 0.0
"plow1_curve1": -10
"plow1_time2": 0.15
"plow1_level2": 2.7
"plow1_curve2": -10
"plow1_time3": 0.25
"plow1_level3": 0.6
"plow1_curve3": -10
"plow1_time4": 0.5
"plow1_level4": 4.5
"plow1_curve4": -10
"plow1_time5": 0.75
"plow1_level5": 0.0
"plow1_curve5": -10
"plow1_time6": 0
"plow1_level6": 0.0
"plow1_curve6": -10
"plow1_time7": 0
"plow1_level7": 0.0
"plow1_curve7": -10
"plow1_time8": 0
"plow1_level8": 0.0
"plow1_curve8": -10
"plow1_time9": 0
"plow1_level9": 0.0
"plow1_curve9": -10
"plow1_time10": 0
"plow1_level10": 0.0
"plow1_curve10": -10
"plow1_time11": 0
"plow1_level11": 0.0
"plow1_curve11": -10
"plow1_time12": 0
"plow1_level12": 0.0
"plow1_curve12": -10
"plow1_time13": 0
"plow1_level13": 0.0
"plow1_curve13": -10
"plow1_time14": 0
"plow1_level14": 0.0
"plow1_curve14": -10
"plow1_time15": 0
"plow1_level15": 0.0
"plow1_curve15": -10
"plow1_time16": 0
"plow1_level16": 0.0
"plow1_curve16": -10
"plow1_time17": 0
"plow1_level17": 0.0
"plow1_curve17": -10
"plow1_time18": 0
"plow1_level18": 0.0
"plow1_curve18": -10
"plow1_time19": 0
"plow1_level19": 0.0
"plow1_curve19": -10
"plow1_time20": 0
"plow1_level20": 0.0
"plow1_curve20": -10
"plow2_max_level": 9.0
"plow2_max_time": 1.01
"plow2_time1": 0
"plow2_level1": 0.0
"plow2_curve1": -10
"plow2_time2": 0.0
"plow2_level2": 4.5
"plow2_curve2": -10
"plow2_time3": 0.1515
"plow2_level3": 2.25
"plow2_curve3": -10
"plow2_time4": 0.505
"plow2_level4": 6.75
"plow2_curve4": -4.1
"plow2_time5": 0.505
"plow2_level5": 0.0
"plow2_curve5": -3.0
"plow2_time6": 0
"plow2_level6": 0.0
"plow2_curve6": -10
"plow2_time7": 0
"plow2_level7": 0.0
"plow2_curve7": -10
"plow2_time8": 0
"plow2_level8": 0.0
"plow2_curve8": -10
"plow2_time9": 0
"plow2_level9": 0.0
"plow2_curve9": -10
"plow2_time10": 0
"plow2_level10": 0.0
"plow2_curve10": -10
"plow2_time11": 0
"plow2_level11": 0.0
"plow2_curve11": -10
"plow2_time12": 0
"plow2_level12": 0.0
"plow2_curve12": -10
"plow2_time13": 0
"plow2_level13": 0.0
"plow2_curve13": -10
"plow2_time14": 0
"plow2_level14": 0.0
"plow2_curve14": -10
"plow2_time15": 0
"plow2_level15": 0.0
"plow2_curve15": -10
"plow2_time16": 0
"plow2_level16": 0.0
"plow2_curve16": -10
"plow2_time17": 0
"plow2_level17": 0.0
"plow2_curve17": -10
"plow2_time18": 0
"plow2_level18": 0.0
"plow2_curve18": -10
"plow2_time19": 0
"plow2_level19": 0.0
"plow2_curve19": -10
"plow2_time20": 0
"plow2_level20": 0.0
"plow2_curve20": -10
"show_env_mod_params": 1
"randomize_env_probability1": 100.0
"time_probability1": 0.0
"level_probability1": 0.0
"curve_probability1": 0.0
"time_modulation1": 0.0
"level_modulation1": 0.0
"curve_modulation1": 0.0
"env_nav_active_control1": 0
"randomize_env_probability2": 50.0
"time_probability2": 36.0
"level_probability2": 0.0
"curve_probability2": 0.0
"time_modulation2": 0.0
"level_modulation2": 0.0
"curve_modulation2": 0.0
"env_nav_active_control2": 0
"water_cc_channel": 1
"amp": 1.7
"rqmin": 0.1
"rqmax": 9.0
"note_scalar": 8.0
"num_active_cf_scalars": 2
"cfs1": 1
"cfs2": 3
"cfs3": 2
"cfs4": 2
"plant_1_note_duration": 6
"plant_2_note_duration": 8
"num_note_frequencies": 3
"nf_numerator1": 1
"nf_denominator1": 3
"nf_offset1": -0.5
6 Likes

I just came across this video on instagram

https://www.instagram.com/p/CLLHMC9h2J1/?igshid=dpha27ewpim

Also L-systems plants :v:

4 Likes

@jaseknighter
hey ya!
i may have found a bug. :bug:
was going for a spin with the v0.2.1 and the MIDI clock looks to be off.

i have my tempo set at 115bpm and Flora is jumping between 118 and 119 on the screen.
any tempo i set the MIDI clock too…Flora is displaying 3 to 4 beats faster.

it didn’t do that before.

1 Like

Hey, how can I update the script to 0.2.1 ?
I tried updating through maiden, but when loading the script I still see v.0.1.0.
I’m new to norns, so sorry if the question seems silly.

@Denbuter, there are no silly questions here, only silly mistakes I have made. I forgot to update the version number in the flora.lua file. I think I fixed this, so if you update again, you should see 0.2.1 when the script loads. Thanks for bringing this to my attention and please don’t hesitate to reach out if this still seems to be an issue or if you encounter other ones!

3 Likes

helloooo @SPIKE! is this happening with the pset sequencer running? if so, it may be that you saved your psets with different tempos which are getting loaded as the sequencer is running.

if this is happening even when the pset sequencer is not running, then i’m not sure what’s happening and i’ll probably have more questions for ya!

1 Like

i hadn’t set up any psets yet.
i don’t have any psets saved even.

well…i think norns picks up on MIDI clock tempo from the Cirklon whether its running or not.
(i’ll have to double check that)

1 Like

Ok. You might also want to look at your clock ‘source’ setting under PARAMETERS->CLOCK

If you do want me to investigate after you check on the Cirklon just let me know.

1 Like

ok…
i just checked on it.
as usual…i almost always have all of my norns set to MIDI for their clock.

i just did a test and it’s behaving now! :crazy_face:
so…just an FYI…
norns does see whatever i set the BPM on the Cirklon to at all times.
whether its stopped or playing.

i just tested while it was stopped and Flora responded to all of the tempo changes.
then i started the Cirklon and Flora responded to any BPM changes i made and locked right to it!
:partying_face:

update…
so i ran into something else weird.
when trying to save a PSET while MIDI clock was coming in…it would not save.

so i stopped the clock.
tried to save a PSET and it wouldn’t save.
however…i left the PSET page and went back and then BING the name was there!
i saved 4 PSETS with different names and this happened every time.

also…
i guess i am not sure how the PSET thing should work.
i tried to select a PSET number with the “load pset” parameter and it wouldn’t change from the number 1.

so…i quit out of Flora and went back in.
now it’s allowing me to choose more than one PSET under the “load psets” parameter.

i went back into the plant screen…are the plants supposed to revert to their original state?
i was thinking their status was saved with the PSET.
it is loading the different plants that i saved…but they are in their initial state.

should i be seeing the plants change with each PSET change?
or…am i not quite getting the application of the PSET sequencing?
:slight_smile:
thank you for help!

I am super happy to hear Flora is now responding properly to tempo changes triggered by Cirklon! Yay! That said, I’m not sure what changed that caused Flora to start behaving.
¯_(ツ)_/¯

In regards to the other issues:

  1. PSET names do not not immediately appear while MIDI clock is coming in: I’ve confirmed this was introduced with the v0.2.0 release. If CLOCK source is set to ‘link’ then the issue also occurs. I’m not sure why this happens but I’ll look into it.

  2. Selecting PSET with the ‘load pset’ param doesn’t change from the number 1: I couldn’t replicate this but will investigate further.

  3. Changing the PSET with the ‘load pset’ param reverts the plants to their original state: this is expected behavior because right now I’m only allowing the plant’s basic instruction set and angle to be saved. I’ll look into allowing the PSET to save the plant’s state more completely.

@SPIKE, I really appreciate the time you spent reporting on these issues! Thank you!

EDIT: I fixed issue #1. I still haven’t reproduced issue #2 but it is possible this fix for issue #1 also addresses #2, not sure. Issue #3 is still to be done.

3 Likes

This script is amazing. I’ve just has the internal audio going along with a connection to Crow controlling two modular voices. I’m wondering though does modulation of the plow settings effect the sounds coming out the modular or not ?

1 Like

@Glitcher I’m so glad you like it! Thank you!

To answer your question in brief, you just need to use crow outputs 2 and 4 to modulate the sounds of your voices being sequenced by crow outputs 1 and 3.

The longer answer is that modulation of the plow settings changes the shape of the envelopes sent to crow outputs 2 and 4. The envelopes sent to crow are defined with ASL. If you connect crow outputs 2 and 4 to the CV inputs of a VCA on the same the channels handling your audio signals, you should hear the envelopes “plowing” their way through the sound (so to speak).

One caveat is that any curve greater than or less than 0 is just set to ‘exponential’ or ‘logarithmic.’ At some point I’ll revisit this to see if I can better translate the curve shapes into ASL.

I hope that helps, but don’t hesitate to let me know if you have more questions!