Norns param map screen

Is there an explanation of the In/Out/accum section of the MIDI mapping in Norns? I’ve searched but couldn’t find any details.

I was wondering if there was any way to scale the output. So say, I’ve mapped the first fader on my 16n to the LPF freq, and I don’t need it to run the full range of the param, can than be done in the mapping screen?

from what i’ve gathered:

in: fine-tune the range of incoming midi cc values
out: the range of values which the incoming midi cc values will be able to call
accum: enable when using relative midi cc streams (for controllers that send deltas rather than absolute streams, where numbers increase over the 0-127 range)

to clamp control to a specific range of a param, you’ll want to adjust the out range.

for example:

  • i have a param that has 12 entries
  • out set to 5 -> 7 means midi cc changes across my in range will only call up the 5th, 6th, and 7th param values

ah…but there is the question of what to do when you have a 0 -> 1 range…from what i can tell, there doesn’t seem to be an easy way to clamp to get 0 -> 0.2, for example


Doesn’t that depend on what kind of param is being mapped?

Say taking an incoming midi value of 1-100 but mapped to a param that’s 0.0 —>1.0?

Thanks for that. in & accum make sense. out only seems to allow integer increments, and it’s not clear how that translates to the range in the controlspec for something like the freq range

cs_LPF_F =,20000,‘exp’,0,1200,‘hz’)
params:add{type=“control”,id=“lpf freq”,controlspec=cs_LPF_F,
action=function(x) engine.lpf_freq(x) end}

right, exactly – for params that move 0 -> 1, there doesn’t seem to be a way to define a < 1 float range for out. in range adjustments will give different curves along 0.0 -> 1.0, but the range can’t be clamped to 0.0 -> 0.2, for example.

not near a norns right now, but this sounds like a huge bug

the whole point was to facilitate what you describe

is there a function to “get” the table of a midi mapped param?

it seems I can access - is this the best way?

do we need/want some functions like
…wait, is that pmap.assign(id, dev, ch, cc) (from pmap.lua)?

how about - pmap.get("myparam") ?

not presently. feel free to PR something along these lines.

though it seems you’re getting into some weird territory— are you trying to programmatically manipulate mappings?

Was hard coding a midi CC mapping but that assumed a pmap existed (so I need to create a default pmap to start). And then what if the user changed the pmap assignment?

Using UI elements to show dials on screen, but they’re mapped for midi control.

I could be missing the point, but wouldn’t the midi-mapping be better left up to the end user?

1 Like

But what if there was a default 16n map you could use right away without learning 16 times?

Better yet - multiple maps to choose from and a way to from select them.