0:00/0:00
// Calling Out Your Name — Rene Froger
// 130 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 134 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(130/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 · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
A B C D E@2 F@2 G@2 F@2 H@2 I@2 G@2 J K A L M@2 N O C P N Q R@2 S@2 T@2 U@4 V@2 W@2 X Y G@2 Z@2 G@2 Z@2 G@2 Z@2 G@2
AA@2 N O C P N Q R@2 S@2 T@2 U@4 V@2 W@2 X Y G@2 Z@2 G@2 Z@2 N O C P N Q AB AC AD@2 AE@2 AF@4 AG@2 AH@2 AI@2 AJ@2 AK@2
AJ@2 AK@2 AJ@2 AK@2 AJ@2 AK@2 AJ@2 AK@2
>`.pickRestart({
A: "[f3,a3,c4,e4]@15 ~", B: "[f3,a3,b3,d4]@15 ~", C: "[e3,g3,b3,d4]@15 ~", D: "[a2,e3,g3,a3,c4]",
E: "[[f3,a3,c4,e4]@13 ~ [b2,f3,a3,b3,d4]@17 ~, d3@11 ~@21]/2", F: "[[c3,e3,g3,b3,d4]@13 ~ [a2,e3,g3,a3,c4]@18]/2",
G: "[[f3,a3,c4,e4]@13 ~ [f3,a3,b3,d4]@17 ~]/2", H: "[[f3,a3,c4,e4]@13 ~ [f3,a3,b3,d4]@10 [f3,a3,b3,d4]@8]/2",
I: "[[e3,g3,b3,d4]@31 ~]/2", J: "[g3,b3,d4,e4]@15 ~", K: "[g3,a3,c4,e4]", L: "[f3,a3,b3,d4]",
M: "[[g3,b3,d4,e4]@31 ~]/2", N: "[f3,a3,c4]@15 ~", O: "[g3,c4,d4]@6 [g3,b3,d4]@9 ~", P: "[g3,a3,c4,e4]@15 ~",
Q: "[f3,a3,c4,d4]", R: "[[d3,f3,g3,a3,c4]@7 [f3,g3,b3,d4]@8 ~]/2", S: "[[e3,g3,d4]@5 ~ [e3,g3,c4]@25 ~]/2",
T: "[[e3,g3,b3]@5 ~ [e3,g3,c4]@8 [e3,g3,d4]@18]/2", U: "[[e3,g3,b3,d4]@15 ~]/2", V: "[[f3,a3,c4]@15 ~]/2",
W: "[[e3,g3,a3,c4]@31 ~]/2", X: "[d3,g3,c4]@15 ~", Y: "[d3,g3,b3]@15 ~", Z: "[[e3,g3,b3,d4]@13 ~ [e3,g3,a3,c4]@18]/2",
AA: "[[e3,g3,b3,d4]@13 ~ [e3,g3,a3,c4]@7 ~ [e3,g3,a3,c4]@10]/2", AB: "[d3,f3,g3,a3,c4]@7 ~",
AC: "~@2 [g3,a3,e4] ~ [g3,a3,c#4,e4] ~ [g3,a3,c#4,e4] ~ [g3,a3,c#4,e4] ~ [a3,c#4,e4]@2 [g3,a3,c#4,e4] ~ [g3,a3,c#4,e4]@2, ~@2 c#4@2 ~@6 g3 ~@5", // A7 A A7
AD: "[[f#3,a3,e4]@5 ~ [f#3,a3,d4]@25 ~]/2", AE: "[[f#3,a3,c#4]@5 ~ [f#3,a3,d4]@8 [f#3,a3,e4]@18]/2",
AF: "[[f#3,a3,c#4,e4]@15 ~]/2", AG: "[[g3,b3,d4]@15 ~]/2", AH: "[[f#3,a3,b3,d4]@31 ~]/2",
AI: "[[e3,a3,d4]@8 [e3,a3,c#4]@15 ~@9]/2", AJ: "[[g3,b3,d4,f#4]@13 ~ [g3,b3,c#4,e4]@17 ~]/2",
AK: "[[f#3,a3,c#4,e4]@13 ~ [f#3,a3,b3,d4]@18]/2", // F#m7 Bm7
})).s("gm_epiano2").gain(0.25).pan(0.4)
// bass · synth bass 2 · "SYN BASS 2"
const bass = note(`<
~@8 A B C D A B C@2 A B C D A B C D E F G H I A J F C@2 D@2 G@2 K L A@2 D@2 M N A B C D A B C D A B C D A B C D E F G
H I A J F C@2 D@2 G@2 O L A@2 D@2 P Q A B C D A B C D E F G D A@2 R S T@2 U@2 V@2 W X G@2 U@2 Y@2 G Z T U G Z T U G Z
T U G Z T U G Z T U
>`.pickRestart({
A: "d2 ~ d2 ~ c2 ~@3 a1 ~ a1 ~ c2 ~ a1 ~", B: "g1 ~ g1 ~ f1 ~@3 e1 ~ e1 ~ d#1 ~ d#1 ~",
C: "c2 ~ c2 ~ a1 ~@3 g1 ~ g1 ~ a1 ~ g1 ~", D: "a1 ~ a1 ~ g1 ~@3 e1 ~ e1 ~ g1 ~ e1 ~",
E: "c2 ~ c2 ~ d2 ~@3 a1 ~ a1 ~ c2 ~ a1 ~", F: "g1 ~ g1 ~ f1 ~@3 g1 ~ g1 ~ f1 ~ f1 ~",
G: "e2 ~ e2 ~ d2 ~@3 b1 ~ b1 ~ d2 ~ b1 ~", H: "a1 ~ a1 ~ g1 ~@3 c1 ~ c1 ~ e1 ~ c1 ~",
I: "f2 ~ f2 ~ c2 ~@3 f1 ~ f1 ~ f1 ~ a1 ~", J: "g1 ~ g1 ~ f1 ~@3 a1 ~ a1 ~ c2 ~ a1 ~",
K: "g1 ~ g1 ~ e1 ~@3 g1 ~ g1 ~ c2 ~ g1 ~", L: "a1 ~ a1 ~ g1 ~@3 g1 ~ g1 ~ g1 ~ d2 ~",
M: "g1 ~ g1 ~ e1 ~@3 d1 ~ d1 ~ e1 ~ d1 ~", N: "g1 ~ g1 ~ e1 ~@3 g1 ~ g1 ~ b1 ~ g1 ~",
O: "g1 ~ g1 ~ e1 ~@3 g1 ~ g1 ~ a1 ~ g1 ~", P: "g1 ~ g1 ~ e1 ~@3 d1 ~ e1 ~ d1 ~ d1 ~",
Q: "g1 ~ g1 ~ e1 ~@3 g1 ~ g1 ~ c2 ~ a1 ~", R: "g1 ~ g1 ~ f1 ~@3 g1 ~ g1 ~ g1 ~ g1 ~",
S: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~@3 a1 ~@3", T: "d2 ~ d2 ~ b1 ~@3 a1 ~ a1 ~ b1 ~ a1 ~",
U: "b1 ~ b1 ~ a1 ~@3 f#1 ~ f#1 ~ a1 ~ f#1 ~", V: "f#2 ~ f#2 ~ e2 ~@3 c#2 ~ c#2 ~ e2 ~ c#2 ~",
W: "a1 ~ a1 ~ f#1 ~@3 a1 ~ a1 ~ f#1 ~ f#1 ~", X: "b1 ~ b1 ~ a1 ~@3 a1 ~ a1 ~ a1 ~ e2 ~",
Y: "a1 ~ a1 ~ f#1 ~@3 e1 ~ e1 ~ f#1 ~ e1 ~", Z: "a1 ~ a1 ~ g1 ~@3 f#1 ~ f#1 ~ f1 ~ f1 ~",
})).s("gm_synth_bass_2").gain(0.35)
// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note("<~@3 A ~@11 B C ~@3 D ~@32 B C ~@3 D ~@75>".pickRestart({
A: "~@10 [a4,c5]!2 ~ [g4,g#4,b4] [f#4,a4,a#4,d5,d#5] [f4,g#4,c5,c#5], ~@6 [a4,c5,e5] ~", B: "~@14 [f4,a4]!2",
C: "~ [d#4,e4,g#4] [d4,f#4,g4,c5,c#5] [c#4,f4,a#4,b4] ~@12, [f4,a4,d5] ~@7", // Emaj7 A#m Dm
D: "~ [d4,d#4,g#4] [c#4,f#4,g4,a#4,b4] [c4,f4,g#4,a4] ~@12, [e4,a4,c5] ~@7", // G# F# F Am
})).s("gm_electric_guitar_clean").gain(0.15).pan(0.6)
// other · fretless bass · "FRETLESS"
const fretless_bass = note(`<
~@16 A B C D A B C E F@2 G H I@2 J K L@2 M N O P@2 Q R@2 S T U V@2 ~@7 A B C D A B C E F@2 G H I@2 J K L@2 M N O P@2 Q
R@2 S T U V@2 ~@6 W F@2 G H I@2 X@2 Y@2 Z AA AB AC@2 AD AE@2 AF AG AH AI ~@20
>`.pickRestart({
A: "~@4 c4@2 a3@2 c4@3 ~ c4@2 b3@2", B: "~@5 g3 a3 ~", C: "~@4 b3@2 b3@2 b3@3 ~ b3 ~ b3@2", D: "c4 a3 ~@6",
E: "c4@2 a3@2 ~@6 g3 ~ g3@2 a3@2", F: "[c4@4 a3@3 ~ f3@3 ~ g3@2 f3@4 d3@2 ~@6 b3 ~ b3@2 c4@2]/2",
G: "d4@4 d4@3 ~ g4@4 d4@2 d4@2", H: "e4@2 c4@4 ~@4 c4 ~ c4@2 d4@2",
I: "[e4@3 ~ e4@2 e4@3 ~ f4@3 ~ d4@6 ~@8 c4@2 d4@2]/2", J: "e4@3 ~ e4 ~ e4@4 e4 ~ e4 ~ e4@2",
K: "f4@2 d4@6 ~@4 g3 ~ g3 ~", L: "[d4@4 c4 ~ c4@3 ~ b3@4 c4@9 ~@3 g3@2 g3@3 ~]/2", M: "d4@4 c4@2 c4@3 ~ b3@4 c4 b3",
N: "a3@4 ~@2 c4@3 ~ c4@3 c4@2 ~", O: "b3 a3 g3 a3 b3@9 ~@3", P: "[~@10 g3 ~ a3@2 b3@4 a3 ~ g3 a3 b3@9 ~]/2",
Q: "~@5 g3 g3@2", R: "[d4@4 c4@2 c4@4 b3@3 ~ c4@10 ~@2 g3@2 g3@3 ~]/2", S: "d4@4 c4@2 c4@4 b3@4 [b3,c4] ~",
T: "a3@6 ~@2 a3@2 ~ b3@2 ~ c4@2", U: "c4@5 ~ b3@2 b3@8", V: "[~@4 e4 d4 c4 e4@2 ~@7]/2", W: "~@10 g3 ~ g3@2 a3@2",
X: "[e4@5 ~ e4 ~ e4 ~ e4@3 ~ a4@5 ~@9 a3 ~ a3 ~]/2", Y: "[e4@4 d4 ~ d4@3 ~ c#4@4 d4@9 ~@3 a3@2 a3@3 ~]/2",
Z: "e4@4 d4@2 d4@3 ~ c#4@4 d4 c#4", AA: "b3@4 ~@2 d4@3 ~ d4@3 d4@2 ~", AB: "c#4 b3 a3 b3 c#4@9 ~@3",
AC: "[~@10 a3 ~ b3@2 c#4@4 b3 ~ a3 b3 c#4@9 ~]/2", AD: "~@5 a3 a3@2",
AE: "[e4@4 d4@2 d4@4 c#4@3 ~ d4@10 ~@2 a3@2 a3@3 ~]/2", AF: "e4@4 d4@2 d4@4 c#4@4 [c#4,d4] ~",
AG: "b3@6 ~@2 b3@2 ~ c#4@2 ~ d4@2", AH: "d4@5 ~ c#4@2 c#4@8", AI: "~@8 f#4@2 e4@2 d4@2 f#4 ~",
})).s("gm_fretless_bass").gain(0.48)
// chords · trombone
const trombone = note(`<
~@38 A@2 ~@6 B@2 C@2 D@2 E@2 ~@8 F G@3 ~ H I@2 ~@5 J@3 K@3 L M N B@2 O@2 D@2 E@2 P@3 Q R@2 S T U@4 ~ V@3 W@3 X Y Z
AA@2 AB@2 AC@2 AD@2 AA@2 AB@2 AC@2 AD@2 AA@2 AB@2
>`.pickRestart({
A: "[~@7 [a3,c4]@2 [b3,d4]@2 [a3,c4]@2 [g3,b3]@3]/2", B: "[e4@12 f4 ~ d4@18]/2",
C: "[d4@12 e4 ~ c4@10 g3@2 a3@2 c4@2 d4@2]/2", D: "[e4@12 f4 ~ d4@17 ~]/2",
E: "[d4@12 e4 ~@9 a3 ~@3 g3 ~@3 a3 ~, ~@14 c4@17 ~]/2", F: "c4", G: "[d4@31 e4@17]/3", H: "a4 g4 f4 e4",
I: "[d4@31 ~]/2",
J: "[[b3,b4]@3 ~ [c4,c5]@2 b3@2 ~@2 [a3,a4]@2 ~@2 b4@16 c4@4 d4@4 c4@4 b3@6, ~@6 b4 ~@7 b3@14 ~@20]/3", // B C A
K: "[a3@21 ~ [f4,a4,d5]@2 ~@2 [e4,g4,c5]@14 ~@8]/3", L: "~@6 [f4,a4,d5]@2 ~@2 [e4,c5]@2 ~ [g4,e5]@2 ~", M: "[g3,d4]",
N: "[g3,b3] ~ a3 ~ c4 d4 ~@2", O: "[d4@12 e4 ~ c4@7 ~ g3@3 ~ a3@2 c4@2 d4@2]/2", P: "[c4@7 d4@17]/3", Q: "e4",
R: "c4/2", S: "d4",
T: "~@2 [g3,c#4,e4] ~ [g3,c#4] ~ [c#4,e4] ~ [c#4,e4]@2 [g3,e4] ~ [g3,e4] ~ [g3,c#4,e4]@2, ~@4 e4@2 g3@2 g3 ~ c#4@2 c#4@2 ~@2", // C#dim Gdim C#m C C#dim
U: "[d5@7 [e4,e5]@4 [e4,e5] ~ [d4,d5]@3]/2", // E D
V: "[[c#4,c#5]@3 ~ [d4,d5]@2 c#4@2 ~@2 [b3,b4]@2 ~@2 c#5@16 d4@4 e4@4 d4@4 c#4@6, ~@6 c#5 ~@7 c#4@14 ~@20]/3", // C# D B
W: "[b3@21 ~ [g4,b4,e5]@2 ~@2 [f#4,a4,d5]@14 ~@8]/3", X: "~@6 [g4,b4,e5]@2 ~@2 [f#4,d5]@2 ~ [f#4,d5]@2 ~",
Y: "[a3,e4]", Z: "[a3,c#4] ~ b3 ~ d4 e4 ~@2", AA: "[f#4@12 g4 ~ e4@18]/2",
AB: "[e4@12 f#4 ~ d4@10 a3@2 b3@2 d4@2 e4@2]/2", AC: "[f#4@12 g4 ~ e4@17 ~]/2",
AD: "[e4@12 f#4 ~ d4@8 d4@2 ~@2 e4@2 ~@4]/2",
})).s("gm_trombone").gain(0.48)
// chords · trombone · soft notes
const trombone_soft = note("<~@40 A@2 ~@37 B@2 C ~@19 D ~ D ~@5 E@2 F ~@22>".pickRestart({
A: "[[f3,a3]@31 ~]/2", B: "[~@5 a4@7 ~@4]/2", C: "~@10 a4@2 ~ c5@2 ~", D: "~@3 g4 ~ f#4@3", E: "[~@5 b4@7 ~@4]/2",
F: "~@10 b4@2 ~ b4@2 ~",
})).s("gm_trombone").gain(0.32)
// other · flute
const flute = note(`<
~@4 A ~@3 B ~@3 B ~@20 C ~@4 D@2 E@2 ~@4 B ~@3 B ~@20 C ~ C ~@2 D@2 E@2 ~@4 B ~@3 B ~@17 F@2 G@2 ~@4 H ~@3 H ~@3 H ~@3
H ~@3 H ~@3
>`.pickRestart({
A: "~ b5 [f5,g5,a5] ~ c6@2 ~@10, c6 ~@7", B: "~@2 [e4,e5] ~ [g4,g5] ~ [e4,e5] ~ [g4,g5] ~ [a4,a5] [g4,g5] ~@4",
C: "~@9 b5 [f5,g5,a5] ~@5, ~@4 c6 ~@3", D: "[~@7 [a4,c5]@2 [b4,d5]@2 [a4,c5]@2 [g4,b4]@3]/2", E: "[[f4,a4]@5 ~@3]/2",
F: "[~@7 [b4,d5]@2 [c#5,e5]@2 [b4,d5]@2 [a4,c#5]@3]/2", G: "[[g4,b4]@5 ~@3]/2",
H: "~@2 [f#4,f#5] ~ [a4,a5] ~ [f#4,f#5] ~ [a4,a5] ~ [b4,b5] [a4,a5] ~@4", // F# A F# A B A
})).s("gm_flute").gain(0.3).pan(0.3)
// other · flute · soft notes
const flute_soft = note(`<
~@4 A B ~@2 C ~@3 C ~@20 D ~@12 C ~@3 C ~@20 D ~ D ~@10 C ~@3 C ~@25 E ~@3 E ~@3 E ~@3 E ~@3 E ~@3
>`.pickRestart({
A: "~@3 [d5,e5] c5 b5 [f5,g5,a5] [d5,e5] c5 b5 [f5,g5,a5] [d5,e5] c5 b5 [f5,g5,a5] [d5,e5], ~@4 c6 ~ c6 ~", // Dsus2 F Dsus2 F Dsus2 F Dsus2
B: "c5 ~@15", C: "[e4,e5] ~@15", D: "~@11 [d5,e5] c5 ~@3", E: "[f#4,f#5] ~@15",
})).s("gm_flute").gain(0.12).pan(0.3)
// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
~@4 A@4 B@4 C@4 ~@8 D@6 E@2 F@7 G@7 H@8 I J@7 D@6 K@2 F@7 G@7 H@8 D@6 L@2 M@7 N@7 O@20
>`.pickRestart({
A: "[[a3,c4,e4]@14 f3@18 g3@13 ~ c4@17 ~, ~@14 [b3,d4]@31 [e3,a3]@18 ~]/4", // Am Bm A5
B: "[[c4,e4]@14 ~@32 e4@17 ~, [f3,a3]@31 e3@32 ~, ~@14 [b3,d4]@31 c4@18 ~, ~ g3]/4", // C F Bm
C: "[[c4,e4]@7 ~@9 [e3,g3]@16, [f3,a3] ~, ~@7 [b3,d4]@25]/4", // C Em F Bm
D: "[[a3,f4]@16 ~@5 b3@6 ~ a3@4 g3@15 ~ [g3,c4]@15 [a3,c4,f4]@32 ~, c4@22 ~@25 e4@17 ~@32, ~@16 [d4,g4]@33 ~@47]/6", // Dm C5 F G5
E: "[[f3,a3,c4]@13 [g3,b3,d4]@18 d4]/2", F: "[~@5 c4@8 ~ d4@8 c4@9 b3@6 c4@8 d4@18 [g3,b3,d4]@49, [e3,g3]@4 ~@3]/7",
G: "[~@15 f3@32 e4@32 c4@16 b3@16 ~, ~@15 [a3,c4]@63 ~ [d4,g4]@31 ~@2]/7", // Am G5
H: "[c4@14 ~@32 a3@17 ~, [f3,a3]@31 [e3,g3]@32 ~, ~@7 b3@16 ~@9]/4", I: "a3",
J: "[b3@30 ~@17 c4@16 ~ b3@29 ~@7 g3@11 ~, ~@30 a3@33 d4@30 c4@17 ~@2, ~@94 a3@17 ~]/7",
K: "[[f3,a3,c4]@13 [g3,b3,d4]@17 ~ d4]/2", L: "[[f3,a3,c4]@13 [g3,c#4,e4]@18 e4]/2",
M: "[~@5 d4@8 ~ e4@8 d4@9 c#4@6 d4@8 e4@18 [a3,c#4,e4]@49, [f#3,a3]@4 ~@3]/7", // A F#m
N: "[~@15 g3@32 f#4@32 d4@16 c#4@16 ~, ~@15 [b3,d4]@63 ~ [e4,a4]@31 ~@2]/7", // Bm A5
O: "[d4@14 ~@32 b3@17 ~, [g3,b3]@31 [f#3,a3]@32 ~, ~@7 c#4@16 ~@9]/4", // G F#m
})).s("gm_string_ensemble_2").gain(0.32).pan(0.6)
// chords · orchestral harp · "HARP"
const orchestral_harp = note(`<
~@19 A ~@3 B C ~@5 D E F ~@4 G@2 ~@3 H ~@14 A ~@4 I ~@5 D E F ~@4 G@2 ~@3 H ~@11 I ~@5 D J K ~@4 L@2 ~@3 M ~@23
>`.pickRestart({
A: "~@10 [e4,g4] [a4,c5] d5 ~@3", B: "~@14 g3 [a3,c4]", C: "d4 [c4,d4] [f4,a4] ~@13, [d3,f3,a3]@3 ~@13",
D: "c4 [d4,f4] [g4,a4] ~@13, [g3,a3] ~@7", E: "~@9 e5 ~@4 [b3,c4,e4] [f4,a4]", F: "[c4,d4] [e4,g4] a4 ~@13",
G: "[~@20 [b4,d5]@5 ~@7, ~@14 e3@9 ~@9, ~@15 [g3,b3]@9 ~@8, ~@16 d4@7 ~@9, ~@19 [e4,g4]@5 ~@8]/2", // Bm G Em
H: "~ [a3,c4] [g4,a4] ~@13, g3 e4 ~@6", I: "~ [c4,d4] [f4,a4] ~@13, [d3,f3,a3]@3 ~@13", J: "~@14 [c#4,d4] [f#4,b4]",
K: "[d4,e4] [f#4,a4] b4 ~@13", // Dsus2 F#m
L: "[~@20 [c#5,e5]@5 ~@7, ~@14 f#3@9 ~@9, ~@15 [a3,c#4]@9 ~@8, ~@16 e4@7 ~@9, ~@19 [f#4,a4]@5 ~@8]/2", // C#m A F#m
M: "~ [b3,d4] [a4,b4] ~@13, a3 f#4 ~@6", // Bm Asus2
})).s("gm_orchestral_harp").gain(0.2).pan(0.2)
// chords · orchestral harp · "HARP" · soft notes · Asus2
const orchestral_harp_soft = note("<~@31 [~@8 d5!2 c5 [a4,b4] g4 f4 ~@2] ~@37 [~@8 d5!2 c5 [a4,b4] g4 f4 ~@2] ~@64>")
.s("gm_orchestral_harp").gain(0.1).pan(0.2)
// chords · piano · "A.PIANO 3"
const piano = note(`<
~@8 A B C D E B C@2 A B C D E B C F G H C F G B I J ~@13 K ~@8 A B C D E B C F G H C F G B I J ~@22 G H C F G B I ~@35
>`.pickRestart({
A: "~@2 [f3,a3,e4] ~@3 [a3,e4]@2 ~@2 [f3,a3,e4] ~@3 [f3,a3,d4] ~, ~@6 f3 ~@9", // Fmaj7 A5 Fmaj7 Dm
B: "~@2 [f3,a3,d4] ~@3 [a3,d4]@2 ~@2 [f3,a3,d4] ~@3 [f3,a3,d4] ~, ~@6 f3 ~@9", // Dm D5 Dm
C: "~@2 [g3,b3,d4] ~@3 [b3,d4]@2 ~@2 [g3,b3,d4] ~@3 [g3,b3,d4] ~, ~@6 g3 ~@9", // G Bm G
D: "~@2 [e3,g3,c4] ~@3 [g3,c4]@2 ~@2 [e3,g3,c4] ~@3 [e3,g3,c4] ~, ~@6 e3 ~@9", // C C5 C
E: "~@2 [f3,a3,e4] ~@3 [a3,e4]@2 ~@2 [f3,a3,e4] ~@3 [f3,a3,e4] ~, ~@6 f3 ~@9", // Fmaj7 A5 Fmaj7
F: "~@2 [g3,a3,c4] ~@3 [a3,c4]@2 ~@2 [g3,a3,c4] ~@3 [g3,a3,c4] ~, ~@6 g3 ~@9", // Am7 Am Am7
G: "~@2 [f3,a3,c4] ~@3 [a3,c4]@2 ~@2 [f3,a3,c4] ~@3 [f3,a3,c4] ~, ~@6 f3 ~@9", // F Am F
H: "~@2 [g3,c4,d4] ~@3 [b3,d4]@2 ~@2 [g3,b3,d4] ~@3 [g3,b3,d4] ~, ~@6 g3 ~@9", // Gsus4 Bm G
I: "~@2 [f3,g3,c4] ~@3 [f3,c4]@2 ~@2 [f3,g3,c4] ~@3 [f3,g3,c4] ~, ~@6 g3 ~@9", // Fsus2 F5 Fsus2
J: "~@2 [f3,g3,b3] ~ g6 a6 [g3,b3,g6]@2 ~@2 [f3,g3,b3] ~@3 [f3,g3,b3] ~, ~@6 f3 ~@9", K: "d5 e5 g5 ~ a6 g6 e6 ~@9",
})).s("gm_piano").gain(0.14).pan(0.6)
// drums · kick
const kick = s("bd").struct("<~@4 [x!4]!130>").gain(0.64)
// drums · clap
const clap = s("cp").struct("<~@4 [~ x ~ x]!130>").gain(0.48)
// drums · snare
const snare = s("sd").struct("<~@4 A@3 B A@23 B A@13 C A@23 D A@13 C A@15 E A F A@11 G A@20>".pickRestart({
A: "~ x ~ x", B: "~@4 x ~@3 x!2 ~ x!2 ~@3", C: "~@4 x ~@6 x!2 ~@3", D: "~@4 x ~@3 x ~@2 x!2 ~@3",
E: "~@2 x ~ x ~ x ~ x ~ x ~ x!3 ~", F: "~@2 x ~ x!3 ~", G: "~@4 x ~@3 x!5 ~@3",
})).gain(0.48)
// drums · pedal hat
const pedal_hat = s("hh").struct("x!4").gain(0.4)
// drums · open hat
const open_hat = s("oh").struct("~ x ~ x ~ x ~ x").gain(0.48)
// drums · crash
const crash = s("cr").struct(`<
~@8 A ~@7 A ~@7 A ~@7 A ~@7 A ~@5 A ~@7 A ~@7 A ~@7 A ~@7 A ~@5 A ~@7 A ~@5 A@3 ~@7 A ~@5 A ~@7 A ~@7 A ~@3
>`.pickRestart({
A: "x",
// … 63 more lines
More by Rene Froger
Are You Ready for Loving MeG major · 135 bpmWoman WomanD major · 68 bpmAlles kan een mens gelukkig makenB♭ major · 85 bpmFor a Date With YouC major · 138 bpmHere in My HeartC minor · 70 bpmI'm a Singer, This Is the Moment (medley)F major · 66 bpmIn DreamsB♭ major · 116 bpmJust Say HelloA♭ major · 98 bpm
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.