Norns "mods" development

this may provide you some satisfaction:

7 Likes

i’ve been meaning to work on a hnds mod, i just haven’t had the time and inspiration at the same time :sweat_smile:

6 Likes

I’m planning on doing my own mods for the first two use cases at least

5 Likes

I’d like a quantized mid-controllable softcut looper I can drop into any non-softcut script. Anyone done this yet?

It’s on my list but I’m hoping someone beats me to it :slight_smile:

2 Likes

I had the exact same thought but didn’t even make it to the state of implementation :grinning_face_with_smiling_eyes: It would be amazing if anyone looked into a mod for translating input sound to arbitrary modulation of parameters.

1 Like

That’s a great idea! Samsara: a minimalist looper is super simple, and respects the norns system clock and midi transport messages. Would be happy to answer any questions about it! The hard part would likely be the interaction – all the encoders and keys will be used up by the actual running script, so you’ll want some other way to trigger play/pause and arm/disarm.

2 Likes

Thanks I’ll take a look! My plan would be to midi map all the looper functionality to a footswitch, so theoretically I wouldn’t need a norns UI for that part

2 Likes

Hey Everyone, I am wondering if midigrid is a candidate for a Norns mod? Or is it too dependent on individual script’s grid implementation?

3 Likes

Yes it is, the developer has mentioned that it’s not as simple as they first hoped.

Trying to remember but I think they mentioned putting something on GitHub when they’ve had the chance to work on it.

2 Likes

Sounds good & thanks for the info. I’ll try to watch out for more developments.

Two questions:

  • What is the / is there a consensus on where to put the menu for you mods?
  • Is there a way to install required packages with apt-get install when activating a mod?

Last week I quickly put together this mod to play internet radio through the inputs, and @infinitedigits added the great ability of being able to select stations in the params menu- even though I first thought of having the menu options under the mod. It seems easier to make the menu part of the parameters menu, but then it can get quite full/long quickly.
Also, this mod requires the mpv package to be installed. Is there way to do that when activating a mod?

Thanks!

1 Like

i think there are different use cases for menu placement.

a general “setting” (things that are more set-forget) should go in the mod menu.

things in the PARAMS menu should be dynamic, ie, things you would commonly want to control musically and use the mapping capabilities and everything else intrinsic to the PARAM system (ie, also being able to control these with scripts).


there isn’t a way to have a first-run action when installing mods, though you could hack one quite easily by saving state inside a data file (in dust/data). ie, when the mod is activated, check the file, if the state is not found, do the firstrun-action.

1 Like

if you are going to do this then please make a prominent warning to users, many of whom are not native linux practictioners and may not be able to recover their system after installing this large pile of dependencies.

127.0.0.1 ~ $ sudo apt install mpv
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  ffmpeg libaacs0 libass5 libauthen-sasl-perl libavc1394-0 libavcodec57 libavdevice57 libavfilter6 libavformat57
  libavresample3 libavutil55 libbdplus0 libbluray1 libbs2b0 libcdio-cdda1 libcdio-paranoia1 libcdio13 libchromaprint1
  libdc1394-22 libdvdnav4 libdvdread4 libebur128-1 libencode-locale-perl libfftw3-double3 libfile-basedir-perl
  libfile-desktopentry-perl libfile-listing-perl libfile-mimeinfo-perl libflite1 libfont-afm-perl libfontenc1
  libfribidi0 libgme0 libgraphite2-3 libgsm1 libharfbuzz0b libhtml-form-perl libhtml-format-perl libhtml-parser-perl
  libhtml-tagset-perl libhtml-tree-perl libhttp-cookies-perl libhttp-daemon-perl libhttp-date-perl
  libhttp-message-perl libhttp-negotiate-perl libiec61883-0 libio-html-perl libio-socket-ssl-perl
  libipc-system-simple-perl liblcms2-2 liblua5.2-0 liblwp-mediatypes-perl liblwp-protocol-https-perl libmailtools-perl
  libmp3lame0 libmpg123-0 libnet-dbus-perl libnet-http-perl libnet-smtp-ssl-perl libnet-ssleay-perl libopenal-data
  libopenal1 libopencv-core2.4v5 libopencv-imgproc2.4v5 libopenjp2-7 libopenmpt0 libpgm-5.2-0 libpostproc54
  libraw1394-11 librubberband2 libshine3 libsmbclient libsnappy1v5 libsodium18 libsoxr0 libspeex1 libssh-gcrypt-4
  libswresample2 libswscale4 libtheora0 libtie-ixhash-perl libtimedate-perl libtwolame0 liburi-perl libva-drm1
  libva-wayland1 libva-x11-1 libva1 libvdpau-va-gl1 libvdpau1 libvpx4 libwavpack1 libwbclient0 libwebp6 libwebpmux2
  libwww-perl libwww-robotrules-perl libx11-protocol-perl libx264-148 libx265-95 libxaw7 libxcomposite1 libxft2
  libxml-parser-perl libxml-twig-perl libxml-xpathengine-perl libxmu6 libxpm4 libxvidcore4 libxxf86dga1 libzmq5
  libzvbi-common libzvbi0 mesa-va-drivers mesa-vdpau-drivers perl-openssl-defaults python-samba python3-pkg-resources
  rtmpdump samba samba-common samba-common-bin samba-libs va-driver-all vdpau-driver-all x11-utils x11-xserver-utils
  xdg-utils youtube-dl
Suggested packages:
  ffmpeg-doc libdigest-hmac-perl libgssapi-perl libbluray-bdj libdvdcss2 libfftw3-bin libfftw3-dev alsa-base
  libdata-dump-perl liblcms2-utils libcrypt-ssleay-perl libportaudio2 libraw1394-doc speex libauthen-ntlm-perl
  libunicode-map8-perl libunicode-string-perl xml-twig-tools python-gpgme python3-setuptools bind9 bind9utils ctdb
  ldb-tools ntp | chrony smbldap-tools winbind ufw heimdal-clients mesa-utils nickle cairo-5c xorg-docs-core gvfs-bin
Recommended packages:
  attr samba-dsdb-modules samba-vfs-modules
The following NEW packages will be installed:
  ffmpeg libaacs0 libass5 libauthen-sasl-perl libavc1394-0 libavcodec57 libavdevice57 libavfilter6 libavformat57
  libavresample3 libavutil55 libbdplus0 libbluray1 libbs2b0 libcdio-cdda1 libcdio-paranoia1 libcdio13 libchromaprint1
  libdc1394-22 libdvdnav4 libdvdread4 libebur128-1 libencode-locale-perl libfftw3-double3 libfile-basedir-perl
  libfile-desktopentry-perl libfile-listing-perl libfile-mimeinfo-perl libflite1 libfont-afm-perl libfontenc1
  libfribidi0 libgme0 libgraphite2-3 libgsm1 libharfbuzz0b libhtml-form-perl libhtml-format-perl libhtml-parser-perl
  libhtml-tagset-perl libhtml-tree-perl libhttp-cookies-perl libhttp-daemon-perl libhttp-date-perl
  libhttp-message-perl libhttp-negotiate-perl libiec61883-0 libio-html-perl libio-socket-ssl-perl
  libipc-system-simple-perl liblcms2-2 liblua5.2-0 liblwp-mediatypes-perl liblwp-protocol-https-perl libmailtools-perl
  libmp3lame0 libmpg123-0 libnet-dbus-perl libnet-http-perl libnet-smtp-ssl-perl libnet-ssleay-perl libopenal-data
  libopenal1 libopencv-core2.4v5 libopencv-imgproc2.4v5 libopenjp2-7 libopenmpt0 libpgm-5.2-0 libpostproc54
  libraw1394-11 librubberband2 libshine3 libsmbclient libsnappy1v5 libsodium18 libsoxr0 libspeex1 libssh-gcrypt-4
  libswresample2 libswscale4 libtheora0 libtie-ixhash-perl libtimedate-perl libtwolame0 liburi-perl libva-drm1
  libva-wayland1 libva-x11-1 libva1 libvdpau-va-gl1 libvdpau1 libvpx4 libwavpack1 libwebp6 libwebpmux2 libwww-perl
  libwww-robotrules-perl libx11-protocol-perl libx264-148 libx265-95 libxaw7 libxcomposite1 libxft2 libxml-parser-perl
  libxml-twig-perl libxml-xpathengine-perl libxmu6 libxpm4 libxvidcore4 libxxf86dga1 libzmq5 libzvbi-common libzvbi0
  mesa-va-drivers mesa-vdpau-drivers mpv perl-openssl-defaults python3-pkg-resources rtmpdump va-driver-all
  vdpau-driver-all x11-utils x11-xserver-utils xdg-utils youtube-dl
The following packages will be upgraded:
  libwbclient0 python-samba samba samba-common samba-common-bin samba-libs
6 upgraded, 125 newly installed, 0 to remove and 180 not upgraded.
Need to get 36.9 MB/44.5 MB of archives.
After this operation, 109 MB of additional disk space will be used.
Do you want to continue? [Y/n]

(even better, maybe we can help identify an alternative to mpv - a networked and scriptable video playback / media management environment - with more focused functionality.)

in general i think any plan that involves manipulating a user’s installed linux packages should be considered very carefully. norns can of course be used as a general purpose linux computer, but when implementing features and updates we assume that there are no deviations from installed versions of packages, and can’t guarantee that upgrades from general debian sources will not break the norns system.

6 Likes

well at least now you’ll have youtube-dl

(but yes, agreed)

3 Likes

Thanks so much @tehn and @zebra for your replies. And very good points and things to take into consideration.

Agreed- it’s a fine line between “it’s a turing-compatible music machine that runs Linux, go nuts!” and “everyone should be able to use this”, though. I’m still very much navigating this myself as a user, finding the documentation of some scripts lacking in some places. It’s a fun journey, though.

OK, so selecting a radio station should then probably be under the mod itself I guess. I’ll have a think about it.

2 Likes

we should work on adding something like ffmpeg to the base image for these kinds of needs. even that is a big chunk of space on the factory eemc if installed in the normal fashion… (but is it worth maintaining our own package? hm probably not.)

5 Likes

Is there a limit to how many mods can be enabled and loaded simultaneously?

I am getting inconsistent behavior with mods loading and unloading themselves after they have been enabled.

Broadcast was my initial and only mod and I had no issues there, but when I installed norns-tuning, oblique, and passthrough, some show the . that they are loaded and then mods that were already enabled go back to +

EDIT:

I just was able to load broadcast, oblique, passthrough at the same time but when I enabled norns-tuning and then restarted the norns, all 4 mods reverted back to an enabled but unloaded state. Disabling norns-tuning and then restarting with all other mods enabled loads them again (minus norns-tuning).

1 Like

Any weird output in matron repl?

Did you clone and rename the tuning mod as described in readme?

Please be advised also that tuning mod is not released, if you want to help me test it that is fine, but be prepared to give detailed feedback on odd behavior.

I will try and reproduce the observed behavior when I get a chance

1 Like

that did it - no more weirdeness - my apologies on missing that step :confused:

2 Likes

Can Preset Load/Save/Delete Menu behaviour overriden by mods? For example I lost a lot of presets by accidentally pressing Delete Preset. It would be nice to add confirmation before deleting or make backup each time you save preset. I wonder if it is possible to add this feature using mods.

2 Likes