nest_
nest is a language of touch for objects by monome
nest helps you build a touchable user interface for a norns script, and provides the tools to hook up that interface to whatever sound engine or musical process you’d like to interact with (a synth engine, a softcut looper, a lua sequencer, crow voltages & i2c). you're welcome to think about nest as a full-blown library, a markup language, or a maiden-scriptable application in the vein of teletype's grid ops.
it works by splitting up an interface (grid, arc, or norns itself) into any number of lego pieces called affordances, each with a unique value and unique behaviors configured through properties. these lego blocks can then be bound to your musical process using custom action functions (much like the params system). affordances are organized inside special tables called nests which help group your affordances and allow them to communicate with each other and with the hardware itself. a basic snippet of nest code might look a bit like this:
nest_ {
my_affordance = _affordance {
property = 5,
value = 1,
action = function(self, value)
engine.do_something_with(value)
end
}
}
compatibility
nest is a tool for the monome norns ecosystem
while a norns by itself is technically the only requirement for nest (see the txt module), it tends to prove more useful when building interfaces with lots of input (grid, grid + norns, or grid + arc + norns). norns after all, just has three keys and two encoders, so many musical ideas can be expressed cleanly without this sort of system, and you get some more flexibility as a bonus (see the examples in norns studies, if you haven’t already). if you want to get a feel for the sort of textual norns interfaces the txt module can be used for, feel free to skip ahead to study 3.
studies
start here! the studies assume only basic knowledge of lua and the norns system (see norns studies if you want to get your bearings first).
get the study scripts by installing nest_ in the maiden project manager. feel free to play around with study scripts 2-4 on your grid before digging in to the rest! (if you’re using norns gridless, see the note above on compatibility).
docs
modules
the various types and interface buidling blocks of nestworld are split up into a collection files/modules. at the very least, the core and norns modules are required for use with norns. click the links to read up on the full details of each module and the affordances contained.
including
typically, it will make the most sense to include nest by copying the required module files into your script's /lib/nest_ folder, including them like so:
include 'lib/nest_/core'
include 'lib/nest_/norns'
include 'lib/nest_/grid'
include 'lib/nest_/txt'
alternatively, you can incude modules externally (other users will need to install nest first): include 'nest_/lib/nest_/core'
