an interactive environment for designing 2d sound arcologies with norns and grid
200712
Encoder one (e1) always navigates horizontally between pages. Encoder two (e2) always scrolls through menu items. Encoder three (e3) always changes item values.
Key one (k1) always exits to the main norns menu. Key two (k2) always toggles playback. Key three (k3) always deletes the selected cell.
Press any key to create and/or select a cell. Press again to (or an empty key) to deselect. Press an adjacent key to toggle ports.
Long press k3 to trigger a countdown and delete all cells.
When changing values with e3, some items will use a pop-up menu. Unless otherwise specified on the screen, a 0.5 second threshold of inactivity (i.e. less than half a second after you stop turning e3) will result in returning to the previous menu. Note that the value selection is instantaneous - not 0.5 seconds - and some pop-up menus have an ABORT option available at the "bottom" of the values (i.e. spin e3 counter-clockwise until you see ABORT).
Move any encoder to skip the Northern Information splash screen or dismiss an full screen notification (such as grid disconnect messages).
Long press a cell to copy to your clipboard. Short press any empty key to paste. Release to clear your clipboard. While copying, ports disappear allowing you to paste to adjacent cells.
Cells are the building blocks of arcologies. Each key of grid represents a cell. Each cell has a structure, but these structures can be changed. Structures define qualities, behaviors, and attributes of a cell. Cells do one of three things:
Cells also have four ports, each of which can either be open or closed. Ports direct the flow of signals.
"[...] civilisations fall, sooner or later [...] and those forces which were always there, deeper than the foundations of the city walls: the desire to survive and the desire for meaning." — The Dark Mountain Manifesto
Each unlit key on the grid holds potential to become any structure.
Like photons, signals are the elementary particle of arcologies. All signals are created equal: they move at the same speed, have the same attributes, and interact with the world around them exactly as each other signal would. Signals really only have one meaningful attribute: a heading.
Signals move in straight lines. Signal headings are simply the cardinal directions of north, east, south, and west.
Signals allow cells to interact at a distance. Some cells emit signals. Other cells destroy signals. Yet others multiply, divide, and change the direction of signals.
If two (or more) would occupy the same coordinate at the same time, they will all be destroyed.
Signals are destroyed when they leave the boundaries of the grid.
In arcologies the glyph for a signal is Y
.
"The pulse of life & the endless cycle of progress."
Emit signals at regular intervals. See this table for more info.
"A holy site to the SuperCollider pantheon."
Plays single notes via onboard SuperCollider engine. Routes the flow of signals through open ports.
"The destinies of those who pass through are forever changed."
Routes the flow of signals through open ports. If a signal collides a closed port, invert all ports.
"Rolling drums and muffled subs in the distance."
Emits signals like a hive, but on spawn all ports are randomly toggled. See this table for more info.
"A dangerously innocuous structure, the topiaries are endlessly groomed by the nuns and monks."
Like shrines but has eight notes. Each time a note plays, the next note is selected via topography. Routes the flow of signals through open ports.
"Geodesics reverberating with chlorophyll psalms."
Emits signals like a hive, but uses a Euclidian rhythm algorithm. The dome’s metabolism maps to total steps while pulses map to events/beats.
"Legends speak of a being named Turing..."
Emits signals like a hive, but based on a simple Turing Machine (analog shift register) algorithm.
"Either time or ghosts have rendered them all nameless."
Rudimentary one-shot mono sampler. Sources files matching the pattern {1,2,3,4,5,6}.wav
from both /dust/audio/arcologies/crypt/*
(the default) & /dust/audio/crypts/*/*
(the DLC). Routes the flow of signals through open ports.
"At least it plays in key."
Randomly plays a synth or MIDI note within a range. Routes the flow of signals through open ports.
"Part greenhouse, part solar array."
Stores signals as charge. Once the capacity is met, on the following beat: temporarily invert all ports and emit a burst of signals.
"Beneath each uxb's dusty façade: a doorway to your own childhood."
Send single notes to connected MIDI devices. Routes the flow of signals through open ports.
"Forget your troubles, see a show, gamble a little. Win some money, lose some money."
Is to uxbs what topiaries are to shrines. Routes the flow of signals through open ports.
"Each echoes the other."
Routes incoming singles to each other tunnel on the same network.
"Go then, there are other worlds than these."
Send single velocity / trigger pairs to crow. Routes the flow of signals through open ports.
"In this haze of green and gold."
Is to aviaries what topiaries are to shrines. Routes the flow of signals through open ports.
"Yeah... for growing food... right."
Modulate the metabolism at a distance of all cells within its territory. Hydroponics can operate on other hydroponics, but never on themselves. Routes the flow of signals through open ports.
"Steel and glass, a prototypical Augéian non-place. They don't last long anymore."
Signals against open ports cause it to crumble. When crumble reaches zero, the structure explodes in a burst of signals in all directions. Signals against closed ports are deflected.
"From a fringe phenomenon to an everyday occurrence, no one could have anticipated what myriad of new mirages the anthropocene would cook up."
A drifting structure. Mirages will not collide with other structures. Routes the flow of signals through open ports.
"Every Auton was a fragment of the Consciousness..."
Is to spomeniks what topiaries are to shrines. Routes the flow of signals through open ports.
"Peace is process, not a state."
Send single notes to Mannequins Just Friends via crow i2c. Routes the flow of signals through open ports.
"You'll climb the wrist-thick kudzu vines that wrap the Sears Tower. And when you look down, you'll see tiny figures pounding corn, laying stripes of venison on the empty car pool lane of some abandoned superhighways."
Self-replicating structure. Blocks singal flow. Won’t grow over existing structures. Naturally deteriorates and dies back over time. Susceptible to cropdusting.
"For a whirlwind does not last a whole morning, nor does a sudden shower last a whole day."
Emits signals like a hive but spins.
"... a hypothetical traveller from another universe — presumably an older, more broken one — entering our own."
Plays a synth or MIDI note at a random velocity within a range. Routes signals to open ports.
"The mechanisms of these liminal structures are as clandestine as they are abstract."
Remote modulation: increment or decrement all target attributes of of adjacent cells by one. South and west ports increment. North and east ports decrement. These “psyops” can also be triggered manually via the cell designer menu as well as the “GLOBAL PSYOP” arc binding.
"To make a prairie it takes a clover and one bee, One clover, and a bee. And revery. The revery alone will do, If bees are few. — Emily Dickinson"
Plays notes using nb library and downloaded mods. Each time a note plays, the next note is selected via topography. Routes the flow of signals through open ports.
Bearing | The conceptual direction the structure is facing. |
---|---|
Capacity | Defines an upper limit before an event occurs. |
Charge | Measure of energy, typically paired with capacity. |
Clockwise | It either is or it isn't. |
Crow Out | Defines which output pair (1/2 or 3/4) to use. |
Crumble | How deteriorated a structure is. When it reaches zero, the structure is destroyed. |
Deflect | Direction a cell will deflect a signal. Matching signal headings and deflections result in the signal being sent "counter clockwise" away (i.e. an west-bound signal and an west-deflecting cell will result in a north-bound signal.) |
Device | Where to send MIDI signals. Remember to setup in the norns menu first. |
Drift | Directions avaiable for a cell to move. |
Duration | The length of a note. 1 is short, 16 is long. |
Index | Pointer a cell uses to keep track of its own state. |
Level | Percentage volume control. |
Metabolism | The rate at which a cell interacts with the transport. |
Network | Define a channel of operations. |
Note Count | How many notes a cell can store. |
Note(s) | A musical note. |
Offset | The distance a cell is shifted relative to the global length. Patterns wrap. |
Operator | ADD , SUBTRACT , MULTIPLY , DIVIDE , MODULO , or SET . |
Output | Either SYNTH (SuperCollider) or MIDI . |
Probability | Odds of a cell doing something. |
Psyop | Increments or decrements the targeted values of adjacent cells. |
Pulses | Affects sequential flow of data through time. |
Range (Min & Max) | Defines the scope within which a cell operates. |
Resilience | Probability of a structure crumbling each tick of its metabolism. |
Structure | Defines all attributes and behaviors of a cell. |
Target | Attributes avialable for psyops. |
Territory | A region of the grid relative to a cell. Inclusive of leylines. Possible territories are NORTH , EAST , SOUTH , WEST , N/E , S/E , S/W , N/W , ALL , and FRINGE . |
Topography | >>>> , <<<< , >><< , or DRUNK |
Velocity | MIDI velocity from 0-127. |
Save and load via the norns parameter edit menu.
Saving creates a .arcology
and a .pset
and places them in /dust/data/arcologies
.
Saving does not store audio or crypt .wav
s. You get to manage those on your own. However! If you contribute your samples to crypts you'll be able to share that way.
Here's a minimalist arcology to get you started:
On the grid, ports are only displayed as adjacent to the selected cell. The ports are actually just attributes of a given cell/key. Each cell has 4 ports (unless the cell is along the perimeter of the grid in which case they have only 3 (or 2 for corners (sorry, I know it is complicated)).)
In other words, think of ports at little tardigrade-sized doors on the walls of the keys themselves.
This means cells can be right next to each other and talk freely between their ports. When you select a cell, that cells ports will be drawn over any adjacent cells, but the adjacent cells continue to exist.
In general, cells will remember their attributes as they mutate between structures. This means you can have a hive with a metabolism configured, then switch it to a shrine, then back to a hive the same metabolism will remain. The shrine (which doesn't have metabolism) won't erase them.
One key exception to this is any structure with notes. Topiaries "re-roll" their notes every mutation. Fickle things, topiaries.
Leylines help you visualize the signal flow of your arcology. Opening a port will draw a leyline to a terminus (either a neighboring cell or the edge of the grid.) Leylines are purely decorative and have no functional impact on your arcology.
All signal collisions are animated with a simple "blink" of the key. This means that signal-on-signal cancellations, signals-on-closed-port, and signal-on-open-port all look the same.
The concept of time signatures and polyrhythms absolutely exist in arcologies - they just aren't labeled with traditional music terms. First, change "length" (on the home page) to set how many beats are in a bar. Then, select a hive (or any signal emitter: dome, maze, etc.) and set the metabolism. You'll graphically see how these two attributes interact ons-creen. With a global length of 16 and a hive with a metabolism of 10
, for example, you'll be able to create a "1-2-3-4-5-6-7-1-2-3-4-5-6-7-1-2" type of rhythm.
Finally, change the hive's offset. Note that since signals all move at the same speed concepts like irregular rests or triplets don't exist. Perhaps one day there will be a triplet structure that fires off bursts...
Seeding is purely random process with some opinionated boundaries for the various parameters. Your existing arcology has no impact on the result of a seed. Seeding destroys the current arcology. Seeding is arbitrarily capped to 32 cells (anything more than this felt super chaotic to me.) Seeding is not intelligent - you may generate an inert arcology with just 20 gates (unlikely), or the most beautiful symphony of all time (even more unlikely.) I find the feature a really fun way to get inspired and start a session.
arcologies was not a pun on monome arc. However, I do plan to add optional arc features in the future.
By default, crypt cells source files matching the pattern {1,2,3,4,5,6}.wav
from /home/we/dust/audio/arcologies/crypt/*
. Note this directory is a descendant of audio/arcologies/
. Just drop your files in this directory and you'll be ready to play samples.
If you wish to use DLC from crypts you can configure your the source directory via the norns parameters menu. An arcology can only use one crypt at a time.
To get started, either download or clone crypts to /home/we/dust/audio
(i.e. cd dust/audio && git clone git@github.com:/tyleretters/crypts crypts
). If you don't want to deal with that and just want to load your own samples, simply create the directories and drop the files in.
home ↳we ↳dust ↳audio ↳arcologies ↳crypt 1.wav 2.wav 3.wav 4.wav 5.wav 6.wav
home ↳we ↳dust ↳audio ↳crypts ↳my_name_1 1.wav 2.wav 3.wav 4.wav 5.wav 6.wav ↳my_name_2 1.wav 2.wav 3.wav 4.wav 5.wav 6.wav ↳my_name_3 1.wav 2.wav 3.wav 4.wav 5.wav 6.wav ...
audio/crypts/
is a sibling of audio/arcologies/
. Not a descendant.Operations work thusly: (target metabolism) (hydroponics operator) (hydroponics metabolism) = (new target metabolism)
. So, a hydroponics with a metabolism of 1
and an operator of add
operating on a target with a metabolism of 5
would look like this: 5 + 1 = 6
. If an operation would result in a divide-by-zero, then zero is returned.
Hydroponics operate on every cell with a metabolism in their territory.
The south-east territory.
If a signal would be "cornered" by two or more institutions with contradictory deflections the signal will destroyed. Be kind to your signals.
There are some debug features built in. Type these into the REPL: fn.arcdebug()
, fn.screenshot()
, and fn.wtfscale()
.
Rename the directory "arcologies-main" to "arcologies" and place it in /dust/code/
.
If crow is unresponsive when using Forests and Aviaries, simply unplug the USB from norns and plug it back in again to reestablish communications. When a Forest or Aviary receives a signal on an open port, it will first set the ASL action on a crow output then trigger the action. With Apiaries, nb voices that communicate with crow can be used simultaneously with Forests and Aviaries, however the nb voice should also set the ASL action on crow when the Apiary receives a signal, similar to Forests and Aviaries. Mix and match, your mileage may vary.
Nota Bene (nb) is a norns library that plays notes well. For more information, see the thread on lines. nb is a library that lets norns scripts trigger notes on nb voices which are installed as mods on norns. There are 4 voice selectors in arcologies named nb_1
, nb_2
, nb_3
, and nb_4
. Whenever an Apiary receives a signal on an open port, it plays a note using the nb voice listed by the voice selector. The attribute NB SELECT
chooses which voice selector the Apiary is using. The attribute NB VOICE
chooses which nb voice the voice selector uses. When changing NB VOICE
for a voice selector, all other Apiaries using the same voice selector will be changed to the new selection as well. The attribute DURATION
controls the amount of time between note_on()
and note_off()
when playing the nb voice. In the norns parameter menu, the 4 voice selectors and the parameters associated with each selected nb voice can be found in the NB / APIARY
section of the menu.
Be sure to set up your devices in the main norns menu first. arcologies uses the 2020 norns clock. This gives you access to internal, MIDI, Ableton Link, and crow sources.
All cells have one-and-only-one structure. Cells have many attributes. Signals are dumb. This file is important. So is the keeper.
Hopefully this table makes clear the hidden story of how the metabolism on hives and raves work.
Metabolism of 0
is mute. Metabolism of 16
is straight quarter notes.
But 13
is your four-to-the-floor!
0 = 0000000000000000 1 = 1000000000000000 2 = 1000000000000001 3 = 1000000000000010 4 = 1000000000000100 5 = 1000000000001000 6 = 1000000000010000 7 = 1000000000100000 8 = 1000000001000000 9 = 1000000010000000 10 = 1000000100000010 11 = 1000001000001000 12 = 1000010000100001 13 = 1000100010001000 14 = 1001001001001001 15 = 1010101010101010 16 = 1111111111111111
Cloakrooms conduct pysops on all adjacent cells. Note they do not split or route singals.
The cloakroom operational territory.
These brief challenges are a great starting point for learning arcologies.
1.wav
, 2.wav
, 3.wav
, 4.wav
, 5.wav
, & 6.wav
./dust/audio/arcologies
.
crypt
and play the samples with a crypt cell.mv crypt crypt_tmp && mv inactive_crypt crypt && mv crypt_tmp inactive_crypt
. What (doesn't) happen?the rewilding is the name of arcologies v1.3.0
. This marks the introduction of nb.
arctangents & archangels is the name of arcogolies v1.2.0
. This marks the introduction of monome arc support.
eternal september is the name of arcologies v1.1.0
. This marks the introduction of hydroponics, institutions, mirages, banks, autons, kudzu, and windfarms.
crypts is a community sample pack / DLC for arcologies.
“the rewilding”
.arcology
save/load issues.“arctangents & archangels”
<<< !!! DANGER ZONE !!! >>>
parameter set. Life is too damn short. You can now fuck with the clock.sync()
rate.midi:disconnect()
calls to help with DIY gear.Cell:register_save_key()
.saveload.lua
..arcology
files will just be imported as hives. If this is upsetting, see 0aad26
to re-implement.AMORTIZE
, DEPRECIATE
, NET INCOME
, INTEREST
, TAXES
.>
indicator for multi-note structures now shows the note that just played not that note that is about to play. This was a highly controversial decision for me… The right brain won, today.popup.lua
.saveload.lua
.rerun()
to functions.lua
.cell.structure_value
to cell.structure_name
.seed_structure_<NAME>
to structure_<NAME>
in params.KUDZU METABOLISM
, KUDZU RESILIENCE
and KUDZU CRUMBLE
set the defaults for newly created kudzu (children kudzu inherit metabolism and resilience from their parents.) KUDZU AGGRESSION
sets how many growths happen each beat. KUDZU CROPDUST POTENCY
sets how much the kudzu crumble with each > CROPDUST
.NOTE COUNT
for structures with multiple notes.v1.0.3
and prior arcologies should be loaded with a ~95% accuracy. The great metabolism refactor of v1.0.4
still means you have to retune your metabolisms.config.lua
and into their own file.fn.cleanup()
.channel
to m:all_off()
.functions.lua
.MIDI PANIC!
action in the parameters menu to turn all notes off..arcology
files.fn.arcdebug()
, fn.screenshot()
, and fn.wtfscale()
to functions.lua
.config.outputs
defensive programming.Velocity
.dev.lua
file.“eternal september”
'
with "
. Old habits die hard.0
after seed instead of persisting.0
.local
declarations at top of files.13
. See the metabolism table in the docs for more information and rationale.1
is now slow, while 16
is now fast.0
metabolism no longer freeze playback.Cell:has()
properly navel-gazes.s:one_shot()
logic.For monome norns and grid, arcologies is a 21st century instrument for musical composition and discovery.
The core design objective for this software is clarity. Each key and encoder on norns have a dedicated function. All the keys on the grid share the same behavior. The menus are built to be fast, intuitive, cohesive, and consistent. With a foundation that is (hopefully) quick to master, the arcologist's focus can shift to sculpting emergent and complex compositions.
The design of arcologies heavily inspired by the two-dimensionality of Orca, the polymorphism of ornament & crime, the immediacy of meadowphysics, and the uncompromising vision of cheat codes. I've always been interested in emergence and wanted to push that line of inquiry further than I have before. Other curios played a part, too: Dwarf Fortress, the tower defense genre, SimCity, and the Eno / Chilvers suite of generative applications, carbon-based life, water, the anthropocene, supply chains, The Mushroom at the End of the World, The Dark Mountain Project, Eco Futurism Corp, "seasteading", the gedankenexperiment-prompt: "sound artist's work in a William Gibson novel?", Conway's Game of Life, Garfield Park Conservatory, the Epcot Center, Buckminster Fuller, and the need to challenge myself and create something beautiful during this fucking pandemic. And, of course, actual arcologies and the architectural movement known as metabolism.
arcologies is free, open source, and licensed under the GNU General Public License v3.0.
crypts is free, open source, and — being a community sample pack that may wind up in recordings — is under the CC0 1.0 Universal Public Domain Dedication license.
Contributions welcome.
Software, design, & watercolors by Tyler Etters. Logo by Theresa Berg. Glyphs by both. This project would not have been possible without the generous mentorship, support, and patience of so many from the llllllll community. You know who you are! Thank you.