0:00/0:00
// Roger and Out — Crosby, Stills, Nash & Young
// 100 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 97 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): Guitar, Guitar2, Guitar4, Solo Guitar1.
setcpm(100/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.
// bass · fretless bass · "Bass"
const bass = note(`<
A B C D E F G H E F G H E F G H E F G I J K L K L K M N O@4 P@2 A B C D E F G H E F G Q R S@2 T@2 S@2 U M V W V W V X
Y Z AA AB AA AB AC AD AE@2 AF@2 S@2 T@2 S@2 T@2 S@2 T@2 S@2 U AG A B C AH@2 ~@3
>`.pickRestart({
A: "a2@2 a2@2 ~@4 g2@2 g2@2 ~@3 e2", B: "d3 ~ b2 ~ a2@2 d3@8 g2 e2", C: "a2@2 a2@2 ~@3 a2 g2@2 g2@2 ~@3 g2",
D: "d3 ~ b2 ~ a2@2 a2@8 ~@2", E: "a2@2 a2@2 ~@3 a2 g2@2 g2@2 ~@3 e2", F: "d3@2 b2@2 a2@2 d3@8 g2 e2",
G: "a2@2 a2@2 ~@4 g2@2 g2@2 ~@3 g2", H: "d3@2 b2@2 a2@2 a2@8 g2 e2", I: "d3 b2 a2!2 a2@2 a2@2",
J: "a2@4 a2@4 g2@2 g2@2 ~@3 b2, ~@7 a2", K: "d3@2 d3@2 ~@2 d3 a2 g2@2 g2@2 ~@2 g2 e2",
L: "a2@2 a2@2 ~@2 g2 e2 g2@2 g2@2 ~@3 b2, ~@7 a2", M: "a2!4", N: "a2@2 a2@2 a2@2 a2@2 a2@2 a2@2 a2@2 ~ b2, ~@7 a2",
O: "[d3@8 g2@6 a2@6 a2@2 e3 d3 a2@2 ~ f#2 f#2@2 a2@2, ~@26 g2@3 ~@3]/2",
P: "[d3@8 g2@6 a2@4 a2@2 a2@2 a2@2 a2 ~@7]/2", Q: "d3@2 b2@2 a2@2 a2@2 a2@4 a2@3 a2",
R: "a2 ~@5 g2 e2 a2@2 a2@2 ~@3 a2", S: "[g2@2 g2@2 ~@3 e2 d3@2 b2@2 a2@2 d3@8 g2 e2 a2@2 a2@2 ~@4]/2",
T: "[g2@2 g2@2 ~@3 g2 d3@2 b2@2 a2@2 a2@8 g2 e2 a2@2 a2@2 ~@3 a2]/2", U: "g2@2 g2@2 ~@3 g2 d3@2 b2@2 a2@2 a2@2",
V: "g2@2 g2@2 ~@3 b2 d3@2 d3@2 ~@2 d3 a2, ~@3 a2 ~@4", W: "g2@2 g2@2 ~@2 g2 e2 a2@2 a2@2 ~@2 g2 e2",
X: "g2@2 g2@2 ~@2 g2 e2 a2@4 a2@4", Y: "a2@2 a2@2 a2!4", Z: "a2@2 a2@2 a2@2 ~ b2 d3@8, ~@3 a2 ~@4",
AA: "g2@6 a2@6 a2@2 e3 d3", AB: "a2@2 ~ f#2 f#2@2 a2@2 d3@8, ~@2 g2@3 ~@11", AC: "g2@3 a2@2 a2!3",
AD: "a2 ~@7 a2@2 a2@2 ~@4", AE: "[g2@2 g2@2 ~@3 e2 d3 ~ b2 ~ a2@2 d3@8 g2 e2 a2@2 a2@2 ~@3 a2]/2",
AF: "[g2@2 g2@2 ~@3 g2 d3 ~ b2 ~ a2@2 a2@8 ~@2 a2@2 a2@2 ~@3 a2]/2", AG: "a2@11 ~@5",
AH: "[d3 ~ b2 ~ a2@2 d3@18 ~@8]/2",
})).s("gm_fretless_bass").gain(0.64).pan(0.7)
// bass · acoustic bass · "Bass2"
const bass_2 = note(`<
A B C D E F G H E F G H E F G H E F G I J K L K L K M N O@4 P@2 A B C D E F G H E F G Q R S@2 T@2 S@2 U M V W V W V X
Y Z AA AB AA AB AC AD AE@2 AF@2 S@2 T@2 S@2 T@2 S@2 T@2 S@2 U AG A B C AH@2 ~@3
>`.pickRestart({
A: "a1@2 a1@2 ~@4 g1@2 g1@2 ~@3 e1", B: "d2 ~ b1 ~ a1@2 d2@8 g1 e1", C: "a1@2 a1@2 ~@3 a1 g1@2 g1@2 ~@3 g1",
D: "d2 ~ b1 ~ a1@2 a1@8 ~@2", E: "a1@2 a1@2 ~@3 a1 g1@2 g1@2 ~@3 e1", F: "d2@2 b1@2 a1@2 d2@8 g1 e1",
G: "a1@2 a1@2 ~@4 g1@2 g1@2 ~@3 g1", H: "d2@2 b1@2 a1@2 a1@8 g1 e1", I: "d2 b1 a1!2 a1@2 a1@2",
J: "a1@4 a1@4 g1@2 g1@2 ~@3 b1, ~@7 a1", K: "d2@2 d2@2 ~@2 d2 a1 g1@2 g1@2 ~@2 g1 e1",
L: "a1@2 a2@2 ~@2 g1 e1 g1@2 g1@2 ~@3 b1, ~@7 a1", M: "a1!4", N: "a1@2 a1@2 a1@2 a1@2 a1@2 a1@2 a1@2 ~ b1, ~@7 a1",
O: "[d2@8 g1@6 a1@6 a1@2 e2 d2 a1@2 ~ f#1 f#1@2 a1@2, ~@26 g1@3 ~@3]/2",
P: "[d2@8 g1@6 a1@4 a1@2 a1@2 a1@2 a1 ~@7]/2", Q: "d2@2 b1@2 a1@2 a1@2 a1@4 a1@3 a1", R: "a1 ~@7 a1@2 a1@2 ~@3 a1",
S: "[g1@2 g1@2 ~@3 e1 d2@2 b1@2 a1@2 d2@8 g1 e1 a1@2 a1@2 ~@4]/2",
T: "[g1@2 g1@2 ~@3 g1 d2@2 b1@2 a1@2 a1@8 g1 e1 a1@2 a1@2 ~@3 a1]/2", U: "g1@2 g1@2 ~@3 g1 d2@2 b1@2 a1@2 a1@2",
V: "g1@2 g1@2 ~@3 b1 d2@2 d2@2 ~@2 d2 a1, ~@3 a1 ~@4", W: "g1@2 g1@2 ~@2 g1 e1 a1@2 a2@2 ~@2 g1 e1",
X: "g1@2 g1@2 ~@2 g1 e1 a1@4 a1@4", Y: "a1@2 a1@2 a1!4", Z: "a1@2 a1@2 a1@2 ~ b1 d2@8, ~@3 a1 ~@4",
AA: "g1@6 a1@6 a1@2 e2 d2", AB: "a1@2 ~ f#1 f#1@2 a1@2 d2@8, ~@2 g1@3 ~@11", AC: "g1@3 a1@2 a1!3",
AD: "a1 ~@7 a1@2 a1@2 ~@4", AE: "[g1@2 g1@2 ~@3 e1 d2 ~ b1 ~ a1@2 d2@8 g1 e1 a1@2 a1@2 ~@3 a1]/2",
AF: "[g1@2 g1@2 ~@3 g1 d2 ~ b1 ~ a1@2 a1@8 ~@2 a1@2 a1@2 ~@3 a1]/2", AG: "a1@11 ~@5",
AH: "[d2 ~ b1 ~ a1@2 d2@18 ~@8]/2",
})).s("gm_acoustic_bass").gain(0.23).pan(0.4)
// chords · acoustic guitar nylon · "Guitar"
const acoustic_guitar_nylon = note(`<
~@4 A B C D A B C E A B F D A G F ~@19 A B C D A B C ~ H I J ~ K I L ~@7 M ~@11 H I N ~ K I N ~ O I J ~ K I L ~@10
>`.pickRestart({
A: "~@6 a4@2 ~@4 b4 ~ g4@2, ~@2 e4@3 c#5@4 ~@2 g4@2 b4@3, ~@3 a4@3 ~@4 d4@4 ~@2, ~ e5 ~ g5", B: "~@13 f#5@2 ~",
C: "~@7 a3 ~@8, ~@3 [a3,e4] ~@4", D: "~@13 e5 ~@2", E: "~@13 e5 c#5 a4", F: "~@6 a3!2 ~@8", G: "~@13 [a4,f#5]@2 ~",
H: "~@7 a4, ~@10 e4@3 c#5@3, ~@11 a4@3 ~@2, ~@3 e5",
I: "~@4 b4 ~ g4@2 ~@8, ~@2 d4@3 b4@3 ~@8, ~@3 g4@3 ~@10, ~ g5 ~@2", J: "~@5 f#5@2 ~@7 a3!2",
K: "~@5 e5 ~@8 a4@2, ~@10 e4@3 c#5@3, ~@11 a4@3 ~@2, ~@3 e5", L: "~@5 [a4,f#5]@2 ~@7 a3!2",
M: "~@5 [e4,a4,c#5,e5,a5] ~@2", N: "~@5 f#5@2 ~@8 a3, ~@7 [a3,e4]",
O: "~@5 e5 c#5 a4 ~@6 a4@2, ~@10 e4@3 c#5@3, ~@11 a4@3 ~@2, ~@3 e5",
})).s("gm_acoustic_guitar_nylon").gain(0.64).pan(0.3)
// other · electric guitar muted · "Guitar2"
const electric_guitar_muted = note("<~@22 A B A ~@31 C ~ D ~@38>".pickRestart({
A: "d4 ~ d4 ~@13", B: "~@14 a3!2", C: "~@8 d4 ~ d4 ~@5", D: "~@6 a3!2 d4 ~ d4 ~@5",
})).s("gm_electric_guitar_muted").gain(0.61).pan(0.2)
// chords · electric guitar clean · "Guitar3"
const electric_guitar_clean = note(`<
A B A C D E F G D E F H D E F G D I F J K L M N M N O P Q R Q R Q S A B A C D E F G D E F T U V@2 W@2 X@2 Y Z@7 AA
AB@2 AC@4 AD@7 AE@8 AF@5 AG AH@2 AI@6
>`.pickRestart({
A: "[a3,e4,a4,c#5,e5]!2 ~@2 [g3,d4,g4,d5,g5]!2 ~@2", B: "[d4,a4,d5,e5]@2 [d4,a4,d5,f#5] ~@3 [d4,a4,d5,f#5]@8 ~@2",
C: "[d4,a4,d5,e5]@2 [d4,a4,d5,f#5] ~@3 [a3,e4,a4,c#5,e5]@8 ~@2", D: "[a3,e4,a4,c#5,e5]@6 ~@2 [g3,d4,g4,b4,g5]@5 ~@3",
E: "[d4,a4,d5,f#5]@2 [d4,a4,d5,f#5]@2 ~@2 [d4,a4,d5,f#5]@7 [d4,a4]@2 ~", // D D5
F: "[a3,e4,a4,c#5,e5]@2 [a3,e4,a4,c#5,e5]!2 [a3,e4,a4,c#5,e5]@4 [g3,d4,g4,b4,g5]@2 [g3,d4,g4,b4,g5]!2 [g3,d4,g4,b4,g5]@4", // A G
G: "[d4,a4,d5,f#5]@2 [d4,a4,d5,f#5]@2 a3@2 [a3,e4,a4,c#5,e5]@8 c#5 a4", // D A
H: "[d4,a4,d5,f#5]!2 a3 [a3,e4,a4,c#5,e5]@4 ~", I: "[d4,a4,d5,f#5]@2 [d4,a4,d5,f#5]@2 ~@2 [d4,a4,d5,f#5]@7 d4@2 ~",
J: "[d4,a4,d5,f#5]@3 ~ [b3,f#4,b4,d5,f#5]@3 ~ [a3,e4,a4,c#5,e5]@4 [a3,e4,a4,c#5,e5]@4", // D Bm A
K: "[a3,e4,a4,c#5,e5]@4 [a3,e4,a4,c#5,e5]@4 [g3,d4,g4,b4,g5]!8", // A G
L: "[d4,a4,d5,f#5]!8 [g3,d4,g4,b4,g5]!6 [a3,e4,a4,c#5,e5]!2", M: "[a3,e4,a4,c#5,e5]!8 [g3,d4,g4,b4,g5]!8",
N: "[d4,a4,d5,f#5]!8 [g3,d4,g4,b4,g5]!8", O: "[a3,e4,a4,c#5,e5]!4", P: "[a3,e4,a4,c#5,e5]!8",
Q: "[d4,a4,d5,f#5]@5 ~@3 [g3,d4,g4,b4,g5]@5 ~ [a3,e4,a4,c#5,e5]@2", // D G A
R: "~@2 [a3,e4,a4,c#5,e5]@2 [a3,e4,a4,c#5,e5]@2 [a3,e4,a4,c#5,e5]@2 [a3,e4,a4,c#5,e5]@2 [a3,d4,a4,d5,f#5]!2 [a3,d4,a4,d5,f#5]@2 [a3,e4,a4,c#5,e5]@2", // A D A
S: "~ [a3,e4,a4,c#5,e5]!4 ~@3", // A
T: "[d4,a4,d5,f#5]@3 ~ [b3,f#4,b4,d5,f#5]@3 ~ [a3,e4,a4,c#5,e5]@4 [a3,e4,a4,c#5,e5]@3 [a3,e4,a4,c#5,e5]", // D Bm A
U: "[a3,e4,a4,c#5,e5] ~@7 [a3,e4,a4,c#5,e5]@6 ~@2", // A
V: "[[g3,d4,g4,b4,g5]@5 ~@3 [d4,a4,d5,f#5]@2 [d4,a4,d5,f#5]@2 ~@2 [d4,a4,d5,f#5]@7 [d4,a4]@2 ~ [a3,e4,a4,c#5,e5]@2 [a3,e4,a4,c#5,e5]!2 [a3,e4,a4,c#5,e5]@4]/2", // G D D5 A
W: "[[g3,d4,g4,b4,g5]@2 [g3,d4,g4,b4,g5]!2 [g3,d4,g4,b4,g5]@4 [d4,a4,d5,f#5]@2 [d4,a4,d5,f#5]@2 a3@2 [a3,e4,a4,c#5,e5]@8 c#5 a4 [a3,e4,a4,c#5,e5]@6 ~@2]/2", // G D A
X: "[[g3,d4,g4,b4,g5]@5 ~@3 [d4,a4,d5,f#5]@2 [d4,a4,d5,f#5]@2 ~@2 [d4,a4,d5,f#5]@7 d4@2 ~ [a3,e4,a4,c#5,e5]@2 [a3,e4,a4,c#5,e5]!2 [a3,e4,a4,c#5,e5]@4]/2", // G D A
Y: "[g3,d4,g4,b4,g5]@2 [g3,d4,g4,b4,g5]!2 [g3,d4,g4,b4,g5]@4 [d4,a4,d5,f#5]@3 ~ [b3,f#4,b4,d5,f#5]@3 ~", // G D Bm
Z: "[[a3,e4,a4,c#5,e5]@4 [a3,e4,a4,c#5,e5]@4 [a3,e4,a4,c#5,e5]@4 [a3,e4,a4,e5]@4 [g3,d4,g4,b4,g5]!8 [d4,a4,d5,f#5]!8 [g3,d4,g4,b4,g5]!6 [a3,e4,a4,c#5,e5]!9 [a3,e4,a4,e5] [g3,d4,g4,b4,g5]!8 [d4,a4,d5,f#5]!8 [g3,d4,g4,b4,g5]!8 [a3,e4,a4,c#5,e5]!7 [a3,e4,a4,e5] [g3,d4,g4,b4,g5]!8 [d4,a4,d5,f#5]!8 [g3,d4,g4,b4,g5]!8 [a3,e4,a4,c#5,e5]@4 [a3,e4,a4,c#5,e5]@4, ~@12 c#5@26 ~@9 c#5@25 ~@7 c#5@25 ~@8]/7", // A A5 G D G A A5 G …
AA: "[a3,e4,a4,c#5,e5]@2 [a3,e4,a4,c#5,e5]@2 [a3,e4,a4,c#5,e5]!4", // A
AB: "[[a3,e4,a4,c#5,e5]@2 [a3,e4,a4,c#5,e5]@2 [a3,e4,a4,c#5,e5]@2 [a3,e4,a4,e5]@2 [d4,a4,d5,f#5]@5 ~@3 [g3,d4,g4,b4,g5]@5 ~ [a3,e4,a4,c#5,e5]@2 [a3,e4,a4,c#5,e5] ~ [a3,e4,a4,c#5,e5]@2 [a3,e4,a4,c#5,e5]@2 [a3,e4,a4,c#5,e5]@2, ~@3 c#5@8 ~@5]/2", // A A5 D G A
AC: "[[a3,e4,a4,e5]@2 [a3,d4,a4,d5,f#5]!2 [a3,d4,a4,d5,f#5]@2 [a3,e4,a4,e5]@2 [d4,a4,d5,f#5]@5 ~@3 [g3,d4,g4,b4,g5]@5 ~ [a3,e4,a4,c#5,e5]@3 ~ [a3,e4,a4,c#5,e5]@2 [a3,e4,a4,c#5,e5]@2 [a3,e4,a4,c#5,e5]@2, c#5@3 c#5@8 ~@5]/2", // A5 D A5 D G A
AD: "[[a3,e4,a4,e5]@2 ~@6 [a3,e4,a4,c#5,e5]@2 [a3,e4,a4,e5]@2 ~@4 [g3,d4,g4,d5,g5]@2 [g3,d4,g4,d5,g5]@2 ~@4 [d4,a4,d5,e5]@2 [d4,a4,d5,f#5] ~@3 [d4,a4,d5,f#5]@8 ~@2 [a3,e4,a4,c#5,e5]@2 [a3,e4,a4,e5]@2 ~@4 [g3,d4,g4,d5,g5]@2 [g3,d4,g4,d5,g5]@2 ~@4 [d4,a4,d5,e5]@2 [d4,a4,d5,f#5] ~@3 [a3,e4,a4,e5]@8 ~@2 [a3,e4,a4,e5]@6 ~@2 [g3,d4,g4,b4,g5]@5 ~@3 [d4,a4,d5,f#5]@2 [d4,a4,d5,f#5]@2 ~@2 [d4,a4,d5,f#5]@7 [d4,a4]@2 ~ [a3,e4,a4,c#5,e5]@2 [a3,e4,a4,c#5,e5]!2 [a3,e4,a4,c#5,e5]@4, c#5@4 ~ c#5@15 ~ c#5@10 c#5@5 c#5@16 ~@4]/7", // A5 A A5 G5 Dsus2 D A A5 …
AE: "[[g3,d4,g4,b4,g5]@2 [g3,d4,g4,b4,g5]!2 [g3,d4,g4,b4,g5]@4 [d4,a4,d5,f#5]@2 [d4,a4,d5,f#5]@2 a3@2 [a3,e4,a4,c#5,e5]@8 ~ a4 [a3,e4,a4,e5]@6 ~@2 [g3,d4,g4,b4,g5]@5 ~@3 [d4,a4,d5,f#5]@2 [d4,a4,d5,f#5]@2 ~@2 [d4,a4,d5,f#5]@7 [d4,a4]@2 ~ [a3,e4,a4,c#5,e5]@2 [a3,e4,a4,c#5,e5]!2 [a3,e4,a4,e5]@4 [g3,d4,g4,b4,g5]@2 [g3,d4,g4,b4,g5]!2 [g3,d4,g4,b4,g5]@4 [d4,a4,d5,f#5]@2 [d4,a4,d5,f#5]@2 a3@2 [a3,e4,a4,e5]@8 ~@2 [a3,e4,a4,e5]@6 ~@2 [g3,d4,g4,b4,g5]@5 ~@3 [d4,a4,d5,f#5]@2 [d4,a4,d5,f#5]@2 ~@2 [d4,a4,d5,f#5]@7 [d4,a4]@2 ~ [a3,e4,a4,c#5,e5]@2 [a3,e4,a4,c#5,e5]!2 [a3,e4,a4,c#5,e5]@4, ~@11 c#5 c#5@16 ~@2 c#5@9 c#5@5 c#5@16 ~@4]/8", // G D A A5 G D D5 A …
AF: "[[g3,d4,g4,b4,g5]@2 [g3,d4,g4,b4,g5]!2 [g3,d4,g4,b4,g5]@4 [d4,a4,d5,f#5]@2 [d4,a4,d5,f#5]@2 a3@2 [a3,e4,a4,c#5,e5]@8 ~ a4 [a3,e4,a4,e5]@6 ~@2 [g3,d4,g4,b4,g5]@5 ~@3 [d4,a4,d5,f#5]@2 [d4,a4,d5,f#5]@2 ~@2 [d4,a4,d5,f#5]@7 d4@2 ~ [a3,e4,a4,c#5,e5]@2 [a3,e4,a4,c#5,e5]!2 [a3,e4,a4,e5]@4 [g3,d4,g4,b4,g5]@2 [g3,d4,g4,b4,g5]!2 [g3,d4,g4,b4,g5]@4 [d4,a4,d5,f#5]@3 ~ [b3,f#4,b4,d5,f#5]@3 ~, ~@11 c#5 c#5@16 ~@2 c#5@10]/5", // G D A A5 G D A A5 …
AG: "[a3,e4,a4,e5]@11 ~@5, c#5", // A5
AH: "[[a3,e4,a4,c#5,e5]@2 [a3,e4,a4,e5]@2 ~@4 [g3,d4,g4,d5,g5]@2 [g3,d4,g4,d5,g5]@2 ~@4 [d4,a4,d5,e5]@2 [d4,a4,d5,f#5] ~@3 [d4,a4,d5,f#5]@8 ~@2, ~ c#5@15]/2", // A A5 G5 Dsus2 D
AI: "[[a3,e4,a4,c#5,e5] [a3,e4,a4,e5] ~@2 [g3,d4,g4,d5,g5]!2 ~@2 [d4,a4,d5,f#5] b3 [a3,e4,a4,e5] [d4,a4,d5,f#5]@5 ~@32, ~@2 c#5@18 c#5@75 ~]/6", // A A5 G5 D A5 D
})).s("gm_electric_guitar_clean").gain(0.19).pan(0.4)
// chords · acoustic guitar nylon · "Guitar4"
const acoustic_guitar_nylon_2 = note("<~@72 A@8 ~@17>".pickRestart({
A: "[~@12 [b5,d6] ~ [a5,c#6] [b5,d6]@4 ~ [a5,c#6] ~ [e5,g5] [e5,g5]@2 [f#5,a5]@11 ~@8 [b5,d6] ~ [a5,c#6] [b5,d6]@4 ~ [a5,c#6] ~ [e5,g5] [e5,g5]@2 [f#5,a5]@4 ~ f#5@8 ~@6 [b5,d6] ~ [a5,c#6] [b5,d6]@4 ~ [a5,c#6] ~ [e5,g5] [e5,g5]@2 [f#5,a5]@11 ~@8 [b5,d6] ~ [a5,c#6] [b5,d6]@4 ~ [a5,c#6] ~ [e5,g5] [e5,g5]@2 [f#5,a5]@4 ~ f#5@2]/8", // Bm A Bm A Em F#m Bm A …
})).s("gm_acoustic_guitar_nylon").gain(0.13).pan(0.4)
// chords · epiano1 · "Keys"
const epiano1 = note("<A B A C ~@30 A B A C ~@30 D E@2 F@2 ~@24>".pickRestart({
A: "[a3,e4,a4,c#5,e5]!2 ~@2 [g3,d4,g4,d5]!2 ~@2, ~@8 g5 ~ g5 ~@5", // A G5
B: "[d4,a4,d5,e5]@2 [d4,a4,d5,f#5] ~@3 [d4,a4,d5,f#5]@8 ~@2", // Dsus2 D
C: "[d4,a4,d5,e5]@2 [d4,a4,d5,f#5] ~@3 [a3,e4,a4,c#5,e5]@8 ~@2", D: "~@4 [a3,e4,a4,c#5,e5]!2 ~@2",
E: "[[g3,d4,g4,d5]@2 [g3,d4,g4,d5]@2 ~@4 [d4,a4,d5,e5]@2 [d4,a4,d5,f#5] ~@3 [d4,a4,d5,f#5]@8 ~@2 [a3,e4,a4,c#5,e5]@2 [a3,e4,a4,c#5,e5]@2 ~@4, g5 ~ g5 ~@29]/2", // G5 Dsus2 D A
F: "[[g3,d4,g4,d5]@2 [g3,d4,g4,d5]@2 ~@4 [d4,a4,d5,e5]@2 [d4,a4,d5,f#5] ~@3 [a3,e4,a4,c#5,e5]@8 ~@10, g5 ~ g5 ~@29]/2", // G5 Dsus2 D A
})).s("gm_epiano1").gain(0.61).pan(0.6)
// chords · percussive organ · "Organ"
const percussive_organ = note(`<
A B A C D E D F D G H I D J K L D G H M N O P O P O Q@2 ~@10 D E D F D G H R S T@2 U V W@2 X ~ Y Z Y Z Y AA@3 ~@9 AB
AC@2 AD@2 W@2 AE@2 T@2 U V W@2 X ~@9
>`.pickRestart({
A: "[a3,e4]!2 ~@2 g3!2 ~@2", B: "a3!2 ~ d4@4 ~", C: "a3!2 ~ a3@4 ~", D: "c#5 d5", E: "b4 a4!2 a4@4 ~, a4 ~@15",
F: "b4 a4 g#4 e4@4 ~, a4 ~@15", G: "b4 a4 f#4 d4@4 ~, a4 ~@15", H: "c#5 d5, b4 ~@7 b4 ~@7",
I: "b4 a4!2 [c#4,e4]@4 ~, a4 ~@15", J: "b4@2 a4@2 f#4@2 ~@7 f#4@3, a4 ~@5 [d4,a4]@8 ~@2, ~@6 g#4 ~",
K: "c#5 d5, ~@8 b4 ~@7", L: "[b4,d5]@2 [d5,f#5] f#5@3 [a4,f#5] ~ [e5,a5]@4 c#5@4, a4 ~@2 a4 ~@4 a4 ~@7",
M: "[d4,a4] b3 ~@2", N: "~@9 g4 d4 ~@5, ~@8 [b4,d5]@3 ~@5", O: "d4@2 d4@2 ~@8 b3@3 ~, ~ [g3,d4]",
P: "~@2 a4@3 ~@4 g4 d4 ~@5, e4@5 ~@3 [b4,d5]@3 ~@5", Q: "[[a3,e4]@7 ~, a4@11 ~@21]/2",
R: "[d4,a4]@4 b3@4 [a3,e4,a4]@4 [a3,e4,a4]@3 [a3,e4,a4]", S: "[a3,e4,a4] ~@7 c#5@8",
T: "[d5@8 b4@2 a4@2 f#4@2 ~@7 f#4@3 c#5@8, ~@8 a4 ~@5 [d4,a4]@8 ~@10, ~@10 g#4 ~@5]/2", // D5
U: "d5@8 [b4,d5]@2 [d5,f#5] f#5@3 [a4,f#5] ~, b4 ~@7 a4 ~@2 a4 ~@4", V: "[e5,a5] c#5 c#5@2, a4 ~@15",
W: "[d5@4 b4 a4 f#4 d4@4 ~ c#5@4, ~@8 a4 ~@15 b4 ~@7]/2", X: "d5@2 [d4,a4] b3, b4 ~@15",
Y: "~ g4 d4 ~@5 d4@2 d4@2 ~@4, [b4,d5]@3 ~@13", Z: "~@4 b3@3 ~@3 a4@3 ~@3, [g3,d4]@8 e4@5 ~@3",
AA: "[~@4 b3@3 ~ [a3,e4]@28 ~@12, [g3,d4]@8 a4@11 ~@29]/3", AB: "~ c#5",
AC: "[d5@4 b4 a4!2 a4@4 ~ c#5@4, ~@8 a4 ~@23]/2", AD: "[d5@4 b4 a4 g#4 e4@4 ~ c#5@4, ~@8 a4 ~@23]/2",
AE: "[d5@4 b4 a4!2 [c#4,e4]@4 ~ c#5@4, b4 ~@7 a4 ~@23]/2", // C#m
})).s("gm_percussive_organ").gain(0.25).pan(0.6)
// other · electric guitar jazz · "Solo Guitar2"
const electric_guitar_jazz = note("<~@72 A ~ B ~ C ~ D ~ E ~@16>".pickRestart({
A: "~@8 c#6@5 ~@3, ~@8 b5 ~@7", B: "~@2 [b5,c#6] a6 c#6 b5 a5 f#5 a5!2 f#5 ~@5",
C: "[e6,f#6] e6 d6 b5 d6 b5 [e6,f#6]@2 ~@8", D: "[e6,f#6] e6@3 d6@2 b5 a5@2 ~ f#5 a5 a5@4",
E: "[e6,f#6] e6 d6 e6 d6 e6@2 f#6 a6@8", // Esus2
})).s("gm_electric_guitar_jazz").gain(0.8).pan(0.6)
// drums · kick
const kick = s("bd").struct(`<
A B A C A B A B A B A B A B A B A B A D E F@5 D G A H A H I ~ A B A B A B A B A B A J K L M L M L M N D F@5 O P Q L R
L R S K L M L T L M L M L M L M L M L M L M U ~ A B A V ~@4
>`.pickRestart({
A: "x!2", B: "x!2 ~ x ~@2 x ~", C: "x!2 ~ x ~@4", D: "x!4", E: "x ~ x ~ x!2 ~@2", F: "x!2 ~@2 x!2 ~@2", G: "x!7 ~",
H: "x ~ x ~@3 x ~@3 x!3 ~ x ~", I: "x ~@3 x ~@2 x", J: "x!3 ~@5", K: "~ x", L: "x ~@3 x!2 ~ x", M: "~ x!2 ~",
N: "x ~ x!2", O: "x!2 ~@2 x ~ x ~", P: "x ~ x ~ x!4", Q: "x!3 ~ x ~@3", R: "~@2 x!3 ~ x ~ x ~@7", S: "x ~@2 x ~@4",
T: "~ x ~@2", U: "x ~@3 x!3 ~", V: "x!4 ~@4",
})).gain(0.8)
// drums · snare
const snare = s("sd").struct(`<
A B A C A@7 B A@3 D A@2 B E F G@4 H E B A I F I F ~ A B A@9 J K A@3 L A@2 M E N@5 M F O A P A P C K A O A@9 O A@3 L
A@2 Q ~ A B A C ~@4
>`.pickRestart({
A: "~ x ~ x", B: "~@4 x ~@7 x ~ x!2", C: "~ x ~@2", D: "~@4 x ~@7 x ~@2 x", E: "x!4", F: "x!2 ~ x",
G: "~@4 x!2 ~@6 x ~@3", H: "~@4 x!2 ~@6 x ~ x!2", I: "~@4 x ~@5 x!3 ~ x!2", J: "x ~@3 x ~ x!2 ~@8", K: "~@3 x",
L: "~@4 x ~@2 x ~@4 x ~@3", M: "~@4 x ~ x!3 ~@3 x ~@3", N: "~@4 x ~@7 x!2 ~@2", O: "~@4 x ~ x!2 ~@4 x ~@3",
P: "~@2 x!3 ~ x!3 ~@3 x ~@3", Q: "~@4 x ~ x!3 ~@3 x ~ x ~",
})).gain(0.8)
// drums · hihat
const hihat = s("hh").struct(`<
A@3 B A@15 C D E@5 A@2 F@5 G A@11 H I A@6 J K E@5 L A J M@4 N O A@19 C A@3 H ~@4
>`.pickRestart({
A: "x!16", B: "x!7 ~@5 x ~ x ~", C: "~@3 x", D: "~@4 x!4", E: "x!8", F: "~@7 x", G: "x!6 ~@10", H: "x!7 ~@9",
I: "~@4 x ~@3 x!8", J: "x!8 ~@8", K: "~ x ~@2", L: "x ~ x ~ x ~ x ~ x!8", M: "~@3 x ~@4", N: "~@6 x ~ x!6 ~@2",
O: "~@8 x!8",
})).gain(0.8)
// drums · low tom
const low_tom = s("lt").struct("<~@21 [~@3 x ~@4]!5 ~@29 [~@7 x]!5 ~@37>").gain(0.8)
// drums · mid tom
const mid_tom = s("mt").struct("<~@20 [~@6 x!2 ~@8] [~@4 x!2 ~@10]!5 ~@28 [~@14 x!2] [~@12 x!2 ~@2]!5 ~@37>").gain(0.8)
// drums · open hat
const open_hat = s("oh").struct("<~@19 A B ~@12 C ~@11 D ~@8 E ~@12 F G ~@19 H ~@8>".pickRestart({
A: "~@5 x ~ x", B: "~ x ~ x ~@4", C: "~@3 x!2 ~@3", D: "~ x", E: "~ x ~ x ~ x ~ x", F: "~@7 x", G: "x",
H: "x ~ x!3 ~ x ~ x ~@7",
})).gain(0.8)
// drums · high tom
const high_tom = s("ht").struct("<~@20 [~ x ~@2] ~@33 [~@3 x] ~@42>").gain(0.8)
// drums · crash
const crash = s("cr").struct(`<
~@3 A ~@15 B ~@8 C D C D C ~@12 E ~@7 F E ~@7 G A H A H A ~@19 G ~@4 I ~@4
>`.pickRestart({
// … 50 more lines
More by Crosby, Stills, Nash & Young
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.