Could you do this through reassigning what parameter the arc is mapped to via params:set(“arc_encoder_x_mapping”) (alsoat the point at which the user hits the button? I think that takes a number, so I need to expose a public method that gives the library user a table of param names and ids (right now it gets built by a private method called params_as_options)

So you leave the arc with a max of four assignments, but arbitrarily change what it is those assignments are set to on the fly? By a combination of changing the assignment as above and calling arcify:clear_encoder_mapping(x) you could set an encoder to map to a param, and then clear that param when you were done.

Right now the way to arbitrarily remap encoders as I describe above is a mess, it seems like you would be better served with a method like arcify:map(encoder_num, “param_id”)

You also end up with an unnecessary set of params tacked on to your params screen. To get rid of those params I’ll need to expose methods that let you change encoder mappings dynamically through changing the encoder mapping table, rather than the params system. I would need a flag in arcify like expose_mappings_as_params and in your case, that would be false.

Where we’re heading with this is pretty far away from my original “drop in easy arc support” concept for the lib. But as long as we can come up with an expert API that beginners don’t have to worry about, that’s fine.

All that said, this seems possible and I’m happy to help move the library in a more flexible direction. I built it for solving an immediate problem (easy controls for my thesis symposium talk/demonstration this week) but as I begin to imagine more complex scripts I’ll want more power.

(I added a few issues on GitHub to reflect the roadmap: https://github.com/mimetaur/arcify/issues)

2 Likes

I’ve finally got my Norns and have been getting used to using it in MLR mode… I’m using Grids with it… But I’d love to add Arc for control over the fine tune… is there a way to assign it via midi mode to control parameters in MLR while also using the Grids?

It takes adding a couple files and lines of code in Maiden, but check out my Norns library Arcify that lets you choose 4 parameters to be controlled by the 4 encoders.

(And let me know if you hit any problems setting it up)

2 Likes

Many thanks!

Will this run at the same time as MLR Grids?

Basically, you’ll be modifying your copy of MLR, Arcify is a library rather than a typical Norns script.

Rather than choosing it from the Norns menu you’ll:

  1. Download Arcify
  2. Copy the ’lib’ folder inside the MLR folder
  3. Add some of the code found in this file to the MLR script.

Right now, installing the library needs a little bit of familiarity with coding on Norns. I’ve been trying to figure out a super easy, copy-paste-able way to let anyone use it. Let me know if you get stuck on the above steps!

(In the long term I want to figure out integrating it into the Norns exactly the way Midi controllers work, so you don’t even need to add code to your script.)

2 Likes

Does that have any impact if there’s no Arc connected? I was thinking that it would be very useful to add it into @olivier’s Compass to control the loop start & end points.

2 Likes

Following…

It doesn’t cause any errors, it just leaves some unnecessary params in the parameter list. So yeah, feel free to proactively add it to a script! I’ve been meaning to add some pull requests to other folks’ scripts too.

It would be nice to have it test if an arc is connected, and only add params if there is one connected, just to add less cruft. I’ll put that on the list for the next release.

(Mods, this probably should get merged into the Arcify thread btw)

2 Likes

OK, had a shot at adding this today. It works provided I turn the Arc fast, butslow turns have no effect. I’ve instrumented the code in arcify.lua and can see the changes being applied to params at the function at line 344. However it results in the same value for each call as if something is resetting the parameter?
I also note that the code in compass makes a call to params:delta rather than params:set.

OK, changing it from a params:set, to params:delta seems to work better. I’ve noticed that whatever mechanism compass uses when the commands change the loop start & end, that doesn’t get reflected in the Arc leds (though it’s possible that that actually makes sense, the start/end defines the bounds for the softcut start/end).

I might have to take a look at this one, but you may be able to get the feel better through adjusting the second parameter in arcify:register() - just plugging in numbers and seeing what feels better?

I wonder if my code isn’t accommodating delta properly - I’ll take a look!

1 Like

Yes, I did try that. I suspect if I set the second param=1 it might work as expected.

Edit to add, yes, that does work.

One of the problems I’m facing with this library is calculating a default response for the Arc encoders that feels “musical” across a wide range of parameters. Maybe I’ll look at how the midi mapping on the Norns does it

Hi! :slight_smile: I’m using arcify to map some parameters in a script using the string arcify: register (parameter name), everything works, only problem is that I can’t update the values ​​in real time on the main screen while on the parameters page they update without problems, how can I do?
here an example

How are you handling your redraw function? You might want to put it in a metro callback. Something like…

  local norns_redraw_timer = metro.init()
  norns_redraw_timer.time = 1/15
  norns_redraw_timer.event = function() redraw() end
  norns_redraw_timer:start()
3 Likes

You could also use the params:set_action function for each of the params, and then have the Norns redraw when that param changes. Depending on your script, my approach or @Justmat’s may feel more appropriate/take less code.

There’s an example of set_action in use in the studies here

2 Likes

I am a beginner in scripting and thank you very much for your patience!
I’m trying to edit the UHF script by adding LFO and Arc control.
I tried the @Justmat method and it works but slows down a lot and creates latency.
I attach the folder with the script if you want to try it and help me. the samples of the script “uhfrhythm” takes them from the DRUM folder that I created.uhfrhythm.lua (8.6 KB) uhfsetar.lua (8.5 KB) README.md (36 Bytes) arcify.lua (10.8 KB) hnds_uhf.lua (2.7 KB) uhf.lua (8.7 KB)

the result that i want is something like that but with the parameters that update on the screen. :grimacing:https://llllllll.co/uploads/default/original/3X/a/f/afa7d7b5d6fe6518b1054a76ad1ca5a4119dceb3.mp4

1 Like

I haven’t had a chance to look at this but you might want to try just increasing the rate of @justmat’s metro example. 1 / 30 might feel a little smoother. You do reach a point where the Norns can’t keep up though.

I’m away from my studio right now so I can’t tinker with your code but maybe start there?

Does this script still work when accounting for the new global params section? I would love a chance to use my arc with basically ALL my norns scripts, but I’m not getting read outs on the norns nor am I seeing it in the params when I try to drop it in on something like MLR for speed_slew rate

I’ve done a little more reading on this script and I get it now. I see where I made some mistakes with adding params. Will do some more building and testing later today.

2 Likes