0:00/0:00
// Your Place or Mine — Rene Froger
// 128 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: bank select 127 (Roland MT-32 map) read through the MT-32 patch table: ch 12 "#WARM BELL" Warm Bell -> pad bowed
// note: Full arrangement: all 136 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(128/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.
// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
~@12 A@12 B C B C D C D C E F C A@2 F C A G H@2 I@2 H@2 I@2 A@3 J A@8 B C B C D C D C E F C A@2 F C A G H@2 I@2 H@2
I@2 A@8 B C B C D C D C K L M N@2 L M N@2 L M N@2 L M N@2 L M N@2 L M N@2 L M N@2 L M N@2 ~
>`.pickRestart({
A: "c2 ~ c2 ~ c2 ~ c2 ~", B: "d2 ~ d2 ~ d2 ~ d2 ~", C: "g2 ~ g2 ~ g2 ~ g2 ~", D: "f2 ~ f2 ~ f2 ~ f2 ~", E: "g2 ~@7",
F: "f2 ~ f2 ~ f2 ~ c2 ~", G: "c2 ~ c2 ~ c2 ~ b1 ~", H: "a1 ~ b1 ~ c2 ~ e2 ~", I: "g1 ~ a1 ~ b1 ~ d2 ~",
J: "c2@2 ~@2 c2@2 ~@2 a#1@3 ~ a1@3 ~", K: "g#2 ~@7", L: "f#2 ~ f#2 ~ f#2 ~ c#2 ~", M: "g#2 ~ g#2 ~ g#2 ~ g#2 ~",
N: "c#2 ~ c#2 ~ c#2 ~ c#2 ~",
})).s("gm_electric_bass_finger").gain(0.29)
// chords · piano · "A.PIANO 3"
const piano = note(`<
~@12 A B A B A B A B A B A B@2 C B C B C B C D E C A@2 E C A F G@2 H@2 G@2 H@2 A B A I A B A B A B A B@2 C B C B C B C
D E C A@2 E C A F G@2 H@2 G@2 H@2 A B A B A B A B@2 C B C B C B C J K L M@2 K L M@2 K L M@2 K L M@2 K L M@2 K L M@2 K
L M@2 K L M@2 ~
>`.pickRestart({
A: "[g3,c4,e4]@2 ~ [g3,c4,e4] ~@2 [g3,c4,e4] ~@3 [g3,c4,e4] ~@2 [g3,c4,e4] ~@2", // C
B: "[a3,c4,f4]@3 [a3,c4,f4] ~@2 [a3,c4,f4] ~@3 [a3,c4,f4] ~@2 [a3,c4,f4] ~@2", // F
C: "[b3,d4,g4]@3 [b3,d4,g4] ~@2 [b3,d4,g4] ~@3 [b3,d4,g4] ~@2 [b3,d4,g4] ~@2", D: "[b3,d4,g4] ~@15",
E: "[a3,c4,f4]@2 ~ [a3,c4,f4] ~@2 [a3,c4,f4] ~ [a3,c4,f4]@3 ~ [a3,c4,f4]@3 ~", // F
F: "[g3,c4,e4]@2 ~ [g3,c4,e4] ~@2 [g3,c4,e4] ~ [g3,c4,e4]@3 ~ [g3,b3,d4]@3 ~", // C G
G: "[[a2,e3,a3,c4]@29 ~ [a2,a3,c4,e4] ~]/2", H: "[g2,g3,b3,d4]",
I: "[a3,c4,f4]@3 [a3,c4,f4] ~@2 [a3,c4,f4] ~ [f3,a#3,d4]@3 ~ [f3,a3,c4]@3 ~", J: "[c4,d#4,g#4] ~@15",
K: "[a#3,c#4,f#4]@2 ~ [a#3,c#4,f#4] ~@2 [a#3,c#4,f#4] ~ [a#3,c#4,f#4]@3 ~ [a#3,c#4,f#4]@3 ~", // F#
L: "[c4,d#4,g#4]@3 [c4,d#4,g#4] ~@2 [c4,d#4,g#4] ~@3 [c4,d#4,g#4] ~@2 [c4,d#4,g#4] ~@2", // G#
M: "[g#3,c#4,f4]@2 ~ [g#3,c#4,f4] ~@2 [g#3,c#4,f4] ~@3 [g#3,c#4,f4] ~@2 [g#3,c#4,f4] ~@2", // C#
})).s("gm_piano").gain(0.1)
// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note(`<
~@12 A B A B C D E F@2 D E G H I J K L M L N O P Q R S T U V W X@4 Y@2 Z@2 AA AB AC AD AE D E F@2 D E G H AF J K L M L
N O P Q R S T U V W AG@4 AH@2 Z@2 AA AB AC AD A B A B H AF J K L M L N AI AJ AK AL AM AJ AK AL AM AJ AK AL AM AJ AK AL
AM AJ AK AL AM AJ AK AL AM AJ AK AL AM AJ AK AL AM ~
>`.pickRestart({
A: "[c3,g3]@15 ~", B: "[c3,a3]@15 ~", C: "~ g3@3 ~ g3@3, c3@15 ~, c4@7 ~ c4@8",
D: "~@3 g3, c3@15 ~, f3 f4, ~ c4@5 ~@2", E: "~@3 g3, c3@15 ~, g3@3 ~, ~ c4",
F: "[~@2 c4@5 ~@11 g3@6 ~@2 g3@6, c3@12 ~@4 c3@15 ~, f3@7 ~ c4@7 ~ c4@7 ~ c4@8, ~@2 [f3,f4] c5@2 ~@3, ~@5 g4@5 ~@6]/2", // F
G: "~@2 c4@2 d4!2 ~ d4 d4@2 d4@2 ~@2 f3@2, [c3,f3] ~@2 c4", H: "d3@4 ~ [a3,f4]@3, [a3,d4]@5 ~@3, ~ c3",
I: "d4@2 ~ d4@3 ~ [d4,g4,b4], d3@15 ~, g3@3 g3, ~ g4@2 ~", J: "[d3,a3,f4]@4 [d3,a3,c4,f4]!2 ~@2",
K: "[g3,d4]@3 [g3,d4,g4]@5, d3", L: "[c3,f3,c4]", M: "d3@3 ~@3 [g3,d4]@2, [g3,d4]@3 ~, ~@3 d3@5",
N: "[g3,d4]!2 [g3,d4]@2, d3", O: "~ [c3,c#3,f#3] [a#2,b2,e3,f3] [a2,d3,d#3] ~@12, [d3,g3,d4,g4,b4] ~@7",
P: "[a3,c4]@2 [a3,c4,f4]@2 c3@4 [a3,c4,f4] [c4,f4] [a3,c4,f4]@2 c3@4, [c3,f3] ~@3", // Am F F5 F F5
Q: "[d3,g3,d4]@2 [b3,d4,g4]@2 d3@4 [g3,b3,d4] [b3,d4] [g3,b3,d4]@2 d3@4", // G5 G Bm G
R: "[g3,c4,e4]@2 ~@2 g4 a4 g4@2 e4@4 [g4,c5] ~ c5 ~, ~@3 [g3,c4]@5 [g3,c4]@8, ~@4 e4@3 ~@5 e4@3 ~, ~@13 [g4,d5]@2 ~", // C C5 G5
S: "[g3,c4,e4]@3 e4@3 c3@2 [g3,c4,e4]@4 [g3,c4,e4]@4, ~@3 [g3,c4]@5 [g4,c5]@8", // C C5
T: "[c3,f3,c4]@2 [a3,c4,f4]@2 c3@4 [a3,c4,f4] [c4,f4] [a3,c4,f4]@2 ~@4", // F5 F F5 F
U: "[d3,g3,d4]@2 [b3,d4,g4]@2 ~@4 [d3,g3,d4] [d3,d4] [d3,g3,d4]@2 ~@4", // G5 G G5 D G5
V: "[g3,c4,e4]@3 e4@3 c3@2 [g4,c5]!2 [g4,c5]@2 ~@4, ~@3 [g3,c4]@5 [g3,c4,e4]@8", // C C5 C
W: "[e4,g4,d5]@2 [e4,g4,c5]@2 [g3,c4,g4]@2 ~ g4, [g3,c4]@2 ~ [b3,d4]", // Em7 C C5 Bm
X: "[[a2,e3,a3,c4]@14 [a2,a3,c4]@2 d4@2 [d4,g4,e5] ~ [d4,g4,d5]@4 [d4,e5] ~ [d4,d5] ~ [d4,g4,d5] ~ [d4,g4,d5] ~, ~@7 e3@7 ~@2, ~@8 [g2,d3,g3]@2 ~@2 g4!2 ~@2]/4", // Am Em7 G5 Dsus2 D G5
Y: "[c4@24 d4 e4 ~@2 [e3,a3]@4, a2, [e3,a3]@7 ~, ~@13 d4@3]/2", Z: "[[d3,g3,d4]@23 ~ [d3,g3,d4]@8]/2",
AA: "g3@4 [g3,e4]@4 [g3,d4]@3 ~ [g3,d4]@4, c3", AB: "a3@4 [a3,d4]@3 ~ [a3,d4]@3 ~ [a3,d4]@4, c3",
AC: "[c3,g3]@4 [c4,e4,g4]@2 g4@2 g4@2 ~ a4 c5@3 ~, ~@2 c5@2 ~ g4 ~@2, ~@6 [c4,e4]@4 [c4,e4]@5 ~", // C5 C
AD: "c3@3 ~ [c3,d4]@4 [f3,a#3,d4,f4,c5]@3 ~ [c3,f3,c4,f4,c5]@4, g3 ~", AE: "~ g3@3 ~ g3@3, c3@15 ~, c4 ~ c4@2",
AF: "d4@2 ~ d4@3 ~ [d4,g4,b4], d3@15 ~, g3@2 ~ g3, ~ g4@2 ~", // G
AG: "[~@20 [e4,a4,e5]!2 ~@2 [e4,a4,d5]!2 ~@2 [e4,a4,c5]!2 ~@2 d4@4 [d4,g4,e5]@2 ~@2 [d4,g4,d5]@8 [d4,e5]@2 ~@2 [d4,d5]@2 ~@2 [d4,g4,d5]@2 ~@2 [d4,g4,d5]@2 ~@2, [a2,e3,a3,c4]@7 e3@7 ~@2, ~@7 [a2,a3,c4] [g2,d3,g3]@2 ~@2 g4!2 ~@2]/4", // A5 Dsus2 Am Em7 G5 Dsus2 D G5 …
AH: "[~@20 [e4,a4,e5]!2 ~@2 [e4,a4,d5]!2 ~@2 [e4,a4,c5]!2 ~@2, a2, [e3,a3]@7 [e3,a3], c4@3 ~]/2", // A5 Dsus2 Am A5
AI: "~ [c#3,d3,g3] [b2,c3,f3,f#3] [a#2,d#3,e3] ~@12, [d#3,g#3,d#4,g#4,c5] ~@7", // G D# G#
AJ: "~ [f#3,a#3]@3 [f#2,c#3,f#3,a#3]@2 [f#2,c#3,g#3]@2, [f#2,c#3]@7 ~@9", // F# F#sus2 F#5
AK: "[g#2,d#3,g#3,c4]@8 [g#2,d#3]@2 [g#3,c4,d#4]@3 ~@3", AL: "[c#3,g#3,c#4]@3 [c#3,g#3,c#4]@5",
AM: "[c#3,g#3,c#4]@5 ~ [c#3,g#3]@6 [c#3,g#3]@4, ~@3 c#4@5", // C#5
})).s("gm_overdriven_guitar").gain(0.15).pan(0.2)
// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
~@12 A@12 B C B C D C E C ~ F G H@2 F G H@2 I@2 G@2 I@2 G@2 A@12 B C B C D C D C ~ F G H@2 F G H@2 I@2 G@2 I@2 G@2 A@8
B C B C D C D C ~ J K L@2 J K L@2 J K L@2 J K L@2 J K L@2 J K L@2 J K L@2 J K L@2 ~
>`.pickRestart({
A: "~@2 c3!2 ~@2 c3!2 ~@2 c3!2 ~@2 c3!2", B: "~@2 d3!2 ~@2 d3!2 ~@2 d3!2 ~@2 d3!2",
C: "~@2 g3!2 ~@2 g3!2 ~@2 g3!2 ~@2 g3!2", D: "~@2 f3!2 ~@2 f3!2 ~@2 f3!2 ~@2 f3!2",
E: "~@2 d3!2 ~@2 f3!2 ~@2 f3!2 ~@2 f3!2", F: "~@2 [f3,a3] f3 a3!2 [f3,a3] f3 ~@2 [f3,a3]!2 ~@2 [f3,a3]!2",
G: "~@2 [d3,g3]!2 ~@2 [d3,g3]!2 ~@2 [d3,g3]!2 ~@2 [d3,g3]!2", // G5
H: "~@2 [c3,g3]!2 ~@2 [c3,g3]!2 ~@2 [c3,g3]!2 ~@2 [c3,g3]!2", I: "~@2 a2!2 ~@2 b2!2 ~@2 c3!2 ~@2 e3!2",
J: "~@2 [f#3,a#3] f#3 a#3!2 [f#3,a#3] f#3 ~@2 [f#3,a#3]!2 ~@2 [f#3,a#3]!2", // F#
K: "~@2 [d#3,g#3]!2 ~@2 [d#3,g#3]!2 ~@2 [d#3,g#3]!2 ~@2 [d#3,g#3]!2", // G#5
L: "~@2 [c#3,g#3]!2 ~@2 [c#3,g#3]!2 ~@2 [c#3,g#3]!2 ~@2 [c#3,g#3]!2", // C#5
})).s("gm_electric_guitar_muted").gain(0.17)
// other · brass section · "BRASS 1"
const brass_section = note(`<
~@12 A B ~ C ~@12 D E F G ~@4 H I J ~ K ~@3 L ~@3 M ~ B ~ N ~@12 D E F G ~@4 H I J ~ K ~@3 L ~@3 M ~ B ~ O ~ B ~@6 D E
F G ~@4 P Q R ~ S Q R ~ P Q R ~ S Q R ~ P Q R ~ S Q R ~ P Q R ~ S ~
>`.pickRestart({
A: "[c4,c5,c6]@3 ~@13", B: "~@5 [c4,c5,c6] ~ [c4,c5,c6]", C: "~@10 [c4,c5,c6] ~ [c4,c5] ~@3, ~@6 c6 ~",
D: "[c4,c5]@7 ~", E: "[d4,d5]@7 ~", F: "[f4,f5]@7 ~", G: "g5 ~ [g4,g5] ~ [g4,g5] ~@3, g4 ~@15",
H: "[d4,d5]@3 [e4,e5] ~@2 [e4,e5]@7 ~@3", I: "~@2 f4 e4", J: "d4@13 ~@3",
K: "~@2 g4@2 [a3,a4]@2 [c4,c5] ~ [e4,e5]@3 [e4,e5] ~@4", // A C E
L: "~ [g3,g4] [a3,a4] [c4,c5] [e4,e5] ~ [d4,d5] [e4,e5] [d4,d5] [c4,c5] [a3,a4] [g3,g4] [c4,c5] ~ [c4,c5] [a3,a4]", // G A C E D E D C …
M: "~@2 a4@4 g4 ~ e4@2 g4 ~ d4@2 c4 ~", N: "~@8 [a#3,a#4,a#5]@2 b4 [a#4,b5] [a3,a4,a5,a#5] ~@3",
O: "~@8 [a#4,d5,a#5]@2 b4 [a#4,b5] [a4,c#5,a5,a#5] ~@3", P: "[d#4,d#5]@3 [f4,f5] ~@4 c#5@5 ~@3, ~@6 [f4,f5]@7 ~@3",
Q: "~@8 f#4@3 ~ f4@4", R: "d#4@13 ~@3",
S: "~ [g#3,g#4] [a#3,a#4] [c#4,c#5] [f4,f5] ~ [d#4,d#5] [f4,f5] [d#4,d#5] [c#4,c#5] [a#3,a#4] [g#3,g#4] [c#4,c#5] ~ [c#4,c#5] [a#3,a#4]", // G# A# C# F D# F D# C# …
})).s("gm_brass_section").gain(0.56)
// other · brass section · "BRASS 1" · soft notes
const brass_section_soft = note(`<
~@12 A ~ B ~@25 C ~@10 B D ~@24 C ~@10 B E ~@2 B ~@13 F ~@7 F ~@7 F ~@7 F ~@5
>`.pickRestart({
A: "~@2 [b4,b5] [a3,a#3,b3,a4,a#4,a5,a#5] [g#3,g#4,g#5] ~@11", // B G#
B: "[b4,b5] [a3,a#3,b3,a4,a#4,a5,a#5] [g#3,g#4,g#5] ~@13", C: "~ g3 ~@6", D: "~@11 [a#3,b3] ~@4",
E: "~@11 [d5,d#5] ~@4", F: "~@8 g#4@5 ~@3",
})).s("gm_brass_section").gain(0.24)
// chords · synth brass 2 · "+SYNBRAS 4"
const synth_brass_2 = note(`<
~@12 A B A B ~@6 C@2 D E D E D E F G ~ H I J@2 H I K@2 ~@8 A B A L ~@8 M N M N M N O P ~ Q I J@2 Q I K@2 ~@8 A B A B A
B A B M N M N M N O P ~ R S T@2 R S T@2 R S T@2 R S T@2 R S T@2 R S T@2 R S T@2 R S T@2 ~
>`.pickRestart({
A: "~@5 g4 c5 g4", B: "a4 f4 ~@2", C: "[~@12 e4@2 f4@17 ~]/2", D: "f4", E: "d4", F: "c4 d4 f4 a4", G: "g4",
H: "[a3,c4,f4]@7 ~ [a3,c4,f4]@3 ~ [a3,c4,e4]@3 ~", I: "[g3,b3,d4]@15 ~", J: "[[g3,c4,e4]@31 ~]/2",
K: "[[g3,c4,e4]@23 ~ [c4,e4,g4]@4 [b3,d4,g4]@4]/2", L: "a4 f4 [a#3,d4] [f3,c4]", M: "[a3,c4]", N: "[g3,d4]@15 ~",
O: "[a3,c4] [d3,d4] [f3,f4] [a3,a4]", P: "[g3,g4]", Q: "[a3,c4,f4]@7 ~ [a3,c4,f4]@3 ~ [g3,c4,e4]@3 ~",
R: "[a#3,c#4,f#4]@7 ~ [a#3,c#4,f#4]@3 ~ [g#3,c#4,f4]@3 ~", S: "[g#3,c4,d#4]@15 ~", T: "[[g#3,c#4,f4]@31 ~]/2",
})).s("gm_synth_brass_2").gain(0.25)
// other · alto sax
const alto_sax = note("<A B C ~@9 D E F E ~@33 D E G@2 ~@36 H I J K L ~@42>".pickRestart({
A: "~@10 d#4 f4 ~@2 f4 ~", B: "[f4,f#4] ~@2 f4@2 g4 ~@10", C: "~@4 d#5 ~ f5 ~ f5@4 ~@4", D: "~@10 g4@2 c5 ~ g4@2",
E: "a4 f4 ~@2", F: "a4@3 ~ g4@4 ~@2 g4@2 c5@2 g4@2", G: "[a4@3 ~ g4@4 ~@4 c5 d5 ~ d5@5 ~ c5 a4@2 ~@8]/2",
H: "~@12 d5@2 ~ c5", I: "~ e5@5 d5 c5 a4@4 ~ d#5 d5 ~", J: "d5@2 c5 ~", K: "~ g4 a4 c5 d5 e5 g5 a5, ~@14 g#5 ~",
L: "b5 c6@15",
})).s("gm_alto_sax").gain(0.48)
// other · alto sax · soft notes
const alto_sax_soft = note("<[~@13 d#4 ~@2] ~ [~@3 c5 ~@3 d#5 ~@8] ~@48 [~@10 g4 a#4 ~@4] [~@4 d5 ~@11] ~@83>")
.s("gm_alto_sax").gain(0.24)
// other · pad poly · "POLYSYNTH"
const pad_poly = note("<A@5 B@7 ~@124>".pickRestart({
A: "[~ [c2,c3]@54 ~ [a#1,a#2]@24]/5", B: "[~@3 c2@27 [c2,c3]@82, ~@2 c3@27 ~@83]/7",
})).s("gm_pad_poly").gain(0.48)
// chords · synth strings 2 · "SYN STR 2"
const synth_strings_2 = note("<A@5 B@7 ~@124>".pickRestart({
A: "[~ [g3,g4]@27 [f3,f4]@27 [g#3,d#4]@25, ~ c4@79]/5", // G F G#5
B: "[~@43 g4@14 [a3,f4]@27 ~@14 g#4@13 ~, ~@2 g4@41 ~@69, ~@2 g3@27 g3@27 ~@28 [g#3,d#4]@27 ~, ~@11 c4@44 ~]/7", // Dm G#5
})).s("gm_synth_strings_2").gain(0.13)
// other · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note("<A@5 B@7 ~@124>".pickRestart({
A: "[~ c6@27 f5@28 d#5@24]/5", B: "[~@3 c6@27 g5@27 f5@27 d#5@14 g#5@14]/7",
})).s("gm_string_ensemble_2").gain(0.14)
// other · pad bowed · "#WARM BELL"
const pad_bowed = note("<~@2 A@2 ~@5 B ~@126>".pickRestart({
A: "[~@13 g4 ~@3 c5 g4@2 ~@12, ~@15 f4@2 ~@15, ~@8 a#4 ~@7]/2", B: "~@13 c5 ~ c4",
})).s("gm_pad_bowed").gain(0.05).pan(0.9)
// other · pad bowed · "#WARM BELL" · soft notes
const pad_bowed_soft = note("<~@9 [~@2 c5 ~ g4 ~@6 g4 d#4 ~@3] ~@126>").s("gm_pad_bowed").gain(0.03).pan(0.9)
// drums · kick
const kick = s("bd").struct("<~@12 [x!4]!123 ~>").gain(0.56)
// drums · snare
const snare = s("sd").struct(`<
~@12 A@3 B A@3 B A@3 B A@7 C D A@3 B A@3 B A@7 E A@3 B A@3 B A@3 F A@7 C D A@3 B A@3 G A@7 H A@3 B A@3 B A@7 C D A@3 B
A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B ~
>`.pickRestart({
A: "~ x ~ x", B: "~@4 x ~@5 x ~ x ~ x!2", C: "~@4 x ~@7 x!4", D: "x ~@9 x ~ x ~ x!2", E: "~@4 x ~@6 x!5",
F: "~@4 x ~@5 x!2 ~@2 x!2", G: "~@4 x ~@7 x ~ x!2", H: "~@4 x ~@3 x!8",
})).gain(0.56)
// drums · hihat
const hihat = s("hh").struct(`<
~@12 A B A B A B A B A B A B A B A B A B A B ~ A B A B A B A B C@8 A B A B A B A B A B A B A B A B A B A B ~ A B A B A
B A B C@8 A B A B A B A B A B A B A B A B ~ A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B ~
>`.pickRestart({
A: "x!8", B: "x!7 ~", C: "x!4",
})).gain(0.48)
// drums · open hat
const open_hat = s("oh").struct(`<
~@13 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@2 A ~ A ~ A ~ A B@8 ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@2 A ~ A ~ A
~ A B@8 ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@2 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
>`.pickRestart({
A: "~@7 x", B: "~ x ~ x ~ x ~ x",
})).gain(0.56)
// drums · tambourine
const tambourine = s("tb").struct("<~@12 A@4 B@16 ~ A@8 C@8 A@4 B@16 ~ A@8 C@8 A@8 B@8 ~ A@32 ~>".pickRestart({
A: "x!16", B: "x!4", C: "~ x ~ x ~ x ~ x",
})).gain(0.32)
// drums · shaker
const shaker = s("sh").struct("<~@12 A@4 B@16 ~ A@20 B@16 ~ A@24 B@8 ~ A@32 ~>".pickRestart({
A: "~ x!3 ~ x!3 ~ x!3 ~ x!3", B: "~ x ~ x ~ x ~ x",
// … 7 more lines
More by Rene Froger
Are You Ready for Loving MeG major · 135 bpmNobody Else (single remix)C major · 126 bpmWoman WomanD major · 68 bpmAlles kan een mens gelukkig makenB♭ major · 85 bpmCalling Out Your NameG major · 130 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 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.