I’m having trouble changing just the brightness of one particular line on the screen … My thought is to use something like

screen.level(l)
screen.move(x1, y1)
screen.line(x2, y2)
screen.update()

Am I missing something? This either changes the whole screen or nothing at all.

would have to see more to know why it’s one or the other, but after that line is drawn be sure to set screen level to whatever you want the next element to be

1 Like

Also don’t forget to call screen.stroke(), could be part of the issue

4 Likes

woke up with a dumb idea and no idea where to start

image

6 Likes

you know… for kids!

3 Likes

just discovered @infinitedigits croc which has me thinking about this idea again. maybe I’ll try and figure out rasbian installation :fire:

1 Like

what would we think about a second global paramset, but just for the MAP menu ? so MAP would display mapping for everything in params, followed by by everything in this second paramset. the use case is having parameters that are fully editable in the script, and just wanting to expose them to mapping w/o cluttering the EDIT menu.

1 Like

i’m confused by this proposition.

if you want to have params that aren’t editable, make them hidden params (we added this several months ago).

or, use subgroups to not clutter the menu.

i think adding a second global paramset would substantially complexify the system without great benefit— though i may be misunderstanding your proposition.

link to param hidden/groups prelim doc

1 Like

Please midi for earthseeaaa…literally dying for it

a through-hole Norns Shield with 1/4" jacks, for clumsy noise artists like myself :smiley:

3 Likes

[Trn/Tbslm/Scrtch]

[Do you think that it could be possible to create a script to have a scratching/turntable effect ? Like the sc1000 https://github.com/rasteri/SC1000]

[https://youtu.be/JTFGoQHsh3w]

1 Like

i think its possible! will take some tinkering.

i tried using softcut to “drag” the playhead but i couldn’t get a good turntable effect sounding for it (see here for ref: https://github.com/schollz/turntable/blob/main/turntable.lua)

i think a good bet would be to make a supercollider script that loads a sample and lets you “scratch” it. i found this supercollider script that sounds close: https://sccode.org/1-5dw i didn’t search too deeply so likely there are other scripts you could adapt.

@okyeron has been working on this too…
https://www.instagram.com/p/CGWewCYh5CH/?igshid=16mlevj088tj8

1 Like

haha well serendipity today… i was adding rate lfos to oooooo finally and just for kicks recorded a loop of drums. turns out a fast lfo on the rate in softcut makes it sounds like a turntable.

https://www.instagram.com/p/CID3OfZh82L/

i’m thinking you could get a lot of turntabilism out of “oooooo” by essentially mapping the new rate lfos to a midi controller. you could record things onto each loop and then map the loop parameter “rate lfo period” to take values of like 0, 0.3, 0.5 and keep “rate lfo amp” at 1.0. its not scratching per-se but it gives a neat effect that is somewhat close.

9 Likes

i’ve done something based on this idea using compass!

it’s great

4 Likes

I have a softcut “jogwheel” sketch started which can use norns encoders or arc.

It works ok, but needs some more finesse I think.

Was waiting on the newest norns update because it uses the waveform display. Also there’s still some bugs.

(I also made some custom hardware to do the sc1000 thing)

2 Likes

i’m wondering - would there be interest in having “global script extension” global parameter? what i mean is essentially being able to set a global norns parameter that will load a file into every norns script that you open. the loaded file should then toggle some new useful behavior onto of that script, independent of any script (but possibly useful for most any script!).

what do i mean? i’ve now encountered a use for this twice so i’ll just explain in two examples:

  1. i have a midi2osc library that you can import into any script and then it will utilize some settings to convert a midi command into multiple midi commands through osc. for example, i can press one midi key to simultaneously enable reverb, compression, and all the settings for both at the same time. to use this library i edit every script which i want to use with it with similar two lines added at the top (below). instead it might be useful to select this library from a list of “global script extensions” so the two lines of code don’t need to be added manually.
local midi2osc = include('midi2osc/lib/midi2osc')
midi2osc:init('<scriptname>.json')
  1. i am working on a full dump/load library that you can import into any script and make a working dump of everything (softcut, parameters, etc.) and be able to load everything back (into softcut too!). the structure of this library is the same as the preceding one so it requires adding in two lines at the top of every script you want to use it with.

now, me personally, am pretty fine adding two lines to the scripts i want to use these functions. maybe most people are so this is unnecessary. but having a “global script extension” as a global parameter might assist in others who don’t want to edit all their scripts if they want this functionality. perhaps there are other “global extensions” that people might envision to take advantage of this, too.

some problems right away with this are that the “global extensions” likely need to avoid manipulating softcut/engines to prevent collisions with the host script. it adds a whole new layer of complexity when debugging problems. there are probably other problems as well.

is this useful? does the usefulness outweigh the problems? in any case, happy to discuss this idea :slight_smile:

8 Likes

I’ve been wondering if the global parameter option you suggest would be useful for those of us who use midigrid with alternative grid hardware that can use it - it would save having to go through every script that needs to use midigrid every time they are updated, for example.

2 Likes

i’ve also imagined something like a .bashrc but for norns - just a little user editable snippet in dust that runs ahead of every script load (i think a single file would invite more configuration than a param). of course it could break things sometimes, but it would be very handy for libraries like you’re describing (midigrid, arcify)

also a potential solution to the arc proposal here @dan_derks https://github.com/monome/norns/issues/1248

3 Likes

TL/DR: though it is a fine idea in theory, consider that adding an “extension” is really the equivalent of just running a patched version of ~/norns/lua that is unaffected by updates. for pretty obvious reasons, this is an undesirable option compared to (A) submitting the patch upstream if it has widespread utiltiy, (B) confining it to a script if it is niche, and IMHO should be a method of last resort.


we are cautiously building out some mechanisms for global customizations in lua via a .matronrc. the primary reason for this is to more gracefully support hardware customization without patching the norns system sources. but other global behaviors may make sense there as well.

the caution is important - @infinitedigits as you’ve implied, too much of this kind of thing impinges on the efficacy of the platform as a known quantity against which scripts can be developed and shared.

e.g.: you may start with adding a preamble for total save/recall of parameters and softcut buffers, but sooner or later you may want to programmatically effect these actions from within a script. now the script can’t be shared without caveats. [“it could break things sometimes” is not a very good thing to have to say about a new feature.]

i’d instead ask whether the behavior is a good candidate for global inclusion by merging it upstream; in this specific case we seem to be steadily extending the amount of stored state per script in any case, so your efforts may well be appreciated there.

in other words,

if the answer seems to be “yes,” then the best action is to consider just bringing the feature upstream. for exampe @andrew, arc behavior in the issue you reference is very obviously (to me) something that should just be a part of the main norns system, to be evoked when an arc is attached - and that of course is why it’s on the issue list. (IOW, i don’t see the value in forcing the decision on how the arc interacts with parameters onto the user. and on a technical level, we already have a default arc handler that arc-aware scripts must override - we are simply proposing a more useful behavior than a no-op for the default handler.)

it may interest you all to know that startup.lua was initially conceived (by me, maybe not by everyone on the project) as the place where custom startup behavior would happen. (but i also assumed that scripts would be much less monolithic.) that would still be the place to shim in things that you want to execute in a clean lua environment, with all processes alive but before event loop starts ticking.

clearly, there is no technical obstacle to explicitly executing logic from ~/dust there, or before script init. instead it’s an ecosystem design consideration which leads to dependency management and many more potential support challenges. (think about, i dunno, Skyrim mods or something.)

so, my personal opinion is that in the abstract i think it’s a fine idea to support something like ~/dust/data/user.lua, but support for norns is already challenging and we arguably rely too much on the willingness of users to engage in very technical troubleshooting steps, so pragmatically i think a conservative approach is correct. and since the heavy lifting of support is being done by monome HQ team, this kind of decision is theirs to make.

7 Likes