band practice 7.18.26 · perf09 · bass written to order

The moving floor

Two bass lines for the same guitar take. The first one agrees with the guitar. The second one keeps changing what the guitar means.

135.5BPM tracked
53bars, 4/4
E minorkey, E pedal
131notes in v2
96%on a real drum hit

What the guitar actually plays

Everything below is read from MIDI guitar.mid, MIDI kick.mid, MIDI snare [2026-07-23 174311].mid and MIDI cymbals [2026-07-23 174806].mid, the stem transcriptions of the perf09 take. Bar numbers come from the beat grid tracked across those drum files, so bar 1 begins at tick 125 and bar 53 at tick 17839.

The guitar take is a transcription of a live performance, so it carries no usable grid of its own. Measured over the whole 94 seconds, the best constant pulse scored a normalised grid error of 0.196 against 0.25 for random. There is no fixed tempo in that file to quantise to.

Weighted by how long each note sounds, the part is G 38%, F♯ 21%, B 18%, E 12%, and every low note in it is an open E2. That is an E minor figure sitting on an E pedal. The top line barely moves. Bars 47 through 50 are one unchanging G4 repeated across four bars.

A guitar that holds still is the exact condition the iximusic sheets are built around. Thom stays on one pitch and Colin walks the bass, so the same note turns from a chord tone into a colour tone. The floor moves under him. This guitar hands over that same opportunity.

The two versions

v1

Root bass

Agrees with the guitar. E under the E sections, B under the F♯/B sections, G under the low G passage. It supports the part and stays out of the way.

107 notes. The guitar's G reads 2 ways across the whole piece.

v2

Moving floor

Same guitar, same drums. The bass walks i → ♭VI → IV → V underneath, so a guitar note that never moves keeps arriving in a new chord.

131 notes. The guitar's G reads 5 ways.

Hear it

v1 band + root bass bass alone
v2 band + moving floor bass alone

Real guitar and real drums from the perf09 stems. The bass is synthesised from the MIDI.

The four bars that make the case

Bars 47 to 50, highlighted in the table below, are one G4 held over and over. v1 calls it the flat third of E minor four times. v2 moves the floor and the same note becomes the flat third, then the fifth, then the flat seventh, then the flat sixth. The guitarist plays nothing new.

How many jobs each guitar note ends up doing

v1
  • F# 3 5, 9, maj7
  • G 2 b3, root
  • B 2 5, root
  • E 2 11, root
  • C# 2 #11, 13
v2
  • G 5 5, b3, b6, b7, root
  • E 5 11, 3, 5, 9, root
  • F# 5 #11, 13, 3, 5, 9
  • B 4 13, 5, maj7, root
  • C# 2 3, maj7

Bar by bar

Guitar column lists the three longest-sounding notes in that bar, measured by sounding duration inside the bar window from MIDI guitar.mid. Shaded interval chips are the colour tones, meaning the note falls outside the plain triad underneath it. Bars 7 to 13 are absent because the guitar plays nothing there.

barguitarv1reads asv2reads as
1G4 B3EmG b3 B 5EmiG b3 B 5
2G4EmG b3EmiG b3
3B3 G4 E3EmB 5 G b3 E rootC♭VIB maj7 G 5 E 3
4B3 E2 E3EmB 5 E root E rootEmiB 5 E root E root
5B3EmB 5C♭VIB maj7
6B3BB rootBVB root
15G4EmG b3C♭VIG 5
16G4 F#4EmG b3 F# 9AIVG b7 F# 13
17E2 F#4EmE root F# 9EmiE root F# 9
18B3 E2 F#4BB root E 11 F# 5BVB root E 11 F# 5
19F#4 F#5BF# 5 F# 5D♭VIIF# 3 F# 3
20F#4 E2EmF# 9 E rootEmiF# 9 E root
21G4 B3 F#5EmG b3 B 5 F# 9EmiG b3 B 5 F# 9
22G4EmG b3C♭VIG 5
23G4EmG b3AIVG b7
24G4 E2 F#4EmG b3 E root F# 9BVG b6 E 11 F# 5
25F#4 B3BF# 5 B rootEmiF# 9 B 5
26F#4 B3BF# 5 B rootC♭VIF# #11 B maj7
27F#4 E2 B3BF# 5 E 11 B rootBVF# 5 E 11 B root
28B3EmB 5EmiB 5
29B3 E2 E3EmB 5 E root E rootEmiB 5 E root E root
30E2 C#4 F3EmE root C# 13 F b9D♭VIIE 9 C# maj7 F b3
31E3 F#3EmE root F# 9C♭VIE 3 F# #11
32F#3 E3BF# 5 E 11BVF# 5 E 11
33E3 E2 F#3EmE root E root F# 9EmiE root E root F# 9
34F#3BF# 5D♭VIIF# 3
35E2 G3 G#3EmE root G b3 G# 3AIVE 5 G b7 G# maj7
36G3 D3GG root D 5G♭IIIG root D 5
37F#3 C#5 G3GF# maj7 C# #11 G rootAIVF# 13 C# 3 G b7
38G3 G4EmG b3 G b3EmiG b3 G b3
39G4 B3EmG b3 B 5EmiG b3 B 5
40G4EmG b3C♭VIG 5
41G4EmG b3AIVG b7
42G4EmG b3BVG b6
43E2 B3 G4EmE root B 5 G b3EmiE root B 5 G b3
44F#4 B3 E2BF# 5 B root E 11BVF# 5 B root E 11
45F#4 E2 B3BF# 5 E 11 B rootC♭VIF# #11 E 3 B maj7
46F#4 A#3 B3BF# 5 A# maj7 B rootD♭VIIF# 3 A# b6 B 13
47G4 B3 E2EmG b3 B 5 E rootEmiG b3 B 5 E root
48G4EmG b3C♭VIG 5
49G4EmG b3AIVG b7
50G4EmG b3BVG b6
51G4 E2 B3EmG b3 E root B 5EmiG b3 E root B 5
52F#4 B3 E2EmF# 9 B 5 E rootEmiF# 9 B 5 E root
53F#4 B3EmF# 9 B 5EmiF# 9 B 5

How the timing was decided

The bass is locked to attacks rather than to a grid, because the grid drifts. A dynamic beat tracker run over the onsets in MIDI kick.mid, MIDI snare [2026-07-23 174311].mid and MIDI cymbals [2026-07-23 174806].mid returned 212 beats at a median 85.0 ticks, which is 135.5 BPM, drifting between 132 and 137 across the take. Quantising to any single tempo would have walked the bass out of the band by the end.

Every attack coincides with something the band actually played. The placement pool is the kick, the snare, the cymbals and the guitar's own onsets, merged so that hits within 12 ticks count as one moment, and ranked so the kick wins. 96% of the 131 notes fall on a drum hit, and every remaining note falls on a guitar attack. Nothing is placed on the tracked grid.

The tracked beat is used to decide where the bars are, never to place a note. It interpolates a steady pulse straight through the passages where the band stops, so a note put there would be playing to a click nobody else can hear. Bar 14 gets no bass at all for that reason: the nearest attack of any kind is 244 ticks away.

What the first pass got wrong

The first version placed notes on that interpolated grid whenever the drummer left a gap, which is what read as off. Measured against the take:

checkfirst passnow
notes falling on a real drum hit63%96%
notes coinciding with nothing at all21 of 1350
pairs tighter than an eighth note90
smallest gap between attacks32 ticks52 ticks
downbeats floating in a drum rest110
worst root offset from its bar line245 ticks44 ticks
Sync. Both files stay at a flat 120 BPM with 96 ticks per quarter. That is the mapping the stem MIDIs use to encode audio time, where one tick is 1/192 of a second, so 18007 ticks is the 93.8 second take. Writing the true 135.5 BPM into the file would compress it to 83.7 seconds and pull it off the audio. The tracked tempo ships as its own file for anyone who wants a musical bar ruler.

Files

All of it in ~/Projects/_outputs/midi-bass-perf09/

Checks that were run