“From reading and listening I think this relationship could be characterized by a dichotomy of making\finding. Mapcore rides the backslash.” - @juje
“I’m a fly on the wall of the house that mapcorps builds, and it feels to me maybe a bit like a map of the House of Leaves, or like each time you open your GPS a different layer is turned on, like one time it shows peak foliage viewing, and another we see the geological composition of surface minerals, then what restaurants are open until midnight, then how slime mold would distribute itself compared to the Interstate Freeway system. I’m super into it. Sending appreciation to y’all.” - @wheelersounds
“Mapcore is whatever you make while finding your way.” - @reg.barkley
“Mapcore: when you stop limiting your slew” - @scanner_darkly
and
mapcore: you need at least 20
characters, but no more than 30. or maybe 31.
“I have been thinking about mapcore a lot.”
Some thoughts from @nonverbalpoetry:
If programming your music reveals a bug in your chosen platform, it’s mapcore.
Mapcore is anything made on the new MacBook wet.
You can’t dance to mapcore, but you can bop to it.
If your rhythum or melody is wonky, because of math, that’s mapcore.
“It’s a weird interval, but I think it’s pretty.”
“I swear this patch worked last time I tried it.” (The first working patch was not mapcore.)
An Attempt to Identify Formal Elements of Mapcore
@tyleretters:
Traceability: virology of a timbre.
Otherness: Sapir-Whorf harmonics.
Emergence: …then there were two, and the awareness of two became a third…
Coupling: “Yeah, that variable, A? It does six things.”
Ibid: In the same place.
Recursive: insert meta-recursive joke.
The map…
@license:
…is some kind of territory.
…is also an envelope. or maybe a napkin.
…is disposable, but it leaves a residue on everything around it.
…didn’t crash even though everything else did.
…is at the center.
…is off to the side.
…is what you get when you press the OTHERWISE button.
and
If you think you have “arrived” it’s not really mapcore, because then you don’t need a map!
@colmkil:
Mapmaking defines something indefineable. Mapmaking is a violent and destructive act, a symbolic act of world creation. What you see on the page is not what it purports to be. It is an act of trickery and magic, crushing an infinitely dimensional space into two or three or maybe four dimensions. It is the creation of an alternate reality, it is storytelling, and in that way it can elide or occlude the truth. But it can also reveal truths otherwise obscured, truths that can be dangerous in the wrong hands. Property lines, border lines, fault lines of all kinds (my fault? your fault). False separations become true separations, truth becomes a thing of the past… “but it says, right here on the page!”
Mapmaking, in the hands of time-travelers who know they draw powerful spells on the cracked parchments, is a tool for building utopia. There is no pretention that we are drawing the world as it is — the world simply is, metaphor will never suffice. Let’s cast a spell for something else, maps for the people, maps that do not erase us but scribble us into landscape. Doodle me daddy I want to be a gnarled tree in the map of your sanctuary.
mapcore is outside your comfort zone
Etymology
The term “mapcore” was coined on June 5th, 2021 by @echophon and @swampstinks during the Islands of Stability performance at Flash Crash 210605. Other viable names are:
Awashed ashore this island of stability, I blinked in the iridium light. Our waterlogged map slowly curling in the dry heat, old scribblings of trigonometry fading.
“It is done with a filter ping,” Trent said, and summoned thunder in that cloudless sky.
Ryan was tracking at a different frame-rate than I, but that was precisely why we are a team. New paradigms require new tactics. And here, at the University of Maps, new paradigms abound. How many more still remained unwritten?
Indeed, time slippage is a phenomenon frequently encountered by synthesists, both within the machine and without.
There were still many weeks ahead, but already it felt as though we had been on this journey for a millennium. And perhaps we had. Indeed, time slippage is a phenomenon frequently encountered by synthesists, both within the machine and without.
“I am not a tinkerer,” I said, “I need an objective. These tools are means to an ends. While I enjoy the medium and materials, ultimately I aspire to create from a place of authenticity, emotion, and a sensation of just barely having my instrument under control.”
My words were recorded to the cloud, for my future self to analyze.
“Hello, future Tyler,” I said.
He did not respond.
One Face
post.layout: post
post.title: One Face
post.date: 2021-06-19 00:00:00 +0000
post.url ⛓️: /2021/06/19/2-one-face/
post.content_id: 2
post.author: Ryan
post.type: Autofiction
post.ascii: $
post.x: 2
post.y: 5
post.class: red
post.attributes: carbon, plutonium
One face, then two, then three. The ideal count of load-bearing vectors. With an unhurried gesture, the light moves slightly, bringing into relief friendly contours.
“Now I exist.”
Verbal handshake, clock synchronization, report of specific musical queries:
Ryan, reacquaint with the horizon line.
Tyler, maintain the emotional urgency of the edge.
Trent, find the pattern and fun in the intuition.
These thoughts give us energy: live coding as a concept, playing on the edge of our ability, creating and sharing a good time, portable systems and concepts, knowing just enough.
We relish the homework.
Trent describes the ensemble:
A bass drum.
A snare.
Two toms, which are kind of really just bass drums.
Trent describes recent live codings: triggering “longer samples” as opposed to one-shots…
Ryan silently wonders: are these like loops, maybe slices? Does a network of hidden parameters depend on when triggers arise? Is this sequencing sequences? Sequencing sequencers?
… Now we see the field, a geometric playground of aluminum, punctuated by inlets, outlets, corpora parametric. A golf course for tiny aliens.
On this field lives the snare. We listen to a pinkened transistor avalanche, through a gate,
As relayed by a different trio of sister filters. These sisters are attracted and repelled in equidistance, as semaphored by another curve.
We compare pinkened and unpinkened avalanches. Trent points out that the pinkened ones have inherent chaos and stronger bias and that is more interesting within percussion. The avalanches, as the sisters and gates relay them, sound something like a space. A trick of the mind’s ear.
Just as the hour bottoms out, Trent summons an unfurling semi-fractal of undertones. We postpone unpacking this magic in deference to a quick discussion closer to the horizon line.
Smaller sub-systems are easier to interact with. Simple building blocks are the design philosophy. Strap these into the harness that makes the most sense.
We Spend So Long
post.layout: post
post.title: We Spend So Long
post.date: 2021-06-19 00:00:00 +0000
post.url ⛓️: /2021/06/19/3-we-spend-so-long/
post.content_id: 3
post.author: Trent
post.type: Autofiction
post.ascii: %
post.x: 3
post.y: 13
post.class: red
post.attributes: iridium, neptunium
We spend so long trying to talk about the thing. We use metaphor & abstraction, and we break it down into questions of “what it is.” This always seems to be the entry point, especially in a knobs & cables paradigm, where we silo knowledge about objects and try and understand them by adding together.
The problem is the operator +addition+, but behaviour in these systems is interactive & multi-modal. Our collective desire is to see the connections of our objects; to imbue these sound entities with greater meaning than they can have in isolation. Communication is the thing of interest, and our cables are the mascots of that interaction.
“…but this is the scientists way of thinking, not the artist or the hacker.”
The filter ping felt like an ideal entry to this way of thinking. Classically we say a filter “subtracts” everything outside of it’s passband, but this is the scientists way of thinking, not the artist or the hacker. Today we watched filters whose desire was to ring at their own frequency - every bit of energy we pass to it is captured by the filter, and transmuted into that ringing. A trigger pulse becomes an invitation to ring out. The presence of the input signal mixed in with that ringing is a by-product from the perspective of the filter - a necessary evil.
Operating at the edge of stability is where our artistic mind travels - the desire to be on that precipice & explore what comes from the fear & adrenaline & uncertainty. We do it in ourselves, and in our performances, but we also push our instruments there too – the filter right at the point where it’s more than just a spectral-subtractor, but less than a droning oscillator.
This is a place worth fighting for - the chaotic transition between two states. Requiring both great control & precision to maintain one’s footing, while being a place where ambiguity is the only constant.
This log describes how to create a percussive sound with an envelope and a filter. Any envelope and filter will do. You’ll also need a way to trigger the envelope, along with a way to listen to the output of the filter.
Ingredients
Envelope generator
Filter
Envelope trigger
Audio interface
Filter Ping Example
Set your envelope to a very short attack. Something between 0ms and 10ms should do. Set your decay and/or release (depending on your instrument) to have a smooth curve.
Route this envelope’s output to the filter’s input. (This may feel counter-intuitive as typical use of a filter has the synthesist routing audio-rate signals here.) Route the filter’s output to your audio interface so you can hear it.
Increase your filter’s resonance to the maximum, then dial it back until just after it quiets down.
Trigger the envelope.
It may look like this:
Yellow Cable: clock output (here randomized) to envelope trigger input.
Red Cable: envelope output to filter input.
Blue Cable: Filter output (here band pass) to audio interface.
And it may sound like this:
Advanced Filter Ping Example
Following the same concept as before, now add modulation. Here, we use a Teletype but something like a Maths or any other envelope generator/follower will suffice. Teletype is standard issue at the University of Maps for its versatility and ability to “self-document” behavior in patch photographs.
(Start from the above “Filter Ping” patch.)
Send the clock output to a buff mult instead of directly into the envelope input.
Route one of the buff mult outputs to the envelope input.
Route another buff mult output to Teletype input #1.
See photograph for Teletype scene & script implementation.
Route Teletype CV #1 output to a modulation target such as filter FM or frequency.
It may look like this:
White Cable: clock output (here randomized) to buff mult.
Green Cable: clock buff mult to Teletype in #1.
Grey Cable: Teletype CV #1 output to filter frequency modulation input.
Yellow Cable: clock buff mult to envelope trigger input.
Red Cable: envelope output to filter input.
Blue Cable: Filter output (here band pass) to audio interface.
And it may sound like this:
Conclusion
Generating percussive sounds with filter pinging ruptures and problematizes our usual relationship with filters. Filters are tools of subtraction. With this simple electrical “hack” the synthesist instead gives voice to the silencer.
Strikes and Resonance
post.layout: post
post.title: Strikes and Resonance
post.date: 2021-06-20 00:00:00 +0000
post.url ⛓️: /2021/06/20/1-filter-ping-sc/
post.content_id: 5
post.author: Ryan
post.type: Praxis
post.ascii: +
post.x: 2
post.y: 2
post.class: red
post.attributes: filter, resonance, comb, karplus-strong
Pinging resonant bandpass, low pass, or high pass filters creates a sine-like ringing as the filter sculpts an incoming peak into its native rippling, just as the surface of a pond does to sudden interruption by a rock. The relationship of a quick strike agitating a vibrating, ringing body can be found in abundance elsewhere in the physical and sonic universe.
SuperCollider Example One: Two sides of a coin
Here is an example in SuperCollider of a pinged filter alongside a simple Karplus-Strong model. The two filters differ both in ringing and excitation. The mix between is controlled by the X-axis of the mouse, so the further left, the more bandpass filter, and the less the comb filter.
SuperCollider Example Three: Simple Allpass Reverb
This example is quite a bit different from the other two. Now, the tuning is completely random, and instead of a bandpass or comb filter, we have 10 allpass filters. This creates a primitive reverb. As in the first example, the mouse X axis controls the audio - this time, it is the maximum length of the allpass delay, as sampled each strike.
This sounds much different from the previous two but is another example of a strike exciting a resonator to create a percussive sound with a natural decay.
({
// variables
var trig, reverb, maxTime;
// rhythm: once every four seconds
trig = Impulse.kr(1/4);
// maxTime: sampled on each strike
maxTime = MouseX.kr(minval: 0.001, maxval: 0.2, warp: 1);
// filters: allpass
reverb = Mix.ar(((1..10)).collect({
var delayTime = Demand.kr(
trig: trig,
reset: 0,
demandUGens: Dwhite(lo: 0.01, hi: maxTime));
var pan = Demand.kr(
trig: trig,
reset: 0,
demandUGens: Dwhite(lo: -1, hi: 1));
var filter = AllpassC.ar(
in: trig,
delaytime: delayTime,
decaytime: 4);
Pan2.ar(in: filter, pos: pan, mul: 2);
}));
// amplify
reverb = reverb * 5;
// output: mix, soft clip
(reverb + trig).tanh;
}.scope);
Observations
How do the filters’ timbre differ?
How do the filters’ low/high end differ?
How do the filters’ dynamics differ?
How does their behavior change based on frequency?
How does seeing or hiding the scope feel different?
What other configurations come to mind?
We Are the Singularity
post.layout: post
post.title: We Are the Singularity
post.date: 2021-06-21 00:00:00 +0000
post.url ⛓️: /2021/06/21/1-we-are-the-singularity/
post.content_id: 6
post.author: Tyler
post.type: Autofiction
post.ascii: ;
post.x: 4
post.y: 27
post.class: red
post.attributes: ennui, anthropocene, fire, singularity
Formaldehyde, Finnegan, fermium, fen. I’m trying to apply what I’ve learned from studying the floating islands all around me in the Great Pacific Garbage Patch. Unlike the sonderous eddies in the Sargasso Sea, this place is undulating and uneasy. My compass spins north, but then ticks counterclockwise with each heartbeat of everyone I love.
Is it possible this reality is coeval with yours?
Do you remember the hole in the ozone layer?
I do. It was in the Weekly Reader circa 1995. I can still see the cover - a blood red blister of a sun, smoldering on a horizon. Perhaps above oil rigs. But perhaps I implanted those arachnids later. Forgive me. It was hard to hold onto the facts when I was seven.
The biggest thing was some sort of sensation of accomplishment. That we did, in fact, successfully stop the hole in the ozone layer from expanding and destroying everything. It left a deep imprint on me. Then 2001 happened and everything changed.
Mapcore confronts both space and time.
We plot maps between points in our past and places in our future.
The track that accompanies this post sounds like it could have been made 20 years ago by Labradford or Godspeed, but it was done today, here, in 2021, with a mechanical keyboard, a dozen lines of code, six eurorack modules, and some reverb.
Yesterday was the solstice.
Tonight, the darkness grows and the cartographers must once again map the shadows.
What is Mapcore Anyway?
post.layout: post
post.title: What is Mapcore Anyway?
post.date: 2021-06-22 00:00:00 +0000
post.url ⛓️: /2021/06/22/1-what-is-mapcore-anyway/
post.content_id: 7
post.author: Tyler
post.type: Theory
post.ascii: ;
post.x: 4
post.y: 29
post.class: red
post.attributes: mapcore, exposition
I’m going to attempt to explain, in plain words, what I understand the observable elements mapcore to be. These are:
Alive
Process
Lineage
Communal
Ostinato
Electronics
Otherness
Emergence
Coupling
Recursive
Metaphysical, emotional, and spiritual aspects of mapcore are for another post.
To set context, I wrote a short poem, then we’ll get to the observable elements:
the mushroom grows
where spores land,
from wind or bird or snake or hand.
but will it dream
of something grand,
if fiercely held and darkly planned?
Alive
Mapcore was birthed from livecoding performances. It is alive in the way a classical concerto performance is alive. Some setup or even sticky notes may go into the preparation of mapcore. But, I think, mapcore is something that happens, not something that is planned.
Process
Mapcore artists are keenly concerned with process and craft. The order of operations, the sequence of events, the timing of triggers. Indeed, the core instrument of mapcore seems to be the Teletype, a curious artifact described as an “algorithmic ecosystem.” Working knowledge of a specialized scripting language - terse enough to call an esolang yet rational enough to appeal to a data scientist - is required to use the Teletype. With this language, mapcore artists program the logical flow of electrical voltage turn their instruments into ever-mutating analog computers. This is not science fiction. Someone is doing this right now while their cat is purring beside them.
Lineage
Depending on your vantage point, mapcore can trace a lineage through recognized art movements such as dada, process art, modernism, post-punk, avant-garde, electro-acoustic, techno, and classical.
Communal
If IDM is solitary-armchair music, then mapcore is library-steps music.
If IDM is solitary-armchair music, then mapcore is library-steps music. Simply: mapcore is fun to philosophize and theorycraft. The perfect daydream. In the Magic: The Gathering, there is the game and then there is the metagame: the game about the game. Mapcore is music with a metagame. (Note, unlike Magic, mapcore is not a zero-sum game.)
((Also: Librarystep! There we go. Yet another microgenre! 📚🚶🏿♂️))
Ostinato
“In music, an ostinato is a motif or phrase that persistently repeats in the same musical voice, frequently in the same pitch.” — Wikipedia
The only formal musical element I’m willing to sign off on at this stage is ostinato. Given that most mapcore works are performed and coded live, ostinato is a crucial element of creating a timeless space for the artist to strategize the next movement. It could be argued that randomization serves a similar role.
Electronics
I know of no mapcore artist that doesn’t use electrons as their primary medium.
Traceability
Virology of a timbre. There seems to be a minimalism with mapcore works that rewards attention. Elements are typically intentionally arranged and specifically mutated.
Otherness
Sapir-Whorf harmonics. Mapcore has an element of otherness that is difficult to pin down. I think this is is a result of avant-garde proclivities meticulously filtered through a von Neumann architecture.
Emergence
Simple rules give rise to complex systems. This phenomena is made audible with mapcore. It is simultaneously beatnick psychedelia and distinguished scientifica.
Coupling
The implications for mapcore are reported occurrences of “chaos theory fractals” where (un)intentionally changing a variable or voltage can throw the entire composition into a new direction.
Given the obscene terseness of the Teletype scripting language and the finite set of variables (8 or 12 or 268 or other numbers, depending how you count) a traditionally undesirable software engineering anti-pattern frequently emerges: coupling. Coupling happens when you use one variable to do two things. The implications for mapcore are reported occurrences of “chaos theory fractals” where (un)intentionally changing a variable or voltage can throw the entire composition into a new direction.
Recursive
Recursion is another powerful tool in programs with finite boundaries.
Turtles (@) all the way down.
Conclusion
Mapcore is electronic process-music made with math, code, and an open mind.
Tore Us Not Apart, But Tore Us Around
post.layout: post
post.title: Tore Us Not Apart, But Tore Us Around
post.date: 2021-06-25 00:00:00 +0000
post.url ⛓️: /2021/06/25/1-tore-us-not-apart-but-torus-around/
post.content_id: 8
post.author: Tyler
post.type: Autofiction
post.ascii: *
post.x: 3
post.y: 24
post.class: red
post.attributes: mapcore, exposition
We awoke ensconced in a warm fog.
“The Vactrol Mist,” someone only half said.
For we had each been split in two!
A kitten meows -
STOP! Fre(ez)e time. Capture it. Be present for a single moment and:
Imagine the meow, but 3D-printed. It might look something like a crystalline sphere: a dense latticework of self-similar patterns at the core expanding in all directions to the “fuzzy” outer reaches of silence. Come to think of it, the sphere is perhaps more of a torus, for the kitten sits in the center thereby dampening the sound.
This torus, in this single moment in time represents a single, infinitesimally small slice of the meow. A bit rate of infinity.
Now, in your mind, move forward a single, infinitesimally small moment into the future. The torus has changed. Those crystalline structures each swam along their own invisible parabolic vectors. Always away and never null. These structures are made from differing densities of nothing. (Air.)
Slice the torus in two, like an onion. Dip the onion in red paint and press it to the wall. Gently though! There are some very fine lines that are very close to one another! Even though this is paint, it is now the sound.
Now, in your mind, release time! Watch the red ring dance on the wall as the meow grows in volume. The ring disappears to nothingness as the meow tapers off to silence. Let this blinking meow play in a pleasant loop.
Now, see things as they really are.
This blinking ring on the wall (that is not the sound (but also is the sound)) is a computer screen. Freezing and releasing time is my thumb on the space-bar key.
Unfortunately, my thumb was also on the other side of the room. We had been sliced in half, just as audio. Perhaps we had become audio. Indeed, at least one of us was in “AUDIO ONLY” mode just a few moments ago…
This is the level of abstraction the synthesist must work with if they wish to use their eyes.
This is the level of abstraction the synthesist must work with if they wish to use their eyes: a blinking ring on the wall. It is perhaps the most remarkable piece of synesthetic technology in existence. But for some tasks, it is suited not.
The Vactrol Mist was deepening in hue. The waters of the Great Pacific Garbage Patch were choppy today. White noise foamed all around. Time felt limited, even though time was the same.
“To reconstruct ourselves,” Trent half said, “we must use OR logic.”
Certain analog sound computers allow for mathematical operations such as SUM, OR, AND. These operations all you to isolate, split, combine, and erase certain geometries of sound and voltage.
Destroying sound is easy. But can you heal it?
Can you reconstruct the sliced torus meow with its other half? With 100% accuracy? Down to the atomic tip of each fiber of silence? And, when you, finally so confident confident in your spatial precision, when you finally tap your thumb to the space-bar to fre(ez)e time again, will both halves play perfectly in precision?
Violence is simple and sudden. Convalescence requires grace.
I powered up my mapdeck and got to work reconstructing that which tore us not apart, but torus around…
A map might suggest possible destinations, but there is no promise that you’ll arrive or that your destination might not change along the way. Travel is messy; Straight lines and Straight time are constructions, elisions of lived experience.
Weathermaps
The wizards of weather tracking covet their esoteric maps.
This map describes 7 AM. At 8 AM, the map is no longer relevant.
Euromaps
The modular synth patch can be similarly fleeting. It is a moment in time, it spans a geography but it shifts with the sands in the hourglass. Like the weathermap, it is esoteric, yet even the human hands that drew it may not fully grasp what it describes. “This is a mess!” said with derision, or with delight.
“Perhaps a mess can be how we meet. Mess as meeting; mess as eating. The word mess derives from the old French mes; a portion of food, a course at dinner. To share a mess can be to share a meal. Can we share a meal, sustain each other, be sustained by each other, without meeting in person?
[…]
A mess can be a picture of life.”
— Sara Ahmed, Ibid.
Telemaps
Mapcore can be many things to many people. To most people, it is no thing. Let’s look at maps in Teletype:
This map describes a recursive script designed using DEL X: $ $ and EVERY Y: BREAK (foundational mapcore sacred knowledge *) to play itself for exactly 20 minutes and then stop.
* “sacred” but not “secret” — SHOW UR SCREENS. Mapcore is esoteric but not exclusionary, one of its many ironies and contradictions.
The first map that was drawn was in Teletype — tracing the recursive scripts from one to the next as they call each other successively and recursively. These traces were drawn by hand, surely the cartographer knows the way? Not so. The way was obscure, the time to the destination was always different, never adding up to the cartographer’s calculations. So the mapmaker set about making another map, seen on the right side of the image — these are the eight locations, how do we get from one to the next and back again, and how long does it take? Something was revealed in the spatial map, but no answers. A timemap was next (on the left), which similarly revealed something, but no answers. A linear map can only hint at a nonlinear destination — note the “???” as the cartographer loses the trace — HERE BE DRAGONS.
There is something intrinsic to queerness in accepting fluidity and change, understanding self and identity as something that morphs over time and shapes and is shaped by experiences, rather than being a single thing set in stone over a lifetime. Imagine Mapcore, like identity, as an undefineable and ever unfinished journey rather than a destination. Maps that are more about imagining things in space, and illustrating the fluidity of space, rather than treasure map style [YOU are here: THIS is the destination]. Those treasure maps are a Hollywood construction — after all, wasn’t the real treasure the friends we made along the way?
Sour Spots
An exploration of the ‘sour spots’ mapcore technique, using teletype and grid cyclical sequencer.
Try it yourself:
Take your favorite oscillator.
Instead of the usual sweet spots you know and love, find the sour spots. Make a noise you don’t like.
Make a track from this sound.
Here, I am using the cyclical sequencer scene to trigger various fifths and octave notes from JF, which is set to a low enough octave that the lowest notes are almost sub audio, and the ramp and FM dials are finding a perfect sour spot of cacophonous FM. I made this sound. It was Nasty. Not in a good way. I didn’t like it. This is then sent to Clouds, which adds extra glitching. I am manipulating the trigger patterns and pattern lengths of the four sequencer channels in real time.
There is something about queerness that embraces the sour spots, the messes, the places on the map where some might be lost, others can be found — homes can be found.
Queermaps
“[…] queer maps are useful to queer people because they tell us where to go to find queer places […]”
Sara Ahmed, again: “What we find, how we find: queer maps are useful to queer people because they tell us where to go to find queer places, places that come and go, providing temporary shelters, gay bars can be our nests. We need queer spaces because we need not to be displaced by how organisations, also worlds, are occupied; yes, compulsory heterosexuality can still take up space; time, too. If queer maps are useful because they tell us where to go to find queer spaces, queer maps are also created by use. Perhaps those messy lines are also desire lines that tell us where we have been, what we found, who we found, by going that way, by not following the official paths we are told would have opened doors or eased our progression.”
Make an unpleasant sound, tangle an unintelligible knot, make a huge mess and give yourself the time and space to explore it. This may or may not be mapscore.
Paracelsus Said
post.layout: post
post.title: Paracelsus Said
post.date: 2021-06-27 00:00:00 +0000
post.url ⛓️: /2021/06/27/2-paracelsus-said/
post.content_id: 10
post.author: Brian
post.type: Theory
post.ascii: X
post.x: 4
post.y: 10
post.class: white
post.attributes: null
they told us not to plug the typewriter-keyboard into the synthesizer.
that it would bridge the work-play continuum, we would not survive as
a species. but the intervening years wore down our sense of shared
language--- what does it mean to survive? must we accept the taxonomic
doctrine of species? and who are they? are we they?
we had a collection of midi note numbers, each with several decimal
places. we prefixed poly- to all concepts. we uncovered the sound of
reverse polish notation.
the AI responded poorly to the new aesthetic input. drowning in
information while starving for wisdom. our poetics frustrated the
rationalists, yet we were all bound together with patch cables and
leaf litter.
paracelsus said "all things are concealed in all."
paul virilio said "the invention of the ship was also the invention of
the shipwreck."
ursula le guin said "the only thing that makes life possible is
permanent, intolerable uncertainty; not knowing what comes next."
Let's Talk About M
post.layout: post
post.title: Let's Talk About M
post.date: 2021-07-15 00:00:00 +0000
post.url ⛓️: /2021/07/15/1-lets-talk-about-m/
post.content_id: 11
post.author: Zeke
post.type: Praxis
post.ascii: M
post.x: 4
post.y: 11
post.class: orange
post.attributes: mouth
Advanced Teletype hackers probably (definitely) have a firm grasp of the concepts I’m going to cover, so this is definitely aimed at those folks just getting started, or those folks like me who may be struggling to connect some dots.
For other members of the TT Study Group Discord, that title may be funny because it is a play on the name of my current thesis/focus of study, which is “Let’s Talk About P”. Before I get into my topic, I would love to encourage you to engage with other cartographically-minded folks at the Lines forum. I would also like to thank folks there and in the Discord for all of the help they’ve given me in understanding Teletype—community is a sacred thing.
So, today I’d like to talk about M. My understanding of the importance of M took some time. (By M I’m referring to the Metronome script in each scene on Teletype for those who aren’t aware.) In the interest of full-disclosure, I am not a dev and do not take to coding naturally. Sure, I’ve done some courses on CodeAcademy to explore if that was something I could awaken in myself, but nothing ever took or stuck. I share this because my journey with Teletype has been a labor of love, emphasis on the labor. ☺
I did the excellent Teletype studies provided by Monome, and the Just Type studies as well. And I even did them again (because not coder). These are excellent and I highly recommend you check them out. I still reference them when I’m working on a scene. The Teletype Command sheet is also super-helpful. These will fill in gaps in what I discuss around M.
Attowatt’s FC210605 Set
I watched the first Flash Crash and had my face melted. Watching those sets gave me the idea to figure out some specific goals/musical maneuvers/tricks with Teletype and I’ll share how I achieved them with you all today. These came as a result of several failings and help from my friends—in other words, a good time.
For technical context here, I am solely focusing on Teletype + Just Friends (connected via i2c), aka JustType, and Just Friends is in synthesis mode (JF.MODE 1) with switches set to Sound/Cycle. I cannot overstate how expansive and creative a sonic landscape one can create and explore with these two modules paired this way.
Goal 1: Move the read head of a pattern in tracker so that I could assign the value to a JF.VOX command.
The ability to grab notes from P seemed to me like fire must have to our ancestors — I was fascinated by it, but couldn’t figure out how to hack the basic concept. I could make it work manually (hich wasn’t what I wanted to do) but I couldn’t make the read head of a pattern move on it’s own. This is where M came in to play, and I have both @Obakegaku and @DesolationJones to thank for guiding me to this knowledge.
I put the following values into the first two columns of tracker or P:
0 0
4 3
7 7
12 11
-8 -9
-5 -6
The note in column 1 (or Pattern 0) are values I wanted to pull from the following in Script 1:
#1
X PN.NEXT 0
JF.VOX 0 N X V 5
This input meant that every time I hit the F1 key on my keyboard, I would advance the read head of the first column and the value would play through the command JF.NOTE N X V 5… but I wanted it to arpeggiate! This is where M comes in, and the solution is so simple, I daresay it’s elegant. In M we put:
#M
$ 1
That’s it! Every beat of the metronome, M will call Script 1, which will advance and read the playhead of the first pattern and output it via the command JF.NOTE N X V 5! I was ecstatic to figure this out! (Note here: arpeggios for JustType really need the time knob turned way down. Like around the 60s mark.)
This is super simple, but it shows the power of M. Use it to call something every beat, or add logic to divide or change probability that M will do something on each beat. I have been exploring this concept alone for quite some time. It is JustFun™.
Goal 2: Use a knob on Telexi (TXi) to control the BPM of M.
This is fun. I also think it is like trying to invent a wheel. But it is a wheel I made, so I’m into it.
One of my goals with the TXi expander for Teletype was to use the first knob to control BPM. Implementing this was not as clear cut as I thought it would be. Figuring out the code was easy enough by referencing the command sheet, but execution is a different thing. The first thing to do is calibrate the knob and define the ranges you want it to cover. Through trial and error, I arrived at 400 as the low value and 600 as the high value. This gave me a noticeable difference in BPM, but not something that would be super-drastic and make for awkward looks from the dance floor if I over-rotated.
To calibrate knob 1 of TXi to only read values in this range, we use the command:
TI.PRM MAP 1 400 600
I put this in Script I because that is a good place for it. But having this in I didn’t not mean that I could simply change the BPM of M by turning the knob. All I’ve done is change the parameters of the knob. In order to read the value of the knob as the new BPM, we need another command:
M TI.PRM 1
This says M is now the value of the first knob on TXi, which we’ve already said will only be a value between 400 and 600. I put this in I and it didn’t work like I thought it would. BPM didn’t change whenever I turned the knob, but it would change if I turned the knob then hit F10, calling I manually.
So, in the same scene as before, I removed M TI.PRM 1 from I and put it in Script 1. Because remember what we have in M?
#M
$ 1
Every beat, M is calling Script 1, and if every beat we are telling M that it’s value is the value of knob 1 on TXi, it will adjust its behavior. Now Script 1 looks like this:
#1
X PN.NEXT 0
JF.NOTE N X V 5
M TI.PRM 1
Now, granted, these changes will have some latency because Script 1 isn’t being called in nanoseconds, but to the ear, it sounds like real-time. Now when I turn the knob on TXi, my BPM changes and I feel like a Super Amadeus.
There is so much to expand on from here, and frankly, I would probably give some not-great explanations of M, so I will refrain. But you can see from my examples how useful M can be in making things that you want to happen, happen. I hope that this is exciting or useful knowledge for you and that you make some magic all your own.
M is metronome is time.
M is movement is melody.
M is magic is mapcore.
-- copy and pasted sequins code from link above goes here
-- then something like this:
lattice = require "lattice"
MusicUtil = require "musicutil"
engine.name = "PolyPerc"
payload = s{
s{0,12,0,0},
s{1,2,2,4,2,4,2,4,6,2,6,4,2,4,6,6,2,6,4,2,6,4,6,8,4,2,4,2,4,14,4,6,2,10,2,6,6,4,6,6,2,10,2,4,2,12,12,4,2,4,6,2,10,6,6,6,2,6,4,2,10,14,4,2,4,14,6,10,2,4,6,8,6,6,4,6,8,4,8,10,2,10,2,6,4,6,8,4,2,4,12,8,4,8,4,6,12}:step(s{3,5,7}),
s{0,0,12,0},
s{0,0,1,0,2,1,3,0,4,2,5,1,6,3,7,0,8,4,9,2,10,5,11,1,12,6,13,3,14,7,15,0,16,8,17,4,18,9,19,2,20,10,21,5,22,11,23,1,24,12,25,6,26,13,27,3,28,14,29,7,30,15,31,0,32,16,33,8,34,17,35,4,36,18,37,9,38,19,39,2,40,20,41,10}:step(1,2,3),
s{0,0,0,12},
s{0,1,1,1,1,0,1,1,1,2,0,1,1,1,1,1,0,0,1,1,1,0,0,1,1,0,1,3,0,1,1,1,0,0,0,1,1,0,1,1,0,1,1,0,1,0,0,2,2,0,1,1,0,1,1,3,1,0,0,2,1,0,1,2,0,0,1,0,0,0,0,2,1,0,1,1,0,0,1,0,3,0,0,6,0,0,0,0,0,0,4,0,1,0,0,3,1,0,0,1,0,1,1,1,0,0,0,3,1,3,1,3,0,0,0,0,2,0,0,3,1,0,0,1,1,0,1,4,1,0,0,0,2,0,0,0,0,0,1,0,0,0,0,2,0,0,2,1,0,0,1}:step(13,15,16),
s{12,0,0,0},
0,
3,
7,
0,
3,
s{7,5},
0,
3,
s{5,7},
}
function init()
current = ""
offset = 60
is_screen_dirty = true
ticks = 0
draw_loop_id = clock.run(draw_loop)
aaa_lattice = lattice:new()
aaa_lattice:new_pattern{
action = function(t) event(t) end,
division = 1/4,
enabled = true
}
aaa_lattice:start()
end
function event()
ticks = ticks + 1
current = payload()
engine.hz(MusicUtil.note_num_to_freq(current + offset))
is_screen_dirty = true
end
function redraw()
screen.clear()
screen.level(15)
screen.font_size(8)
screen.font_face(1)
screen.move(10, 10)
screen.text("T = " .. ticks)
screen.move(10, 20)
screen.text("SEQUINS = " .. current)
screen.move(10, 30)
screen.text("NOTE = " .. MusicUtil.note_num_to_freq(current + offset))
screen.update()
end
function draw_loop()
while true do
check_screen()
clock.sleep(1 / 15)
end
end
function check_screen()
if is_screen_dirty then
redraw()
is_screen_dirty = false
end
end
function rerun()
norns.script.load(norns.state.script)
end
function r()
rerun()
end
Accelerando Heat Death
post.layout: post
post.title: Accelerando Heat Death
post.date: 2021-07-18 00:00:00 +0000
post.url ⛓️: /2021/07/18/1-accelerando-heat-death/
post.content_id: 13
post.author: Ben
post.type: Praxis
post.ascii: B
post.x: 0
post.y: 17
post.class: neutrino
post.attributes: tempo, metro, haiku, generative
As the universe expands, iterations of its thermodynamic swan song are simultaneously calculated and performed by Galaxy Clusters 1 through 6, accelerando.
A generative mixolydian ode to the axiom that everything that begins, so too, must end. A firm nod to Telepoet @scannerdarkly and the Map Corps. Paired for Just Friends, but easily reinvisioned.
Above: A beautiful nebula via NASA and Heat Death imagined in Dotgrid.
Ingredients
Teletype
Just Friends
Audio interface
With Teletype and Just Friends connected via i2c, simply patch the MIX output to your audio interface. This is a ‘dry’ patch. Ideas for a ‘wet’ patch are captured below.
The Code
In live mode on Teletype, please begin by activating JF.MODE 1.
Then enter the following in the METRO / M script:
#M
IF EQ M 30: JF.VOX 0 0 0; KILL
K RRND 2 10; A M; B RRND 1 6
J QT.S N RRND K 36 0 7; CV 1 J
M + -1 M; M WRAP M 30 500
SKIP K: JF.VOX B J V K
PROB K: JF.SHIFT V TOSS
Play
ctrl + f9 reincarnates the heat death experience. Each tick of the metro counts the starting tempo backwards from 500 to 30 (slower heat deaths replicable at user’s own discretion), at which point maximum entropy is achieved and the Universe can now longer sustain its expansion.
The Teletype HUD (toggled via the ~ key) lets users track the countdown to death through the scope of A, while B corresponds to the current Galaxy Cluster in performance.
Teletype’s CV 1 is designed to assist the modulation of Galaxy Clusters’ frequency.
For greater sense of ennui, this experiment sounds best carried out through an emulation of the echo of space, shit tons of space.
This performance routes the 6 Just Friends voice outputs summed in Nearness, warmed via a Mini Drive, while Clouds and Lubadh add decaying tape repeats.
The Stump Fiddle
post.layout: post
post.title: The Stump Fiddle
post.date: 2021-07-31 00:00:00 +0000
post.url ⛓️: /2021/07/31/1-the-stump-fiddle/
post.content_id: 14
post.author: Tyler
post.type: Autofiction
post.ascii: V
post.x: 3
post.y: 17
post.class: victoria
post.attributes: time, crystal
Sometimes music is functional. We spoke of the albums sacrificed to aid with tasks such as coding or manual labor. Difficult to enjoy in any other context, those albums. The brain’s plasticity is no match for the Pavlovian paths.
I fell asleep to Vamps by Celer almost every night in 2020. I only half-jokingly called it my “anti-psychotic.”
Spiritual Music
Sometimes music is spiritual. I have long known that I use music as a medium to transmute, filter, express, and share aspects of myself. Feelings and thoughts and stories that cannot be articulated with the only spoken language I know.
Grandpa Biff Etters, The First and Last Stump Fiddlist
In the past, grandpa played the stump fiddle. He taught songs to the kids.
Meanwhile, record labels sought out talent. The age of recorded music.
The kids forgot the songs and listened to the radio. Folk music gave way to pop.
Later, record labels engineered talent. “Which among our products artists are going to yield ROI?”
Even later, technology democratized recorded music-making for the grandkids.
The rise of bedroom studios has given rise a new type of folk. SoundCloud folk, if you will.
In the future, grandpa will play the stump fiddle to the grandkids, again.
At some point in the 20th century, “folk” music became a sound, a genre. It is not. Folk music is:
[…] music transmitted orally, music with unknown composers, music that is played on traditional instruments, music about cultural or national identity, music that changes between generations (folk process), music associated with a people’s folklore or music performed by custom over a long period of time. — Wikipedia
The personal computer is the latest in the canon of traditional instruments.
Folk music is anarchist music. It is/was/will-be-again bottom-up, self-selected patterns, cues, stories, techniques, and principals the community values enough to pass through time. Lo-fi hip hop beats to get meta/draw maps to.
JF.MODE 1.
Mapcore is folk music.
What if there was no music?
Scenario A - Everyone becomes deaf with the peal of a bell.
Scenario B - Music never developed and has never been considered a “thing to do” on earth.
In either scenario, what would you be doing instead?
Why music?
Why the obsession? Why the pleasure? Why the curiosity? How many hours a week do you spend writing music? Listening to music? Making code that makes music? Why do we do this?
What would you be doing with yourself if music vanished?
What hints might that hold about your life now?
Our time was up,
the island dissolved,
And I was once again alone,
looking at the scheduled events of the day.
Zoom's calcium-white and Silicon-Valley-blue,
a grotesque approximation of the summer sky.
Adrift on the waves, it just so happened that my boat began rocking in a most delightful manner — rich and yet simple, four smaller crests matched against three larger crests, again and again, then rougher, seven smaller crests for every five larger ones, and then I was thrust ashore on the beach of an island I had not heard the like of before.
Between a Frequency
When you pluck a string, or blow into a wind instrument, it vibrates. Not only does it vibrate in the pitch you hear, it also vibrates in multiples of that — twice the frequency, thrice it, four times it, and so on.
When we hear multiple frequencies at once, we tend to perceive them as “consonant” (con “same”; sonant “sounding”) when the number of waves in a period of time is related like a string or wind instrument’s harmonics, by some relatively simple fraction (see also Trent’s map) — for example, when there are three waves of this sound in the time it takes to make two waves of that sound, your human (editor: mostly human?) brain perceives them as if they could be part of the same sound, and so they sound “consonant”; they seem like a place you could musically rest. The more high factors you need for your fraction — seven, say, or 11, or even two factors of seven (gasp!) the more dissonant (dis- “apart” sonant “sounding”) you’re likely to find that interval. You can pretty much include as many factors of two as you want, either in the numerator (o(ver)tonality!) or denominator (u(nder)tonality!) for free and your fraction stays equally consonant (or dissonant).
The well-traveled territory of pitch takes the space between a frequency and double that frequency , and divides it into twelve even slices. Take your first frequency and multiply it by the twelfth root of two, you get a “half step” up. Do that eleven more times, and you’ve multiplied by the twelfth root of two to the power of twelve, and you’ve got an octave. This is called Equal Temperament.
SinOsc.kr([1,2])
“In tune” joins gender, government, and marriage as a social construct, though by claiming something a social construct I don’t cast any doubt on its reality.
Equal temperament was initially a simulation, a compromise approximation of musical pitch to allow making a wide variety of consonant intervals starting at any given pitch in the system. From any note in equal temperament you can find 2^(7/12)=1.49830707688 up from it — very close, but not exactly, 3/2, a perfect fifth. You can find 2^(3/12)=1.189207115 — somewhat close, and less exactly 6/5, a minor third. It’s not the justly intoned ratios, but at this point most people who listen to it are so used to it they may culturally consider it more consonant than the just tuning. “In tune” joins gender, government, and marriage as a social construct, though by claiming something a social construct I don’t cast any doubt on its reality.
So anyway how about a map of overtones and undertones?
1
3
5
7
9
1
1
3
5
7
9
3
1/3
1
5/3
7/3
3
5
1/5
3/5
1
7/5
9/5
7
1/7
3/7
5/7
1
9/7
9
1/9
1/3
5/9
7/9
1
Remember you can freely scale numerators or denominators by two, and your mind will hear the tone as belonging to the same “note”, just in a different octave. Here’s all those notes in the same octave:
1
3
5
7
9
1
1
3/2
5/4
7/4
9/8
3
4/3
1
5/3
7/6
3/2
5
8/5
6/5
1
7/5
9/5
7
8/7
12/7
10/7
1
9/7
9
16/9
4/3
10/9
14/9
1
If you play pitches from this map you’ll get… something interesting! It might be musical! It might not! The lower the non-two factors of the numerator and denominator are, the more consonant it’ll sound played against 1/1, the tonic. Fractions with matching numerators or denominators will sound more consonant when played against each other. Draw a small polity on the map by picking some fractions, listen, and hear its tension-elevation in the interplay of the fractions against each other.
Teletype Time
Alan Turing
How about… a version of the Music Thing Turing Machine, in Teletype based on these principles?
Let’s make our first two patterns the numerator and denominator, respectively.
Let’s have T be our counter; we will do something with it in a sec in M. Here’s some code to output a note of it, both to Just Friends and CV. Using Just Friends, it’s in PLUME mode, set to sound/sustain and in RUN mode. I have this in $ 4:
Z + 1 % T 6 # Just Friends has six 1-indexed outputs; assign each a step of a pattern
J PN 0 % T 6; K PN 1 % T 6 # Make J our numerator, K our denominator
W < / J K Z: J * 2 J # Scales the fraction to be "near" the standard JF note
W > / J K Z: K * 2 K # Ditto above.
JF.TUNE Z J K # Set the output of Just Friends to the fraction we picked
# Alternate for any VCO: CV 4 JI J K
And here’s what’s in $ M to play this sequence:
T % + T 1 6000 # TIME MARCHES ON
$ 4 # Remember 4? We call it here.
$ 3 # We'll use this in a sec
JF.TR Z 1 # We set Z over in 4 to be a JF input number. Ping it here.
DEL / M 8: JF.TR 0 0 # Always shut off all the JF outputs after a short time.
# Alternate for any VCO: TR.P 4
To be a Turing machine-like, we want some knob to turn to “lock in” patterns we like, or allow variance. But using our map, maybe we’d like to have a directed walk of the space, where we can decide whether to walk uphill (increasing our musical tension by making our fractions less related to each other), or walk downhill (resolving musical tension by relating our fractions to each other more).
To walk uphill, $ 1:
P.N TOSS # Pick a pattern any pattern if it's 0 or 1
P - Z 1 + 1 * 2 % R 5 # Add a random odd number to the pattern at our Z-index
To walk downhill, $ 2:
P.N TOSS # Same deal, pick a pattern.
J P % R 6 # Random member
IF > J 5: J 1 # Keep the fractions simpler
P.N TOSS # Pick a pattern again.
P - Z 1 J # Add it back at the Z-index
To choose, first put PARAM.SCALE -100 100 in $ I.
Then in $ 3:
J ABS PARAM # Probability of taking an action.
K ? < RRAND -99 99 PARAM 1 2 # Which action to take. CCW walks more downhill, CW up.
PROB J: $ K # Potentially run the script.
You should now have a just intonation arpeggio running out of JF (or CV 4 and TR 4) turing-machine style. Experiment with param knob position. The middle locks your sequence; counter clockwise increases musical tension, and CCW decreases musical tension. I like having it set around 15, and then occasionally turning it CCW to release tension. Careful with that CCW; too-far-too-long and you’ll end up sliding down the mountain of musical tension into the sea of all-notes-the-same.
With the amount of JF.RUN quite DRUNK, one path through the map sounds something like this:
Tonality Diamonds are Forever
These maps have no key, and the pictograms scrawled over the ocean have been meaningless for centuries.
— nonverbalpoetry (they/ them)
This is where I have been lately, and where I have been able to sketch a map. The maps have no key. The maps have every key, and are made of keys. When I return I hope to find the keys within the map, and explore the effects of your speed on your tonal location.
In the meantime, I have learned these islands I’ve visited are known as the Tonality Diamonds, should you want to read more about them.
Patterns of You
post.layout: post
post.title: Patterns of You
post.date: 2021-08-14 00:00:00 +0000
post.url ⛓️: /2021/08/14/1-patterns-of-you/
post.content_id: 16
post.author: Tyler
post.type: Theorycraft
post.ascii: ䷀
post.x: 1
post.y: 7
post.class: heaven
post.attributes: nothing, phantoms
Yet, further - perhaps - envelope. And sequencing. And a myriad of strings that came to abstractly symbolize things we must consensually agree exist. Stone. Water. Food. Sky. Cold. Fire.
We must consensually agree exist.
We must consensually agree.
We must agree.
We agree.
We.
/home/we/dust is perhaps my favorite bonfire. I trash my norns regularly; I consider it volatile/temporary storage. Whether I’m mucking around with the core or inadvertently write an infinite loop that gobbles up whatever resource… it is both hallowed and cursed land. Forever unstable but forever welcoming. /home/we/dust is a lighthouse in the squall. /home/we/dust is a sundered land.
It is with these thoughts in mind that I began exploring the patterns of you:
despite having grown up typing code we’d fallen into graphical
patching. the pre-2k appeal was strong: max just got msp, os’s were a
take-it-leave-it black box, and we were primarily concerned with what
came from tools, not the tools themselves. so in 2013ish meadowphysics
emerged with embedded javascript, creating brain sparks soon to ignite
lazily-accepted and too-dearly-held doctrines alike. it was an
algo-grid thing that generated triggers, and we were left to make
that musical by our own wits.
after assigning each trigger to a midi note (which is some sort of
standard practice) we could no longer tolerate what sounded like a
depressing casino. a trigger should be able to change timbre or a
progression of all sorts of other parameters to allow something
actually generative.
the first incarnation of teletype was born, with some minor abuse of
max’s semicolon message system:
meadowphysics now routed its triggers through 8 little “scripts” that
could create a note, advance a note in a sequence, send CC, and change
parameters. but what made this different was the ability to modulate,
with code. a probability operator set chance of execution, and a
random operator gave back a value within a given range. slews for
params could be set dynamically, along with note transposition.
note 4;
cc a rand 50 100;
p 50 note rand note;
is this programming? maybe? it sounded good, thanks to trent gill’s
synth engine stolen from sum. a short time on the meta-programmable
event responder seemed a good fit for modular, with its agnostic to
whatever-happens triggers on wires.
it’s safe to assume the original patch has been alienated and abandoned by the
speed of technology updates, but for historical interest it still
lives in the reaches.
Good morning. Good afternoon. Good evening. Good night.
Dreadnought Magellan, Lady Conciliator, Great Mycelium Network (you’ve grown!), Cargo Cult of the Modulos, esteemed teletypists, cartographers, colleagues - I humbly appear before you to report on the State of the Corps.
Old Business: MAPSQUEST Sales
MAPSQUEST has performed well given the current environment (pandemic, burning oceans, excessive eye strain, pavolvian Zoom fatigue.) Proceeds ($403 + $3.08 + $3.00 = $409.08) have been transmitted to the https://www.ucsusa.org/. We are in early stages of exploring further collaboration efforts. Further proceeds from MAPSQUEST will be used to fund future Map Corps endeavors.
Old Business: MAPSQUEST Markets
You will be pleased to see a healthy spread on this map. The mentats suggest we target APAC markets next.
New Business: Sidereal Lobby
The triple debut release of Sidereal Lobby has proven to be a success as well. From everywhere and all at once. This release did necessitate upgrading our Bandcamp to a “Label” account which has increased our OpEx from $0 annually to $240 annually. This is a dramatic increase but an important step in the growth of the netlabel.
Sidereal Lobby hosted an impromptu listening party for the release:
New Business: Flash Crash
Flash Crash continues to be a source of inspiration and focus for the community. The next event is scheduled for October 16th, 02021 and will feature a “cyber horror” theme. Cartographer Non Verbal Poetry is leading the creative direction for the event.
Keen-eyed cartographers may have heard susurrations of caveman.sh lately - a ponderous and potentially pejorative term, especially when coupled with decrees of “apes” and other such nonsense. Fear not. Apes and caveman shell scripting are your friends. They’re here to help. In this post, I’m going to attempt to sketch out some design implications of caveman.sh, what it means for technology, how it intersects with music, and why caveman.sh may be the panacea you’ve been searching for.
From my lived experience, there are two main schools of thought when it comes to technology, particularly in the open source world. One is idealism. The other is pragmatism.
School 1: Idealism
The first school is that of the idealists. Idealists are gatekeepers. Code ought not be pushed to production until all unit tests pass, every edge case is considered, the latest syntax/library/frameworks are used. There is a time and place for this (such as mission critical systems like spacecraft or remote-surgery) but most of the time, I find it to be overkill. I’ve seen many a young apprentice’s creativity dashed with increasingly impossible and mutable goalposts. “Oh that works, but you didn’t consider this edge case. Back to the drawing board, sonny.” This toxic mentality hinders progress and can be a major turn off to exploring and building your own tooling.
What’s more important than idealism is getting shit done - especially when it comes to art.
What we forget is that we are already more technically competent than… I can’t put a number on it, but think about everyone in your non-music/tech social sphere and tell me what percentage you could have an engaging conversation with about your current music/code/tech/scripting project. I don’t offer this thought experiment as some type of communal aggrandizement (“we’re smarter than you!” blah.) No! I offer it as an an opportunity to see things for how they are: you know a lot about technology. Your ideas are valid. Your skills are valid. There is always more to learn, sure. (And I know less every day.) Know there are those out there who enjoy keeping you down, enjoy staying on top of their crumbling totem pole of superiority.
What’s more important than idealism is getting shit done - especially when it comes to art. Fuck gatekeepers.
School 2: The Pragmatists
The other school is that of pragmatism: whatever gets the job done is “good enough for metal” as we used to say in my band. Nasty, dirty grep and sed and regex and a whole myriad of unix tools chained together to accomplish some task. One time, I was consulting for a major distributor of printed materials. Their ecommerce site was about to be pulled offline due to a lapse in the license agreement. We needed a stopgap. It would be months until the new site was ready. What did I do? Wrote one of the most disgusting and beautiful shell scripts ever - recursively scrape their site, save each page as a raw .html file, build up a directory structure that mirrored the URL schema so there were no dead links, and scoop up all the assets (images, etc.) to dump them in a directory. Hardlink everything. Replace all “buy now” buttons with a mailto:orders@company.com. The shell script was maybe 30 lines. I fired the script off and to my glee, it worked with only one or two adjustments. I symlinked the static site from the live one and no one was the wiser. It was gross - but it is still something I’m immensely proud of. It took me one sitting to complete. This is caveman.sh. No idealist would ever have arrived at this solution.
caveman.sh
While “mapcore” is a philosophy, caveman.sh is a strategy. Philosophies shape how you see the world. Strategies inform how you approach tactical goals. And tactics are the least common denominator of intention made manifest.
Philosophies shape how you see reality which lead to strategy for negotiating with the world. Strategies inform how you approach tactical goals.
An example: my philosophy for Song X is to let the technology guide the music. As Marshall McLuhan said, “the medium is the message.” How do you get there though? With a strategy. My strategy for Song X is to build a specialized configuration of guitar pedals and a small norns script that has aspects of my intuition encoded. My tactics for performing the piece are pressing keys on my grid and turning the filter cutoff knob.
So what the hell is caveman.sh? It’s radical acceptance of your self. It is radical acceptance that your “dumb” idea to “just store the chords in a list” or “just write as few lines as possible to get softcut going” or “just bounce everything to Ableton and clean it up later” is 100% okay and valid. caveman.sh is not comparing yourself to the great ones. caveman.sh is not worrying about “if you’re doing it the right way.” caveman.sh is taking a rock, smashing it into the coconut, and drinking deeply.
Conclusion
Make art with what you have right now. Make code with what you know right now. The path is endless. Do not hold your work in abeyance for the day when you know “how to do it right.” There are millions of ways to do it right. There is only one way to do it wrong, and that’s to not do it at all.
“I’ll be here when you wake up,” the moon said, “… to see a chlorophyll dawn.”
Fighting for fragments of dreams, I felt the warm ocean water at my ankles. The garbage tide was receding. Dusk. Or twilight. Or midnight solar flare.
The dream became frayed, faded, fizzed.
Chlorophyll is what allows plants to absorb sunlight, to be green.
How could the dawn be green?
Determination is what allows me to press on, to be gold.
Semester’s End
Map Corps semesters are variable length. Sometimes you show up in The Great Pacific Garbage Patch (Pepsi atoll) and can’t go home for years. But this semester was only a few days. In some ways I felt cheated. As if I was participating in a clinical trial for a time travel drug but got a placebo instead.
The professors would already be on their myriad of means home. Back to their arcologies and labs and studios and caves.
Our final project, the State of the Corps was met with general approval and good marks.
There are whispers of pirate radio towers being constructed an ocean away.
When will the next semester begin?
Only you know.
My Dreams of Sleeping in a Think Tank
So what is monolith.xml? It is a response to caveman.sh born out of feedback from the TT Discord’s workshoping of the idea. Konstantine, as usual, had some excellent points. Instead of cherry-picking I will share them in their entirety:
“I wholeheartedly agree with this approach when it comes to art creation, but I’m not sure I agree with the sentiment for coding in a multi-stakes production environment. Dismissing well advised unit testing as “gatekeeping” or suggesting not having the humility (or empathy for that matter) to consider edge cases in the sake of some individual “progress” or search for “creativity” isn’t exactly good advice in my most humble opinion. When making art the result is highly idiosyncratic and personal. All the more courage to you if you stick to your instinct and don’t adhere to whatever authority decides to have an opinion (especially if that authority is that part of your brain which doesn’t shut up and let you do things; from personal experience 😅 ). When writing product code, well, there’s too much at stake to allow for more ego in the equation. Less ego is better. A users-first approach (re: adherence to a good design-oriented way of thinking and user focus) seems like a far better way of working while staying creative. (How can I make people’s life easier? Who am I making this for? Am I solving the right problem? etc). It opens up everyday work for questioning, not sticking to a specific way of working just because it’s how we do things, but with the best of others in mind instead of some personal quest to break shackles. I’m all for questioning authority, as long as we spend some time first questioning our own reasons for questioning authority.”
This got me thinking. Especially:
It opens up everyday work for questioning, not sticking to a specific way of working just because it’s how we do things, but with the best of others in mind instead of some personal quest to break shackles.
monolith.xml
As the tide pulled out, the monoliths rose. This garbage-floodplain was miles wide and aeons deep. A mercury mist slithered in great streams overhead. Somewhere, leagues away, a clustering wil-o’-the-wisp.
It was time to go home.
Walking, walking. Deeper into the chasmic reverie. Walking, walking. The monoliths towering overhead like World Trade Centers, funeral-shrouded in plastic bag ghillie suits. Walking, walking. Lonely campfires burned in some scattered windows. Signs of life. Or ghosts.
“Hello, old friend,” I said. (One should always make friends with their demons.)
“Where to now? Your home is gone.”
“This is my home now.”
“And what shall you do tomorrow when the tide returns!”
“Let tomorrow worry about itself.”
He laughed again. A dry, death-rattle of a weeze with notes of lung cancer.
Another midnight flare shifted us into shadow. I realized my toes were turning blue from the abyssal cold, black from the oil spills.
Off among the Horizons of Charon, a campfire chose me:
Sixteen tropics in RGB,
encircle my dead weight.
I watched the hole in the ozone layer,
dilate.
I saw second impact,
with seminal eyes.
When the reefs ossified,
I couldn't sea.
For the Andrean Pyrocumulus,
was still burning.
One day,
you'll hear my peal.
One night,
you'll see my dark side.
Until then,
lost child of ages gone:
I'll be here when you wake up,
... to see a chlorophyll dawn.