project name: | downtown |
project url: | https://github.com/schollz/downtown |
author: | infinitedigits |
description: | record stereo loops while engine loops |
discussion url: | https://llllllll.co/t/downtown/40044 |
tags: | looper |
become an architect of sound.
https://vimeo.com/496475138
view downtown over the skyline. build skyscrapers or tear them down to change the sounds coming from the city. record and mix in your sounds into the city and even build your own towers.
all cities are alike and all cities are different. like cities, this script welcomes change. the towers are built from supercollider tweets - you can easily find more and then add it as a new tower in the city.
this script is meant as “playground” to add little supercollider things and interact with them through softcut loops. the three softcut loops record in stereo and their length is dependent on the norns internal tempo. they are set to 16 beats, but this can be changed within the script (restart to apply changes).
the supercollider things are represented as towers, accessible through E2 and E3 (although you could certainly tie them to grid / controllers). the towers are modulations for supercollider scripts running in the norns engine.
the engine has a bunch of different free-running supercollider scripts. its easy to add your own. if you want to add one, you can follow these five steps to make your own.
Engine_Downtown.sc
, add a ` var <synthX; [at the top](https://github.com/schollz/downtown/blob/228e087d3c298c2fef9077438173ce77687db969/lib/Engine_Downtown.sc#L20) after
Engine_Downtown : CroneEngine {, where
X` is whatever you want.Engine_Downtown.sc
, define the synthX
, using something similar to this:synthX = {
arg amp=0.0, amplag=0.02, hz=440;
var amp_, snd;
amp_ = Lag.ar(K2A.ar(amp), amplag);
// define your beautiful sound here
snd = SinOsc(hz); // or anything!
snd
}.play(target: context.xg);
Engine_Downtown.sc
, create a command definition that can be used from within lua. a simple one that each could have is amplitude to change the levels or change frequencies.this.addCommand("ampX", "f", { arg msg;
synthX.set(\amp, msg[1]);
});
this.addCommand("hzX", "f", { arg msg;
synthX.set(\hz, msg[1]);
});
Engine_Downtown.sc
, add synthX.free;
at the bottom of the code.downtown.lua
add a new modulator that references the command definitions:modulators = {
{name="my sound",engine="ampX",min=0,max=0.5}, // add a line for each thing to modulate
{name="my sound freq",engine="hzX",min=0,max=0.5},
...
mit