0:00/0:00
// With You I'm Born Again — PRESTON BILLY
// 84 bpm, 3/4, key D# minor. 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: Full arrangement: all 91 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(84/3)
// 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(`<
~@39 A ~@2 B C D E F G H I J K@2 L@2 M N@2 O@2 P Q@5 R S@2 T U@5 V W X Y Z AA AB AC AD@8
>`.pickRestart({
A: "~ f6@10 bb5@10 ~@11", B: "~@4 ab3@11 ~, ~@3 eb3@27 ~@2", C: "~@8 g3@21 ~@3, ~@3 eb3@27 ~@2",
D: "~@4 f3@11 ~, ~@3 eb3@27 ~@2", E: "~@9 g3@21 ~@2, ~@3 eb3@27 ~@2", F: "~@9 ab3@23, ~@3 eb3@29",
G: "~@9 g3@23, ~@4 eb3@27 ~", H: "~@5 f3@11, ~@4 eb3@27 ~", I: "~@10 g3@21 ~, ~@5 eb3@27",
J: "~@15 [bb4,db5]@5 ~ eb5@11", K: "[~@20 eb5@3 f5@2 ~ gb5@2 ab5@3 bb5@33]/2",
L: "[~@7 db5 ~ db6@5 bb5@2 ~ ab5@3 eb5@2 f5@3 db5@2 bb4@3 ab4@27 ~@7]/2", M: "~@3 bb4@2 db5@2 ~ eb5@15 ~@9",
N: "[~@4 ab5 ~ f5 ~ eb5@4 ~ bb5@5 f5@6 bb4@3 ab4@2 bb4@26 ~@9, ~@3 bb5@2 g5@2 ~@57]/2",
O: "[~@14 eb4@2 f4@3 gb4@2 ab4@3 bb4@3 b4@3 db5@25 ~ bb4@2 ~ b4@2 db5@2 ~]/2", P: "eb5@2 ~ db5@21 ab4@3 bb4@2 b4@2 ~",
Q: "[db5@2 ~ db5@22 ~ b4 ~ db5 eb5@18 ~@3 eb5@2 ~ db5@3 b4@2 bb4@3 eb5@16 bb4@2 eb5@2 ~ eb5@5 bb4@3 eb5@2 ab5@3 eb5@2 ~ bb4@5 eb5@16 bb4@2 ~ eb5@2 g5@3 eb5@3 bb4@5 g4@5 f4@5 ~ eb4@5 bb3@5 ~@4]/5",
R: "~@2 ab3@2 b3@3 eb4@6 gb4@5 ab4@5 bb4@5 ~@4",
S: "[~@2 bb3@3 db4@3 f4@2 ab4@2 ~ bb4@3 ab4@2 f4@5 ~ db4@5 b3@6 eb4@5 gb4@5 bb4@6 ab4@5 gb4@5 ~ bb3@2]/2",
T: "db4@3 f4@3 ab4@2 bb4@11 ab4@3 ~@3 bb4@5 b3@2, ~@25 ab4 ~@6",
U: "[~ eb4@2 gb4@3 ab4@3 b4@5 db5@5 ~ eb5@5 db5@5 ~@8 ab4@3 bb4@11 ab4@5 bb4@5 ~@8 e4@13 ~ ab4@6 ~@10 ab4@5 ~ b4@5 db5@5 ~ eb5@5 e5@5 db3@3 e3@3 ab3@3 db4@3 eb4@2 e4@3 gb4@3 ab4@3 db2 [ab2,b2] [db3,e3] [ab3,b3] db4 [e4,ab4] b4 db5 [e5,ab5] ~, ~@30 bb3@6 f4@5 ~@24 b3@24 ~@6 [db4,e4]@17 ~@48, ~@33 db4@5 ~@24 ab3@26 ~@65 gb3@2 ~@5, ~@17 eb4@4 ~@19]/5", // Abm Dbm Abm E Dbm
V: "~@21 g4@5 b4@5 ~, e3@13 ~@3, ~@5 g3@21 ~@6, ~@11 b3@16 ~@5, ~ e4",
W: "~@16 gb4@5 a4@5 ~ b4@5, gb3, ~@5 b3@27, ~@5 d4@11",
X: "~@16 g4@5 b4@5 ~ g4@5, g3@29 ~@3, ~@5 c4@24 ~@3, ~@11 e4@19 ~@2",
Y: "~@16 gb4@5 a4@5 ~ b4@5, gb3@29 ~@3, ~@5 b3@27, ~@11 d4@21", Z: "~@16 g4@5 a4@5 ~ b4@5, a3, ~@5 c4@27, ~@11 e4@21",
AA: "~@16 gb4@5 ~ a4@5 gb4@5, gb3@27 ~@5, ~@5 b3@27, ~@11 d4@11 eb4@10",
AB: "~@17 e4@5 g4@6 a4@4, e3@15 ~, ~@6 g3@25 ~, ~@11 b3@21", AC: "~@19 e4@6 g4@6 a4, ~ e3@15, ~@7 g3@25, ~@13 b3@19",
AD: "[~@6 e4@33 ~@4 gb4@31 ~@72 b5@4 ~@2 [b3,e4]@59 ~@9 [b4,e5]@23 ~@13, ~@3 g3@34 ~@4 [a3,b3]@37 ~@7 a2@24 b3@24 e5@6 a5@10 ~@107, ~@4 b3@34 ~@53 b2@24 e4@34 ~ e3@62 ~@44, ~@5 c4@34 ~@3 e4@37 ~@18 e3@24 a4@28 ~@2 ab3@60 ~@45, ~@103 a3@24 b4@22 ~@69 ab4@24 ~@14]/8", // E5 Asus2
})).s("gm_piano").gain(0.25).pan(0.3)
// bass · fretless bass
const bass = note("<~@41 A@6 B@2 C@8 D@8 E@7 F@3 G H I H J K L@3 ~ M@5 ~>".pickRestart({
A: "[~@29 eb2@27 eb2@5 ~ eb2@10 eb2@16 eb2@2 ~@4 eb2@24 ~@3 eb2@2 ~@3 eb2@21 bb2@5 ~ bb1@5 eb2@27 eb2@2 ~@3 eb2@2]/6",
B: "[~@9 eb2@16 bb2@5 ~ eb2@27 eb2@2 ~@3 eb2]/2",
C: "[~@21 bb2@10 eb2@26 ~ eb2@5 bb1@23 ~@3 bb1@5 ~ b1@23 eb2@2 ~ gb2@2 ~ b1@2 bb1@21 ~@6 bb1@5 ab1@26 ab1@5 ~ bb1@21 bb2@5 bb1@5 eb2@24 ~@3 eb2@2 ~@3 eb2@3]/8",
D: "[~@13 eb3@2 ~ f3@2 ~ g3@10 ~ eb2@16 bb2@5 eb2@5 bb1@5 ~ bb1@26 bb1@5 b1@24 gb2@2 ~ eb2@2 ~ b1@2 bb1@26 ~ bb1@5 ab1@26 ~ ab1@2 a1@2 ~ bb1@21 bb2@5 bb1@5 eb2@26 ~ eb2@5 eb2@4]/8",
E: "[~@7 bb1@10 ~ g1@10 ab1@21 ~ ab1@5 a1@5 ~ bb1@8 bb1@2 ~ bb1@16 bb2@5 b1@10 ~ b2@10 ~ b1@5 b1@5 ~ bb1@8 bb1@2 bb1@10 ~ bb2@10 ~ ab1@8 ab1@2 ~ ab1@8 ~@3 ab1@5 ab1@2 ~ a1@2 bb1@5 ~@3 bb1@2 ~ bb1@10 ~ bb2@5 bb1@5 e2@2]/7",
F: "[~@4 b2@5 gb3@10 ~ eb2@10 ~ db2@5 ab2@5 ~ e3@16 ab2@5 db2@8 ~ db2@3 db2@8 ~@2 db2@5 ~ eb2@5]/3",
G: "e2@26 e2@5 ~", H: "b1@21 gb2@5 ~ b1@5", I: "c2@21 c2@2 ~ g2@2 ~ e2@2 c2@2 ~", J: "a1@21 a1@5 ~ bb1@5",
K: "b1@8 b1@2 ~ b1@13 ~@3 b1@5", L: "[e2@27 ~ e2@3 eb2@3 d2@35 ~@27]/3", M: "[~@15 b1@72 ~ e2@70 ~@2]/5",
})).s("gm_fretless_bass").gain(0.4)
// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note("<~@50 A B C D E F G@6 H@3 I@7 J@3 K L M N O P Q R@2 ~ S@4 ~@2>".pickRestart({
A: "~@10 [bb3,eb4]@8 ~@3 [eb4,gb4]@11", B: "~@10 [bb3,db4]@8 ~@2 [db4,f4]@11 ~",
C: "~@9 [b3,eb4]@8 ~@3 [eb4,gb4]@11 ~", D: "~@9 db4@8 ~@2 [f4,ab4]@11 ~@2, ~@9 bb3@5 ~@18", E: "~@9 [b3,eb4]@21 ~@2",
F: "~@13 [b4,eb5]@5 ~ [bb4,db5]@11 ~@2", // B Bbm
G: "[~@19 bb4@8 ~@2 [eb4,g4,bb4]@27 ~@22 gb4@5 bb4@5 gb4@5 ~@11 f4@5 ab4@5 ~ f4@5 db4@5 ~@16 gb4@5 ~ bb4@5 gb4@5 ~@11 f4@5 ab4@5 ~@6 db4@5 ab3@3, ~@8 eb4@19 ~@35 gb3@29 ~@34 gb3@32 bb3@26 ~@9, ~@13 ab4@13 ~@41 bb3@24 ~@3 bb3@26 ~@11 b3@27 ~@4 db4@16 ~@14, ~@72 eb4@21 ~@6 db4@16 ~@21 eb4@21 ~@21 f4@11 ~@3]/6", // Eb
H: "[~@8 eb4@5 ~@11 b3@5 ~@16 ab4@5 c5@5 ab4@5 ~@16 ab4@5 ~ bb4@5 ab4@5 g4@4, ~@2 b3@16 eb4@11 bb3@29 ~@2 bb3@29 ~@7, ~@13 gb4@16 ~@5 eb4@26 ~@6 eb4@24 ~@6, ~@39 f4@21 ~@11 f4@19 ~@6]/3",
I: "[~@12 f4@3 ~@3 g4@5 bb4@5 ~@17 gb4@5 ab4@5 gb4@5 ~@17 ab4@5 bb4@5 ~ ab4@5 ~@16 gb4@5 ~ bb4@5 gb4@5 ~@11 f4@5 ~ [f4,bb4]@5 ab4@3 gb4@3 eb4@2 db4@3 ~@16 gb4@5 ~ ab4@5 gb4@5 ~@16 ab4@5 ~ bb4@5 ab4@5 ab3@2, ~@2 g3@24 ~@2 ab3@27 ~@17 f4@22 ~@10 eb4@22 ~@5 db4@24 ~@14 eb4@22 ~@5 db4@27 ~, ~@7 bb3@19 ~@8 b3@27 bb3@32 gb3@32 ~@33 ab3@32 ~@11 f4@21 ~@2, ~@12 eb4@16 ~@11 eb4@22 ~@5 db4@27 ~@6 b3@27 bb3@32 ~@5 b3@27 bb3@32 ~@2]/7", // Bb5
J: "[~@14 ab4@5 ~ [eb4,gb4]@11 ~@38 ab4@6 b4@10 ab4@5 ~ b4@5, ~@4 b3@16 ~@11 ab3@63 ~@2, ~@9 eb4@11 ~@16 b3@57 ~@3, ~@21 eb4@26 ~]/3", // Ebm
K: "~@16 g4@5 b4@5 g4@5 ~, g3@29 ~@3, ~@5 b3@26 ~, ~@11 e4@21", L: "~@16 a4@5 b4@5 ~ a4@5, b3, ~@5 d4@27, ~@5 gb4@11",
M: "~@5 e4@5 ~ g4@5 b4@5 g4@5 ~ e4@5, c4", N: "~@16 b4@5 ~@6 d4@5, b3@27 ~@5, ~@5 d4@16 ~@11, ~@11 gb4@8 ~@2 gb4@11",
O: "~@11 e4@5 ~@11 c4@5, a3@27 ~@5, ~@5 c4@11 g4@16, ~@21 e4@11",
P: "~@5 d4@5 ~ gb4@5 eb4@5 ~ b3@5 eb4@5, b3@11 ~@21", Q: "~@11 e4@6 g4@5 e4@6 b3@4, g3@11 ~@21, ~@6 b3@11 ~@15",
R: "[~@2 g3@5 b3@6 e4@6 g4@6 e4@6 b3@6 ~@27]/2",
S: "[~@27 e3@6 ~@12 e4@42 ~ ab3@39 ~, ~@15 e2@73 ~@40, ~@21 b2@18 b3@48 ~@41, ~@33 a3@54 ~@41]/4",
})).s("gm_acoustic_guitar_nylon").gain(0.2).pan(0.7)
// chords · orchestral harp
const orchestral_harp = note("<A@4 B@2 C@7 D E@7 F@7 G H@8 I@7 J@6 ~@7 K ~@16 L ~@12 M@2 N@2>".pickRestart({
A: "[~@26 eb4@27 ~@5 db4@27 ~@5 b3@31 ~@7]/4", B: "[~@2 bb3@14 ~@3 bb5@45, ~@9 bb4@23]/2",
C: "[~@26 bb4@29 ~@3 ab4@28 ~@3 gb4@30 ~@3 [db4,ab4]@29 ~@4 gb4@30 ~@23 b3@11 eb2@5, ~@23 bb3@31 ~ bb3@29 ~@3 [gb3,b3]@32 ~@34 [ab3,eb4]@31 ~ ab3@25 ~@14, ~@24 [eb3,eb4]@31 ~@2 bb2@29 ~@2 [b2,eb4]@30 ~@3 bb2@31 ~@2 [ab2,b3]@30 ~@2 [bb2,eb4]@33 ~@5, ~@25 gb4@29 ~@2 db4@27 ~@37 [bb3,f4]@31 ~@35 b3@20 ~@18, ~@57 f4@26 ~@104 f4@33 ~@4]/7", // Db5 B5 Ab5 Eb B Abm Eb5 Bb5
D: "~@11 bb3@5 f4@5 ~ ab4@4 ~ [eb4,g4]@5, bb2@7 ~, ~@5 f3@20 ~@7", // Eb
E: "[~@17 eb4@9 bb3 eb4 ~ bb4@29 ~@2 [f4,ab4]@28 ~@5 bb4@27 ~@4 [db4,ab4]@28 ~@5 bb4@28 ~@24 b3@11 eb2@4, ~ g3@26 eb3@31 bb3@29 ~@3 b3@30 ~@2 bb3@30 ~@34 ab3@25 ~@13, ~@6 bb3@20 ~@2 gb4@29 ~@2 [bb2,db4]@29 ~@3 [b2,eb4]@30 ~@2 [bb2,f4]@31 ~ [ab2,ab3,eb4,gb4]@30 ~@3 [bb2,eb4,f4]@33 ~@3, ~@92 gb4@29 ~@66 b3@20 ~@17]/7", // Fm Db5 Bbm B Bb5 Ab7 Bbsus4
F: "[~@12 bb3@6 f4@5 ab4@4 ~@2 [eb4,g4]@32 ~@28 gb4@5 ~@11 ab4@21 ~@25 gb4@5 ~@12 ab4@18 ~@28 gb4@5 bb2@5, ~@2 bb2@28 ~@32 ab2@32 bb2@32 b2@31 bb2@31 ab2@21 eb4@10 ~@5, ~@7 f3@20 ~@40 eb3@16 eb4@10 ~@10 db4@22 ~@11 gb3@21 ~@9 bb3@20 ~@12 gb3@21 ~@5, ~@72 gb3@22 ~@10 f4@21 ~@16 b3@5 eb4@10 ~@11 [db4,f4]@19 ~@18 b3@15 ~@5, ~@78 b3@16 ~@8 bb3@23 ~@6 eb3@25 ~@37 eb3@26 ~@5]/7", // Eb Db
G: "~@6 ab4@16 ~@5 [e3,eb4,ab4]@5, ~@2 bb3@9 ~@2 [ab3,b3]@3, ~@5 [db4,f4]@17 ~@10", // Emaj7 Abm Db
H: "[~@17 gb4@7 ~@3 eb4@59 ~ [bb3,eb4,gb4]@30 ~@3 ab4@29 ~@2 [b2,eb4,bb4]@30 ~@2 bb2@28 ~@3 [ab2,gb4]@29 ~@3 [bb2,gb4]@10, ~@15 [eb3,bb3]@10 ab3@61 ~@31 bb3@30 ~@3 [b3,gb4]@30 ~ bb3@29 ~@2 ab3@30 ~ ab3@13, ~@16 [db4,eb4]@7 ~@3 [db3,b3,db4]@60 ~ [eb3,gb3]@32 [bb2,f4]@32 ~@105, ~@119 db4@29 ~@34 [db4,f4,ab4]@29 ~@2 [b3,eb4]@30 ~@2 [b3,eb4]@11]/8", // Ebm Bmaj7 Ab7 Ebm Eb5 B5 Dbsus2 Db7 …
I: "[~@11 [d4,f4,ab4,b4]@8 ~@19 bb4@5 eb4@5 ~ gb4@5 ~@16 bb4@5 ~@6 gb4@3 ~@3 bb4@31 ~@3 ab4@24 [bb2,bb3,d4,f4,ab4]@12 ~@11 ab4@5 bb4@5 ~ ab4@5 eb4@5 ~@17 g4@5 bb4@5 g4@5 ~ bb3@2, ~@21 [eb3,bb3]@32 ~ [db3,bb3]@29 ~@3 b2@34 [bb2,c4,eb4,f4]@24 ~@13 eb3@32 ~@11 eb4@21 ~@3, ~@26 eb4@11 ~@22 eb4@10 ~@6 eb4@9 ~ b3@32 ~@2 bb3@25 ~@13 bb3@27 ~@6 g3@29 ~@5, ~@32 gb4@11 ~@22 gb4@11 ~@10 [eb4,gb4]@31 ~@46 eb4@16 ~@16 bb3@24 ~@5]/7", // Ddim Bb7 Eb5 Gb Bbsus4 Ebm
J: "[~@8 f4@5 ~ bb4@5 f4@5 ~ d4@5 ~@16 g4@5 bb4@5 ~ g4@5 ~@16 f4@5 ~ ab4@5 f4@5 ~@11 g4@5 ~ bb4@5 g4@5 eb4@5 ~@12 f4@5 bb4@5 ~@6 d4@5 ~@16 g4@5 ~ bb4@5 ~@6, ~@3 d4@11 ~@16 g3@29 ~@3 ab3@30 ~@2 bb3@27 ~@6 bb3@27 ~@5 g3@30 ~@3, ~@35 bb3@27 ~@5 c4@27 ~@71 bb3@24 ~@3, ~@41 eb4@21 ~@11 eb4@22 ~@5 eb4@16 ~@16 d4@11 ~@5 f4@11 ~@11 eb4@21 ~]/6",
K: "~@17 d5 [eb5,f5] [eb4,f4,g5] [g4,ab4] [bb4,c5,d5] eb5 [f5,g5] ab5 bb5 c6 d6 eb6 f6 ~@2, ~@8 c5 ~@7", // Ebsus2 Eb Abmaj7 Bb Fsus2
L: "~ bb5 b5 db6 ~ e6 gb6 ab6 b6@2 ~@22, ~@4 eb6@2 ~ bb6@2 ~@23",
M: "[~@18 e6@4 b5@2 ~ e6@13 ~@26, ~@24 ab5@13 ~@27]/2", N: "[~@7 e6@7 ~@2, ~@25 ab5@28 ~@11]/2",
})).s("gm_orchestral_harp").gain(0.3)
// chords · orchestral harp · soft notes
const orchestral_harp_soft = note("<~@49 A ~@7 B ~@15 C D ~@11 E@2 ~@3>".pickRestart({
A: "~@26 g4@5 ~", B: "~@8 eb3 [f3,g3] [ab3,bb3] c4 [d4,eb4] f4 g4 [ab4,bb4] ~@16",
C: "~@10 b3 db4 gb3 ab3 ~@6 ab4 [eb4,e4] ~@5 [e5,gb5]@2 ~@2 [eb5,e5], ~@14 bb3@2 db4@2 e4@2 ~@2 ab4@2 b4@2 eb5@2 ~ ab5@2 ~, ~@15 b3@2 eb4@2 gb4@2 gb4@2 bb4@2 db5@2 ~@3 db5@2", // Emaj7 Esus2 Emaj7
D: "[gb5,ab5] ~@31", E: "[~@43 b5@11 ~@10, ~@19 e3@24 ~@21, ~@25 a3@21 ~@18, ~@31 b3@18 ~@15, ~@37 e5@15 ~@12]/2",
})).s("gm_orchestral_harp").gain(0.15)
// other · violin
const violin = note("<~@31 A@5 B@8 ~@47>".pickRestart({
A: "[~@23 bb3@21 eb4@11 ab4@32 gb4@21 bb4@11 ab4@21 db5@10 bb4@10]/5",
B: "[eb5@21 ~ f5@21 bb4@11 bb5@16 eb5@5 bb5@5 ~ eb6@5 f6@32 eb4@59 d4@12 eb4@54 ~@13]/8",
})).s("gm_violin").gain(0.25)
// other · string ensemble 1
const string_ensemble_1 = note(`<
A@3 B C@3 ~@7 D@8 E ~@3 F@7 ~@12 G@8 H@8 I@2 J K@8 L@2 M N O P Q R S T U V@8
>`.pickRestart({
A: "[~@37 gb4@21 f5@11 db5@21 eb5@6, ~@13 bb4@16 ~@19]/3", B: "db5@6 bb4@6 ab4@7 eb4@7 db4@6", C: "[~ eb4@37 ~@10]/3",
D: "[~@27 f5@32 eb5@21 ~ bb4@10 eb5@32 f5@22 db5@11 gb5@32 f5@32 ab5@33 g5@3]/8", E: "~@8 eb5@11 bb4@11 ~@2",
F: "[~@28 eb5@31 ~ f5@31 eb5@20 db5@10 ~ b4@72 ~@30]/7", G: "[~@30 ab5@32 g5@32 ~ bb5@32 g5@32 bb5@97]/8",
H: "[~@19 db6@11 bb5@63 ab5@32 g5@27 eb5@5 ~ eb6@5 db6@5 bb5@21 ~ db6@5 ab5@5 db5@5 ab5@5 ~ gb5@5 f5@5 gb5@5 ~ eb5@5 eb5@16 bb5@5 ab5@3]/8",
I: "[~@2 db5@5 ~ db6@21 bb5@21 eb6@11 f6@3]/2", J: "~@9 bb5@5 ab6@2",
K: "[~@23 f6@5 bb6@32 gb5@32 ~ ab5@32 bb5@32 ~ ab5@32 gb5@32 ab5@32 gb5@2]/8", L: "[~@20 bb5@11 b5@20 ~@13]/2",
M: "~@12 db6 eb6 ~ e6 gb6 e6 ~ gb6 ab6 bb5 ~ b5 db6 eb6 ~ e6 gb6 ab6 ~ bb6", N: "[b5,b6]", O: "[a5,a6]", P: "[g5,g6]",
Q: "[gb5,gb6]@21 [d5,d6]@5 ~ [gb5,gb6]@5", R: "[e5,e6]", S: "[gb5,gb6]",
T: "[g5,g6]@16 ~ [b4,b5]@5 [e5,e6]@6 [g5,g6]@4", U: "~@2 [a5,a6]@5 [b5,b6]@6 [g5,g6]@6 [gb5,gb6]@6 [e5,e6]@6 [d5,d6]",
V: "[~@5 [b4,b5]@74 [a4,a5]@73 [ab4,ab5]@88 ~@16]/8", // B A Ab
})).s("gm_string_ensemble_1").gain(0.25).pan(0.3)
// other · string ensemble 1 · soft notes
const string_ensemble_1_soft = note(`<
~@73
[~@21 db5 b4 db5 ~ eb5 e5 eb5 ~ e5 gb5 ab5]
[~ gb5 ab5 ~ bb5 b5 bb5 ~ b5 db6 ~ eb6 ~@20]
~@16
>`).s("gm_string_ensemble_1").gain(0.1).pan(0.3)
// chords · string ensemble 2
const string_ensemble_2 = note(`<
A@4 B@3 ~@5 C@6 D@8 E@3 F@8 G@4 H@5 I@3 J@8 K@8 L@7 M@3 N@2 O P Q R S@2 T@8
>`.pickRestart({
A: "[~@26 [bb3,f4,gb4]@32 [db4,eb4,ab4]@31 ~ [b3,eb4,gb4]@24 ~ [gb3,bb3]@13]/4", B: "[~ [f3,ab3,c4]@37 ~@10]/3",
C: "[~@27 [ab3,ab4]@32 [g3,g4]@32 [eb4,gb4]@32 [f4,ab4]@32 [b3,eb4,gb4,bb4]@32 [bb3,db4,f4,ab4]@5, ~@27 [bb3,eb4]@64 [bb3,db4]@64 ~@37]/6", // Ab G Ebm Fm Bmaj7 Bbm7 Eb5 Bbm
D: "[~@28 [ab3,b3,gb4]@32 [bb3,f4,ab4]@32 [ab3,ab4]@33 [g3,g4]@33 [b3,eb4,gb4]@32 [db4,f4,ab4]@31 ~ [b3,eb4,gb4,bb4]@31 [db4,f4,ab4]@3, ~@14 eb4@32 [bb3,eb4]@33 ~@49]/8", // Abm7 Bb7 Ab G B Db Bmaj7 Db …
E: "[~@28 [b3,eb4,gb4]@31 ~ [db4,ab4]@31 [b3,e4,ab4]@5, ~@15 f4@7 ~@2]/3", // B Db5 E
F: "[~@15 [db4,eb4,gb4]@10 ~ [ab3,b3,e4]@61 [eb4,gb4]@32 [db4,f4,ab4]@32 [b3,eb4,gb4,bb4]@31 ~ [bb3,db4,f4,ab4]@31 [b3,eb4,gb4]@31 ~ [f4,ab4,b4]@10, ~@87 bb3@64 ~@105]/8", // Ebm7 E Ebm Db Bmaj7 Bbm7 B Fdim
G: "[~@11 [d4,f4]@10 ~@65 b3@34 [bb3,f4]@8, ~@11 bb3@75 ~@42, ~@11 eb4@53, ~@22 gb4@99 ~@7]/4", // Dm Bb5
H: "[~@17 d4@12 ab4@32 ~ g4@32 [d4,f4]@32 [eb4,g4]@32 [c4,f4,ab4]@2, ~@29 bb3@129 ~@2, ~@29 eb4@64 ~@67]/5", // Dm Eb Fm
I: "[~@30 [eb4,g4]@32 ~ [d4,f4]@32 [eb4,g4], ~@5 bb3@11]/3", // Eb Dm Eb
J: "[~@31 [eb4,gb4]@31 ~ [db4,f4,ab4]@31 ~ [eb4,gb4]@31 [db4,f4,ab4]@31 ~ [b3,eb4,gb4]@63 ab4@32 g4@3, ~@31 bb4@190 [eb4,bb4]@35]/8", // Ebm Db Ebm Db B Eb5
K: "[~@30 [eb4,gb4]@32 [db4,f4,ab4]@31 [b3,eb4,gb4,bb4]@32 [db4,f4,ab4]@31 ~ [b3,gb4]@32 [bb3,f4]@31 ab4@32 g4@4, ~@30 bb3@63 ~@64 eb4@63 [eb4,bb4]@36]/8", // Ebm Db Bmaj7 Db B5 Bb5 Eb5
L: "[~@28 [b3,eb4,gb4]@32 ~ [db4,f4,ab4]@32 [b3,eb4,gb4,bb4]@32 ~ [db4,f4,ab4]@32 [ab3,b3,eb4,gb4]@32 [bb3,db4,f4,ab4]@32 [b3,eb4,ab4]@2]/7", // B Db Bmaj7 Db Abm7 Bbm7 Abm
M: "[~@20 [bb3,db4,gb4]@11 [ab3,b3,db4,e4]@65]/3", N: "[[e4,g4]@31 ~ [d4,gb4,a4]@32, b3]/2", O: "[c4,e4,g4,b4]",
P: "[b3,gb4,a4], d4@13 ~@3", Q: "[a3,db4,e4,g4]", R: "d4@21 ~ eb4@10, [b3,e4,gb4,a4]",
S: "[e4@33 ~ d4@30, [b3,g4,b4]]/2", // Em
T: "[~@5 [c4,e4,g4,b4]@37 [a3,b3,e4,gb4]@37 [a3,b3,e4,a4]@72 ~ [ab3,b3,e4,ab4]@88 ~@16]/8", // Cmaj7 Asus2 E
})).s("gm_string_ensemble_2").gain(0.25)
// other · string ensemble 1
const string_ensemble_1_2 = note(`<
A@7 ~@5 B@3 C@3 D@8 E@8 F@2 G H@2 I J K@8 L@6 M@8 N@3 O@2 P@7 Q R S R T R U V W@8
>`.pickRestart({
A: "[~@13 eb3@16 db3@16 b2@20 bb2@37 ~@10]/7", B: "[~@27 eb2@64 eb3@5]/3", C: "[~@27 bb2@32 b2@32 bb2@5]/3",
D: "[~@28 ab2@32 bb2@32 eb2@66 ab2@32 bb2@31 ~ b2@31 bb2@3]/8",
E: "[~@28 ab2@31 ~ bb2@31 [e2,e3]@20 [eb2,eb3]@10 ~ [db2,db3]@61 eb3@32 bb2@32 b2@9]/8", F: "[~@23 bb2@31 ab2@10]/2",
G: "~@11 bb2@5", H: "[~@11 [eb2,eb3]@16 [db2,db3]@5]/2", I: "~@11 [b1,b2]@5", J: "~@3 [bb1,bb2]",
K: "[~@29 [eb2,eb3]@129 [eb2,eb3]@98]/8", L: "[~@31 eb3@31 ~ bb2@31 ~ b2@31 bb2@31 ~ ab2@31 ~ bb2@2]/6",
M: "[~@61 eb2@32 ~ eb3@32 bb2@31 b2@32 bb2@31 ~ ab2@32 bb2@3, ~@29 eb3@61 ~@166]/8",
N: "[~@15 eb2@8 ab2, ~@7 eb3@16 ~]/3", O: "[~@29 bb2@32 b2@3]/2",
P: "[~@30 bb2@32 ab2@32 bb2@32 [e2,e3]@21 ~ [eb2,eb3]@11 [db2,db3]@65]/7", Q: "[e2,e3]@31 ~", R: "b2", S: "c3",
T: "a2", U: "e3", V: "~ [d2,d3]@15", W: "[~@5 [c2,c3]@37 [b1,b2]@37 [b1,b2]@72 ~ [e2,e3]@88 ~@16]/8",
})).s("gm_string_ensemble_1").gain(0.25).pan(0.7)
// other · vibraphone
const vibraphone = note("<~@42 A B C D E F G H ~@41>".pickRestart({
A: "~@19 eb6@10 ~@3", B: "~@19 eb6@11 ~@2", C: "~@19 bb6@11 ~@2", D: "~@19 bb6@6 ~@7", E: "~@10 eb6@5 ~",
F: "~@20 eb6@11 ~", G: "~@20 bb6@11 ~", H: "~@21 bb6@6 ~@5",
})).s("gm_vibraphone").gain(0.2)
// other · flute
const flute = note("<~@22 A@6 B@4 ~@14 C D E F ~@6 G@5 H@5 ~@3 I@6 J K L M N O P Q R@8>".pickRestart({
A: "[~@8 eb5@11 bb4@11 gb5@32 db5@5 ~ eb5@5 f5@10 ab4@10 ~ gb5@31 ab5@5 eb5@5 ~ f5@10 db5@8 ~@2 bb5@31 ~ db6@4]/6",
B: "[~ c6@5 ab5@5 eb5@5 db5@5 ~ ab4@5 gb4@20 bb4@10 ~ b4@61 ~@9]/4", C: "~@9 bb5@2 ~ f6@2 bb6@2 ~ bb6@2 ~ bb6@5 ~@7",
D: "~@9 bb5@2 ~ eb6@2 ~ bb6@2 bb6@2 ~ bb6@5 ~@7", E: "~@10 bb5@2 d6@2 ~ bb6@2 ~ bb6@2 bb6@4 ~@8",
F: "~@10 bb5@2 ~ eb6@2 bb6@2 ~ bb6@2 ~ bb6@4 ~@7",
G: "[~@29 g5@27 eb5@5 ~ eb6@5 db6@5 bb5@21 ~ db6@5 ab5@5 db5@5 ab5@5 ~ gb5@5 f5@5 gb5@5 ~ eb5@5 eb5@16 bb5@5 ab5@3]/5",
H: "[~@2 db5@5 ~ db6@21 bb5@21 eb6@10 ~ f6@21 bb5@10 ab6@26 ~ f6@5 g6@10 ~ bb5@21 ~@4]/5",
I: "[~@30 eb6@5 db6@5 ~ bb5@11 gb5@10 ab5@32 gb5@21 ~ bb5@11 b5@65]/6", J: "b6@31 ~", K: "a6@29 ~@3", L: "g6",
M: "gb6@21 d6@5 ~ gb6@5", N: "e6", O: "gb6", P: "g6@16 ~ b5@5 e6@5 ~ g6@4", Q: "~@2 a6@5 b6@6 g6@6 gb6@6 e6@6 d6",
R: "[~@5 b5@65 ~@9 a5@72 ~ ab5@88 ~@16]/8",
})).s("gm_flute").gain(0.25)
// other · vibraphone
const vibraphone_2 = note("<~@5 A@2 ~@9 B ~ C ~@2 D E ~@7 F@2 ~@9 G ~@45 H@2 I J>".pickRestart({
A: "[~ db9@2 [bb8,c9] ~ ab8 ~ ab8@2 bb8@2 db9 gb8 db9@2 [bb8,c9] ab8 gb8 ~ [ab8,bb8] ~@2 db9 c9 ~ bb8 ~ gb8 ~ ab8 gb8 gb8@2 c9 ~ db9 c9 gb8 bb8@2 [gb8,ab8] ~ [bb8,c9] db9 gb8 db9 gb8 db9 c9 bb8 ab8 gb8 ab8 [gb8,bb8] gb8!2 ~@8, ~@6 gb8@2 ~@3 c9@2 ~@8 gb8@2 ~@3 ab8@2 ~@3 bb8 ~@2 gb8@2 ~@28]/2", // Bbsus2 Absus2 Gbsus2 Bbsus2 Gb
B: "~@2 c9@2 [gb8,bb8] ab8 ~ [gb8,c9] [ab8,bb8] ~ db9 [gb8,bb8] ~ db9 ~ bb8 gb8 [ab8,db9] c9 bb8 gb8 [ab8,c9,db9] bb8 gb8 [ab8,db9] c9 bb8 ~@5, ~@2 db9 ~@3 db9@2 ~@2 c9@2 ab8@2 c9@2 ~@16", // Gb Gbdim Absus2 Gb Db5 Dbmaj7 Db5
C: "~@9 [c9,db9] bb8 gb8 ab8 db9 bb8 gb8 [ab8,db9] c9 [gb8,bb8] ab8 [c9,db9] bb8 [gb8,ab8] db9 c9 gb8 ab8 [c9,db9] bb8 ~@3, ~@13 c9@2 ~@17", // Dbmaj7 Db5 Gb Dbmaj7 Gbsus2 Dbmaj7
D: "~@31 db9",
E: "c9@2 gb8 [ab8,db9] ~ [gb8,bb8] ab8 [c9,db9] bb8 [gb8,ab8] db9 c9 [gb8,bb8] [ab8,db9] c9 bb8 [gb8,ab8] [c9,db9] bb8 gb8 [ab8,db9] c9 bb8 [gb8,ab8] [c9,db9] bb8 ~ db9 c9 gb8 ~@2, ~@2 c9 ~@13", // Db5 Gb Dbmaj7 Gbsus2 Gb Db5 Gbsus2 Dbmaj7 …
F: "[~@5 gb8@2 ~@2 c9@2 ~ gb8@2 db9@2 ~ bb8@2 gb8 ~ ab8 c9@2 ~ gb8@2 ab8 db9 ~ bb8 gb8@2 ab8 ~ c9@2 bb8 gb8 ab8 ~ c9@2 gb8 bb8 ~ db9@2 ~@2 bb8 ab8 db9 [gb8,c9] ~@10, ~@2 db9@2 bb8@2 ~@5 bb8@2 ~@32 ab8@2 ~@2 gb8@2 ~@13, ~@3 c9@2 ~@3 db9@2 ~@6 c9@2 ~@4 db9 ~@6 c9@2 ~@3 db9@2 ~@4 db9@2 ~@6 c9@2 ~@14]/2", // Gbdim
G: "~ [c9,db9] ~ bb8 ab8 db9 ~ gb8@2 ab8 [c9,db9] ~ [gb8,bb8] ~ [ab8,db9] c9 [gb8,bb8] ab8 db9 c9 bb8 gb8 ab8 [c9,db9] ~ gb8 ab8 db9 c9 bb8 ~@2, ~ gb8 ~ c9 ~@12, ~@7 bb8 ~@24", // Dbmaj7 Gb Db5 Gb Dbmaj7
H: "[~@31 db9@2 c9@2 gb8@2 ~@2 bb8 gb8@2 [ab8,db9] ~ gb8@2 ab8 [c9,db9] bb8 gb8 ~ [ab8,db9] ~ bb8 gb8 ab8 [c9,db9] ~ gb8 ab8 ~ db9 bb8 gb8, ~@38 [c9,db9]@2 ~@3 c9@2 ~@7 c9@2 ~@7 c9@2 ~, ~@44 bb8 ~@12 bb8@2 ~@5]/2", // Db5 Dbmaj7 Db5 Dbmaj7
I: "ab8 db9 bb8 gb8 ab8 db9 [bb8,c9] gb8 ab8 db9 c9 [gb8,bb8] ab8 db9 c9 [gb8,bb8] ab8 db9 [bb8,c9] gb8 ~ [ab8,db9] c9 [gb8,bb8] ~ ab8 ~ bb8 [gb8,ab8] ~ db9 c9, ~ c9@2 ~@22 db9@2 ~@5, ~@13 c9 ~@2", // Bbsus2 Gb Bbsus2 Db5 Gb Gbsus2
J: "bb8 ~ db9 c9 bb8 ~ gb8 ab8 ~@3 ab8 ~@20, ~ gb8@2 ~@7 gb8@2 ~@20",
})).s("gm_vibraphone").gain(0.19)
// other · harmonica
const harmonica = note(`<
~@14 A B C D E F@4 ~@3 G H@7 I@2 ~@3 J K@6 ~@3 L@2 M@8 N@2 O@5 P@4 Q@5 R S T U V W X@2 Y@2 Z@4 ~@2
>`.pickRestart({
A: "~@22 eb4@5 bb4@5", B: "~ gb4@21 ab4@5 f4@5", C: "~ db4@24 ~@2 eb4@5", D: "~ f4@5 gb4@5 bb4@5 ~ ab4@5 gb4@5 f4@5",
E: "~ db4@24 ~@3 eb4@4", F: "[~ f4@5 gb4@5 ~ bb4@5 ab4@5 gb4@5 ~ ab4@16 gb4@5 f4@8 bb3@2 ~ bb4@63 ~@5]/4",
G: "~@7 b4",
H: "[~@2 bb4@5 gb4@5 eb4@5 eb4@10 ~ f4@23 ~@3 db4@5 eb4@20 gb4@10 ~ ab4@47 ~@5 eb4@8 ~ bb4@5 gb4@18 ~@4 ab4@5 f4@5 db4@24 ~@3 eb4@5 f4@4]/7",
I: "[~@2 gb4@5 bb4@5 ab4@5 gb4@5 ~ f4@5 db4@26 ~@10]/2", J: "~@22 eb4@5 ~ f4@4",
K: "[~ gb4@6 bb4@6 ab4@6 gb4@2 ab4@24 ~@4 f4@12 bb4@126 ~@5]/6", L: "[~@31 eb5@33]/2",
M: "[~@10 db5@15 ab4@5 ~ bb4@31 db5@21 ab4@10 ~ gb4@31 ~ ab4@29 ~@2 eb5@16 f5@5 ~ eb5@5 f5@5 bb4@27 eb4@11 bb4@5 gb4@16 ab4@5 ~ f4@2]/8",
N: "[eb4@2 ~ db4@24 ~@2 eb4@6 f4@5 gb4@5 bb4@10 ~ db5@3 bb4@2 f4@3]/2",
O: "[eb4@2 db4@24 ~@3 eb4@5 f4@5 ~ gb4@5 bb4@5 ab4@5 ~ gb4@5 ab4@15 ~ gb4@5 f4@5 bb3@5 bb4@58 ~@6 eb5@4]/5",
// … 72 more lines
More by Billy Preston
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.