G.A.L.E.

Friday, 14 November 2025

Guitar as Sequencer

Recently, I've been exploring the potential of treating the guitar as a kind of sequencer: using the left hand to pre-program notes, and the right hand to sequence them.

Gale (Emma Harner)

The tune 'Gale' by Emma Harner is a good example of what I mean. The full track seems to be unreleased, but there's a snippet of it in her 'guitar moves' interview:

Emma uses a combination of delicate open chords and complex right-hand picking patterns to create a rich, shimmering texture on the guitar. First I'll break down the parts, then I'll show how I made a Max for Live patch to emulate the technique.

left hand

This tune takes full advantage of DADGAD tuning, leaving very little to do for the left hand:

Chords:
                Dmaj7(add11)        E7sus2(add4)         Gmaj(add9)
D (1st) |---------0--------------------0----------------------0----
A (2nd) |---------4--------------------4----------------------7----
G (3rd) |---------0--------------------0----------------------0----
D (4th) |---------4--------------------4----------------------7----
A (5th) |---------0--------------------2----------------------5----
D (6th) |---------0--------------------2----------------------5----

right hand

The right hand is much more complicated. In this case, you pluck one finger at a time, then move your anchor position up by one, until you get to the top where you then do the entire thing in reverse.



Ascending:
D|----|----|---x
A|----|---x|--x-
G|---x|--x-|-x--
D|--x-|-x--|x---
A|-x--|x---|----
D|x---|----|----

Descending:
D|x---|----|----
A|-x--|x---|----
G|--x-|-x--|x---
D|---x|--x-|-x--
A|----|---x|--x-
D|----|----|---x

First of all, I think 'high E = 6th' string is silly. I prefer to zero-index from the lowest string up. With that in mind, the ascending pattern becomes:

[0,1,2,3, 1,2,3,4, 2,3,4,5]

which is basically "use all the fingers, then move the anchor and repeat". This can be quite neatly put as a list comprehension in python:

[ fingers + anchor for anchor in range(num_strings - num_fingers + 1) for fingers in range(num_fingers) ]

When num_fingers = 4 and num_strings = 6, this becomes:

[ finger + anchor for anchor in range(3) for finger in range(4) ]      

Then we just travel backwards for the descending part.

the patch

I came up with this little patch in the process. I called it GALE: Guitar-Adjacent (e)Lectronic Expression (or Guitar Automation via List Expansion).

An image of the patch in max for live, showing a presentation view

You can choose the pitch of open strings in the interface, then fret the rest via MIDI1. The picking pattern is generated from the list comprehension 2 sent into a python object. The right hand speed is controlled by a little metro object. Finally, each “string” is then routed to its own MIDI channel in Ableton, for per-string monophony and panning. It'd be interesting to map each finger to velocity too (eg, a thumb plucks heavier than a ring finger), but I haven't done that yet.

The full patch can be found on GitHub

An image of the patch in max for live, showing the full patch

Thoughts

I like the ‘picking-as-sequencing’ and 'open string + frets' ideas, for computer music which is inspired by the guitar, as well as guitar music which is inspired by algorithms. I reckon there is some potential to strike a nice balance between playability (using midi for fretted notes) and complexity (list comprehension can get gnarly verrrry quickly). I'll update this page with any revelations as I explore further!


  1. Midi notes are sorted by pitch, then assigned to strings that have been activated by the user (orange 'X' button) from the lowest string to the highest↩
  2. One could send any python function that outputs a list, the possibilities are endless!↩