project name: | ndls |
project url: | https://github.com/andr-ew/ndls/releases/download/latest/complete-source-code.zip |
author: | andrew |
description: | 4-track modeless tape looper, delay, & sampler |
discussion url: | https://llllllll.co/t/ndls/ |
documentation url: | https://github.com/andr-ew/ndls |
tags: | delay looper sampler grid arc |
4-track, grid-based, tape looper, delay, & sampler based on softcut. modeless, gesture looping, & performance-minded. highly bendy.
a spiritual successor to anachronism, anaphora, and several unreleased precursors.
NOTE: to view images, please read at github.com not norns.community
required
also supported
install from the maiden catalog
or
in the maiden REPL, type:
;install https://github.com/andr-ew/ndls/releases/download/latest/complete-source-code.zip
if you wish to install a different version, see the releases tab
recommended: luanch the script from the norns SELECT menu.
users with accesibility needs who are unable to acess the norns system menus might consider launching the script from the maiden REPL via the browser or another websocket-connected application:
norns.script.load('/home/we/dust/code/ndls/ndls.lua')
the grid is split in two halves with two blocks of metaparams mapped to four tracks of softcut. rows 1-4 control tracks 1-4, rows 5-8 also control tracks 1-4.
see here for alternate grid layouts (64, midigrid, 256)
note: x & y ranges of each component in the 128 grid layout are labelled between the square brackets [] for those unable to view the daigrams in this document. if you need adjusted labels for 64 or 256 layout please email andrewcshike@gmail.com
[x: 1-2, y: 5-6]
toggle record & playback states. these controls are interdependent. here are some ways to use them:
by default, ndls loops asynchronously between tracks & independently from the global clock. see window scopes for info on synchronous modes & additional params for clock-synced settings.
[track focus x: 1, y: 1-4; page focus x: 3-5, y: 1]
set the focus for the norns screen & encoders (not grid). norns’ controls are split into three pages: MIX, TAPE, and FILTER, and are editable intependently across four tracks, focused with track focus.
[reverse x: 7, y: 1-4; octave x: 8-14 ]
set the record and playback direction and power-of-two rate multiple (AKA octave, or time division). the rate of change (or slew) for both these controls is touch-reactive. a single key tap will jump instantly to a new value, while hold-and-release gestures increase slew time in proportion to the held duration.
[ x: 3-6, y: 5-8 ]
select which audio buffer (1-4) to record & play back from. multiple tracks can share the same buffer, for multi-octave polyphonic looping & decoupled record & play head delay systems. lots of possibilities!
to load a sample file into a buffer, hold one of the four buffer keys on any track and press K3 when the modal pops up. this will enter the fileselect screen on norns & you can select a file with the keys & encoders.
users with accesibility needs: visual feedback neccesary for file browsing. you can alernatively load a sample by running a line of code like this in the REPL
sc.loadsample(buffer_number, '/home/we/dust/audio/path/to/file.wav')
[ x: 3-6, y: 7-13 ]
select a preset. there is 1 default preset + 6 unique, optionally randomized presets for any/all track controls. by default, only window parameters will be included in the preset. see metaparams for advanced info.
[ x: 15, y: 1-4 ]
toggle looping on or off. disable for one-shot playback, triggered by the preset keys. turn ndls into a sampler!
[ send x: 14, y: 5-8; return x: 15, y: 5-8 ]
these keys allow you to send the output of a track into an invisibe audio bus & return them back into the input of another track. tracks with a lit send key will be routed into every track with a lit return key.
[ x: 16, y 1-8 ]
the rightmost column contans 8 pattern recorders, these can record & play back any combination of input on grid, norns, or arc. use them like this:
across 3 pages, all 3 norns encoders are mapped to 9 metaparams for each track, with K2 & K3 mapped to randomizations of certain values. use the track focus + page focus components on the top left of the grid to switch between views. hold K1 on any page to assign scopes. changes to any control can be pattern recorded using the grid.
the rate at which old material fades away. turn it up in a delay for long echo tails, or turn it down in a loop for tape decay memory loss. note that by default this is globally scoped.
this level is summed with the gain param in the params menu to set the actual output level.
this does not set the pan value directly, but rather, each track has a unique multiple that sets the pan value relative to the spread value. by default, in the global scope, spread will spread out all tracks evenly in the stereo feild, but you can switch the scope to track or preset to set pans independently, there will just be some uneven scaling between tracks.
hold to reset to 0db.
hold to reset to center.
non-quantized exponential rate multiple. +1 ocave to -1 octave.
adjusts both start & end points, displayed in seconds. note that by default this is preset scoped.
adjusts loop length in seconds. note that by default this is preset scoped.
hold to reset to 0
hold to reset to full length of loop
make stuff sound pointy. note that by default this is globally scoped.
cutoff frequency, from 20 to 20k Hz.
select between lowpass (default), bandpass, highpass, and bypass (dry).
hold to reset to 1.
hold to reset to lowpass
when arc is connected, the arc focus component will be visible to the right of track focus. the norns section above contains more info about the available params & metaparams (gain, cut, win, len). any changes to these controls can be pattern recorded using the grid.
by default, the arc will display four different metaparams from a single track – gain, cut, win, and len. press any row in the 4x4 grid with one finger to focus on another track.
to rotate to the vertical orientation, hold & release any two keys in the same column with two fingers. now, arc will display the same metaparam across all four tracks. press any column to focus on another metaparam ( gain, cut, win, or len).
the majority of the values mapped to norns, grid, and arc, are metaparams. metaparams are a way of connecting one or more intependently-editable values to a single destination, like filter cutoff or window length. each metaparam has an assignable scope, which detirmines whether values are edited on a global basis (across tracks), on a per-track basis, or on a per-preset basis.
the three scopes are (predictably) called global, track, and preset. on the norns screen, track-scoped metaparams are boxed-out while preset-scoped metaparams are underlined. by default, window+length are the only metaparams in the preset scope, while old, spread, and q start out in global scope.
you can think of each metaparam as having either 1, 4, or 28 true values, either shared, different between tracks, or different between presets on different tracks, depending on the scope. in the diagram, the true values have the box around it.
to change a scope, hold K1 on any page & turn the encoder associated with the metaparam you’d like to edit.
[TODO: TAPE page scope capture]
note that on the TAPE page, E1 sets the scope for all rate controls (rate, rate: reverse, and rate: octave), E2 sets the scope for both window and length, and E3 is left over to set the scope for loop
———————————- BETA 0.2 NOTE ————————————–
—————————————————————————————-
to assist with differentiation across the 7 presets in preset scope, preset values can be optionally auto-randomized upon creating a new loop. this is called preset intitalization and there are two options, random (x) or default (d). while holding K1, preset initilizatition can be assigned using the K2 or K3 associated with the metaparam, assuming the scope has been assigned to preset.
TODO: further descriptions for preset & global behaviors. BETA NOTE: these modes aren’t done yet.
in ndls, norns PSET system serves two important roles: saving sessings, and overriding default values.
ndls saves all session data, including buffer audio & pattern data, alongside your PSETs. just head to PARAMETERS > PSET and save a new PSET. note that the first two slots should already be in use. the first is the default slot, always loaded when launching the app. the second slot (last session) is always saved to when exiting the app. load this slot if you need to access your last session, but didn’t save it.
———————————- BETA 0.2 NOTE ————————————–
any PSETs saved on a beta version may not load in full on a future version. you can always re-download an older version of ndls to access obsolete PSETs.
—————————————————————————————-
as mentioned, the default slot is loaded when starting the app. you can save to this slot to change the default parameter values that are loaded when you start up. this is especially useful for redefining metaparam scopes, but you can also tweak default values on global & track scoped metaparams. first, if you have any audio in your buffers (still visible in the TAPE page waveforms, even if all playback is silenced), you might want to clear that out by going to PARAMS > EDIT scrolling down to the PSET options header and triggering force clear all buffers. then, right below that, there’s a shortcut for overwrite default pset.
there are a couple more useful tweaks under the PSET options header in PARAMS > EDIT
a few more params can be accessed exclusively in the params menu
———————————- BETA 0.2 NOTE ————————————–
clock-sync forthcoming
—————————————————————————————-