0:00/0:00
// Punky Reggae Party — Bob Marley
// 72 bpm, 4/4, key B minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 103 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(72/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 · piano · "tk1"
const piano = note(`<
A B C D E F G@16 H I H I H I H I G@8 H I H I H I H I H I H I G@29 H I H I H I H I ~@4 G@11 ~
>`.pickRestart({
A: "~@12 [b3,d4,f#4]!3 [a3,c#4,e4]", // Bm A
B: "[b3,d4,f#4]!2 [a3,c#4,e4] [b3,d4,f#4] ~ [a3,c#4,e4] [b3,d4,f#4]!6 [a3,c#4,e4]!4", // Bm A Bm A Bm A
C: "[b3,d4,f#4]!3 [a3,c#4,e4] [b3,d4,f#4]!12", // Bm A Bm
D: "[b3,d4,f#4]!2 [a3,c#4,e4] [b3,d4,f#4]!2 [a3,c#4,e4] [b3,d4,f#4]!6 [a3,c#4,e4]!4", E: "[b3,d4,f#4]!16",
F: "[b3,d4,f#4]!2 [a3,c#4,e4] [b3,d4,f#4]!2 [a3,c#4,e4] [b3,d4,f#4]!5 d4 [b3,d4,f#4] ~ [b3,d4,f#4] ~", // Bm A Bm A Bm
G: "~@2 [b3,d4,f#4] ~@3 [b3,d4,f#4] ~@3 [b3,d4,f#4] ~@3 [b3,d4,f#4] ~", // Bm
H: "~@2 [b3,e4,g4] ~@3 [b3,e4,g4] ~@3 [b3,e4,g4] ~@3 [b3,e4,g4] ~", // Em
I: "~@2 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~", // D
})).s("gm_piano").gain(0.27).pan(0.7)
// bass · fretless bass · "tk2"
const bass = note(`<
~ A B C D E F G F H F G F I F I F I F I F G J K L M L M N O F P F P F G F G Q M N O N O N O N R N O F G F G F G F G F
G F G F@2 G F G F G F G F G F G F G F G S T Q U Q M V W ~@4 X G X G X G X G X G X G
>`.pickRestart({
A: "~@15 b1", B: "b1@14 ~ b1", C: "b1 ~@2 b1 ~ b1!2 ~@8 b1", D: "b1@13 ~@2 b1", E: "b1 ~@2 b1 ~ b1!2 ~@9",
F: "~@2 b1!2 f#2!2 b1 f#1 a1!2 b1 ~@5", G: "~@2 b1!2 f#2@2 d2 e2 d2 ~ b1@2 ~@4",
H: "~@2 b1!2 f#2 ~ d2 e2 d2@2 b1@2 ~@4", I: "~@2 b1!2 f#2@2 d2 e2 d2@2 b1@2 ~@4",
J: "~ b1 e2!2 b2!2 e2!2 b1!2 b1@2 e2!3 ~", K: "d2@2 ~ d2 a2!2 d2!2 a1!2 a1@2 d2!2 d2@2",
L: "~ b1 e2!2 b2!2 e2!2 b1!2 b1@2 e2!2 e2@2", M: "d2@2 ~ d2 a2!2 d2!2 a1!3 ~ d2!3 ~",
N: "~ b1 e2!2 b2!2 e2!2 b1!3 ~ e2!3 ~", O: "d2@2 ~ d2 a2!2 d2!2 a1!3 ~ d2@2 ~@2",
P: "~@2 b1!2 f#2@2 d2 e2 d2@2 b1 ~@5", Q: "~ b1 e2!2 b2!2 e2!2 b1!3 ~ e2@2 ~@2", R: "d2@3 d2 a2!2 d2!2 a1!3 ~ d2!3 ~",
S: "~ b1 e2!2 b2!2 e2 ~ b1!3 ~ e2!3 ~", T: "d2@2 ~ d2 a2!2 d2!2 a1!3 ~ d2@3 ~",
U: "d2@2 ~ d2 a2!2 d2 ~ a1!3 ~ d2@2 ~@2", V: "~ b1 e2!2 b2!2 e2 ~ b1 ~@2 b1 e2@2 ~@2",
W: "d2@2 ~ d2 a2!2 d2!2 a1!3 ~ d2 ~ d2 ~", X: "~@2 b1!2 f#2@2 b1 f#1 a1!2 b1 ~@5",
})).s("gm_fretless_bass").gain(0.38)
// other · electric guitar jazz · "tk3"
const electric_guitar_jazz = note(`<
~@2 A B C@2 D E F G H I J K L M N O P Q R S T U V W X Y Z AA D E F G H I J K T U AB AC X Y Z AA T U AD AC D AE F G H I
J K L AF N O AG Q R S D AH F G H I J K L AF N O P T U AD AC X Y Z AA D AI F G H I J K L AF N S D AE F G
>`.pickRestart({
A: "[b3,d4,f#4] [d4,f#4]@10 b3 [d4,f#4] g4 f#4 e4", B: "f#4 ~ d4@2 ~ b3 [b3,d4,f#4]@6 ~ f#3 a3 ~",
C: "[[b3,d4,f#4] [d4,f#4]@29 ~@2]/2", D: "~@2 b3!2 f#4 d4 b3 f#3 ~@2 a3 b3@3 ~@2",
E: "~@2 b3!2 f#4 e4 ~ b3 [d4,e4] [b3,e4] b3@4 ~@2", F: "~@4 f#4 [e4,g#4] ~ b3 a3 ~ b3@3 ~@3",
G: "~@2 b3 ~ f#4@2 e4 b3 d4 e4 b3@2 ~@4", H: "~@2 b3 ~ f#4 d4 b3 f#3 a3 ~ b3@4 ~@2", I: "~@2 b3 ~ f#4@2 e4 ~ d4 ~@7",
J: "~@2 b3!2 ~ d4 b3 f#3 ~@2 b3@4 ~@2, ~@2 f#4 ~@5", K: "~@2 b3@2 f#4 e4 d4 ~ d4 e4 [b3,d4] ~@5",
L: "~@2 b3 ~ f#4 d4 b3 f#3 ~@2 b3@3 ~@3", M: "~@2 b3 ~ f#4@2 d4 ~@3 a3 ~@5",
N: "~@2 b3 ~@2 d4 b3 f#3 a3 ~ b3@2 ~@4, ~@2 f#4 ~@5", O: "~@4 f#4@2 [e4,g#4] b3 d4 e4 [b3,d4]@2 ~@4",
P: "~@4 f#4 d4 b3 f#3 ~@2 b3@4 ~@2", Q: "~@4 f#4 e4 d4 b3 d4 e4 [b3,d4]@2 ~@4",
R: "~@5 d4 b3 f#3 a3 ~ b3@4 ~@2, ~@2 f#4 ~@5", S: "~@2 b3 ~ f#4@2 d4 ~ d4@2 b3@4 ~@2",
T: "~@2 g4 ~ [e4,g4,d5]@2 ~@7 [e4,g4,b4] ~@2", U: "~@4 [d4,f#4,a4] ~@8 [d4,f#4] ~@2",
V: "~@2 b4 ~ [g4,d5]@2 [d#4,g4] ~@6 [d4,e4,g4] ~@2", W: "~@4 f#4 ~@2 [f#4,a4] ~@5 [a#3,d4,f#4] ~@2",
X: "~@2 g4 b4 [g4,d5]@2 [e4,g4,b4] ~@6 [e4,g4,b4] ~@2", Y: "~@3 a4 [f#4,a4] ~@2 f#4 ~@5 [f#4,a4] ~@2",
Z: "~@4 d5@2 ~@5 b4@4 ~, ~ b4 ~@6, ~@3 g4@4 ~@4 g4 ~@4", AA: "~@3 f#4 [f#4,a4] ~@2 [d4,f#4] ~@8",
AB: "~@2 b4 ~ [g4,d5]@2 g4 ~@6 [d4,e4,g4] ~@2", AC: "~@4 f#4 ~@2 [f#4,a4] ~@5 [b3,d4,f#4] ~@2",
AD: "~@2 b4 ~ [g4,d5]@2 [e4,g4] ~@6 [d4,e4,g4] ~@2", AE: "~@2 b3!2 f#4 e4 ~ b3 [d4,e4] b3 b3@4 ~@2",
AF: "~@2 b3 ~ f#4@2 d4 ~ a3@2 a3 ~@5", AG: "~@5 d4 b3 f#3 ~@2 b3@4 ~@2, ~@2 f#4 ~@5",
AH: "~@2 b3!2 f#4 e4 ~ b3 d4 e4 b3@4 ~@2, ~@10 d4 ~@5", AI: "~@2 b3!2 f#4 e4 ~ b3 d4@2 b3@4 ~@2",
})).s("gm_electric_guitar_jazz").gain(0.33).pan(0.3)
// other · electric guitar jazz · "tk3" · soft notes
const electric_guitar_jazz_2 = note(`<
~@3 A ~@2 B C D A E F B ~ G H I ~ J A E ~ K L M N O P Q R B C D A E F B ~ K L S N T P Q R K L S N B ~ D A E F B ~ G U
I ~ J ~ V ~ B ~ D A E F B ~ G U I ~ J K L S N T P Q R B ~ D A E F B ~ G U I ~ B ~ D A
>`.pickRestart({
A: "~@3 b3 ~@12", B: "~@8 a3!2 ~@6", C: "~@10 d4 ~@5", D: "~@2 b3@2 ~@5 a3 ~@6", E: "~@3 b3 ~@5 a3 ~@6",
F: "~@7 b3 ~@2 b3@3 ~@3", G: "~@3 b3 ~@4 a3!2 ~@6", H: "~@7 a3 b3@2 ~@6", I: "~@9 a3 ~@6", J: "~@2 b3!2 ~@4 a3!2 ~@6",
K: "~@12 e4 ~@3", L: "~@3 f#4 ~@3 d4 ~@4 d4 ~@3", M: "~ g4 ~ g4 ~@12", N: "~@3 f#4 ~ e4 ~@5 f#4@2 a4 ~@2, ~ d4 ~@6",
O: "~@2 [e4,b4] ~@6 f#4 ~ g4 ~@4", P: "~ f#4 ~@3 f#4!2 d4 ~@8", Q: "~ e4@2 ~@12 g4", R: "~@6 d4 ~@9",
S: "~ g4 ~ g4 ~@8 e4 ~@3", T: "~@2 [e4,b4] ~@8 g4 ~@4", U: "~@4 b3 ~@3", V: "~@3 g#3 ~@5 a3 ~@6",
})).s("gm_electric_guitar_jazz").gain(0.16).pan(0.3)
// chords · rock organ · "tk7"
const rock_organ = note(`<
~@6 A B C@2 D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT
AU AV AW AX AY AZ BA BB@3 BC BD BE A BF BG L BH BI BJ BK@6 BL BM BN BO BP BQ BR BS ~@4 BT BU BV BW BX BY BZ CA CB CC
CD CE
>`.pickRestart({
A: "~@2 b5 ~@3 [d5,b5]!2 ~@7 [d5,b5]", B: "~@6 [d5,b5]!2 ~@6 [d5,b5]!2", C: "~@7 [d5,b5] ~@7 [d5,b5]",
D: "~@7 [d5,b5] ~@4 b5 ~@3", E: "~@4 [d5,b5]!2 b5 ~@8 [d5,b5]", F: "~@6 [d5,b5]!2 ~@5 b5 [d5,b5]!2",
G: "~@7 [d5,b5] ~@6 [d5,b5]!2", H: "~@6 d5 ~@2 [d5,b5] ~@3 b5 ~ [d5,b5]", I: "~@6 [d5,b5] b5 ~@6 [d5,b5]!2",
J: "~@14 [d5,b5]!2", K: "~@2 [d5,b5] ~@4 [d5,b5] ~@5 [d5,b5]!3",
L: "~@2 [d5,b5] ~@3 [d5,b5] d5 ~@2 [d5,b5] ~@4 [d5,b5]", M: "~@2 d5 ~@4 [d5,b5] ~@7 [d5,b5]",
N: "~@6 [d5,b5]!2 ~@2 b5 ~@3 b5 [d5,b5]", O: "~@2 b5 ~@3 [d5,b5]!2 ~@5 [d5,b5]!3",
P: "~@6 [e5,g5] [e5,g5,b5] ~@3 g5 ~@2 b5 e5", Q: "~@6 [d5,f#5] f#5 ~@3 [d5,f#5] f#5 [d5,f#5,a5]!3",
R: "~@6 g5 [e5,g5,b5] ~@3 [e5,g5,b5] ~@3 [e5,g5,b5]", S: "~@2 f#5 [d5,f#5] ~@3 [d5,f#5] ~@3 f#5 ~ f#5 ~ [d5,f#5,a5]",
T: "~@3 [e5,g5,b5] ~@6 [e5,g5,b5]!2 ~@3 [e5,g5,b5]", U: "~@2 f#5!2 ~@2 f#5 [d5,f#5,a5] ~@3 [d5,f#5] ~@3 [d5,f#5,a5]",
V: "~@4 g5 [e5,g5,b5]!3 ~@3 [e5,g5,b5] ~@2 [e5,g5,b5]!2", W: "~@2 f#5!2 ~@3 [d5,f#5,a5] ~@3 [d5,e5,a5] ~@3 d5",
X: "~@2 [d5,b5]!2 ~@2 [d5,b5] ~@3 b5 ~@3 [d5,b5]!2", Y: "~@2 [d5,b5] ~@3 b5 ~@3 [d5,b5]!2 ~@4",
Z: "~@2 b5 [d5,b5] ~@2 [d5,b5] ~@3 b5!2 ~@2 b5 [d5,b5]", AA: "~@2 d5 ~@3 b5 [d5,b5] ~@3 [d5,b5] ~ [d5,b5] b5 [d5,b5]",
AB: "~ b5!2 ~@3 b5 ~@3 [d5,b5]!2 ~@2 b5!2", AC: "~@2 [d5,b5] d5 ~@2 [d5,b5] ~@3 [d5,b5] b5 ~ [d5,b5] ~@2",
AD: "~@2 [d5,b5] b5 ~@2 [d5,b5] ~@3 [d5,b5]!2 ~@3 [d5,b5]", AE: "~@2 [d5,b5]!2 ~@2 [d5,b5] b5 ~@2 b5 ~@2 [d5,b5] ~@2",
AF: "~@2 [e5,g5]!2 ~@2 [e5,g5,b5] e5 ~@2 [g5,b5] [e5,g5,b5] ~@2 [e5,g5] ~", // Em G Em
AG: "~@2 [d5,f#5,a5] [d5,f#5] ~@2 [d5,f#5,a5] [d5,f#5] ~@3 [d5,f#5,a5] ~@2 [d5,f#5,a5]!2", // D
AH: "~@3 [e5,g5,b5] ~@3 [e5,g5,b5] ~@2 b5 [e5,g5,b5] ~@3 [e5,g5,b5]", // Em
AI: "~@3 [d5,f#5,a5] ~@3 [d5,f#5] ~@2 f#5 [d5,f#5,a5] ~ d5 ~ [d5,f#5,a5]", // D
AJ: "~@3 [e5,g5,b5] ~@2 [e5,g5,b5]!2 ~@3 g5 ~ [e5,g5,b5] ~@2", // Em
AK: "~@2 [d5,f#5,a5]!2 ~@2 [d5,f#5] [d5,f#5,a5] ~@2 f#5 [f#5,a5] ~@2 f#5 [d5,f#5,a5]", // D F#m D
AL: "~@3 [e5,g5,b5] ~@3 [e5,g5,b5] ~@3 g5 ~@3 [e5,g5,b5]", // Em
AM: "~@3 [d5,f#5] ~@2 [d5,f#5] [d5,f#5,a5] ~@3 [d5,f#5] ~ f#5 ~ [d5,f#5,a5]", // D
AN: "~@2 g5 [e5,g5,b5] ~@2 g5 [e5,g5,b5] ~@7 [e5,g5,b5]", // Em
AO: "~@2 [d5,f#5] [d5,f#5,a5] ~@2 [f#5,a5] [d5,f#5] ~@3 [d5,f#5,a5] ~@2 f#5 [d5,f#5,a5]", // D F#m D
AP: "~@2 g5 [e5,g5,b5] ~@6 [e5,g5] [e5,g5,b5] ~@3 [e5,g5,b5]", // Em
AQ: "~@2 f#5 [d5,f#5] ~ f#5!2 ~ [d5,f#5,a5] ~@3 [d5,e5] ~@3", AR: "~@3 b5 ~@2 [d5,b5]!2 ~@6 [d5,b5]!2",
AS: "~@2 [d5,b5] ~@3 [d5,b5] ~@3 [d5,b5] d5 ~@2 [d5,b5] ~", // G
AT: "~@2 b5 [d5,b5] ~@2 [d5,b5] ~@4 [d5,b5] ~ [d5,b5] ~ [d5,b5]", AU: "~@2 [d5,b5] ~@3 b5 ~@3 [d5,b5] b5 ~@4",
AV: "~@2 [d5,b5]!2 ~@2 [d5,b5] ~@3 [d5,b5] b5 ~@2 [d5,b5] ~", AW: "~@3 [d5,b5] ~@2 [d5,b5] ~@3 [d5,b5] ~@3 [d5,b5] ~",
AX: "~@2 [d5,b5] ~@3 b5!2 ~@2 b5 ~@3 [d5,b5]!2", AY: "~@2 [d5,b5] ~@3 [d5,b5]!2 ~@2 b5 ~@4 b5",
AZ: "~@2 [d5,b5] ~@3 [d5,b5]!2 ~@2 [d5,b5] ~@3 [d5,b5]!2", BA: "~@2 [d5,b5] ~@3 [d5,b5] b5 ~@5 b5 f#5 a5",
BB: "b5!4 f#5 a5 b5 ~@7 f#5 a5", BC: "b5!4 f#5 a5 b5 ~@8 [d5,b5]", BD: "~@2 b5 ~@3 b5 ~@3 b5 ~@3 [d5,b5]!2",
BE: "~@2 b5 ~@3 b5 [d5,b5] ~@2 [d5,b5] ~@3 d5!2", BF: "~@2 [d5,b5] ~@7 [d5,b5] ~@3 b5 [d5,b5]",
BG: "~@2 [d5,b5] ~@4 d5 ~@2 [d5,b5] ~@3 [d5,b5] d5", BH: "~@2 [d5,b5] ~@3 b5 ~@3 [d5,b5] ~@3 b5 [d5,b5]",
BI: "~@2 [d5,b5] ~@3 b5 [d5,b5] ~@2 [d5,b5] ~@4 b5", BJ: "~@2 [d5,b5] ~@3 b5 [d5,b5] ~@2 b5 ~@5",
BK: "b5!4 f#5 a5 b5 ~@9", BL: "~@7 [e5,g5] ~@2 [e5,g5,b5] ~@3 [e5,g5,b5] [e5,g5]",
BM: "~@2 [d5,f#5,a5] ~@3 [d5,f#5,a5] [d5,f#5] ~@2 [d5,a5] ~@3 [d5,f#5,a5] [d5,f#5]", // D D5 D
BN: "~@2 [e5,g5,b5] ~@3 [e5,g5,b5] [e5,g5] ~@2 [e5,g5,b5] ~@3 g5 e5", // Em
BO: "~@2 [d5,f#5,a5] ~@3 f#5 [d5,f#5] ~@2 [d5,f#5,a5] ~@3 f#5!2", // D
BP: "~@2 [e5,g5,b5] ~@3 [e5,g5,b5]!2 ~@2 [e5,g5,b5] ~@5", // Em
BQ: "~@2 f#5 [d5,f#5] ~@2 [d5,f#5,a5] ~@4 [d5,f#5] ~@2 [d5,f#5,a5] ~", // D
BR: "~@2 [g5,b5] [e5,g5,b5] ~@2 [e5,g5,b5] ~@3 g5 [e5,g5,b5] ~@2 [g5,b5] ~", // G Em G
BS: "~@3 [d5,f#5] ~@2 [d5,f#5,a5] ~ [d5,f#5,a5] ~@3 e5 ~@3", BT: "~@2 b5 [d5,b5] ~@2 b5 ~@3 b5 [d5,b5] ~@2 b5 ~",
BU: "~@3 [d5,b5] ~@2 [d5,b5] ~@4 b5 ~@2 [d5,b5]!2", BV: "~@2 b5 ~@4 [d5,b5] ~@2 [d5,b5] ~@3 b5 ~",
BW: "~@3 [d5,b5] ~ [d5,b5] ~@4 [d5,b5] ~@3 [d5,b5] ~", BX: "~@2 [d5,b5] ~@3 [d5,b5] ~@3 d5 [d5,b5] ~@2 [d5,b5] ~",
BY: "~@3 [d5,b5] ~@2 [d5,b5] ~@3 [d5,b5] ~@3 [d5,b5] d5", BZ: "~@2 [d5,b5] ~@4 [d5,b5] ~@7 [d5,b5]",
CA: "~@2 [d5,b5] ~@3 [d5,b5] ~@3 [d5,b5]!2 ~@2 [d5,b5]!2", CB: "~@2 [d5,b5] ~@3 d5 [d5,b5] ~@2 [d5,b5] ~@4 [d5,b5]",
CC: "~@2 [d5,b5] ~@3 [d5,b5] ~@3 [d5,b5] ~@3 [d5,b5] ~", CD: "~@2 [d5,b5] ~@3 [d5,b5] ~@3 d5 ~@3 [d5,b5]!2",
CE: "~@2 [d5,b5] ~@3 [d5,b5] ~@3 [d5,b5] ~@5", // G
})).s("gm_rock_organ").gain(0.33).pan(0.7)
// other · percussive organ · "tk8"
const percussive_organ = note("<~@49 A B C D@6 B@2 D E D F ~@10 A D B D G ~@11 A D B D B D B D B D B D G>".pickRestart({
A: "~@14 f#5 a5", B: "b5!2 ~ b5 f#5 a5 b5 ~@7 f#5 a5", C: "b5!4 ~ a5 b5 ~@7 f#5 a5", D: "b5!4 f#5 a5 b5 ~@7 f#5 a5",
E: "b5 ~ b5!2 f#5 a5 b5 ~@7 f#5 a5", F: "b5!4 f#5 a5 b5 ~@9", G: "b5!2 ~ b5 f#5 a5 b5 ~@9",
})).s("gm_percussive_organ").gain(0.33).pan(0.6)
// chords · electric guitar muted · "tk9"
const electric_guitar_muted = note(`<
~@6 A@8 B@8 C D E F E D E G H@8 C D E F E D E G C D E F H@8 I@8 H@8 J@6 D E F E D E G H@8 K@8
>`.pickRestart({
A: "[~@12 e3 f3 f#3 [a3,d4]@3 b3@2 ~@8 f#3 f3 e3 d3@3 b2 ~@9 e3 f3 f#3 [a3,d4]@3 ~@10 f#3 ~ e3 d3@3 b2 ~@9 e3 ~ f#3 [a3,d4]@3 b3 ~@9 f#3 f3 e3 d3@3 b2 ~@9 e3 f3 f#3 [a3,d4]@3 b3 ~@9 f#3 ~@2 d3]/8", // D5
B: "[~@2 b2 ~@9 e3 ~@2 [a3,d4]@3 b3 ~@9 f#3 ~ e3 d3@3 b2 ~@9 e3 f3 ~ [a3,d4]@3 b3 ~@9 f#3 ~@2 d3@3 ~@10 e3 ~ f#3 [a3,d4]@3 ~@12 e3 d3@3 b2 ~@9 e3 ~ f#3 [a3,d4]@3 b3 ~@9 f#3 ~@2 d3]/8", // D5
C: "~@2 [e4,g4,b4] ~@3 [g4,b4] ~@3 [g4,b4] ~@3 [e4,g4,b4] ~", // Em G Em
D: "~@2 [f#4,a4] ~@3 [f#4,a4] ~@3 [f#4,a4] ~@3 [f#4,a4] ~", E: "~@2 [g4,b4] ~@3 [g4,b4] ~@3 [g4,b4] ~@3 [g4,b4] ~",
F: "~@2 a4 ~@3 [f#4,a4] ~@3 [f#4,a4] ~@3 [f#4,a4] ~", G: "~@2 [f#4,a4] ~@3 [f#4,a4] ~@3 a4 ~@3 [f#4,a4] ~",
H: "[~@12 e3 f3 f#3 [a3,d4]@3 b3@2 ~@8 f#3 f3 e3 d3@3 b2 ~@9 e3 f3 f#3 [a3,d4]@3 ~@10 f#3 f3 e3 d3@3 b2 ~@9 e3 ~ f#3 [a3,d4]@3 b3 ~@9 f#3 f3 e3 d3@3 b2 ~@9 e3 f3 f#3 [a3,d4]@3 b3 ~@9 f#3 ~@2 d3]/8", // D5
I: "[~@2 b2 ~@9 e3 ~@2 [a3,d4]@3 b3 ~@9 f#3 ~ e3 d3@3 b2 ~@9 e3 f3 ~ [a3,d4]@3 b3 ~@9 f#3 ~@2 d3@3 ~@10 e3 ~ f#3 [a3,d4]@3 ~@13 d3@3 b2 ~@9 e3 ~ f#3 [a3,d4]@3 b3 ~@9 f#3 ~@2 d3]/8", // D5
J: "[~@2 b2 ~@9 e3 ~@2 [a3,d4]@3 b3 ~@9 f#3 ~ e3 d3@3 b2 ~@9 e3 f3 ~ [a3,d4]@3 b3 ~@9 f#3 ~@2 d3@3 ~@10 e3 ~ f#3 [a3,d4]@3 [e4,g4,b4] ~@3 [g4,b4] ~@3 [g4,b4] ~@3 [e4,g4,b4] ~]/6", // D5 Em G Em
K: "[~@2 b2 ~@9 e3 ~@2 [a3,d4]@3 b3 ~@9 f#3 ~ e3 d3@3 b2 ~@9 e3 f3 ~ [a3,d4]@3 b3 ~@9 f#3 ~@2 d3@3 ~@10 e3 ~ f#3 [a3,d4]@3 b3@2 ~@8 f#3 f3 e3 d3@3 b2 ~@9 e3 f3 f#3 [a3,d4]@3 ~@4 b2 ~@3 b2 ~@5]/8", // D5
})).s("gm_electric_guitar_muted").gain(0.33).pan(0.3)
// chords · electric guitar muted · "tk9" · soft notes
const electric_guitar_muted_2 = note(`<
~@9 A B ~@2 C D B E C F G B@2 H I ~ J K ~ K L ~@3 A B ~@2 C H I ~ J K ~ K L H I ~ J ~@3 A B ~@2 C D B E C F M B@2 ~@3
A B ~@2 C D B E C F H I ~ J K ~ K L ~@3 A B ~@2 C D B E B ~@3 A
>`.pickRestart({
A: "~@2 b3 ~@13", B: "~@13 f3 ~@2", C: "~@13 f3 e3 ~", D: "~@11 d3 ~ f3 ~@2", E: "~@11 d3 ~@4",
F: "~@2 b2 ~@10 f3 ~@2", G: "~@2 b3 ~@9 f#3 f3 ~@2", H: "~@10 e4 ~@5", I: "~@6 d4 ~@3 d4 ~@5", J: "~@2 f#4 ~@11 d4 ~",
K: "~@14 e4 ~", L: "~@10 f#4 ~@5", M: "~@2 b3 ~@10 f3 ~@2",
})).s("gm_electric_guitar_muted").gain(0.16).pan(0.3)
// drums · kick
const kick = s("bd").struct("<~@2 [x!4] [x ~ x ~@2 x!3] [x ~ x ~ x ~ x!2] [x!3 ~] [x!8]!96 [x!6 ~@2]>").gain(0.49)
// drums · rim
const rim = s("rim").struct(`<
~@5 A B@2 C@6 D E@6 F E@3 F G H I C@2 B C@9 J C@3 K C@4 L E@2 F C@10 B@2 F B@2 C@9 F E L@2 F C@3 L@2 E@2 F E@11 M
>`.pickRestart({
A: "~@6 x!2", B: "~@4 x ~@2 x ~@4 x ~ x ~", C: "~@4 x ~@2 x ~@4 x ~@3", D: "~@2 x ~@3 x!2", E: "~@4 x ~@7 x ~@2 x",
F: "~ x ~@2", G: "~@6 x!2 ~@4 x ~@3", H: "~@4 x ~@7 x!2 ~@2", I: "~@4 x ~@2 x ~@4 x!2 ~@2", J: "~@2 x ~@4 x",
K: "~@2 x!2 ~@3 x", L: "~ x ~ x", M: "~@2 x ~ x!2 ~@2",
})).gain(0.38)
// drums · snare
const snare = s("sd").struct(`<
~@5 A B@2 C@6 D E@6 F E@3 G H I J C@2 B C@9 K C@3 L C@4 M E@2 G C@10 B@2 G B@2 C@9 G E M@2 N C@3 M@2 E@2 O E@11 P
>`.pickRestart({
A: "~@9 x!4 ~ x ~", B: "~@4 x ~@2 x ~@4 x ~ x ~", C: "~@4 x ~@2 x ~@4 x ~@3", D: "~@2 x ~@3 x!2",
E: "~@4 x ~@7 x ~@2 x", F: "~@4 x ~@4 x!4 ~@3", G: "~@4 x ~@4 x!3 ~@4", H: "~@6 x!2 ~@4 x ~@3",
I: "~@4 x ~@4 x!5 ~@2", J: "~@4 x ~@2 x ~@4 x!2 ~@2", K: "~@4 x ~@3 x!3 ~@3 x ~", L: "~@4 x ~ x ~@2 x!3 ~@2 x ~",
M: "~ x ~ x", N: "~@4 x ~@3 x!4 ~@4", O: "~@4 x ~@4 x!3 ~@2 x ~", P: "~@2 x ~ x!2 ~@2",
})).gain(0.22)
// drums · hihat
const hihat = s("hh").struct(`<
~ A B C D E F@7 G F@7 H F@3 I F J F H F@11 K F@3 L F M F@5 N F@8 O P Q R S F@8 P T F I F M@2 I J F U M F V F W F@2 Q N
X Y Z AA J X AB AC
>`.pickRestart({
A: "~@4 x!4", B: "x ~ x!2 ~ x!2 ~ x ~ x!6", C: "x ~ x!2 ~ x!2 ~ x ~ x!3 ~ x ~", D: "x ~ x!2 ~ x!2 ~ x ~ x ~ x!4",
E: "x ~ x!2 ~ x!2 ~ x ~@5 x ~", F: "x!16", G: "x!15 ~", H: "x!11 ~@3 x!2", I: "x!9 ~@3 x!2 ~@2", J: "x!10 ~@2 x!4",
K: "x!8 ~@2 x ~ x!2 ~@2", L: "x!8 ~@4 x!4", M: "x!13 ~ x!2", N: "x!11 ~ x!4", O: "x!4 ~@2 x!7 ~@3", P: "x!12 ~@2 x!2",
Q: "x!8 ~@2 x!6", R: "x!4 ~@2 x!6 ~@2 x!2", S: "x!8 ~@4 x!2 ~@2", T: "x ~ x!10 ~@2 x!2", U: "x!2 ~@2 x!12",
V: "~ x!15", W: "x!9 ~@3 x!4", X: "x!6 ~@2 x!8", Y: "x!3 ~ x!6 ~@2 x!4", Z: "x!7 ~ x!7 ~", AA: "~ x!6 ~ x!6 ~ x",
AB: "x!14 ~@2", AC: "x!8 ~@2 x ~@5",
})).gain(0.27)
// … 18 more lines
More by Bob Marley
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.