0:00/0:00
// China In Your Hand — T'Pau
// 69 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 2/4 at bar 5, 4/4 at bar 6, 2/4 at bar 8, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 8 alto sax (copy of ch 7 alto sax, 0.104 beats late)
// note: Full arrangement: all 82 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(69/4)
// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once · [...]/2 spreads a riff over 2 bars.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.
// chords · piano
const piano = note(`<
A B C D E F G H I J K L M L N L O@2 P@2 B C D E F G H I J K L M L N L O@2 P@2 B@2 Q@6 R@8 S@7 T@8 U@8 V@4
>`.pickRestart({
A: "~@24 [f#4,b4,d#5]@5 ~ b3@5 ~ [f#4,b4,d#5]@5 ~ b3@3 [f#4,b4,d#5]@3", // B
B: "[f#4,a#4,c#5]@5 ~ c#4@3 [f#4,a#4,c#5]@3 [e4,g#4]@3 g#4@2 ~ e4@3 g#4@2 ~ [f#4,b4,d#5]@5 ~ b3@5 ~ [f#4,b4,d#5]@5 ~ b3@3 [f#4,b4,d#5]@3, ~@12 b4@11 ~@25", // F# E B
C: "[f#4,a#4,c#5]@5 ~ c#4@3 [f#4,a#4,c#5]@3 [e4,g#4]@3 g#4@2 ~ e4@3 g#4@2 ~ [b4,d#5,f#5]@5 ~ f#4@5 ~ [b4,d#5]@5 ~ f#4@5 ~, ~@12 b4@11 ~@25", // F# E B
D: "[b4,d#5,f#5]@5 ~ f#4@5 ~ [b4,d#5]@5 ~ [f#4,b4,d#5]@3 f#4@3 f#4@3 c#5@3 a#4@3 f#4@3 e4@3 g#4@3 b4@3 e5@3, ~@24 [a#3,c#4]@11 ~ [g#3,b3]@11 ~", // B A#m G#m
E: "[f#4,b4,d#5]@5 ~ b3@5 ~ [f#4,b4]@5 ~ b3@5 ~ [f#4,b4,d#5]@5 ~ [d#4,f#4,b4]@3 [f#4,b4,d#5]@3 [c#5,e5]@3 [b4,d#5]@3 [a#4,c#5]@3 [g#4,b4]@3", // B B5 B C#m B A#m G#m
F: "[f#4,b4,d#5]@5 ~ b3@5 ~ [f#4,b4]@5 ~ b3@5 ~ [f#4,b4,c#5]@5 ~ b3@5 ~ [f#4,b4]@5 ~ b4@3 g#4@3", // B B5 F#sus4 B5
G: "f#4@3 c#5@3 a#4@3 f#4@3 e4@3 g#4@3 b4@3 e5@3 [b4,d#5]@5 ~ f#4@5 ~ [b4,d#5]@5 ~ f#4@5 ~, [a#3,c#4]@11 ~ [g#3,b3]@11 ~@25", // B A#m G#m
H: "[b4,d#5]@5 ~ f#4@5 ~ [a#4,c#5]@5 ~ f#4@5 ~ [b4,d#5]@5 ~ g#4@5 ~ [b4,d#5]@5 ~ g#4@5 ~", // B A#m B
I: "[b4,d#5]@5 ~ g4@5 ~ [b4,d#5]@5 ~ g4@5 ~ [b4,d#5]@5 ~ f#4@5 ~ [b4,d#5]@5 ~ f#4@5 ~", // B
J: "[e4,g#4,b4]@5 ~ c#4@5 ~ [e4,g#4,b4]@5 ~ c#4@5 ~ [e4,g#4,b4]@5 ~ c#4@5 ~ [e4,g#4,b4]@5 ~ c#4@5 ~", // E
K: "[b4,c#5,e5]@5 ~ f#4@5 ~ [b4,c#5,e5]@5 ~ f#4@5 ~ [b4,c#5,e5]@5 ~ f#4@5 ~ [b4,c#5,e5]@5 ~ f#4@5 ~", // C#m7
L: "[b3,c#4,e4,g#4]@23 ~ [c#4,e4,f#4,a#4]@23 ~", // C#m7 F#7
M: "[f#4,b4,d#5]@11 ~ [f#4,a#4,c#5]@11 ~ [d#4,g#4,b4]@11 ~ [c#4,f#4,a#4]@11 ~", // B F# G#m F#
N: "[c#4,d#4,f#4]@23 ~ [b3,e4,g#4]@11 ~ [c#4,f#4,a#4]@11 ~", // D#m7 E F#
O: "[[b3,d#4,f#4]@11 ~ [f#4,a#4,c#5]@11 ~ [d#4,f#4,g#4,b4]@35 ~ [c#4,e4,f#4,a#4]@11 ~ [g#4,b4,c#5,e5]@23 ~]/2", // B F# G#m7 F#7 C#m7
P: "[e5@11 ~ d#5@11 ~ [e4,f#4,b4,c#5]@47 ~ [f#4,b4,d#5]@5 ~ b3@5 ~ [f#4,b4,d#5]@5 ~ b3@3 [f#4,b4,d#5]@3, [g#4,b4]@23 ~@73]/2", // Esus2 B G#m
Q: "[[f#4,a#4,c#5]@6 c#4@3 ~ [f#4,a#4,c#5]@3 [e4,g#4]@3 g#4@3 e4@3 ~ g#4 ~@2 [b3,d#4,f#4]@78 [b3,c#4,e4,g#4]@23 ~ [c#4,e4,f#4,a#4]@23 ~ [f#4,b4,d#5]@11 ~ [f#4,a#4,c#5]@11 ~ [d#4,g#4,b4]@11 ~ [c#4,f#4,a#4]@11 ~ [b3,c#4,e4,g#4]@23 ~ [c#4,e4,f#4,a#4]@23 ~ [c#4,d#4,f#4]@23 ~ [b3,e4,g#4]@11 ~ [c#4,f#4,a#4]@4, ~@13 b4@11 b2@80 ~@184, ~@25 d#3@79 ~@184]/6", // F# E B C#m7 F#7 B F# G#m …
R: "[~@8 [b3,c#4,e4,g#4]@23 ~ [c#4,e4,f#4,a#4]@23 ~ [b3,d#4,f#4]@11 ~ [f#4,a#4,c#5]@11 ~ [d#4,f#4,g#4,b4]@35 ~ [c#4,e4,f#4,a#4]@11 ~ [g#4,b4,c#5,e5]@23 ~ e5@11 ~ d#5@11 ~ [e4,f#4,b4,c#5]@47 ~ [b3,c#4,e4,g#4]@23 ~ [c#4,e4,f#4,a#4]@23 ~ [f#4,b4,d#5]@11 ~ [f#4,a#4,c#5]@11 ~ [d#4,g#4,b4]@11 ~ [c#4,f#4,a#4]@11 ~ [b3,c#4,e4,g#4]@23 ~ [c#4,e4,f#4,a#4]@23 ~ [c#4,d#4,f#4]@16, ~@152 [g#4,b4]@23 ~@209]/8", // C#m7 F#7 B F# G#m7 F#7 C#m7 Esus2 …
S: "[~@8 [b3,e4,g#4]@11 ~ [c#4,f#4,a#4]@11 ~ [b3,c#4,e4,g#4]@23 ~ [c#4,e4,f#4,a#4]@23 ~ [b3,d#4,f#4]@11 ~ [f#4,a#4,c#5]@11 ~ [d#4,f#4,g#4,b4]@35 ~ [c#4,e4,f#4,a#4]@11 ~ [g#4,b4,c#5,e5]@23 ~ e5@11 ~ d#5@11 ~ [e4,f#4,b4,c#5]@47 ~ [b3,c#4,e4,g#4]@23 ~ [c#4,e4,f#4,a#4]@23 ~ [f#4,b4,d#5]@11 ~ [f#4,a#4,c#5]@11 ~ [d#4,g#4,b4]@11 ~ [c#4,f#4,a#4]@4, ~@176 [g#4,b4]@23 ~@137]/7", // E F# C#m7 F#7 B F# G#m7 F#7 …
T: "[~@8 [b3,c#4,e4,g#4]@23 ~ [c#4,e4,f#4,a#4]@23 ~ [c#4,d#4,f#4]@23 ~ [b3,e4,g#4]@11 ~ [c#4,f#4,a#4]@11 ~ [b3,c#4,e4,g#4]@23 ~ [c#4,e4,f#4,a#4]@23 ~ [b3,d#4,f#4]@11 ~ [f#4,a#4,c#5]@11 ~ [d#4,f#4,g#4,b4]@35 ~ [c#4,e4,f#4,a#4]@11 ~ [g#4,b4,c#5,e5]@23 ~ e5@11 ~ d#5@11 ~ [e4,f#4,b4,c#5]@47 ~ [b3,c#4,e4,g#4]@23 ~ [c#4,e4,f#4,a#4]@23 ~ [f#4,b4,d#5]@11 ~ [f#4,a#4,c#5]@4, ~@248 [g#4,b4]@23 ~@113]/8", // C#m7 F#7 D#m7 E F# C#m7 F#7 B …
U: "[~@8 [d#4,g#4,b4]@11 ~ [c#4,f#4,a#4]@11 ~ [b3,c#4,e4,g#4]@23 ~ [c#4,e4,f#4,a#4]@23 ~ [c#4,d#4,f#4]@23 ~ [b3,e4,g#4]@11 ~ [c#4,f#4,a#4]@11 ~ [b3,c#4,e4,g#4]@23 ~ [c#4,e4,f#4,a#4]@23 ~ [b3,d#4,f#4]@11 ~ [f#4,a#4,c#5]@11 ~ [d#4,f#4,g#4,b4]@35 ~ [c#4,e4,f#4,a#4]@11 ~ [g#4,b4,c#5,e5]@23 ~ e5@11 ~ d#5@11 ~ [e4,f#4,b4,c#5]@47 ~ [f#4,b4,d#5]@5 ~ b3@5 ~ [f#4,b4,d#5]@5 ~ b3@3 [f#4,b4,d#5]@3 [f#4,a#4,c#5]@5 ~ c#4@3 [f#4,a#4,c#5]@3 [g#4,b4]@3 g#4, ~@272 [g#4,b4]@23 ~@85 e4@2 ~@2]/8", // G#m F# C#m7 F#7 D#m7 E F# C#m7 …
V: "[~@2 e4@2 ~ g#4@2 ~ [f#4,b4,d#5]@5 ~ b3@5 ~ [f#4,b4,d#5]@5 ~ b3@3 [f#4,b4,d#5]@3 [f#4,a#4,c#5]@5 ~ c#4@3 [f#4,a#4,c#5]@3 [e4,g#4]@3 g#4@2 ~ e4@2 ~ g#4@2 ~ [f#4,b4,d#5]@5 ~ b3@5 ~ [f#4,b4,d#5]@6 b3@3 ~ [f#4,b4,d#5]@3 [f#4,a#4,c#5]@6 c#4@3 ~ [f#4,a#4,c#5]@3 [e4,g#4]@3 g#4@3 ~ e4@3 g#4 ~@3 f#4@70 ~@14, ~@44 b4@11 ~@39 b4@11 b2@73 ~@14, ~@53 d#3@36 ~@7, ~@107 [b3,d#4]@71 ~@14]/4", // B F# E B F# E B
})).s("gm_piano").gain(0.3)
// other · piano
const piano_2 = note("<A B C@2 D E F@2 G H I ~@8 A B J@2 D E F@2 G H K ~@47 L@4 ~>".pickRestart({
A: "~@24 b2@17 ~ b2@5 ~", B: "f#2@11 ~ e2@8 ~ e2@3 b2@17 ~ b2@5 ~",
C: "[f#2@11 ~ e2@8 ~ e2@3 b2@41 ~ b3@5 ~ f#2@11 ~ e2@11 ~]/2", D: "b2@44 ~ f#3@3", E: "b3@41 ~ b3@5 ~",
F: "[f#2@11 ~ e2@11 ~ b2@35 ~ a#3@11 ~ g#3@17 ~ g#3@5 ~]/2", G: "g3@17 ~ g3@5 ~ f#3@17 ~ f#3@5 ~", H: "e2@47 ~",
I: "f#2@14 ~@4 f#2@5 ~ f#2@23 ~", J: "[f#2@11 ~ e2@8 ~ e2@3 b2@38 ~@4 b3@5 ~ f#2@11 ~ e2@11 ~]/2",
K: "f#2@17 ~ f#2@5 ~ f#2@23 ~",
L: "[~@8 b2@17 ~ b3@5 ~ f#3@11 ~ e3@11 ~ b2@17 ~ b3@5 ~ f#3@11 ~ e3@11 ~ b2@18 b3@6 ~ f#3@12 ~ e3@11 ~@39]/4",
})).s("gm_piano").gain(0.25)
// bass · synth bass 2
const bass = note(`<
A B C@2 D E F@2 G H I J K J L J M N O P B Q@2 D E F@2 G H R J K J L J M S T@2 U V W@3 X@2 Y@2 Z AA AB@2 AC@2 AD AE
AF@3 AG@2 AH@2 AI@2 AJ AK AL@2 AC@2 AD AE AF@3 AM@6
>`.pickRestart({
A: "~@24 b1@17 ~ b1@5 ~", B: "f#1@10 ~@2 e1@7 ~@2 e1@3 b1@16 ~@2 b1@5 ~",
C: "[f#1@10 ~@2 e1@7 ~@2 e1@3 b1@40 ~@2 b2@5 ~ f#1@10 ~@2 e1@10 ~@2]/2", D: "b1@43 ~@2 f#2@3", E: "b2@40 ~@2 b2@5 ~",
F: "[f#1@10 ~@2 e1@10 ~@2 b1@34 ~@2 a#2@10 ~@2 g#2@16 ~@2 g#2@5 ~]/2", G: "g2@16 ~@2 g2@5 ~ f#2@16 ~@2 f#2@5 ~",
H: "e1@23 ~", I: "f#1@13 ~@5 f#1@5 ~ f#1@22 ~@2", J: "e2@16 ~@2 e2@5 ~ f#2@16 ~@2 f#2@5 ~",
K: "b1@5 ~ a#1@5 ~ g#1@5 ~ f#1@5 ~", L: "d#2@16 ~@2 d#2@5 ~ e2@10 ~@2 f#2@10 ~@2",
M: "b1@10 ~@2 a#1@10 ~@2 g#1@16 ~@2 g#1@5 ~", N: "g#1@10 ~@2 f#1@10 ~@2 e2@16 ~@2 e2@3 ~@3",
O: "e2@16 ~@2 e2@5 ~ f#2@22 ~@2", P: "f#2@22 ~@2 b1@16 ~@2 b1@5 ~",
Q: "[f#1@10 ~@2 e1@7 ~@2 e1@3 b1@37 ~@5 b2@5 ~ f#1@10 ~@2 e1@10 ~@2]/2", R: "f#1@16 ~@2 f#1@5 ~ f#1@22 ~@2",
S: "g#1@10 ~@2 f#1@10 ~@2 e2@16 ~@2 e2@5 ~", T: "[e2@16 ~@2 e2@5 ~ f#2@16 ~@2 f#2@28 ~@2 b1@16 ~@2 b2@5 ~]/2",
U: "f#2@10 ~@2 e2@10 ~@2 b1@16 ~@2 b2@5 ~", V: "f#2@10 ~@2 e2@10 ~@2 b1@17 ~ b2@5 ~",
W: "[f#2@11 ~@2 e2@11 ~@2 b1@77 ~ e2@16 ~@2 e2@5 ~ f#2@16]/3",
X: "[~@2 f#2@5 ~ b1@10 ~@2 a#1@10 ~@2 g#1@10 ~@2 f#1@10 ~@2 e1@16 ~@2 e1@5 ~ f#1@16]/2",
Y: "[~@2 f#1@5 ~ d#1@16 ~@2 d#1@5 ~ e1@10 ~@2 f#1@10 ~@2 e1@16 ~@2 e1@5 ~ f#1@16]/2",
Z: "~@2 f#1@5 ~ b1@10 ~@2 a#1@10 ~@2 g#1@16", AA: "~@2 g#1@5 ~ g#1@10 ~@2 f#1@10 ~@2 e1@16",
AB: "[~@2 e1@5 ~ e1@16 ~@2 e1@5 ~ f#1@46 ~@2 e2@16]/2",
AC: "[~@2 e2@5 ~ f#2@16 ~@2 f#2@5 ~ b1@10 ~@2 a#1@10 ~@2 g#1@10 ~@2 f#1@10 ~@2 e2@16]/2",
AD: "~@2 e2@5 ~ f#2@16 ~@2 f#2@5 ~ d#2@16", AE: "~@2 d#2@5 ~ e2@10 ~@2 f#2@10 ~@2 e2@16",
AF: "[~@2 e2@5 ~ f#2@16 ~@2 f#2@5 ~ b1@10 ~@2 a#1@10 ~@2 g#1@16 ~@2 g#1@5 ~ g#1@10 ~@2 f#1@10 ~@2 e2@16 ~@2 e2@5 ~ e2@16]/3",
AG: "[~@2 e2@5 ~ f#2@22 ~@2 f#2@22 ~@2 e2@16 ~@2 e2@5 ~ f#2@16]/2",
AH: "[~@2 f#2@5 ~ b1@10 ~@2 a#1@10 ~@2 g#1@10 ~@2 f#1@10 ~@2 e2@16 ~@2 e2@5 ~ f#2@16]/2",
AI: "[~@2 f#2@5 ~ d#2@16 ~@2 d#2@5 ~ e2@10 ~@2 f#2@10 ~@2 e2@16 ~@2 e2@5 ~ f#2@16]/2",
AJ: "~@2 f#2@5 ~ b1@10 ~@2 a#1@10 ~@2 g#1@16", AK: "~@2 g#1@5 ~ g#1@10 ~@2 f#1@10 ~@2 e2@16",
AL: "[~@2 e2@5 ~ e2@16 ~@2 e2@5 ~ f#2@22 ~@2 f#2@22 ~@2 e2@16]/2",
AM: "[~@2 e2@5 ~ f#2@22 ~@2 f#2@22 ~@2 b1@16 ~@2 b2@5 ~ f#2@10 ~@2 e2@10 ~@2 b1@16 ~@2 b2@5 ~ f#2@10 ~@2 e2@10 ~@2 b1@17 ~ b2@5 ~@2 f#2@11 ~@2 e2@12 ~ b1@70 ~@15]/6",
})).s("gm_synth_bass_2").gain(0.4)
// other · overdriven guitar
const overdriven_guitar = note(`<
~@11 A B C D A E@2 F@2 ~@10 A B C D A E@2 F@2 ~@4 G H@2 I@2 J@2 K@8 L@3 H@2 I@2 J@2 K@8 M@3 ~@4
>`.pickRestart({
A: "[g#3,g#4]@23 ~ [a#3,a#4]@17 ~ [f#3,f#4]@3 [c#3,c#4]@3", // G# A# F# C#
B: "[d#3,d#4]@11 ~ [c#3,c#4]@11 ~ [b3,b4]@11 ~ [a#3,a#4]@11 ~", C: "[g#3,g#4]@23 ~ [a#3,a#4]@17 ~ [a#3,a#4]@5 ~",
D: "[f#3,f#4]@23 ~ [g#3,g#4]@11 ~ [a#3,a#4]@11 ~", // F# G# A#
E: "[[f#3,f#4]@11 ~ [c#4,c#5]@11 ~ [b3,b4]@35 ~ [b3,b4]@5 ~ [c#4,c#5]@3 [d#4,d#5]@3 [e4,c#5,e5]@17 ~ [e4,c#5,e5]@3 [e4,c#5,e5]@3]/2", // F# C# B C# D# C#m
F: "[[e4,c#5,e5]@3 [d#4,b4,d#5]@3 [d#4,b4,d#5]@3 [d#4,b4,d#5]@3 [d#4,b4,d#5]@3 [c#4,a#4,c#5]@3 [c#4,a#4,c#5]@3 [c#4,a#4,c#5]@3 [c#4,c#5]@47 ~@25]/2", // C#m G#m F# C#
G: "~@8 [g#3,g#4]@23 ~ [a#3,a#4]@16", // G# A#
H: "[~@2 [f#3,f#4]@3 [c#3,c#4]@3 [d#3,d#4]@11 ~ [c#3,c#4]@11 ~ [b3,b4]@11 ~ [a#3,a#4]@11 ~ [g#3,g#4]@23 ~ [a#3,a#4]@16]/2", // F# C# D# C# B A# G# A#
I: "[~@2 [a#3,a#4]@5 ~ [f#3,f#4]@23 ~ [g#3,g#4]@11 ~ [a#3,a#4]@11 ~ [g#3,g#4]@23 ~ [a#3,a#4]@16]/2", // A# F# G# A# G# A#
J: "[~@2 [f#3,f#4]@3 [c#3,c#4]@3 [f#3,f#4]@11 ~ [c#4,c#5]@11 ~ [b3,b4]@35 ~ [b3,b4]@5 ~ [c#4,c#5]@3 [d#4,d#5]@3 [e4,c#5,e5]@16]/2", // F# C# F# C# B C# D# C#m
K: "[~@2 [e4,c#5,e5]@3 [e4,c#5,e5]@3 [e4,c#5,e5]@3 [d#4,b4,d#5]@3 [d#4,b4,d#5]@3 [d#4,b4,d#5]@3 [d#4,b4,d#5]@3 [c#4,a#4,c#5]@3 [c#4,a#4,c#5]@3 [c#4,a#4,c#5]@3 [c#4,c#5]@47 ~ [g#3,g#4]@23 ~ [a#3,a#4]@17 ~ [f#3,f#4]@3 [c#3,c#4]@3 [d#3,d#4]@11 ~ [c#3,c#4]@11 ~ [b3,b4]@11 ~ [a#3,a#4]@11 ~ [g#3,g#4]@23 ~ [a#3,a#4]@17 ~ [a#3,a#4]@5 ~ [f#3,f#4]@23 ~ [g#3,g#4]@11 ~ [a#3,a#4]@11 ~ [g#3,g#4]@23 ~ [a#3,a#4]@17 ~ [f#3,f#4]@3 [c#3,c#4]@3 [f#3,f#4]@11 ~ [c#4,c#5]@11 ~ [b3,b4]@35 ~ [b3,b4]@4]/8", // C#m G#m F# C# G# A# F# C# …
L: "[~@2 [c#4,c#5]@3 [d#4,d#5]@3 [e4,c#5,e5]@17 ~ [e4,c#5,e5]@3 [e4,c#5,e5]@3 [e4,c#5,e5]@3 [d#4,b4,d#5]@3 [d#4,b4,d#5]@3 [d#4,b4,d#5]@3 [d#4,b4,d#5]@3 [c#4,a#4,c#5]@3 [c#4,a#4,c#5]@3 [c#4,a#4,c#5]@3 [c#4,c#5]@47 ~ [g#3,g#4]@23 ~ [a#3,a#4]@16]/3", // C# D# C#m G#m F# C# G# A#
M: "[~@2 [c#4,c#5]@3 [d#4,d#5]@3 [e4,c#5,e5]@17 ~ [e4,c#5,e5]@3 [e4,c#5,e5]@3 [e4,c#5,e5]@3 [d#4,b4,d#5]@3 [d#4,b4,d#5]@3 [d#4,b4,d#5]@3 [d#4,b4,d#5]@3 [c#4,a#4,c#5]@3 [c#4,a#4,c#5]@3 [c#4,a#4,c#5]@3 [c#4,c#5]@47 ~@41]/3", // C# D# C#m G#m F# C#
})).s("gm_overdriven_guitar").gain(0.3)
// other · pizzicato strings
const pizzicato_strings = note(`<
A B C D E ~ F G ~@3 H I H J K L M N O B C D E ~ F G ~@3 H I H J K L M N O B P Q ~ R S@2 T U V@2 W X Y@2 Z AA AB@3 AC
AD S@2 T U V@2 W X Y@2 Z AA AB@3 AC AE@3 AF ~
>`.pickRestart({
A: "~@15 [d#5,f#5,b5] ~@5 [d#5,f#5,b5] ~@2", // B
B: "~@6 [c#5,f#5,a#5]@2 ~@7 [b4,e5,g#5]@2 ~@13 [d#5,f#5,b5]@2 ~@10 [d#5,f#5,b5]@2 ~@4", // F# E B
C: "~@6 [c#5,f#5,a#5]@2 ~@7 [b4,e5,g#5]@2 ~@31", // F# E
D: "~@24 d#6@2 ~ c#6@2 ~ a#5@2 ~ f#5@2 ~ e5@2 ~ g#5@2 ~ b5@2 ~ e6@2 ~",
E: "d#6@2 ~@4 [d#5,f#5,b5]@2 ~@10 [d#5,f#5,b5]@2 ~@10 [d#5,f#5,b5]@2 ~@7 [d#5,f#5,b5]@2 ~ [d#5,f#5,b5]@2 ~@4", // B
F: "d#6@2 ~ c#6@2 ~ a#5@2 ~ f#5@2 ~ e5@2 ~ g#5@2 ~ b5@2 ~ e6@2 ~@7 [d#5,f#5,b5]@2 ~@10 [d#5,f#5,b5]@2 ~@4", // B
G: "~@6 [d#5,f#5,b5]@2 ~@7 [c#5,f#5,a#5]@2 ~@31", H: "~@3 b4 ~@2 f#5 ~@2 b4 ~@5 d#5 ~@2 f#5 ~@2 d#5 ~@2",
I: "d#5@2 ~ b4@2 ~ b5@2 ~ d#6@2 ~@4 f#5@2 ~ d#5@2 ~ c#5@2 ~ b4@2 ~ f#4@2 ~ b4@2 ~ c#5@2 ~ f#5@2 ~ c#5@2 ~ b4@2 ~ f#4@2 ~",
J: "~@3 f#5 ~@2 c#5 ~@2 f#5 ~@5 g#5 ~@5 a#5 ~@2", K: "~@3 g#5 ~@2 e5 ~@2 g#5 ~@5 c#5 ~@2 f#5 ~@2 c#5 ~@2",
L: "d#5@2 ~ b4@2 ~ f#4@2 ~ d#5@2 ~ c#5@2 ~ a#4@2 ~ f#4@2 ~ c#5@2 ~ b4@2 ~ f#4@2 ~ b4@2 ~ c#5@2 ~ f#5@2 ~ c#5@2 ~ b4@2 ~ f#4@2 ~",
M: "b4@2 ~ d#5@2 ~ f#5@2 ~ d#5@2 ~ b4@2 ~ a#4@2 ~ b4@2 ~ d#5@2 ~ e5@2 ~@4 e5@2 ~@4 b4@2 ~@4 e5@2 ~@4",
N: "~@3 e5 ~@2 b4 ~@2 e5 ~@5 b5 ~@2 f#5 ~@2 b5 ~@2", O: "~@3 b5 ~@2 f#5 ~@2 b5 ~@5 [d#5,f#5,b5] ~@5 [d#5,f#5,b5] ~@2",
P: "~@6 [c#5,f#5,a#5]@2 ~@7 [b4,e5,g#5]@2 ~@13 [b4,d#5,f#5]@2 ~@10 [b4,d#5,f#5]@2 ~@4", // F# E B
Q: "~@3 [a#4,c#5,f#5] ~@4 [g#4,b4,e5] ~@15", R: "~@7 b4 ~@2 f#5 ~@2 b4 ~@5 d#5 ~@2 f#5 ~",
S: "[~@2 d#5@2 ~@4 d#5@2 ~ b4@2 ~ b5@2 ~ d#6@2 ~@4 f#5@2 ~ d#5@2 ~ c#5@2 ~ b4@2 ~ f#4@2 ~ b4@2 ~ c#5@2 ~ f#5@2 ~ c#5@2 ~ b4@2 ~ f#4@2 ~@7 b4@2 ~@4 f#5@2 ~@4 b4@2 ~@10 d#5@2 ~@4 f#5@2 ~@2]/2",
T: "~ d#5 ~@5 f#5 ~@2 c#5 ~@2 f#5 ~@5 g#5 ~@4", U: "~ a#5 ~@5 g#5 ~@2 e5 ~@2 g#5 ~@5 c#5 ~@2 f#5 ~",
V: "[~@2 c#5@2 ~@4 d#5@2 ~ b4@2 ~ f#4@2 ~ d#5@2 ~ c#5@2 ~ a#4@2 ~ f#4@2 ~ c#5@2 ~ b4@2 ~ f#4@2 ~ b4@2 ~ c#5@2 ~ f#5@2 ~ c#5@2 ~ b4@2 ~ f#4@2 ~ b4@2 ~ d#5@2 ~ f#5@2 ~ d#5@2 ~ b4@2 ~ a#4@2 ~ b4@2 ~ d#5@2 ~ e5@2 ~@4 e5@2 ~@4 b4@2 ~@2]/2",
W: "~ e5 ~@5 e5 ~@2 b4 ~@2 e5 ~@5 b5 ~@2 f#5 ~", X: "~ b5 ~@5 b5 ~@2 f#5 ~@2 b5 ~@5 b4 ~@2 f#5 ~",
Y: "[~@2 b4@2 ~@10 d#5@2 ~@4 f#5@2 ~@4 d#5@2 ~@4 d#5@2 ~ b4@2 ~ b5@2 ~ d#6@2 ~@4 f#5@2 ~ d#5@2 ~ c#5@2 ~ b4@2 ~ f#4@2 ~ b4@2 ~ c#5@2 ~ f#5@2 ~ c#5@2 ~ b4@2 ~ f#4@2 ~@7 b4@2 ~@4 f#5@2 ~@2]/2",
Z: "~ b4 ~@5 d#5 ~@2 f#5 ~@2 d#5 ~@5 f#5 ~@2 c#5 ~", AA: "~ f#5 ~@5 g#5 ~@5 a#5 ~@5 g#5 ~@2 e5 ~",
AB: "[~@2 g#5@2 ~@10 c#5@2 ~@4 f#5@2 ~@4 c#5@2 ~@4 d#5@2 ~ b4@2 ~ f#4@2 ~ d#5@2 ~ c#5@2 ~ a#4@2 ~ f#4@2 ~ c#5@2 ~ b4@2 ~ f#4@2 ~ b4@2 ~ c#5@2 ~ f#5@2 ~ c#5@2 ~ b4@2 ~ f#4@2 ~ b4@2 ~ d#5@2 ~ f#5@2 ~ d#5@2 ~ b4@2 ~ a#4@2 ~ b4@2 ~ d#5@2 ~ e5@2 ~@4 e5@2 ~@4 b4@2 ~@4 e5@2 ~@10 e5@2 ~@4 b4@2 ~@2]/3",
AC: "~ e5 ~@5 b5 ~@2 f#5 ~@2 b5 ~@5 b5 ~@2 f#5 ~", AD: "~ b5 ~@5 b4 ~@2 f#5 ~@2 b4 ~@5 d#5 ~@2 f#5 ~",
AE: "[~@2 b5@2 ~@10 [d#5,f#5,b5]@2 ~@10 [d#5,f#5,b5]@2 ~@10 [c#5,f#5,a#5]@2 ~@7 [b4,e5,g#5]@2 ~@13 [d#5,f#5,b5]@2 ~@10 [d#5,f#5,b5]@2 ~@10 [c#5,f#5,a#5]@2 ~@7 [b4,e5,g#5]@2 ~@13 [b4,d#5,f#5]@2 ~@10 [b4,d#5,f#5]@2 ~@11 [a#4,c#5,f#5]@2 ~@7]/3", // B F# E B F# E B F#
AF: "~ [g#4,b4,e5]@2 ~@45", // E
})).s("gm_pizzicato_strings").gain(0.3)
// other · alto sax
const alto_sax = note("<~@42 A@2 B@4 C D E@3 F@2 G@2 H@4 I@2 J@2 K L@4 ~@12>".pickRestart({
A: "[~@41 f#4 ~ f#4 g#4@3 b4@2 ~ c#5@3 b4@2 ~ c#5 d#5@3 f#5@32 ~ d#5@3]/2",
B: "[e5@3 d#5@4 ~ c#5@2 ~ c#5@5 ~ c#5@8 b4@3 b4@26 ~@11 g#5@3 ~ g#5@8 f#5@2 ~ f#5@6 g#5@2 ~ f#5@5 ~ d#5@6 c#5 b4 [f#4,g#4] c#5 b4 c#5@14 c#5@2 d#5@2 ~ e5@3 d#5@2 ~@2 c#5@2 d#5@3 e5@2 d#5 c#5 d#5 ~ [d#5,e5]@2 c#5 ~ d#5@2 f#5@3 d#5@15 ~@3 d#5@3 f#5@2 ~ d#5@3 c#5@2 b4 c#5@10, ~@5 b4 ~@59 e5 ~@30, ~@131 d#5@2 ~@59]/4", // F#sus2 Emaj7
C: "~@9 f#4 ~ [g#4,a#4] ~ b4 c#5@3 c#5@8 ~ b4@2 ~ c#5@6 c#5@6 b4 ~ g#4 c#5@3 b4, ~@14 g#4 ~@9", // G#sus2
D: "~ g#4 c#5@3 d#5@4 ~ e5 d#5@15 c#5 ~ a#4 g#4 ~ f#4 g#4@2 ~ b4@12 ~, ~@14 b4 ~@9",
E: "[~@5 d#5@3 e5@2 ~ f#5@3 g#5@3 ~ g#5@5 f#5@2 ~ f#5@9 ~@3 f#6@88 ~@18]/3",
F: "[~@11 d#4@2 ~ d#5@3 e5@3 d#5@2 ~ c#5@3 b4@3 g#4@3 b4@24 ~@40]/2",
G: "[~@8 g#5@2 f#5@3 ~ d#5@3 b4@3 b4@3 g#4@3 b4@3 b4@9 c#5@3 g#4@15 ~@40]/2",
H: "[~@14 f#5@3 d#5@2 ~ d#5@2 ~ f#5@12 ~ b5@17 g#5@2 ~@2 g#5@24 d#5@3 e5@3 ~ d#5@7 c#5@3 b4@3 c#5@15 ~@3 d#5@3 e5@3 g#5@5 ~ a5@2 ~ f#5@3 ~ f#5@14 b5@36 ~@4, ~@133 g#5@2 ~@57]/4",
I: "[~@38 d#5@2 f#5@4 d#5@3 c#5@3 a#4@3 b4@3 f#5@5 ~ g#4@3 ~ b4@14 ~@16]/2",
J: "[~@33 c#5@2 ~ c#5@17 d#5@3 b4@23 ~@17]/2", K: "~@33 c#5@2 ~@2 c#5 b4@4 c#5@2 ~@2 c#5@2, ~@18 d#5 ~@5",
L: "[~ d#5 c#5 b4@3 c#5 ~@2 c#5@2 ~@2 c#5 b4@3 c#5@3 d#5@5 ~ f#5@32 ~@11 d#5@3 e5@3 f#5@2 f#5@27 ~ f#6@66 ~@21, ~@6 d#5 ~@89]/4",
})).s("gm_alto_sax").gain(0.45).pan(0.3)
// drums · kick
const kick = s("bd").struct(`<
~@11 A B A C A B D C E ~ F@2 E@2 G H I E@2 A B A C A B D C ~@2 J ~@2 K L M@2 K L N M O M P M L M Q K R K S K M K L N T
U M P M L M Q K V ~ W ~@3
>`.pickRestart({
A: "x ~@2 x!2 ~@2 x", B: "x ~@3 x ~@2 x", C: "x ~@2 x!2 ~@3", D: "x ~ x ~ x ~@2 x", E: "x", F: "~ x", G: "x!3 ~",
H: "~@4 x ~@2 x", I: "x!2", J: "~ x ~@2", K: "~@4 x ~@8 x ~@2 x ~@7", L: "~ x ~@2 x ~@11 x ~@7",
M: "~ x ~@2 x ~@8 x ~@2 x ~@7", N: "~ x ~@2 x ~@5 x ~@5 x ~@7", O: "~ x ~@2 x ~", P: "~@8 x ~@8 x ~@14 x ~@15",
Q: "~@4 x ~@8 x ~@2 x ~@5 x ~", R: "~@8 x ~@8 x ~@2 x ~@27", S: "~@2 x ~@5 x ~@23 x ~@8 x ~@6",
T: "~@2 x ~@5 x ~@23 x ~@8 x ~@2 x ~@3", U: "~@2 x", V: "~ x ~@4", W: "~@11 x",
})).gain(0.4)
// drums · rim
const rim = s("rim").struct("<~@19 A B@10 ~@8 B@3 C ~@34 D E@2 F ~@2>".pickRestart({
A: "~@3 x", B: "~ x ~ x", C: "~@13 x ~@34", D: "~@11 x", E: "~@5 x ~@5 x", F: "~@10 x ~@12 x",
})).gain(0.4)
// drums · snare
const snare = s("sd").struct("<~@11 A@8 ~@11 A@8 ~@5 B@8 C B@3 D B@3 E B@3 F B@3 G H B@3 D B@3 I ~@5>".pickRestart({
A: "~ x ~ x", B: "~@5 x ~@5 x", C: "~@6 x!3 ~@35 x ~@3", D: "~@2 x ~@8 x", E: "~@17 x ~@2 x ~@27",
F: "~@5 x ~@2 x ~@3", G: "~@10 x ~@8 x ~@2 x ~", H: "~@11 x", I: "~@5 x ~@6",
})).gain(0.4)
// drums · hihat
const hihat = s("hh").struct(`<
~@11 A@3 B A@2 C D E ~@10 A@3 B A@2 C D ~@5 F G F G F G H G I G@5 J F K F G@4 L H M N G@6 F O ~@5
>`.pickRestart({
A: "x!8", B: "x!7 ~", C: "x!3 ~ x!4", D: "x!6 ~@2", E: "x!4 ~@4", F: "~@4 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~",
G: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~", H: "~ x ~@2 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~",
I: "~ x ~@2 x ~@11 x ~@2 x ~@2 x ~", J: "~ x ~@8 x ~@2 x ~@2 x ~@2 x ~@2 x ~", K: "~ x ~@2 x ~@5 x ~@5 x ~@5 x ~",
L: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@8 x ~", M: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@5 x ~",
N: "~@4 x ~@5 x ~@5 x ~@2 x ~@2 x ~", O: "~ x ~@2 x ~@2 x ~@16",
})).gain(0.35)
// drums · low tom
const low_tom = s("lt").struct("<~@33 A ~@13 B ~@3 C ~ D ~ D ~@3 E F ~ G ~ G ~@3 H ~ D ~ D ~@9>".pickRestart({
A: "~@7 x", B: "~ x ~@22", C: "~@26 x ~@2 x ~@18", D: "~@29 x ~@18", E: "~@22 x!2", F: "x!4 ~@20", G: "~@5 x ~@42",
H: "~@10 x!6 ~@8",
})).gain(0.4)
// drums · open hat
const open_hat = s("oh").struct("<~@14 A ~@2 B ~@15 A ~@2 B ~@8 C ~ C ~ D ~@3 E ~@7 F ~@8 E ~@9 G H>".pickRestart({
A: "~@7 x", B: "~@3 x ~@4", C: "~ x ~@22", D: "~@13 x ~@10", E: "~@17 x ~@30", F: "~@41 x ~@6",
G: "~@11 x ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~@2 x", H: "~@2 x ~@2 x ~@42",
})).gain(0.1)
// drums · open hat · soft notes
const open_hat_soft = s("oh").struct(`<
~@80
[~@23 x]
[~ x ~@2 x ~@2 x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x ~@13]
>`).gain(0.05)
// drums · mid tom
// … 22 more lines
More by
Not in the database
That song isn't here.
Nothing in the database matches this link. It may have been renamed, or the address was mistyped. The closest songs to :
Real transcriptions · Editable patterns · Instrumental
Type a song.
Get Strudel code.
Chords, structure, melody, bass and drums compiled from open transcriptions into Strudel live-coding patterns. Play it here, scrub through the bars, then open it in strudel.cc and start hacking.
Smells Like Teen SpiritNirvana
The JokerSteve Miller Band · 1973
Love Me DoThe Beatles · 1964
I Don't MindJames Brown · 1961
- Real transcriptionsMcGill chord charts, Lakh MIDI and quality-filtered PDMX scores. The library includes alternate transcriptions of some songs.
- One bar, one cycleEvery layer follows the same bar timeline, keeping the code, playback and song structure aligned.
- Instrumental by designDetected vocal parts are removed. Guitar riffs, harmonica and other instrumental leads stay.