sample and layer chords.


acrostic lets you stack monophonic sound sources into chords with subtle melodies. basically, it is a sequencer that sends out one note at a time from chords to use the loops to record the entire chord phrase. I’ve used just this script (+tapedeck) to record my entire album “generations”.

this script originated as an addition to the norns oooooo script but I’ve broken it out into its own script with “acrostic”. the major benefits in this script are:

I recorded a tutorial that includes a demo, a quick start and a in-depth overview:

here are a few more demo performances:

I want to express a huge thanks to Takahiro for implementing the eyes in their wonderful three-eyes norns script and thanks to Ezra for helping me integrate some softcut code to record single loops. also big thanks to Jonathan who was a big inspiration for the demo video (I literaly took a page out his book displaying video text on a physical notebook).



quick start

  1. plug in a midi device or cv pitch to crow 1.
  2. start script, wait for the ghost’s eyes to open.
  3. press K1+K3.


the idea behind “acrostic” is to take several chords and then rearrange the notes in the chords to create a semblance of melody (sometimes called “voice leading”). for example: first suppose you chose four chords: Am, F, C, G. acrostic will first determine the notes for each chord in a separate column:

Am  F   C   G  
A   F   C   G
C   A   E   B
E   C   G   D

then acrostic will rearrange the notes of each chord in each column.

Am  F   C   G  
A   A   G   G
C   C   C   D
E   F   E   B

the nature of the re-arrangement can help to induce natural melodies. acrostic re-arranges in many ways - trying to keep similar notes grouped together or minimizing distances (as in example above), etc.


use K1+E1 to change pages.

there are four pages in acrostic:

  1. the matrix
  2. the planets
  3. the bars
  4. the phantom

the matrix does the sequencing and sampling and lets you modulate both. the planets lets you modulate the lfos for the volume and pan of the samples. the bars lets you gate and add interstitial notes. the phantom is a voice that you can use if you have no other voice.

page 1) the matrix


use E1 to change “context” within this page. in the matrix there are four contexts:

  1. chords
  2. notes
  3. phrase
  4. sampling

the chords lets you pick the chords and allocate the beats. the notes context lets you rotate and change octave of notes in a chord. the phrase context lets you rotate notes and change octave in a phrase. the sampling context is where you initiate recording and can do some leveling.

chord context

chord context

you are in the “chord context” when the bar around the roman numerals is highlighted.

note/phrase context

note context

phrase context

you are in the “note context” when the columns are highlighted and you are in the “phrase context” when a row is highlighted. both of these contexts have the same controls/share controls.

sampling context

sampling context

you are in the “sampling context” when the sample area is highlighted.

when you queue a recording (K3) it will begin recording at the next loop. you can queue multiple samples, even while one is recorindg.

page 2) the planets


adjust parameters in PARAMS > loop X or from the phantom UI:

page 3) the bars


adjust parameters in PARAMS > notes or from the phantom UI:

page 4) the phantom


adjust parameters in PARAMS > phantom or from the phantom UI:


the crow outputs are used for expression with CV instruments:


the grid is meant as a performative sequencer. in the parameters you can set whether the sequence resets every chord or not (PARAMS > grid > reset every chord). using the grid will “takeover” the crow outputs. when the grid stops playing, the crow will output as normal. tip: if you sequence a single note you and just change notes and use it as a simple keyboard.

rows 1-6 controls pitch. you can use two finger gestures to draw shapes. the note shapes are applied the note matrix. the rows 1-3 notes that are always the same. the rows 4-6 are notes that change with every chord. pressing a note again will transpose it, alternating up/down.

row 7 controls duration. pressing a step twice will cause that note to hold. pressing two steps will reset their duration to the default (1/16th note).

row 8 controls gates. pressing two gates will invert all gates in between.


dev only</summary> I created a patch for softcut that simplifies the recording and lets the pre function work as it should.

requires latest softcut and a unreleased norns build.

first rebuild norns:

sudo systemctl stop norns-jack.service; sudo systemctl stop norns-matron.service; sudo systemctl stop norns-crone.service && \
cd ~; ~/norns/; rm -rf ~/norns; \
git clone && \
cd ~/norns && git checkout id && \
git submodule update --init --recursive && \
cd ~/norns/crone/ && rm -rf softcut && \
git clone softcut && \
cd softcut && git checkout id && \
cd ~/norns/crone/softcut/softcut-lib && \
./waf configure && \
./waf && \
cd ~/norns && \
./waf configure --enable-ableton-link && \
./waf build && \
sudo systemctl restart norns-jack.service; sudo systemctl restart norns-matron.service; sudo systemctl restart norns-crone.service

then install acrostic:

rm -rf ~/dust/code/acrostic && \
git clone ~/dust/code/acrostic

then restart norns:

sudo systemctl restart norns-jack.service; \
sudo systemctl restart norns-matron.service; \
sudo systemctl restart norns-crone.service

don’t do this unless you know what you are doing. </details>


install with