0:00/0:00
// Compleanno di maggio — Pooh
// 119 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 107 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(119/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@8 D E F G H I J K L M N O P Q R S D E F G H I T U V W X Y P Z AA AB AC AD AE AF AG AH@6 AI@7 AJ AK AL AM@6 AN@7
AO@6 AP@8 AQ@8 AR@6 AS@3
>`.pickRestart({
A: "~@20 [e3,g3,c4]@11 ~", B: "~ [d3,g3,b3]@20 ~ [f3,a#3,d4]@10",
C: "[~@2 c4@8 ~@9 f3@4 [e3,g3,c4]@13 [d3,g3,b3]@20 ~ [f3,a#3,d4]@11 ~@2 c4@8 ~@9 f3@4 [f3,a3,c4]@9 [a3,c4,f4]@3 ~ [a3,c4,f4]@9 [a3,c4,f4]@12 ~ [c2,c4,e4]@12 c2@4 c2@16 ~@9 [c4,e4]@4 g3@12 [g3,b3,d4]@7 ~ g3@12 ~@12 g3@8 [a3,c4]@8 ~ [a3,c4,f4]@4 [a3,c4,f4]@12 [a3,c4,f4]@8, ~@2 f3@17 ~@51 f3@17 ~@39 g3@30 ~@2 c2@31 ~@2 [c2,e4]@32 [c2,f3]@32 ~, ~@2 a3@13 a3@8 ~@47 a3@13 a3@7 ~@113 g3@12 ~@41, ~@11 c4@12 ~@55 c4@11 ~@49 [c4,e4,g4]@21 ~@12 [c4,e4]@19 ~ c4@16 c4@15 ~@34]/8", // C G A# F C G Am F …
D: "[g3,b3,d4]@2 [g3,b3,d4] [g3,b3,d4]@2 [b3,d4] [g3,b3,d4]@2, c2", // G Bm G
E: "[g3,c4,e4]@2 [g3,c4,e4] [g3,c4,e4]@2 [g3,c4] [g3,c4,f4]@2, c2@31 ~, ~@20 e4@11 ~", // C C5 Csus4
F: "[g3,c4,e4]@2 c4 [g3,c4]@2 [g3,c4] [g3,c4,e4]@2, c2, ~@3 e4@3 ~@2", // C C5 C
G: "[a3,c4]@2 [a3,c4,f4] [a3,c4,f4]@2 [a3,c4] [a3,c4,f4]@2, [c2,f3]", // Am F Am F F5
H: "[g3,b3,d4]@8 [g3,b3]@4 [g3,b3,d4]@8 [g3,b3,d4]@4 [g3,b3,d4]@7 ~, c2@31 ~", // G
I: "[c4,e4,g4]@8 [e4,g4]@4 [c4,e4,g4]@8 [c4,e4]@4 [g3,c4,e4]@7 ~, c2@31 ~, ~@20 g4@11 ~", // C Em C
J: "[d2,a3,d4,f4]@12 d4 ~@15 f4@4, ~@3 f4@4 ~, ~@3 a3@3 [a3,d4]@2, ~ d2, ~@5 d3@3", // Dm D5
K: "b3@2 ~@6 g3@3 ~@9 [b3,d4]@4 b3@4 b3@3 ~, g2@31 ~, [d4,g4]@11 ~ g4@12 ~@8, ~@12 b3@8 ~@4 [d4,g4]@7 ~, ~@2 g3 ~", // Bm G5
L: "[c3,c4,e4,g4]@6 [c4,e4,g4] ~ c3 ~@5 e4@2, ~@4 g4@3 ~, ~@16 c4@8 [c3,c4]@7 ~, ~@5 e4@2 ~", // C
M: "~@12 [a3,f4]@4 ~@2 a3@2 ~@4 c4@7 ~, f2@31 ~, [a3,c4,f4]@12 c4@8 a3@11 ~, ~@8 f3@17 ~@7, ~@16 f4@9 ~@7", // Dm F
N: "[d3,d4,f4]@15 ~ [c3,a3,c4,f4]@16, a3@5 ~@11", // Dm F
O: "[f3,a#3]@3 [d3,a#3] d3@2 [d3,f3]@2, [a#2,d4], ~@3 f3@3 ~@2, ~@8 a#3@7 ~", // A#5 Gm Dm A#
P: "[d3,b3]@6 [d3,b3]@2 ~ g3@3 [g3,b3]@4, g2@31 ~, g3 d3, ~@2 b3 ~", // G
Q: "[g3,b3,d4]@3 ~ [b3,d4,g4]@4 [b3,d4,g4]@4 [b3,d4,g4]@4 ~@4 g3@3 ~ [b3,d4,g4]@8, g2, ~@16 [b3,d4,g4]@7 ~@9", // G
R: "g3@3 ~@3 g3@2, [c2,e4], c4@16 c4@15 ~, ~@3 g3@3 ~@2", // C
S: "[a3,c4]@2 [a3,c4,f4] [a3,c4,f4]@3 [a3,c4,f4]@2, [c2,f3]", // Am F F5
T: "[a3,d4,f4]@12 ~@16 f4@3 ~, d2@16 d2@15 ~, ~@3 f4@4 ~, ~@12 [a3,d4]@12 [a3,d4]@7 ~, ~@20 d3@11 ~", // Dm D5
U: "b3 ~@9 [b3,d4]@2 [b3,d4,g4]@2 b3 ~, g2@15 ~, d4@2 g3 ~, g4@3 g4@3 ~@2, ~@2 g3 b3@2 ~@3", // Bm G
V: "[c4,e4,g4]@3 [c4,g4] ~@3 e4, c3@4 g4@3 ~, ~@3 e4@2 e4@2 ~, ~@16 [c3,c4]@8 [c3,c4]@7 ~", // C C5 C
W: "~@12 [a3,f4]@4 ~@2 a3@2 ~@4 c4@7 ~, f2@31 ~, [a3,c4,f4]@12 c4@8 a3@11 ~, ~@2 f3@5 ~, ~@16 f4@15 ~", // Dm F
X: "f4 [c3,a3,c4,f4], [d3,d4]@31 ~, a3@5 ~@11", // F D
Y: "[f3,a#3]@3 [d3,a#3] d3@2 [d3,f3]@2, [a#2,d4], ~@3 f3@3 ~@2, ~@16 a#3@15 ~", // A#5 Gm Dm A#
Z: "[b3,d4]@4 [b3,d4,g4]@4 [b3,d4,g4]@4 [b3,d4,g4]@4 ~@4 g3@3 ~ [b3,d4,g4]@8, g2, g3@5 ~@3, ~@16 [b3,d4,g4]@7 ~@9", // Bm G
AA: "[g3,a#3,d#4]@6 [g3,a#3,d#4]@2 g3@4 g3@3 ~, d#2@31 ~, ~@8 [a#3,d#4]@7 ~", // D# D#5
AB: "[g#3,c4,d#4]@3 [c4,d#4] [c4,d#4]@2 [g#3,c4,d#4]@2, d#2, ~@3 g#3@3 ~@2, ~@8 g#4@7 ~", // G# Cm G#
AC: "~@12 [a#3,d#4]@4 a#3@8 ~@4 g4@3 ~, d#2@16 [d#2,d#4]@15 ~, [g3,a#3,d#4]@3 g3@3 ~@2, ~@8 d#3@16 [d#3,g3]@7 ~, ~@4 g4@3 ~", // D#5 D#
AD: "~@12 c4@3 ~ a3@6 a3@9 ~, [c2,b3,d#4,g4]@15 ~ [f2,c4,f4]@15 ~, c4@3 ~@5, ~@8 c3@7 ~@17", // Cm F5
AE: "a#2@6 ~@4 f3@5 ~ g3@8 g3@8, [f3,a#3,d4]@3 ~@5, ~@6 a#2@9 ~ [g2,b3,d4]@16", // A# G
AF: "g#2@8 ~@16 [g#2,g#3,c4]@7 ~, c4@3 ~, [g#3,d#4]@3 g#3@2 ~@3, ~ g#2@2 ~, ~@16 [d#4,g#4]@15 ~", // G# G#5
AG: "a2@8 ~@8 a2@2 ~@6 a3@7 ~, [a3,c4,d#4,g4]@12 [c4,d#4,g4]@19 ~, ~@8 a2@8 ~@2 a2@13 ~, ~@3 a3@3 ~@2", // Am7b5 Cm
AH: "[a#2@8 ~@8 a#2@2 ~@9 d4@2 ~@2 [f3,a#3,d4]@8 [f3,a#3,d4]@4 [f3,a#3,d4]@4 [f3,a#3,d4]@4 [f3,a#3,d4]@4 [f3,a#3,d4]@4 [f3,a#3,d4]@4 [g3,a#3,d#4]@12 ~@12 [g3,a#3,d#4]@6 ~@14 d#4@4 [c4,d#4]@8 [d#3,g#3,c4,d#4]@7 ~@24 [g3,a#3,d#4,g4]@7 ~@13 c4@2 ~@2 a3@8 a3@6 ~@2 [a#2,f3,a#3,d4]@2, [a#3,d4]@12 [a#3,d4]@12 a#3@6 ~@53 d#3@10 ~@10 d#3@16 ~@16 d#3@11 d#3@11 ~@9 c3@7 ~@19, ~@8 a#2@8 ~@2 a#2@10 ~@3 a#2@31 ~ d#2@16 d#2@14 ~@2 d#2@16 [d#2,g#4]@15 ~ d#2@16 d#2@15 [c2,d#4,g4]@15 ~ [f2,c4,f4]@14 ~@4, ~@12 f3@8 f3@7 ~@48 [g3,a#3,d#4]@12 ~@8 [g#3,c4,d#4]@10 g#3@14 ~@8 [g3,a#3,d#4]@12 [g3,a#3,d#4]@11 ~@42, ~@105 c4@6 ~@47 c4@12 ~@22]/6", // A# D# Cm G# D# A# G#5 Cm …
AI: "[~@8 f3@5 ~ g3@8 g3@6 ~@2 g#2@8 ~@16 [g#3,d#4]@7 ~ [a3,c4,d#4,g4]@11 ~@12 a3@6 ~@2 [g3,a#3,d#4]@12 [g3,a#3,d#4]@4 ~@6 a#2@7 ~@3 [g2,g4]@32 [e3,g3,c4]@13 [d3,g3,b3]@21 f3@13 c4@8 ~@5 a3@4 f3@3, ~@4 a#2@9 ~ [g2,b3,d4]@15 ~ c4@30 ~@13 [c4,d#4,g4]@18 ~@32 b3@31 ~@37 [a#3,d4]@31 ~@2, ~@30 [g#3,d#4]@10 g#3@12 g#2@8 ~@2 f2@14 ~ f2@14 ~@2 a#2@22 ~@97 c4@10 ~@2, ~@38 g#2@8 g#4@14 ~@21 f3@10 ~@18 [g3,a#3,d#4]@13 g3@32 ~@50 f3@17 ~@3, ~@44 d#4@10 ~@19 a3@12 ~@39 d4@31 ~@49 a3@13 ~@7]/7", // G#5 Am7b5 D# G C G Cm A# …
AJ: "~ g3@13 [d3,g3,b3]@18, ~ [e3,c4]@31", AK: "~@3 [f3,a#3,d4]@11 ~ [f3,a3]@9 c4@4 a3@4, ~@15 c4@7 ~@10",
AL: "f3@4 [f3,a3,c4]@8 ~ [a3,c4,f4]@3 ~ [a3,c4,f4]@8 [a3,c4,f4]@4 [a3,c4,f4]@3", // F
AM: "[~@6 [c2,g3,c4,e4]@11 ~ c2@2 ~@2 c2@16 ~@8 [c4,e4]@4 g3@12 [g3,b3,d4]@7 ~ g3@12 ~@12 g3@8 [a3,c4]@8 [a3,c4,f4]@4 [a3,c4,f4]@12 ~ [a3,c4,f4]@8 [g3,b3,d4]@8 [g3,b3,d4]@4 [g3,b3,d4]@7 [b3,d4]@4 [g3,b3,d4]@8 [g3,c4,e4]@8 [g3,c4,e4]@4 [g3,c4,e4]@6 ~@2 [g3,c4,e4]@3 ~ [g3,c4,f4]@2, ~@18 [c4,e4,g4]@20 c2@31 ~ [c2,e4]@32 [c2,f3]@32 ~ c2@31 c2@26, ~@50 [c4,e4]@19 ~ c4@16 c4@15 ~@91, ~@41 g3@6 ~@49]/6", // C G Am F G Bm G C …
AN: "[~@6 [g3,c4,e4]@7 ~ c4@3 ~ [g3,c4]@7 ~ [g3,c4]@3 ~ c4@8 [f3,a3,c4]@7 ~ [a3,c4,f4]@2 ~@2 [a3,c4,f4]@8 [a3,c4]@4 [a3,c4,f4]@8 [g3,b3,d4]@8 [g3,b3]@4 [g3,b3,d4]@8 [g3,b3,d4]@4 [g3,b3,d4]@7 ~ [c4,e4,g4]@8 [e4,g4]@4 [c4,e4,g4]@8 [c4,e4,g4]@2 ~@2 [g3,c4,e4]@7 ~ [a3,d4,f4]@12 ~@16 f4@3 ~ b3@2 ~@17 [b3,d4]@4 [b3,d4,g4]@4 b3@2 ~@2 [c4,e4,g4]@12 [c4,g4]@4 ~@8 [c3,c4]@3, ~@6 c2@32 c2@32 c2@31 ~ c2@31 ~ d2@16 d2@15 ~ g2@29 ~@2 c3@16 [c3,c4]@8 ~@3, ~@18 e4@11 ~ [g3,e4]@15 ~@101 f4@16 ~@4 d4@15 g3@8 ~@35, ~@146 [a3,d4]@12 [a3,d4]@7 ~ g4@11 g4@12 ~@20 e4@8 e4@7, ~@154 d3@11 ~@8 g3@4 b3@8 ~@28 g4@11]/7", // C C5 F Am F G C Em …
AO: "[~ e4@4 ~@12 [a3,f4]@4 ~@2 a3@2 ~@4 c4@7 ~ [d3,d4,f4]@15 ~ [c3,a3,c4,f4]@16 [f3,a#3]@12 [d3,a#3]@4 d3@8 [d3,f3]@8 [d3,b3]@12 [d3,b3]@4 ~@2 g3@6 [g3,b3]@8 [g3,b3,d4]@3 ~ [b3,d4,g4]@4 [b3,d4,g4]@4 [b3,d4,g4]@4 ~@9 [b3,d4,g4]@8 [g3,a#3,d#4]@12 [g3,a#3,d#4]@4 [g3,a#3,d#4]@8 g3@2, ~@5 f2@31 ~@33 [a#2,d4]@32 g2@31 ~ g2@32 ~ d#2@26, ~@5 [a3,c4,f4]@12 c4@8 a3@11 ~ a3@10 ~@38 a#3@14 ~@18 d3@16 ~@59, ~@13 f3@20 ~@48 f3@12 ~@8 g3@18 ~@34 g3@11 ~@28, ~@21 f4@14 ~@82 b3@8 ~@24 [b3,d4,g4]@8 ~@35]/6", // Dm F A#5 Gm Dm G D# A# …
AP: "[~@6 [g#3,c4,d#4]@12 [c4,d#4]@4 [c4,d#4]@8 ~ [g#3,c4,d#4]@8 ~@12 [a#3,d#4]@4 a#3@8 [d#3,g3]@4 g4@2 ~@10 c3@4 c4@2 ~@2 a3@6 a3@10 a#2@6 ~@4 f3@4 ~@2 g3@8 g3@5 ~@3 g#2@8 ~@15 [g#2,g#3,c4]@7 ~ a2@8 ~@8 a2@2 ~@6 a3@6 ~@2 a#2@8 ~@8 a#2@2 ~@6 a#3@4 d4@2 ~@2 [f3,a#3,d4]@8 [f3,a#3,d4]@4 [f3,a#3,d4]@4 [f3,a#3,d4]@4 [f3,a#3,d4]@4 [f3,a#3,d4]@2, ~@6 d#2@32 ~ d#2@16 [d#2,d#4]@15 ~ [c2,b3,d#4,g4]@15 ~ [f2,c4,f4]@16 ~@6 a#2@8 ~@2 [g2,b3,d4]@15 ~@9 g#2@15 ~@16 a2@8 ~@2 a2@12 ~@10 a#2@8 ~@2 a#2@12 ~@2 a#2@26, ~@18 g#3@12 ~@9 [g3,a#3,d#4]@12 g3@12 ~@8 c4@12 ~@52 c4@23 ~@20 [c4,d#4,g4]@18 ~@14 f3@8 f3@10 ~@28, ~@22 g#4@15 ~@10 d#3@16 ~@40 [f3,a#3,d4]@12 ~@20 [g#3,d#4]@12 g#3@8 ~@11 [a3,c4,d#4,g4]@12 a3@12 ~@8 [a#3,d4]@12 a#3@12 ~@34, ~@55 g4@12 ~@84 [d#4,g#4]@14 ~@45 d4@16 ~@30]/8", // G# Cm G# D#5 D# G# A# D# …
AQ: "[~@2 [f3,a#3,d4]@4 [g3,a#3,d#4]@12 ~@12 [g3,a#3,d#4]@6 ~@15 d#4@4 [c4,d#4]@8 [d#3,g#3,c4,d#4]@6 ~@25 [g3,a#3,d#4,g4]@7 ~@13 c4@3 ~ a3@8 a3@7 ~ a#2@6 ~@4 f3@5 ~ g3@8 g3@7 ~ g#2@8 ~@16 [g#3,d#4]@7 ~ [a3,c4,d#4,g4]@12 ~@11 a3@7 ~ [g3,a#3,d#4]@12 [g3,a#3,d#4]@4 ~@6 a#2@5, ~@6 d#2@16 d#2@15 ~ d#2@16 ~ [d#2,g#4]@14 ~@2 d#2@16 d#2@15 [c2,d#4,g4]@15 ~ [f2,c4,f4]@15 ~@17 [g2,b3,d4]@15 ~@9 g#2@8 g#4@15 ~@20 f3@11 ~@17 [g3,a#3,d#4]@11, ~@18 [g3,a#3,d#4]@12 ~@8 [g#3,c4,d#4]@11 g#3@14 ~@8 [g3,a#3,d#4]@12 [g3,a#3,d#4]@11 ~@40 f3@10 ~@22 [g#3,d#4]@12 ~@2 d#4@8 g#2@9 ~ f2@15 f2@15 ~ a#2@22 ~@5, ~@26 d#3@11 ~@9 d#3@16 ~@17 d#3@12 d#3@11 ~@8 c3@7 ~@23 a#2@9 ~@27 g#3@14 ~@20 a3@10 ~@36, ~@49 c4@6 ~@47 c4@12 ~@20 [a#3,d4]@15 ~@17 c4@31 ~@13 [c4,d#4,g4]@18 ~@28]/8", // A# D# Cm G# D# G#5 Am7b5 D# …
AR: "[~@5 [g2,g4]@33 [e3,g3,c4]@11 ~@2 [d3,g3,b3]@20 ~ [f3,a#3,d4]@11 ~@2 c4@8 ~@9 f3@4 [e3,g3,c4]@11 ~@2 [d3,g3,b3]@20 ~ [f3,a#3,d4]@11 ~@2 c4@8 ~@9 f3@4 [a3,c4,f4]@9 [a3,f4]@4 [a3,c4,f4]@5, ~@2 g3@33 ~@50 f3@17 ~@51 f3@17 ~@22, ~@3 b3@32 ~@50 a3@13 a3@7 ~@48 a3@13 a3@7 ~@19, ~@4 d4@32 ~@57 c4@12 ~@56 c4@11 ~@20]/6", // G C G A# C G A# F …
AS: "[~@2 [a3,c4,f4]@2 [a3,c4,f4]@5 ~@2 g4@31 ~@6, ~@18 g3@65 ~@13, ~@19 c4@64 ~@13, ~@7 e4@21 ~@4]/3", // F
})).s("gm_piano").gain(0.27)
// chords · piano · soft notes
const piano_soft = note(`<
~@7 A ~@2 B ~ C D E F G H I J K ~@5 B ~ C D E F L M I N O ~@3 P ~ Q R S T U V ~ W ~@2 X Y Z AA ~@8 AB ~@2 AC ~ AD AE
AF AG AH AI ~ AJ AK ~@4 AL AM@2 AN AO ~ AP ~ AQ ~@3 AR AS AT ~@6 AU ~@3
>`.pickRestart({
A: "~@7 g3@4 ~@21", B: "~@5 g3 ~@2", C: "~@2 [g3,e4] ~@5", D: "~@5 f4 ~@2", E: "~@2 d4 ~@5", F: "~@2 c4 ~@5",
G: "~@10 d3@5 ~@17", H: "~@4 b3@7 ~@13 g3@7 ~", I: "~@28 g4@3 ~", J: "~@14 f3 ~", K: "~@10 a3@5 ~@17",
L: "~@5 d3@5 ~@6", M: "~@2 b3@4 ~@6 g3@3 ~", N: "~@28 f3@3 ~", O: "~@5 a3@3 ~@8", P: "~@28 d#4@3 ~, ~@13 d#3@3",
Q: "~@24 a#3@7 ~", R: "~@28 d4@3 ~, ~@26 a#3@5 ~", S: "~@12 a#3@3 ~@13 c4@4, ~@10 d4@5 ~@17", T: "~@3 d#4 ~ g#3 ~@2",
U: "~@28 a#3@3 ~", V: "~ f3@5 ~@10", W: "~@7 d#3@12 ~@13", X: "~@13 a#3 ~@2", Y: "~@10 b3@3 ~@19", Z: "~@5 d#4 ~@10",
AA: "~@3 f3@3 ~@10", AB: "~@7 g3@2 ~@7", AC: "~@13 g3@2 ~", AD: "~@14 [g3,e4]@3 ~@15", AE: "~@13 f4@2 ~",
AF: "~@7 d4@2 ~@7", AG: "~@7 c4@2 ~@7", AH: "~@8 d3@5 ~@3", AI: "~@10 b3@7 ~@12 g3@3", AJ: "~ g4@3 ~@28",
AK: "~ f3@2 ~@12 a3@4 ~@13", AL: "~@2 d#4@3 ~@27, d#3@3 ~@13", AM: "[~@31 a#3@6 ~@27]/2",
AN: "~@3 d4@4 ~@12 a#3@2 ~@11, ~ a#3@6 ~@10 d4@4 ~@11", AO: "~@3 c4@3 ~@13 d#4@4 ~@4 g#3@3 ~@2",
AP: "~ a#3 ~@2 f3@5 ~@7", AQ: "~@7 d#3@6 ~@3", AR: "~@2 a#3@3 ~@13 b3@3 ~@11", AS: "~@9 d#4 ~@6",
AT: "~@14 f3@11 ~@7", AU: "~@23 c4@4 ~@5",
})).s("gm_piano").gain(0.18)
// bass · fretless bass
const bass = note(`<
A B C@8 D E F D G H I J K L M N O P Q R D E F D G H I J K L M N S T U V W X Y Z AA AB@7 AC@6 AD AE@2 AF@7 AG@3 AH@3
AI@3 AJ@8 AK@2 AL AM@8 AN AO@8
>`.pickRestart({
A: "~@5 e3@3", B: "~ d3@8 g3@12 ~ d3@10",
C: "[~@2 c3@20 ~ e3@12 ~ d3@8 g3@12 ~ d3@12 ~ c3@39 ~@4 f3@3 ~ c3@6 ~@3 c2@10 ~@2 c2@2 ~@2 c2@15 ~ c2@9 ~@4 c2@2 ~@2 c2@6 ~@2 g1@6 ~@2 c2@11 ~ c2@3 ~ c2@14 ~@2 c2@11 ~@2 c2@2 ~@2 c2@15 ~]/8",
D: "c2@10 ~@2 c2@2 ~@2 c2@15 ~", E: "c2@10 ~@2 c2@3 ~ e2@4 g2@4 e2@8", F: "c2@10 ~@2 c2@3 ~ c2@14 ~@2",
G: "c2@5 ~ c2 ~@5 c3@4, ~ c2", H: "c2@10 ~@2 c2@4 e2@4 g2@4 a2@2 g2@2 e2@3 ~", I: "d2@10 ~@2 d2@3 ~ d2@15 ~",
J: "b1@10 ~@2 b1@4 b1@4 g1@3 ~ b1@8", K: "c2@10 ~@2 c2@2 ~@2 c2@11 ~ c2@2 e2@2",
L: "f2@10 ~@2 f2@3 ~ f2@3 ~ c3@3 ~ f2@8", M: "d2@15 ~ c2@14 ~@2", N: "a#1@11 ~ a#1@3 ~ a#1@6 ~@2 a#1@6 ~@2",
O: "g1@11 ~ g1@3 ~ g4@4 d4@4 b3@7 ~, ~ g1", P: "g1", Q: "c2@11 ~ c2@3 ~ c2@14 ~@2", R: "c2@11 ~ c2@2 ~@2 c2@15 ~",
S: "g1@5 ~ g1 ~ g1@4 g2@4", T: "g1@9 ~@3 g1@3 ~ g1@8 g2@6 ~@2", U: "d#2@10 ~@2 d#2@3 ~ d#2@8 d#3@8",
V: "d#2@5 ~ d#2@2 g#2@4 d#3@4", W: "d#2@10 ~@2 d#2@4 d#3@8 a#2@5 ~@3", X: "c2@10 ~@2 c2@3 ~ f1@16",
Y: "a#1@10 ~@2 a#1@3 ~ g1@16", Z: "g#1@11 ~ g#1@2 ~@2 g#1@7 ~ g#1@6 ~@2", AA: "a1@10 ~@2 a1@3 ~ a1@4 a1@3 ~ a1@8",
AB: "[a#1@10 ~@2 a#1@3 ~ a#1@2 ~@2 a#1@3 ~ a#1@3 a#1@3 ~ a#1@10 ~@2 a#1@2 ~@2 a#1@2 ~@2 a#1@2 ~@2 a#1@3 ~ a#1@4 d#2@10 ~@2 d#2@2 ~@2 d#2@14 ~@2 d#2@10 ~@2 d#2@3 ~ g#2@7 ~ d#3@8 d#2@9 ~@3 d#2@3 ~ d#3@7 a#1@7 ~ c2@15 ~ f1@15 ~ a#1@14 ~@2 g1@16 g#1@2]/7",
AC: "[~@10 g#1@3 ~ g#1@7 ~ g#1@7 ~ a1@11 a1@2 ~@2 a1@4 a1@3 ~ a1@8 a#1@10 ~@2 a#1@2 ~@2 a#1@7 ~ d#2@7 ~ g2@32 e3@13 d3@9 g3@12 d3@12 ~ c3@20]/6",
AD: "~ e3@12 ~ d3@8 g3@10", AE: "[~@3 d3@12 c3@38 ~@4 f3@3 ~ c3@3]/2",
AF: "[~@6 c2@10 ~@2 c2@2 ~@2 c2@15 ~ c2@9 ~@3 c2@2 ~@2 c2@6 ~@2 g1@6 ~@2 c2@11 ~ c2@3 ~ c2@14 ~@2 c2@11 ~ c2@2 ~@2 c2@15 ~@2 c2@10 ~@2 c2@2 ~ c2@15 ~ c2@10 ~@2 c2@3 ~ e2@4 g2@4 e2@8 c2@10 ~@2 c2@3 ~ c2@10]/7",
AG: "[~@6 c2@10 ~@2 c2@2 ~@2 c2@15 ~ c2@10 ~@2 c2@2 ~@10 c3@8 c2@10 ~@2 c2@4 e2@4 g2@4 a2@2, ~@27 c2@8 ~@13]/3",
AH: "[g2@2 e2@3 ~ d2@10 ~@2 d2@3 ~ d2@15 ~ b1@10 ~ b1@4 b1@3 ~ g1@3 ~ b1@8 c2@10 ~@2 c2@2 ~@2 c2@11]/3",
AI: "[~ c2@2 e2@2 f2@10 ~@2 f2@3 ~ f2@3 ~ c3@3 ~ f2@8 d2@15 ~ c2@14 ~@2 a#1@11 ~ a#1@3 ~ a#1@6 ~@2 a#1@3]/3",
AJ: "[~@5 g1@10 ~@2 g1@2 ~@2 g1@8 g2@8 g1@9 ~@3 g1@3 ~ g1@8 ~ g2@6 ~@2 d#2@10 ~@2 d#2@3 ~ d#2@8 d#3@8 d#2@10 ~@2 d#2@4 g#2@8 ~ d#3@8 d#2@10 ~@2 d#2@4 d#3@8 a#2@5 ~@3 c2@10 ~@2 c2@3 ~ f1@15 ~ a#1@10 ~@2 a#1@3 ~ g1@16 g#1@11 ~ g#1@2 ~@2 g#1@7 g#1@2]/8",
AK: "[~@6 a1@10 ~@2 a1@3 ~ a1@4 a1@3 ~ a1@8 a#1@10 ~@2 a#1@3 ~ a#1@2 ~@2 a#1@3 ~ a#1@2]/2",
AL: "~@2 a#1@3 ~ a#1@10 ~@2 a#1@2 ~@2 a#1@3 ~ a#1@2 ~@2 a#1@2",
AM: "[~@2 a#1@4 d#2@10 ~@2 d#2@2 ~@2 d#2@14 ~@2 d#2@10 ~@3 d#2@3 ~ g#2@7 ~ d#3@8 d#2@9 ~@3 d#2@3 ~ d#3@7 a#1@7 ~ c2@15 ~ f1@15 ~ a#1@14 ~@2 g1@16 g#1@10 ~@2 g#1@3 ~ g#1@7 ~ g#1@7 ~ a1@11 ~ a1@2 ~ a1@4 a1@3 ~ a1@8 a#1@10 ~@2 a#1@2 ~@2 a#1@7 ~ d#2@3]/8",
AN: "~@5 g2@27", AO: "[~@6 e3@13 d3@8 g3@12 ~ d3@13 c3@21 e3@12 ~ d3@8 g3@12 ~ d3@13 c3@53 ~@8 c2@61 ~@13]/8",
})).s("gm_fretless_bass").gain(0.35)
// chords · string ensemble 2
const string_ensemble_2 = note(`<
A B C@8 D@2 E F G@2 H I E J K L M@2 E F I E@2 F I E H I E F K L M@2 N O N P Q O R S@6 T@5 ~@4 U V@8 W X@7 Y@2 Z@2 AA@8
AB@8 ~@4 AC@4
>`.pickRestart({
A: "~@5 [e3,g3,c4]@3", B: "~@3 [d3,g3,b3]@19 [f3,a#3,d4]@10",
C: "[~@2 [f3,a3,c4]@21 [e3,g3,c4]@12 ~ [d3,g3,b3]@21 [f3,a#3,d4]@13 [f3,a3,c4]@56 [e3,g3,c4]@57 [d3,g3,b3]@8 [e3,g3,c4]@32 [a3,c4,f4]@32 ~]/8", // F C G A# F C G C …
D: "[[b3,d4,g4]@15 [g3,c4,e4]@17]/2", E: "[g3,c4,e4]", F: "[a3,c4,f4]",
G: "[[b3,d4,g4]@15 ~ e4@16, ~@30 [g3,c4]@31 ~@3]/2", H: "[a3,d4,f4]", I: "[b3,d4,g4]", J: "~ [a3,c4,f4]@15",
K: "[a3,d4,f4] [a3,c4,f4]", L: "[a#3,d4,f4]", M: "[b3,d4,g4]/2", N: "[a#3,d#4,g4]", O: "[c4,d#4,g#4]",
P: "[c4,d#4,g4] [a3,c4,f4]", Q: "[a#3,d4,f4] [b3,d4,g4]", R: "[a3,c4,d#4,g4]",
S: "[[a#3,d4,f4]@63 [a#3,d#4,g4]@32 [c4,d#4,g#4]@32 [a#3,d#4,g4]@31 [c4,d#4,g4]@16 [a3,c4,f4]@16 [a#3,d4,f4]@2]/6", // A# D# G# D# Cm F A#
T: "[~@14 [b3,d4,g4]@16 [c4,d#4,g#4]@32 [a3,c4,d#4,g4]@31 [g3,a#3,d#4]@32 [b3,d4,g4]@25 ~@10]/5", U: "~ [a3,c4,f4]@7",
V: "[~@6 [g3,c4,e4]@56 [g3,b3,d4]@8 [g3,c4,e4]@32 [a3,c4,f4]@32 ~ [b3,d4,g4]@31 [g3,c4,e4]@64 [a3,c4,f4]@26]/8", // C G C F G C F
W: "~ [b3,d4,g4]@7", // G
X: "[~@6 [g3,e4]@32 [a3,d4,f4]@32 [b3,d4,g4]@31 [g3,c4,e4]@32 [a3,c4,f4]@32 [a3,d4,f4]@16 [a3,c4,f4]@16 [a#3,d4,f4]@27, ~@4 c4@31 ~@189]/7", // C Dm G C F Dm F A#
Y: "[~@5 [b3,d4,g4]@59]/2", Z: "[~@3 [a#3,d#4,g4]@16 [c4,d#4,g#4]@13]/2",
AA: "[~@7 [a#3,d#4,g4]@32 [c4,d#4,g4]@16 [a3,c4,f4]@16 [a#3,d4,f4]@16 [b3,d4,g4]@18 [c4,d#4,g#4]@29 [a3,c4,d#4,g4]@32 [a#3,d4,f4]@64 [a#3,d#4,g4]@26]/8", // D# Cm F A# G G# Am7b5 A# …
AB: "[~@6 [c4,d#4,g#4]@32 ~ [a#3,d#4,g4]@31 [c4,d#4,g4]@16 [a3,c4,f4]@16 [a#3,d4,f4]@16 [b3,d4,g4]@16 [c4,d#4,g#4]@32 [a3,c4,d#4,g4]@31 [g3,a#3,d#4]@32 [b3,d4,g4]@27]/8", // G# D# Cm F A# G G# Am7b5 …
AC: "[~@14 [f3,a3,c4]@33 ~@7 [e3,g3,c4]@54 ~@20]/4", // F C
})).s("gm_string_ensemble_2").gain(0.12)
// chords · string ensemble 1
const string_ensemble_1 = note("<~@4 A@4 ~@30 B@2 C D C E F D G H@6 I@3 ~@6 J@3 ~@14 K@2 L@7 M@8 N@2 ~@9>".pickRestart({
A: "[~@27 [f4,a4,c5]@34 ~ [e4,g4,c5]@57 ~@9]/4", B: "[d4,g4]/2", C: "[d#4,g4]", D: "[d#4,g#4]", E: "[c4,d#4] [c4,f4]",
F: "[d4,f4] [d4,g4]", G: "[c4,d#4]",
H: "[[d4,f4]@63 [d#4,g4]@32 [d#4,g#4]@32 [d#4,g4]@31 [c4,d#4]@16 [c4,f4]@16 [d4,f4]@2]/6", // Dm D# G#5 D# Cm F5 Dm
I: "[~@7 [d4,g4]@8 [d#4,g#4]@16 [c4,d#4]@16 ~]/3", J: "[~@4 [f4,a4,c5]@33 ~ [e4,g4,c5]@56 ~@2]/3",
K: "[~@5 [d4,g4]@59]/2", // G5
L: "[~@6 [d#4,g4]@32 [d#4,g#4]@32 ~ [d#4,g4]@32 [c4,d#4]@16 [c4,f4]@16 [d4,f4]@16 [d4,g4]@16 [d#4,g#4]@31 [c4,d#4]@26]/7", // D# G#5 D# Cm F5 Dm G5 G#5 …
M: "[~@6 [d4,f4]@64 [d#4,g4]@32 [d#4,g#4]@32 ~ [d#4,g4]@31 [c4,d#4]@16 [c4,f4]@16 [d4,f4]@16 [d4,g4]@16 [d#4,g#4]@26]/8", // Dm D# G#5 D# Cm F5 Dm G5 …
N: "[~@3 [c4,d#4]@16 ~@13]/2", // Cm
})).s("gm_string_ensemble_1").gain(0.29)
// other · electric guitar clean
const electric_guitar_clean = note(`<
~@24 A@8 B C A D E F G@2 ~@23 H A@2 I J K A@4 L M N O P Q R S T ~@25
>`.pickRestart({
A: "c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~",
B: "a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3 ~",
C: "g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~",
D: "f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~",
E: "d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~",
F: "a#2 ~ a#2 ~ a#2 ~ a#2 ~ a#2 ~ a#2 ~ a#2 ~ a#2 ~ a#2 ~ a#2 ~ a#2 ~ a#2 ~ a#2 ~ a#2 ~ a#2 ~ a#2 ~",
G: "g2 ~ g2 ~ g3 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g3 ~ g2 ~ g2 ~ g2 ~ g3 ~ g2 ~ g2 ~ g2 ~",
H: "~@6 c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~",
I: "c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~@2 c4!2 ~ c4 ~ c4 ~@2 c4 ~ c4 ~ c4 ~ c4",
J: "~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4!2 ~@2 c4!2 ~ c4 ~ c4 ~",
K: "~ c4!2 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~",
L: "c4 ~ c4 ~ c4 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3 ~",
M: "a3 ~ a3 ~ a3 ~ g3 ~ g3 ~ g3 ~ g3!2 ~@2 g3!2 ~ g3 ~ g3 ~@2 g3!2 ~ g3 ~ g3 ~ g3",
N: "~ g3 ~ g3 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4",
O: "~ c4 ~ c4 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3",
P: "~ f3 ~ f3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3",
Q: "~ c3 ~ c3 ~ a#2 ~ a#2 ~ a#2 ~ a#2 ~ a#2 ~ a#2 ~ a#2 ~ a#2 ~ a#2 ~ a#2 ~ a#2 ~ a#2 ~ a#2 ~ a#2",
R: "~ a#2 ~ a#2 ~ g2 ~ g2 ~ g3 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g3 ~ g2 ~ g2 ~ g2 ~ g3 ~ g2",
S: "~ g2 ~ g2 ~ g2 ~ g2 ~ g3 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g3 ~@2 g2!2 ~ g2 ~@2 g3 ~", T: "g2 ~ g2 ~ g2 ~@27",
})).s("gm_electric_guitar_clean").gain(0.22)
// other · acoustic guitar steel
const acoustic_guitar_steel = note(`<
A B@5 ~ C@3 D E@2 F D E G D E F G H D@2 E F D E@2 F D E G D E F G H D@2 ~@17 I@3 J K@2 ~@2 L@8 M@7 N@2 ~@17 O@2 P@3
~@3
>`.pickRestart({
A: "~@5 e4@3", B: "[~ d4@8 g4@12 ~ d4@12 c4@8 ~ a3@4 f3@8 e4@13 d4@8 g4@11 ~@2 d4@13 c4@20 ~ f4@11 ~@2 c4@11 ~@13]/5",
C: "[~@31 e4@4 g3@4 c4@4 e4@8 g3@4 e4@8 f4@4 a3@4 ~ c4@4 f4@8 a3@4 f4@8]/3", D: "g4 b3 d4 g4@2 b3 g4@2",
E: "e4 g3 c4 e4@2 g3 e4@2", F: "f4 a3 c4 f4@2 a3 f4@2", G: "f4 a3 d4 f4@2 a3 f4@2", H: "f4 a#3 d4 f4@2 a#3 f4@2",
I: "[~@29 e4@13 d4@8 ~ g4@12 d4@13 c4@8 a3@4 ~ f3@7]/3", J: "~ e4@13 d4@8 g4@10",
K: "[~@3 d4@12 c4@20 ~ f4@11 ~@2 c4@10 ~@5]/2",
L: "[~@6 e4@4 g3@4 c4@4 e4@8 g3@4 e4@8 f4@4 a3@4 c4@4 f4@8 ~ a3@4 f4@8 g4@4 b3@4 d4@4 g4@7 b3@4 g4@8 e4@4 g3@4 c4@4 e4@8 g3@4 e4@8 e4@4 g3@4 c4@4 e4@8 g3@4 e4@8 f4@4 a3@4 c4@4 f4@8 a3@4 f4@8 g4@4 b3@4 d4@4 g4@8 b3@4 g4@8 e4@4 g3@4 c4@4 e4@8 g3@4 e4@2]/8",
M: "[~@6 f4@4 a3@4 d4@4 f4@8 a3@4 f4@8 g4@4 b3@3 d4@4 g4@8 b3@4 g4@8 e4@4 g3@4 c4@4 e4@8 g3@4 e4@8 f4@4 a3@4 c4@4 f4@8 a3@4 f4@8 f4@4 a3@4 d4@4 f4@8 a3@4 f4@8 f4@4 a#3@4 d4@4 f4@8 a#3@4 f4@8 g4@4 b3@4 d4@4 g4@8 b3@4 g4@3]/7",
N: "[~@5 g4@4 b3@4 d4@4 g4@8 b3@4 ~ g4@8 ~@26]/2", O: "[~@6 e4@13 d4@8 g4@12 ~ d4@13 c4@8 a3@3]/2",
P: "[~@2 f3@8 e4@13 d4@8 g4@11 ~@2 d4@13 c4@20 ~@19]/3",
})).s("gm_acoustic_guitar_steel").gain(0.19).pan(0.6)
// other · distortion guitar
const distortion_guitar = note("<~@39 A B@3 C D E F G@4 H@6 ~@23 I J@8 K L@8 ~@9>".pickRestart({
A: "g2 a2 b2 c3 d3 e3 f3 g3!2 a3 b3 c4 d4 e4 f4 g4", B: "d#4 g4 d#4 d4 d#4@12", C: "c4 a3", D: "a#3 b3",
E: "c4@15 g#4@16 ~", F: "g4 c4",
G: "[d#4@24 d4@6 ~ a#2@2 c3@2 d3@2 d#3@2 f3@2 g3@2 g#3@2 a#3@2 a#3@2 c4@2 d4@2 d#4@2 f4@2 g4@2 g#4@2 a#4@2 d#4@2 g4@2 d#4@2 d4@2 d#4@24 d#4@2 g4@2 d#4@2 d4@2 d#4@24 d#4]/4",
H: "[~ g4@2 d#4@2 d4@2 d#4@23 c4@16 a3@16 a#3@16 b3@16 c4@15 g#4@16 ~ g4@15 c4@16 d#4@31 ~@4]/6",
I: "~@5 g2@2 a2@2 b2@2 c3@2 d3@2 e3@2 f3@2 g3@2 g3@2 a3@2 b3@2 c4@2 ~ d4@2",
J: "[e4@2 f4@2 g4@2 d#4@2 g4@2 d#4@2 d4@2 d#4@24 d#4@2 g4@2 d#4@2 d4@2 d#4@24 ~ d#4@2 g4@2 d#4@2 d4@2 d#4@24 c4@16 a3@16 a#3@16 b3@16 c4@15 g#4@16 g4@16 c4@16 d#4@24 d4@2]/8",
K: "~@3 a#2 c3 d3 d#3 f3 g3 g#3 a#3!2 c4 d4 d#4 f4",
L: "[g4@2 g#4@2 a#4@2 d#4@2 g4@2 d#4@2 d4@2 d#4@24 d#4@2 g4@2 d#4@2 d4@2 d#4@24 ~ d#4@2 g4@2 d#4@2 d4@2 d#4@23 c4@16 a3@16 a#3@16 b3@16 c4@15 g#4@16 ~ g4@15 c4@16 d#4@27]/8",
})).s("gm_distortion_guitar").gain(0.48)
// drums · kick
const kick = s("bd").struct(`<
~@5 A B C D E F G F@35 H D@3 I B@3 J@2 ~@6 K@4 L K@6 M N@6 K@2 O@4 K@4 P O K@3 Q N R ~@8
>`.pickRestart({
// … 49 more lines
More by Pooh
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.