Meadowphysics (norns)

Oh yeah someone please update this to use samples! :crossed_fingers:t3:

3 Likes

What would be the level of difficulty in combining this initial first step of implementing the ‘ack’ engine, using the timbre engine instead? I’ve wanted to try a little programming and was curious if someone who knows what this kinda work is like in terms of difficulty…

I’m hoping to make this a fair bit easier shortly (actually working on it as I type this), by refactoring the script a little bit to further seperate the meadowphysics app logic from the trigger events that come from it. I’m moving house this weekend but I’m hoping to get a release out anyway, because I probably wont have much else setup. If you want to take a dig in the code I’m happy to answer any questions you have in the meantime, I’ve got a pretty good handle on it now.

2 Likes

Oh cool! I’ve sort of dig around a bit, and it seems relatively straight forward. The truth is, I have literally 0 programming experience, which makes it tough to contribute. There were two scripts that I was hoping to try and help pick up some potential ‘low hanging fruit.’ This would be one, and the Kria Midi script’s broken scales function. Both of these scripts are being actively worked on, hence my reticence, but I just wanted to see how I could give back to the community that’s given me some great tools (not to mention a TON of patience). Maybe I’ll continue to try the studies and see what strikes me as an ‘inspiring’ idea…

Once I get my head around this Lua scoping issue that’s kicking my ass at the moment, I’ll have meadowphysics exposing a generic trigger event. I’m keen on applying the trigger to Just Friends via Crow, we could parallelise the work if you want to have a go with timbre :slight_smile:

4 Likes

Okay, so, I am going to continue with the studies (I’ve mainly just been using the Norns to make music!) and see if I can begin to truly wrap my head around what this all truly is. Then, I’ll look at the Timber engine documentation and see if I understand the general method of implementation. If all of those result in my feeling comfortable enough to take on any real responsibility, I’d love to help. I keep wondering what is a good way to ‘break the ice’ with programming and lua and the Norns seem like such a good option… so, I’ll spend some time tomorrow going over this stuff since I have some free time! If I have any questions, I’ll let you know!

I haven’t had my Norns on me for a little while, but I was wondering if this version of Meadowphysics can/could output configurable midi notes on each track? I’ve got a really pared down system at the moment and Norns MP + SP404sx is almost my dream machine.

1 Like

This would most definitely be a rad feature. Also if we had the ability to load a sample per track that would be nice too.

1 Like

There is a potential for that to be an option. There is someone doing a bit of work on this script, mainly in an abstraction of the scripts systems to allow for multiple engine support (including the Timber Engine)

1 Like

I get script error, any ideas? thanks
this is after the last norns update

SCRIPT ERROR: init

/home/we/dust/code/meadowphysics/mp_midi.lua:52: bad argument #1 to ‘pairs’ (table expected, got nil)

stack traceback:

/home/we/norns/lua/core/norns.lua:215: in function </home/we/norns/lua/core/norns.lua:215>

[C]: in function ‘pairs’

/home/we/dust/code/meadowphysics/mp_midi.lua:52: in field ‘action’

/home/we/norns/lua/core/params/option.lua:49: in function ‘core/params/option.bang’

/home/we/norns/lua/core/params/option.lua:36: in function ‘core/params/option.set’

/home/we/norns/lua/core/paramset.lua:247: in function ‘core/paramset.read’

/home/we/norns/lua/core/paramset.lua:265: in function ‘core/paramset.default’

/home/we/dust/code/meadowphysics/mp_midi.lua:211: in global ‘init’

/home/we/norns/lua/core/script.lua:77: in function ‘core/script.init’

[C]: in function ‘xpcall’

/home/we/norns/lua/core/norns.lua:216: in field ‘try’

/home/we/norns/lua/core/engine.lua:89: in function </home/we/norns/lua/core/engine.lua:88>

reading PMAP /home/we/dust/data/meadowphysics/mp_midi/mp_midi.pmap

I had the same issue. After deleting my presets, I was able to run the script again.

1 Like

how did u do that? dont have access to mp on norns. via ftp?

EDIT: got it thanks

1 Like

Very minor bug report. Using Encoder 2 to scroll past note G9 results in:

lua: 
/home/we/norns/lua/core/screen.lua:153: bad argument #1 to 's_text' (string expected, got nil)
stack traceback:
	[C]: in function 's_text'
	/home/we/norns/lua/core/screen.lua:153: in function 'core/screen.text'
	/home/we/dust/code/meadowphysics/lib/gridscales.lua:93: in function 'meadowphysics/lib/gridscales.redraw'
	/home/we/dust/code/meadowphysics/mp_midi.lua:239: in global 'draw_gridscales'
	/home/we/dust/code/meadowphysics/mp_midi.lua:313: in function 'enc'
	/home/we/norns/lua/core/encoders.lua:57: in function 'core/encoders.process'

This crashes the audio engine and requires a reboot or reset to set things right.

I’ve got a Lua rebuild branch at the moment. I’ll check for this bug and patch it.

2 Likes

Check this branch:

I’m actively working on this at the moment, I’ve redone the core system and separated out the sound making functionality (the first thing I tried here was outputting over crow/just friends which works but there are some concurrency/throughput bugs on the crow side at the moment I believe).

I’m working on an issue with cycle lengths at the moment (though now I rubber-duck it, it might be expected behaviour). First feature next on the todo list is the variable-cycle feature to meadowphysics with the different reset behaviours. At the moment, this script is just a set cycle length per voice. Once that is in I will merge from dev to master. Then I’ll get parameters sorted again for midi scales, output etc.

Another difference here is that the voice triggers/bangs happen on the start of the cycle not the end. That was to my taste but I’ll put a switch in params for the OG meadowphysics style (and probably make it the default)


Update 1: I’ve just pushed the Rule logic to that branch, but I’m unsure how rules are supposed to apply to speed. Does anyone know where speed gets it’s range from?


Update 2: I’ve got sample playback happening via Ack and it’s super fun! I’ve got a couple of grid bugs to fix then I should be able to cut a release. Hopefully soon because the rest of this week is looking super busy. (Nils Frahm tomorrow night :D)

10 Likes

So exciting! Thanks for doing the leg work!

https://vimeo.com/377289374

Up and running with samples! This is available in the dev branch. Once midi is back and voices can apply rules to other voices I’ll merge to master.

11 Likes

well that looks/sounds awesome.

Really like how you’ve refactored the code too. looks very cleanly organized

Thanks! if I’m honest it’s because there were a couple of bugs that I just could not find my way through the original code to fix. I’ve made a few performance mistakes here I think with the grid rendering and some spurious architecture choices (recursively passing the meadowphyics instance into its own children) but it’s pretty much there and those things can be refactored later.

1 Like

Looks amazing dude! Exactly what I want out of MP. <3

1 Like