Not as yet.

I did some experiments with a wiimote, but there would need to be some changes in the norns guts to get a BT device “working”

1 Like

I have no idea if this is possible because I know nothing about programming, supercollider, PD, etc…but, is it possible to port these M4L written by Stretta devices for Arc over to norns? it seems like they would work well.

6 Likes

As a non-programmer, I’m not sure how feasible/musical useful this would be, but I have an idea for something like a phrase looper/sampler for randomized pitch info instead of audio. There’s much I don’t understand, so please bear with me if this doesn’t make sense:

  1. Random quantized (or not :slight_smile: ) pitch information feeds into a 16 or 32 step buffer (i.e. one or two Grid rows)- each new note would be stored under a Grid button until it’s replaced 16 or 32 steps later.
  2. While the note information is continuously updated, one could then select a loop from the current steps like the second page of MLR.
  3. The phrase could then be stored in a save slot, which could then be played back from a Grid button. Re-randomized/backwards playback would probably be cool.
3 Likes

Kind of like a midi Turing machine? https://www.youtube.com/watch?v=Le26BIqB8Y8

1 Like

Yep, pretty much that with Grid control, pattern saves, and internal quantization.

i’ve been thinking about what hacking would need to be done to use an external trackpad as a controller for norns like @andrew’s m4l device Spondee https://github.com/AndrewShike/spondee - i have a rarely used magic trackpad that would make a wonderfully sized control option.

4 Likes

A wired usb trackpad would work - it’d just need a little library or something to translate HID to whatever params you want to control

1 Like

hmmm, I’m guessing magic mouse specifically wouldn’t work out out between the linux <-> macOS chasm (for multitouch), but you could research. I used this this max external in spondee.

you could always just make a max patch that uses it :man_shrugging:

1 Like

there is a linux driver. it’s upstreamed in kernel 4.20, but can be added manually to the 4.19 kernel that norns/raspbian uses:
[ https://github.com/robotrovsky/Linux-Magic-Trackpad-2-Driver]

now… norns just looks at the raw HID data. the gesture-mapping stuff is done in linux via xorg/libinput, which norns doesn’t use. i dunno what that raw stuff from magic mouse looks like but it would be interesting to check.

fwiw, norns absolutely does should understand HID multitouch:

hid_events.codes.ABS_MT_SLOT = 0x2f
hid_events.codes.ABS_MT_TOUCH_MAJOR = 0x30
hid_events.codes.ABS_MT_TOUCH_MINOR = 0x31
hid_events.codes.ABS_MT_WIDTH_MAJOR = 0x32
hid_events.codes.ABS_MT_WIDTH_MINOR = 0x33
hid_events.codes.ABS_MT_ORIENTATION = 0x34
hid_events.codes.ABS_MT_POSITION_X = 0x35
hid_events.codes.ABS_MT_POSITION_Y = 0x36
hid_events.codes.ABS_MT_TOOL_TYPE = 0x37
hid_events.codes.ABS_MT_BLOB_ID = 0x38
hid_events.codes.ABS_MT_TRACKING_ID = 0x39
hid_events.codes.ABS_MT_PRESSURE = 0x3a
hid_events.codes.ABS_MT_DISTANCE = 0x3b
hid_events.codes.ABS_MT_TOOL_X = 0x3c
hid_events.codes.ABS_MT_TOOL_Y = 0x3d

you would have to kinda roll your own mapping for that stuff, which actually seems pretty straightforward if you want to map MT slots/blobs -> midi channels or something.

i don’t know how “standard”-looking the apple stuff is.

also bluetooth is not gonna be happening soon

1 Like

Zsins and @zebra’s script is indeed what I am looking for. I’d like to get some more control for changing a few sines at the same time though and it would be perfect if I could save a few sets. Therefore I am currently trying to wrap my head around getting some external midi control for a few of the parameters and also getting these displayed at the parameters page. Which tutorials would guide me the best?
I tried with the studies example and the great tutorials by @neauoire but I am clearly trying something too advanced for me. I took babysteps into Supercollider and am trying to wrap my head around the lua stuff and would really like to understand how I can identify the correct “type”, “Ids”, etc. and how to get them read on the fourth screen. Due to lack of a Crowns library entry, I am unsure where to post, therefore I hope it is OK to reply/ask here. Sorry…

1 Like

I think you can get where you need to without stepping down to the SuperCollider level, because it is definitely possible to manage groups of sines via Lua. But it does require keeping track of everything in a Lua table, or multiple tables, so you have a way to iterate over sines as well as keep track of their ID’s.

This sketch of mine is not great, well organized code by any means, but it gives a sense of keeping track of sine frequencies, amplitudes, and ids:

2 Likes

Some of what you’ll need to do isn’t even Lua code as such, it’s thinking about

  1. What you want your “top level” parameters to control
  2. What you need the individual sine waves to do according to those params: turn on, turn off, get softer, get louder, change frequency etc.
  3. imagine a lua table with 64 items in it, each one with an amplitude, frequency, and ID. Maybe each one has a setting like “isOdd” or “isEven” as well, that you set accordingly. There are a lot of ways to iterate over a lua table and change some or all of its contents, so I’m confident that’s something we can figure out. This Engine (unlike some that basically expose all their parameters for midi control) really puts the burden on the script author to manage everything in Lua.
  4. It might help to try to recreate something that already exists and has a very specific well defined behavior, like the Verbos Harmonic Oscillator. Figuring out the code and doing the conceptual/aesthetic design are kind of two different projects, and I tend to sidestep the creative and design aspects until I have a handle on the functional code part.
2 Likes

Yes, I honestly would like to avoid getting too much into Supercollider… Thank you for giving me some hints and strategies. Also, this is a wonderful script. Thank you so much for sharing this.

The Harmonic Osc is a great idea! I think it would sound great as Norns version as the Eurorack version has its issues (overtones are created via wavefolding as far as I know, which does not always sound too great to me). If it had two or more voices and the scale implementation of your sines patch :exploding_head:

1 Like

The raw HID data that I’ve been able to print out into the console are distance, direction and click events.

I’m certainly stabbing in the dark when it comes to linux and kernel so very grateful for any advice - been having a poke around - why is 4.19 not listed here?

/lib/modules $ ls
4.14.34+     4.14.52-14-g00c5424  4.9.59-0.0.6b
4.14.34-v7+  4.14.52-9-g646fe91

To install the driver for this I’d need to add it into /kernel/drivers/hid directory within those modules, correct?

if you’re already able to get HID data, then you could try some tests without the full-on multi-touch driver.

I did some basic norns HID scripts here which will show you what events are being captured: HID demo

Official norns hardware is running 4.14.52 I believe. uname -r at the command line will tell you which one it is.

Sorry, guess I misremembered. Thought simon had rebuilt Norns kernel from newer sources.

The driver project has some stuff about back ports. I dunno

Im working on a script that could use some storage for settings/state. I think the glyph style mechanism found in Kria would be fantastic. I’m thinking I might make a small glyph library so that the logic can be used elsewhere too. Here are my thoughts on that lib, im looking for concerns, advice and suggestions.

The library constructor would need a couple things:
-The size and location on the grid that it will be located.
-The folder where the saved objects go
-pointers to the load and saving/update functions that will be used

The user will have set glyph:on(true) whenever the glyph should actually be displayed in the scripts workflow. And glyph:Draw() will have to be called in the grid update function (but wont do anything if the glyph tool is off)

Glyph will also have to access grid.event(x, y ,z) but wont actively listen unless the glyph tool is currently on.

2 Likes

Also I want to have an feature where the user can scroll through the existing glyphs using the Norns screen so that they only have to remember the rough shape. And so I don’t have to rely on my memory as much. Im on the fence about that part.

if you aren’t already aware - for some built-in page/tab/list solutions see the UI lib: https://github.com/monome/norns/blob/master/lua/lib/ui.lua

1 Like