0:00/0:00
// Where Is the Love — Roberta Flack
// 107 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 5 "LS 2" piano (copy of ch 4 "LS 1" piano)
// note: Full arrangement: all 94 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: The whole transcription plays 21 ms ahead of the beat; the grid follows it, so its parts stay together.
setcpm(107/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, A@4 for four bars: edit a riff to change every repeat.
// other · piano · "US 1"
const piano = note(`<
~@4 A@2 B@2 A@2 C ~ D@2 E@2 F@4 G H I J K L@4 ~ D@2 E@2 F@4 G H I J K L@4 ~ M@3 N@6 O@2 P Q R@4 S T ~ B@2 A@2 C ~ U V
W X A@2 B@2 Y Z AA@2 AB AC@3 AD AE AF ~
>`.pickRestart({
A: "[~@4 g3 ab3 g3 bb3@3 ~@6]/2", B: "[~@4 f3 g3 f3 ab3@5 ~@4]/2", C: "~@4 f3 g3 f3 ab3",
D: "[~@4 g3 ab3 g3 bb3@6 ab3 g3 ab3]/2",
E: "[g3@3 f3@2 ~ f3@7 ~ g3 ~ g3@3 f3@3 f3@5 f3@2 ~ gb3@2, ~@15 ab3@2 ~@15]/2",
F: "[f3@3 eb3@3 eb3@18 bb3@2 ab3@2 gb3@2 bb3@34]/4", G: "~@2 eb4@2 eb4 ~ eb4 ~ eb4 ~ eb4 ~ eb4 ~ eb4 ~",
H: "eb4@4 db4 ~ db4@8 ~@2", I: "~@2 bb3@2 bb3 ~ bb3 ~ bb3@2 ab3@2 gb3@2 ab3@2", J: "bb3@4 db4@2 bb3@7 ~@3",
K: "~@2 eb3@2 eb3 ~ eb3 ~ eb4@2 eb4 ~ eb4 ~ eb4 ~",
L: "[eb4@4 db4 ~ bb3@4 ab3 ~ gb3@2 f3@4 bb3@2 bb3 ~ bb3@2 c4@2 eb4@2 c4@2 f4@20 ~@14]/4",
M: "[~@8 g3@2 ab3@2 g3@2 bb3@10 g3@2 ab3@2 g3@2 bb3@10 g3@2 ab3@2 g3@2 bb3 ~]/3",
N: "[~@2 ab3 ~@3 g3 ~@3 f3@12 ~@2 f3@2 gb3@2 f3@2 ab3@4 gb3@2 ~@2 f3@2 ~@2 eb3@2 ~@2 bb2@4 bb3@12 bb4@20 eb5@2 eb5 ~ eb5@2 eb5@2 eb5@2 eb5@2 eb5@2]/6",
O: "[eb5@2 db5 db5@6 ~ bb4!3 ab4 gb4 ab4]/2", P: "bb4@4 db5@2 bb4@7 ~@3",
Q: "~@2 eb4@2 eb4 ~ eb4 ~ eb5 ~ eb5 ~ eb5 ~ eb5@2",
R: "[eb5@4 db5@2 bb4@4 ab4@2 gb4@3 f4@3 bb4 ~ bb4@2 bb4@2 c5@2 eb5@2 c5@2 f5@20 g5@3 f5@3 eb5@3 c5@3 bb4@2]/4",
S: "g4@2 ~ g4@3 f4@2 g4@2 ~ g4@3 f4@2", T: "g4 bb4@2 ~ g3 ab3 g3 bb3", U: "~@4 g3 ab3 g3 c4", V: "bb3@7 ~@9",
W: "~@8 f3@2 g3@3 ~ f3@2", X: "ab3 ~", Y: "~@4 eb3 f3 eb3 g3", Z: "f3@14 eb3 f3",
AA: "[g3 f3 eb3@8 c3@2 eb3 ~ g3@4 ~ bb3@7 eb4@4 b3@2]/2", AB: "bb3@9 ~ c4@4 bb3 ~",
AC: "[g3 f3 eb3@8 c3@2 eb3 ~ f3@4 eb3@8 c3@2 eb3 ~ g3@4 bb3@8 ab3@2 g3@2 f3 ~]/3", AD: "g3 g3@14 ~, ~ ab3 ~@14",
AE: "~@10 db5 d5@3 bb4@2", AF: "~@2 g4 ab4 g4@12",
})).s("gm_piano").gain(0.42).pan(0.3)
// chords · piano · "LS 1"
const piano_2 = note("<A@4 B C D@2 E F G H I J@6 K@8 L@3 M@7 N@8 O P@2 Q@7 R@7 S@4 T@7 U@8 V@4 W@7 ~@2>".pickRestart({
A: "[f3,g3,bb3,d4]/4", B: "[f3,g3,bb3,d4]@4 [f3,g3,bb3,d4] ~@5 [f3,g3,bb3,d4]@3 ~@3, ~@10 ab3 ~@5",
C: "[c4,db4,f4,ab4]@4 [c4,db4,f4,ab4]@5 ~ [c4,db4,f4,ab4]@3 ~@3", // Dbmaj7
D: "[[bb3,c4,eb4,g4]@3 ~ [bb3,c4,eb4,g4]@3 ~@3 [bb3,c4,g4]@5 ~ [ab3,b3,f4]@6 [ab3,b3,eb4,f4] ~@3 [ab3,b3,eb4,f4]@5 ~, ~@10 eb4@11 ~@11]/2", // Cm7 C7 Fdim Fm7b5
E: "[f3,g3,bb3,d4] ~@3 [f3,g3,bb3,d4]@5 ~ [f3,g3,bb3,d4]@3 ~@3", F: "[bb3,db4,f4,ab4]@15 ~",
G: "[bb3,c4,eb4,g4]@10 [bb3,c4,eb4,g4]@5 ~, db4 ~@15", // Cm7
H: "[ab3,b3,eb4,f4] ~ [ab3,b3,eb4,f4] ~@3 [ab3,b3,eb4,f4]@8 ~@2", I: "[f3,g3,bb3,d4]@7 ~",
J: "[bb3@8 ~@8 [ab3,f4]@8 ~@7 eb4@9 [f3,ab3,c4,eb4]@3 [f3,ab3,c4,eb4]@2 [f3,ab3,c4,eb4]@2 [f3,ab3,c4,eb4], [db4,f4,ab4] b3 ~, ~ [bb3,c4,eb4,g4]@2 [ab3,bb3,db4,f4]@2 ~, ~@29 e4@16 ~@3, ~@31 gb3@16 ~]/6", // Db Fm7 Db Cm7 Bbm7
K: "[~@2 [f3,ab3,c4,eb4]@4 [f3,ab3,c4,eb4]@4 [f3,ab3,c4,eb4]@3 ~ f3@2 bb3@16 db4@16 eb4@16 [f3,ab3,c4,eb4]@10 [f3,ab3,c4,eb4]@3 f3@3 bb3@16 ab3@16 [f3,ab3,c4,eb4]@16, ~@13 ab3@18 ~ [ab3,bb3,f4]@32 ~@13 [c4,eb4]@32 ~@19, ~@7 [c4,eb4]@16 ~ [db4,gb4,bb4]@16 [f3,g3,d4]@16 ~@8, ~@16 [f3,g3,d4]@32 ~@29 ab3@19 [bb3,db4,f4]@32]/8", // Fm7 Bb7 Cm Gb G7 Bbm
L: "[~ [f3,ab3,c4,eb4]@2 [f3,ab3,c4,eb4] [f3,ab3,c4,eb4]@16 ~@4]/3", // Fm7
M: "[bb3@16 bb3@16 [bb3,c4,eb4,g4]@3 [bb3,c4,eb4,g4]@3 [bb3,c4,eb4,g4]@6 eb4@4 [ab3,eb4,f4]@3 [ab3,eb4,f4]@3 [ab3,b3,eb4,f4]@6 [ab3,f4]@4 [ab3,bb3,db4]@10 [bb3,db4]@4 eb4@20 [f3,ab3,c4,eb4]@4 [f3,ab3,c4,eb4]@2 [f3,ab3,c4,eb4]@4 [f3,ab3,c4,eb4]@2 [f3,ab3,c4,eb4]@2, [f3,g3,d4]@16 ~@6 [c4,g4]@15 e4@16 ~@3, ~@8 [db4,f4,ab4]@16 b3@3 ~@3 b3@9 [gb3,bb3,db4]@16 ~, ~@11 bb3@5 f4@8 ~@4, ~@30 eb4@7 ab3@12 ~@7]/7", // Cm7 Fm7 Fm7b5 Db Bbm7 Bbm Fm7 G7 …
N: "[~@2 [f3,ab3,c4,eb4]@4 [f3,ab3,c4,eb4]@2 [f3,ab3,c4,eb4]@4 f3@4 bb3@16 db4@16 eb4@16 [f3,ab3,c4,eb4]@10 [f3,ab3,c4,eb4]@3 f3@3 bb3@16 ab3@16 [f3,ab3,c4,eb4]@16, ~@3 [c4,eb4]@8 ~ [db4,gb4,bb4]@8 [f3,g3,d4]@8 ~@4, ~@12 ab3@20 [ab3,bb3,f4]@32 ~@13 [c4,eb4]@32 ~@19, ~@16 [f3,g3,d4]@32 ~@29 ab3@19 [bb3,db4,f4]@32]/8", // Fm7 Cm Gb G7 Bb7 Cm G7 Bbm
O: "~ [f3,ab3,c4,eb4]@2 [f3,ab3,c4,eb4] [f3,ab3,c4,eb4]@2 [f3,ab3,c4,eb4]!2", // Fm7
P: "[~@2 [f3,ab3,c4,eb4]@3 [f3,eb4]@2 ~ [f3,eb4]@3 [f3,ab3,c4,eb4]@3 [f3,ab3,c4,eb4]@18, ~@5 [ab3,c4]@5 ~@22]/2", // Fm7 F7 Fm7 Ab
Q: "[~@6 [bb3,d4]@2 [bb3,d4]@4 bb3@4 ab4@3 ~ ab4@4 [bb3,db4,f4,ab4]@4 bb3@4 [bb3,eb4,g4]@2 [bb3,eb4,g4]@4 [bb3,c4,eb4,g4]@2 [bb3,c4,eb4,g4]@4 [c4,eb4]@4 eb4@2 [b3,eb4]@4 [ab3,b3,eb4,f4]@4 [ab3,b3,eb4,f4]@4 [ab3,f4]@2 [bb3,db4]@16 eb4@16 [f3,ab3,c4,eb4]@16, [f3,g3]@6 [f3,g3,d4]@16 bb3@9 eb4@9 ~@16, [bb3,d4]@2 f4@6 [bb3,db4,f4]@4 ~@2 [db4,ab4]@10 [ab3,f4]@3 ~@4 b3@16 ~@9, ~@2 [bb4,d5]@14 c4@3 ~@3 g4@10 [ab3,f4]@16 ~@8, ~ g4@6 f4@5 c4@8 [gb3,bb3,db4]@8]/7", // Bb Bbm7 Eb Cm7 Cm B Fm7b5 Db …
R: "[~@2 [ab4,c5,eb5,g5]@2 ~@10 f3@2 bb3@16 db4@16 eb4@16 [f3,ab3,c4,eb4]@10 [f3,ab3,c4,eb4]@3 f3@3 bb3@16 [ab3,bb3,db4,f4]@16, c4@32 [ab3,bb3,f4]@32 ~@13 [c4,eb4]@32 ~@3, eb4@3 eb4@2 eb4@2 eb4@16 ~ [db4,gb4,bb4]@16 [f3,g3,d4]@16, ~ [ab4,c5,eb5,g5]!2 [ab4,c5,eb5,g5]@8 ~@17, ~@16 [f3,g3,d4]@32 ~@29 ab3@19 ~@16]/7", // Abmaj7 Fm7 Bbm7 Bb7 Cm Gb G7 Abmaj7 …
S: "[eb4@32 ~@4 eb4@4 eb4@3 eb4@21, [ab3,c4]@47 ~@17, f3@9 f3@7, ~@8 eb4 ~@7, ~@17 [ab4,c5,eb5,g5]@15]/4", // Ab Abmaj7
T: "[~@3 bb3 bb3@4 eb4@4 ~@4 bb3@4 bb3@4 [bb3,c4,eb4,g4]@4, g3 [bb3,d4] eb3@8 ~@2 [ab3,b3,eb4,f4]@8 ~@8, [f3,bb3,d4] f4 f3@14 [bb3,c4,g4]@16 [f3,g3,d4]@16 ~@8, ~ [bb4,d5]@7 [db4,f4,ab4]@16 ~@16 [db4,f4,ab4]@16, ~ g4@5 d4@16 ~@34]/7", // Cm7 Bb Fm7b5 Bb C7 G7 Bb Db
U: "[~ bb3 bb3 eb4 ~ bb3 bb3 [bb3,c4,eb4,g4], [ab3,b3,eb4,f4] [db4,f4,ab4] [ab3,b3,eb4,f4] [db4,f4,ab4], ~ [f3,g3,d4]@2 [bb3,c4,g4]@2 [f3,g3,d4]@2 ~]/8", // Cm7 Fm7b5 Db Fm7b5 Db G7 C7 G7
V: "[~ bb3 bb3 [bb3,c4,eb4,g4], [ab3,b3,eb4,f4] [db4,f4,ab4], ~ [eb3,g3,d4]@2 ~]/4", // Cm7 Fm7b5 Db Ebmaj7
W: "[[ab3,b3,eb4,f4]@2 [ab3,b3,eb4,f4]@2 [ab3,b3,eb4,f4]@2 [ab3,b3,eb4,f4]@2 [ab3,eb4,f4]@2 [ab3,eb4,f4]@2 f4@4 [f4,g4,bb4,d5]@3 [f4,g4,bb4,d5]@3 ~@2 d4@4 f4@4 ab4@9 ab4@3 ~@14 g4@2 eb5@4 [ab3,eb4,f4,ab4,b4,eb5,f5]@2 [ab3,eb4,f4,ab4,b4,eb5,f5]@4 [ab3,eb4,f4,ab4,b4,eb5,f5]@2 [ab3,eb4,f4,ab4,b4,eb5,f5]@4 [ab3,b3,eb4,f4,ab4,b4,eb5,f5]@32 ~@4, ~@4 b3@2 [ab3,b3,eb4]@8 bb4@8 [ab4,f5]@2 [eb4,g4]@2 [bb4,c5,eb5,g5] [eb4,g4] [bb4,c5,eb5,g5] eb4 [g4,bb4,c5,g5]@16 ~@10, ~@8 [f3,g3]@6 g4@2 [db4,f4]@16 b3@3 b3@3 ~@18, ~@4 c4@3 [d4,d5]@4 c5 [bb3,c4]@8 ~@8, ~@8 [bb3,d4]@3 [f4,g4,bb4,d5] bb3@4 c4@6 [db5,ab5]@16 ~@18]/7", // Fm7b5 Fm7 Gm7 Fm7b5 Abm Db Eb Cm7 …
})).s("gm_piano").gain(0.17).pan(0.3)
// chords · string ensemble 1 · "CHORD AUT."
const string_ensemble_1 = note(`<
~@4 A B@3 C@2 D@2 E@6 F@5 G@7 H@2 I@8 J K@8 L M@8 N@3 O@5 P@4 Q@4 R@4 Q@4 S T@3 U@4 V@4
>`.pickRestart({
A: "~@10 ab4 ~@5", B: "[[db5,f5,ab5]@4 bb4 bb4@3 [ab4,b4,f5]@4, c5@2 ~, ~ eb5@2, ~ g5 ~]/3",
C: "[g4 g4@3 [db5,f5,ab5]@4, bb4, [f4,d5] ~]/2", D: "[[bb4,c5,g5] [ab4,b4,f5], eb5]/2",
E: "[[f4,g4,d5]@8 [db5,f5,ab5]@8 [c5,g5]@8 [ab4,b4]@8 ~@5 e5@2 [gb4,eb5]@9, bb4@24 f5@13 ~@11, ~ eb5 [bb4,db5], ~@32 ab4@7 ~@9]/6", // G7 Db C5 Abm Ebm Bbm
F: "[[f4,c5]@3 eb5@2 eb5@6 eb5@2 eb5@2 eb5 [g4,d5]@8 [ab4,f5]@8 [eb5,gb5,bb5]@8, ab4@2 bb4@2 ~, ~@3 [f4,c5]@8 f4@13 ~@16, ~@22 c5@11 ~@15 db5@32]/5", // F5 G5 Db Ebm F5
G: "[~@10 eb5@3 eb5@3 [g4,d5]@16 [db5,f5]@16 eb5@22 ~@26 g6@6 f6@2 [c6,g6]@6 ~@2, f4@2 ab4@5, [ab4,c5] bb4@2 [f4,c5]@4, ~@5 eb5@3, ~@48 [ab5,c6,eb6]@7 ~]/7", // G5 Db C5 Ab F5 Ab
H: "[[f4,g4,d5] [db5,f5,ab5], bb4]/2", // G7 Db
I: "[[bb4,c5,g5]@8 b4@8 ~@5 e5@2 [gb4,bb4]@10 ~@8 eb5@7 [g4,d5]@8 [ab4,db5,f5]@8, eb5@16 db5@17 ~@31, ~@8 ab4@15 ~@10 f4@23 ~@8, ~@8 f5@13 ~@2 eb5@18 ~@23, ~@16 bb4@7 ~@10 [ab4,c5]@15 bb4@16]/8", // C7 Gb G5 Db Ab
J: "[eb5,gb5,bb5]", // Ebm
K: "[~@10 eb5@3 eb5@3 [g4,d5]@16 [db5,f5]@16 f4@22 ~@2 eb5@19 ~@5 c6@3 c6@3 [c6,f6]@2 c6@2 ~ [ab5,c6]@3 [ab5,c6,eb6,f6]@2 ~@4 [f5,g5,bb5,d6]@6 ~@6, f4@16 ab4@35 eb6@4 ~ [g4,bb4,d5]@8, [ab4,c5]@8 bb4@16 c5@28 g6@3 ~@9, ~@48 eb5@24 ~@19 eb5@16 [ab4,c5,eb5]@6 ~@15, ~@70 f4@26 [ab5,eb6,g6]@3 f4@8 f4@21]/8", // G5 Db F5 Ab Fm7 Gm7 Gm Ab …
L: "[db5,f5,ab5]", // Db
M: "[g5@2 g5@14 ~@32 gb4@16 ~@18 [ab5,c6,eb6,g6] ~ [ab5,c6,eb6,g6]@3 ~ [ab5,c6,eb6,g6]@4 ~@2 eb5@2 [g4,d5]@16 [ab4,db5,f5]@16, eb5@8 ~@4 eb5@11 ~@9, c5@9 b4@7 [bb4,db5]@16 [ab4,c5]@16 bb4@16, bb4 ab4@2 ~ f4@3 ~, ~@8 f5@3 f5@13 ~@22 [ab5,c6,eb6,g6]@2 ~@16]/8", // Abmaj7 G5 Db Bbm Ab Abmaj7
N: "[[db5,gb5,bb5]@16 ~@13 eb5@3 [g4,bb4,d5]@16, eb5@29 ~@19, ~ f4@2, ~ [ab4,c5] ~]/3", // Gb Gm Ab
O: "[[bb4,db5,f5]@16 ~@36 eb5@12 eb5@3 ~@3 [c6,f6]@2 c6@3 c6@3 ~@2, ab4@64 [c6,g6]@3 eb5@5 g6@6 ~@2, ~@2 [f4,c5]@6 [f4,c5] [f4,ab4,c5,eb5], ~@8 eb5@17 eb6@6 ~ eb6@7 ~, ~@25 [ab5,c6,g6]@7 ab5@8]/5", // Bbm F5 C5 F5 Fm7 Abmaj7
P: "[~ eb4 [db5,f5,ab5]@2 [c5,g5]@2 [ab4,b4,f5]@2, bb4@3 ~, [g4,d5] ~@3, ~ [f5,g5,bb5,d6]@5 ~@10 eb5@16]/4", // Db C5 Fdim G5 Gm7
Q: "[[f4,g4,d5] [db5,f5,ab5] [c5,g5] [ab4,b4,f5], bb4@3 ~, ~ eb5]/4", // G7 Db C5 Fdim
R: "[[f4,g4,d5]@16 [db5,f5,ab5]@16 [c5,g5]@15 ~ [ab4,b4,f5]@16, bb4@23 ~@9, ~ eb5]/4", S: "[eb4,g4,bb4,d5]",
T: "[[db5,f5,ab5]@8 [c5,g5]@8 f5@2 f5 eb5@2 eb5@3, bb4@2 b4, ~@8 eb5@11 ~@5, ~@16 ab4@3 [ab4,f5]@5]/3", // Db C5 Db
U: "[[f5,d6]@3 d6@13 ab5@12 [ab5,c6,db6,f6,ab6]@4 ~@4 [bb5,c6,eb6,g6]@2 ~@2 [c6,g6]@4 [g5,c6,g6]@4 [f5,ab5,b5,eb6,f6]@2 [f5,ab5,b5,eb6,f6]@6 [f5,ab5,b5,eb6,f6]@4 [f5,ab5,b5,eb6,f6]@4, [f4,g4,bb4,d5,g5,bb5] c5@2 ~, c5 ~@2 f5@29 eb5@18 eb5@14, ~ db5 bb4 [ab4,b4], ~@16 g5@3 g5 [bb5,eb6]@4 ~@8]/4", // Dm Dbmaj7 Cm7 C5 Fm7b5 Gm7 Abm Eb5
V: "[[f4,g4,bb4,d5]@63 ~, [f5,g5,bb5,d6]@7 ~@25]/4", // Gm7
})).s("gm_string_ensemble_1").gain(0.09).pan(0.3)
// other · synth brass 2 · "PART 8"
const synth_brass_2 = note(`<
~@5 A@2 B@2 C D E@2 ~@15 F G H@2 I@2 J@4 K L M N O P@4 Q R ~@5 S@3 T@2 U V W@4 X Y A@2 B@2 C D E@2 Z AA AB AC AD AE
AF@2 ~@6 AG AH AI AJ ~
>`.pickRestart({
A: "[~@8 bb3@2 c4@2 eb4 ~ f4@4 eb4@6 ~@8]/2", B: "[~@4 g3 f3 eb3 g3@4 ~@5, ~@8 gb3 ~@23]/2",
C: "~@2 bb3@2 c4@2 eb4 ~", D: "f4@2 g4 f4 eb4@4 ~@8", E: "[~@8 g3@2 f3@2 eb3@2 eb3@7 ~@11]/2",
F: "~@2 g4@3 f4@2 ~ eb4@3 c4@3 ab3@2", G: "g3@2 ~ g3@3 f3@2 g3@2 ~ g3@2 f3@2 ~",
H: "[g3 bb3@3 g3 ab3 g3 bb3@6 ab3 g3 ab3, gb3 ~@31]/2",
I: "[g3@3 f3@3 f3@7 ~ g3 ~ g3@3 f3@3 f3@5 ~ f3@2 gb3@2, ~@15 ab3@2 ~@15]/2",
J: "[f3@3 eb3@3 eb3@18 bb3@2 ab3@2 gb3@2 bb3@34]/4", K: "~@2 eb4@2 eb4 ~ eb4 ~ eb4 ~ eb4 ~ eb4 ~ eb4 ~",
L: "eb4@4 db4 ~ db4@8 ~@2", M: "~@2 bb3@2 bb3 ~ bb3 ~ bb3@2 ab3@2 gb3@2 ab3@2", N: "bb3@4 db4@2 bb3@7 ~@3",
O: "~@2 eb3@2 eb3 ~ eb3 ~ eb4@2 eb4 ~ eb4 ~ eb4 ~",
P: "[eb4@4 db4 ~ bb3@4 ab3 ~ gb3@2 f3@4 bb3@2 bb3 ~ bb3@2 c4@2 eb4@2 c4@2 f4@20 ~ g4@3 f4@3 eb4@2 c4@3 bb3@2]/4",
Q: "g3@2 g3@3 ~ f3@2 g3@2 ~ g3@3 f3@2", R: "gb3 ~ bb3@2 ~@12, ~ g3@2 ~@13", S: "[~ bb3@6 bb4@10 eb5!7]/3",
T: "[eb5@2 db5 db5@6 ~ bb4!3 ab4 gb4 ab4]/2", U: "bb4@4 db5@2 bb4@7 ~@3",
V: "~@2 eb4@2 eb4 ~ eb4 ~ eb5 ~ eb5 ~ eb5 ~ eb5@2",
W: "[eb5@4 db5@2 bb4@4 ab4@2 gb4@3 f4@3 ~ bb4 bb4@2 bb4@2 c5@2 eb5@2 c5@2 f5@20 ~ g5@3 f5@2 eb5@3 c5@3 bb4@2]/4",
X: "g4@2 ~ g4@3 f4@2 g4@2 ~ g4@3 f4@2", Y: "g4 bb4@2 ~@5", Z: "~@8 bb3@2 ~ c4@2 eb4@3", AA: "f4@2 eb4@5 ~@9",
AB: "~@8 g3@2 f3@3 eb3@3", AC: "g3@7 ~@9", AD: "~@4 bb3@4 c4@4 eb4@3 ~", AE: "f4@2 ~ [f4,g4] eb4@4 ~@8",
AF: "[~@8 g3@2 f3@2 eb3@3 g3@9 ~@8]/2", AG: "~@10 ab3@2 g3@2 f3 ~", AH: "g3 g3@14 ~, ~ ab3 ~@14",
AI: "~@10 db5 d5@3 bb4@2", AJ: "~@2 g4 ab4 g4@12",
})).s("gm_synth_brass_2").gain(0.25).pan(0.2)
// chords · piano · "ACC. 1"
const piano_3 = note(`<
A B C D E F G H I J K L M N K L O P Q R S T U V M T W X Y Z S AA K L AB P AC X AD T U AE S T AF X Y AG S N AH AI AJ AK
AL X S T U AM M T W X Y AN AO AP AQ@2 AO AR AS@2 AO AR AT AU AO AV AW@2 AO AR AS@2 AO AX AY@2 AZ@4
>`.pickRestart({
A: "~@15 ab3, f5 f5@2 f4@2 ~@2 f4, ~ [f3,d5]@7 [f3,ab3,c4]@8, ~ bb4@3, ~ d4 ~ d4", // Dm Fm
B: "bb4@3 ~@2 g3 [f3,ab3,c4,f4,g4]@10, [g3,f4]@3 ~@5, d4@2 ~ bb3@3 ~@10, ~ bb4@3", // Fm G7
C: "f4@2 ~@2 d6@2 ~@6 f5 ~ g5@2, d5@3 [ab3,c4,bb4,bb5]@5, ~ f5@2 [f4,f5]@3 f4@2, ~@10 g5@3 f5@3", // Ab F
D: "[f3,f5,g5]@2 [g3,c5,f5,ab5] ~ [ab3,ab4,f5] ~ [bb3,f4,ab4]@6 ~@2 [f4,ab4] ~, bb4 ~@5 c5@9 ~, ~@12 [bb3,f4,ab4]@3 ~, ~@13 g4@2 ~", // Fsus2 Fm Db Bb7 Fm Bb7
E: "[bb3,d4,f4,g4,bb4]@2 ~@8 [g3,bb3,d4,f4] [f3,ab3,c4] ~@4", // Gm7 Fm
F: "[f3,ab3,db4,f4]@2 [f3,ab3,db4,f4] ~@7 [f3,ab3,db4,f4]@4 ~@2", G: "[c4,eb4,g4,bb4]@3 ~, [f3,ab3] ~@15",
H: "[b3,eb4,f4,ab4]@2 [b3,eb4,f4,ab4] ~@7 [eb4,f4,ab4,b4]@5 [bb4,eb5,f5]", // Fm7b5 Bbsus4
I: "[d4,f4]@9 ~ [g3,bb3,d4,f4] ~@5, [b3,bb4] ~@15", // Dm Gm7 Bmaj7
J: "[g3,ab3,db4,d4] ~ [f3,ab3,db4,f4] ~@7 [f3,ab3,db4,f4]@4 ~@2, [f3,f4] ~@7", // Db F
K: "[c4,eb4,g4,bb4]@3 ~, [db3,f3,ab3] ~@15", // Cm7 Db
L: "[bb3,b3,d4,f4,g4,ab4] ~ [b3,eb4,f4,ab4] ~@7 [eb4,f4,ab4,b4]@5 [bb4,eb5,f5], eb4 ~@7", // Bb7 Fm7b5 Bbsus4
M: "[g3,d4,f4]@9 ~ [g3,bb3,d4,f4] ~@5", // G7 Gm7
N: "[g3,ab3,db4,d4,bb4,d5] ~ [f3,ab3,db4,f4] ~@7 [f3,ab3,db4,f4]@4 ~@2, f4 ~@7", // Gm Db
O: "[f4,ab4]@9 ~ [bb3,db4,e4,f4,ab4] ~@5, [b3,bb4] ~@15", // Fm Bbm7 Bmaj7
P: "[gb3,bb3,eb4,gb4]@2 [gb3,bb3,eb4,gb4] ~@7 [gb3,bb3,eb4,gb4]@4 ~@2", // Ebm
Q: "[bb3,db4,ab4] ~@9 eb4@2 ~@4, [c4,g4]@3 ~, eb4@10 f4 ~@5", // Bbm7 C5
R: "[eb4,g4,c5]@2 [eb4,g4,ab4,c5] ~@7 [g4,ab4,c5,eb5]@4 [eb5,f5] ~, ab4 ~@15", // Cm Abmaj7 Ebsus2
S: "[ab3,eb4,g4] ~@9 [g3,bb3,d4,f4] ~@5, [d4,f4]@9 ~@7", // Abmaj7 Gm7 Dm
T: "[f4,bb4]@2 [db4,f4,bb4,db5] ~@7 [db4,f4,bb4,db5]@4 ~@2, [d4,d5] ~@15", // Bb5 Bbm D
U: "[db3,f3,ab3,c4] ~@15, [gb3,bb3,db4]@3 ~", // Dbmaj7 Gb
V: "[db4,eb4,f4,gb4,g4,ab4,bb4,c5] ~ [eb4,g4,ab4,c5] ~@7 eb5@3 [eb5,f5] ~@2, ~@10 [g4,ab4,c5]@5 ~", // Dbmaj7 Abmaj7 Ebsus2 Abmaj7
W: "[ab3,c4,eb4,g4]@3 ~, [db3,f3] ~@15", X: "[eb4,g4,ab4,c5]@2 [eb4,g4,ab4,c5] ~@7 [g4,ab4,c5,eb5]@5 ~",
Y: "[ab3,eb4,g4]@9 ~ [ab3,c4,eb4,g4] ~@5", Z: "~@2 [ab3,g4,c5,eb5] ~@2 [eb4,ab4,c5] ~@2 [eb4,ab4]@7 ~",
AA: "[f3,ab3,db4,f4]@2 [f3,ab3,db4,f4] ~@7 [f3,ab3,db4,f4]@4 ~@2, [g3,d4] ~@15", // Db G5
AB: "[bb3,f4,ab4]@9 ~ [bb3,db4,e4,f4,ab4] ~@5", AC: "[bb3,db4,ab4] [c4,g4]@5 ~@2, eb4@3 ~",
AD: "~@4 [g3,bb3,f4,bb4] [g3,f4] ~ [g3,bb3,f4,bb4]@9", // Gm7 G7 Gm7
AE: "[db4,f4,gb4,g4,ab4,bb4] ~ [eb4,g4,ab4,c5] ~@7 [g4,ab4,c5,eb5]@5 ~, [eb4,c5] ~@7", AF: "[ab3,c4,eb4,g4]@3 ~",
AG: "~@2 [ab3,c4,g4,bb4,c5,eb5,g5] ~@2 [eb4,ab4,c5] ~@2 [eb4,ab4]@7 ~", // Abmaj7 Ab Ab5
AH: "[db3,f3,ab3] ~ eb4@10 ~@4, [c4,g4,bb4]@3 ~, eb4@2 f4 ~@13", // Db C7
AI: "[bb3,d4,f4,g4] ~ [b3,eb4,f4,ab4] ~@7 [eb4,f4,ab4,b4]@5 [bb4,eb5,f5], [c4,eb4,ab4] ~@7", // Gm7 Fm7b5 Bbsus4 Ab
AJ: "[f4,ab4]@9 ~ [bb3,db4,f4,ab4] ~@5, [b3,bb4] ~@15", AK: "~@6 [gb3,bb3,db4,eb4]@9 [ab4,bb4]",
AL: "[c4,eb4,g4]@3 ~, [bb3,db4,ab4] ~@15", // Cm Bbm7
AM: "[db4,eb4,f4,gb4,g4,ab4,bb4,c5] ~ [eb4,g4,ab4,c5] ~@7 [g4,ab4,c5,eb5]@5 ~", // Dbmaj7 Abmaj7
AN: "[ab3,c4,eb4,ab4] [ab3,ab4] ab4 [eb4,ab4,c5]@3 [ab3,ab4] ~@9", AO: "~@7 [g4,bb4,d5,f5] ~@8",
AP: "[c4,f4,ab4,bb4,d5] [c4,f4,bb4] [c4,f4,ab4] ~@3 [ab3,c4,f4]@5 ~ db4@2 ~@2", // Bb7 Fsus4 Fm
AQ: "[[f3,ab3,c4,db4,f4] ~@4 c4 [c4,eb4,g4,bb4,c5,eb5] ~@7 [c4,g4,bb4,c5] ~ [ab3,b3,f4]@15 [eb4,b4], [bb4,c5,eb5]@5 ~@9 eb4@2 ~@16, ~@15 [g3,bb3]@2 ~@15]/2", // Dbmaj7 Cm7 C7 Fdim Abm Cm7 Gm
AR: "[c4,f4,ab4] [c4,f4,bb4] [c4,f4,ab4] ~@3 [ab3,c4,f4]@6 db4@2 ~@2", // Fm Fsus4 Fm
AS: "[[bb4,c5,eb5]@5 c4 [c4,eb4,g4,bb4,c5,eb5] ~@7 [c4,g4,bb4,c5] ~ [ab3,b3,f4]@15 [eb4,b4], [eb4,g4] ~@13 eb4@2 ~@16, ~@15 [g3,bb3]@2 ~@15]/2", // Cm7 C7 Fdim Abm Eb Gm
AT: "[bb4,c5,eb5]@5 c4 [c4,eb4,g4,bb4,c5,eb5] ~@7 [eb4,g4,c5]@2, [eb4,g4] ~@13 [c4,bb4] ~", // Cm7 Cm Eb C7
AU: "[ab3,b3,f4]@15 [eb4,b4]", AV: "[c4,f4,ab4] [c4,f4,bb4] [c4,f4,ab4] ~@3 [ab3,c4,f4]@6 db4 ~@3",
AW: "[[f3,ab3,c4,db4,eb4,f4,g4] ~@4 c4 [c4,eb4,g4,bb4,c5,eb5] ~@7 [c4,g4,bb4,c5] ~ [ab3,b3,f4]@15 [eb4,b4], [bb4,c5,eb5]@5 ~@9 eb4@2 ~@16, ~@15 [g3,bb3]@2 ~@15]/2", // Fm7 Cm7 C7 Fdim Abm Cm7 Gm
AX: "[c4,f4,g4,ab4] [c4,f4,c5] [c4,f4,ab4] ~@3 [ab3,c4,f4]@6 db4 ~@3", // Fm F5 Fm
AY: "[[bb4,c5,eb5]@5 c4 [c4,eb4,g4,bb4,c5,eb5] ~@7 [c4,g4,bb4,c5] ~ [ab3,b3,f4]@8 [ab3,b3,f4]@7 ~, [eb4,g4] ~@13 eb4@2 ~@8 [eb4,ab4,b4] ~@7, ~@15 [g3,bb3]@2 ~@15]/2", // Cm7 C7 Fdim Eb Abm Gm
AZ: "[[bb3,db4,ab4] ~@3 [f4,f5]@2 ~@8 [g3,f4]@2 ~@8 c4@2 c4@3 f4@2 [bb2,f4]@4 ~@6 bb4@21 ~@2, ~@2 f5@2 ~@2 g3@8 ~@2 [ab3,c4]@8 bb2@7 ~@4 [bb2,g3]@27 ~@2, ~@3 d5@3 bb4@12 bb4@2 bb4@4 ~@40, ~@6 [bb3,d4]@6 [bb3,d4]@4 ~@3 ab4@5 ab3@5 [f3,ab3,c4]@7 [bb3,d4,f4,g4]@26 ~@2, ~@10 f4@4 ~@2 f4@6 f4@7 ~@35]/4", // Bbm7 F G7 Bb5 Ab Eb Bb Fm …
})).s("gm_piano").gain(0.22).pan(0.3)
// chords · piano · "ACC. 1" · soft notes
const piano_soft = note(`<
A B C D ~@4 E ~@3 F G ~@2 H ~ I ~ J K L ~ F K ~@2 M N O ~@3 P ~ Q ~ R K L ~ J K ~@2 M S T G ~@2 H ~ I ~ O K L ~ F K
~@2 M U ~ V ~@3 V ~@3 V ~@3 V ~@3 V ~@3 V ~@2 W ~ X@2
>`.pickRestart({
A: "~@3 bb3@5 ~@2 f4@4 ~@2, ~ f4@5 ~@10", B: "bb3 ~ d4@4 ~@10, ~ bb3@2 ~@13",
C: "~@3 f4@3 ~@9 ab3, [g3,bb3,d4]@3 ~@5", D: "~@11 f4 ~@4, ~@10 c4@5 ~", E: "[g3,bb3]@9 ~@7, eb4 ~@15",
F: "bb3@9 ~@7", G: "f3 ~@7", H: "[bb3,db4]@9 ~@7, eb4 ~@15", I: "ab3@3 ~", J: "[g3,bb3] ~, c4 ~@15",
K: "db5 ~@7, db4 ~@15", L: "eb3@3 ~", M: "c4@9 ~@7", N: "~@8 [f3,c4]@7 ~", O: "[g3,bb3]@9 ~@7, c4 ~@15",
P: "db4@9 ~@7", Q: "~ ab3@5 ~@2", R: "~@5 [bb3,bb4] ~@10", S: "~@8 f3@3 f3@4 ~, ~@8 c4@7 ~, ~@11 g3 ~@4",
T: "c4 [g3,bb3]@8 ~@7", U: "~@2 ab3 c4@3 [c4,eb4] ~@9", V: "~@12 [f3,ab3] ~@3", W: "[f3,ab3]@3 ~@5, f4 ~@3",
X: "[~@7 d6@8 ~, ~@11 f5@19 ~@2, ~@6 g5@9 ~]/2",
})).s("gm_piano").gain(0.11).pan(0.3)
// other · electric guitar muted · "ACC. 2"
const electric_guitar_muted = note(`<
~@2 A B ~@9 C D E F G H I J K L M J K N I N O ~@9 P Q M J K R I S O ~@8 J K L M J K R I N T U V W X Y Z W X Y Z AA AB
Y Z W AC U Z W X Y AD W AE ~@2 AF ~
>`.pickRestart({
A: "~@4 bb4@11 ~", B: "~@2 [c4,ab4] ~@13", C: "~@2 bb3@2 ab3@2 f3 ~ c4@2 db4@4 ~@2", D: "~@10 ab4@2 g4@2 eb4 ~",
E: "[c4,db4] ~ db4@2 b3@2 ab3 ~ [db4,eb4]@2 ab4 ~@5", F: "~@10 gb4 ~ e4@2 db4 ~",
G: "b3 ~ b3@2 bb3@2 gb3 ~ db4@2 eb4@4 ~@2", H: "~@10 [f4,g4] ~ eb4@2 c4 ~",
I: "f4@2 f4@2 eb4@2 c4 ~ [f4,g4]@2 c5 ~@5", J: "~@10 eb4 ~ d4@2 bb3 ~",
K: "[gb4,g4] ~ gb4@2 f4@2 db4 ~ ab4@2 bb4@4 ~@2", L: "~@10 b3@2 bb3@2 gb3 ~",
M: "[eb4,f4] ~ f4@2 eb4@2 c4 ~ [f4,g4]@2 c5 ~@5", N: "~@10 f4 ~ eb4@2 c4 ~", O: "~@9 g4 ~ f4 g4!2 f4 ~",
P: "~@2 gb4@2 f4@2 db4 ~ ab4@2 bb4@4 ~@2", Q: "~@10 b3 ~ bb3@2 gb3 ~", R: "~@10 f4@2 eb4@2 c4 ~",
S: "~@10 f4 [f4,g4] eb4@2 c4 ~", T: "~@8 g4!3 f4 g4@2 f4 ~", U: "~@4 f4!2 eb4 f4 ~ f4 ~@2 f4@2 eb4 ~",
V: "[c4,f4] c4 ~@2 c4 ~@2 c4 ~ c4 bb3 f3 c4 ~ db4 ~", W: "~@4 bb4!2 ab4 bb4 ~ bb4 ~@2 bb4@2 ab4 c4",
X: "[d4,eb4] eb4 db4 eb4 ~ db4 ~ eb4 ~ eb4 db4 ~ eb4 ~ f4 b4", Y: "~@4 f4!2 eb4 f4 ~ f4 ~@2 f4@2 eb4 g4",
Z: "c4!2 ~@2 c4 ~@2 c4 ~ c4 bb3 f3 c4 ~ db4 ~", AA: "~@4 bb4!2 ab4 bb4 ~ bb4 ~@2 bb4@2 ab4 ~",
AB: "eb4!2 db4 eb4 ~ db4 ~ eb4 ~ eb4 db4 ~ eb4 ~ f4 b4", AC: "d4 eb4 db4 eb4 ~ db4 ~ eb4 ~ eb4 db4 ~ eb4 ~ f4 b4",
AD: "c4!2 ~@2 c4 ~@2 c4 ~ c4 bb3 f3 c4 ~ db4 f4", AE: "[d4,eb4] eb4 db4 eb4 ~ db4 ~ eb4 ~ eb4 db4 ~ eb4 ~ f4 ~",
AF: "~@2 a4 ab4 ~@12",
})).s("gm_electric_guitar_muted").gain(0.25).pan(0.4)
// other · electric guitar muted · "ACC. 2" · soft notes
const electric_guitar_muted_2 = note(`<
A B C@2 ~@9 D ~@3 E ~@3 F ~@3 F ~@3 G ~@9 F ~@3 F ~@3 G ~@9 F ~@3 F ~@4 H I J ~ H I J ~ H I J ~ H I J ~ H I J ~ H I J
~ K@4
// … 168 more lines
More by Roberta Flack
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.