0:00/0:00
// Exodus — Bob Marley
// 132 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 200 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(132/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.
// other · piano · "tk1"
const piano = note(`<
~ A B@3 C@4 A B@3 D@5 ~@15 A E@3 F@3 ~ G H@3 I@3 ~@17 A J@2 ~ G J@2 K L@2 ~@2 G J@2 K L@2 M@2 ~@2 G J@2 K L@2 ~@2 G
J@2 K L@2 ~@2 G J@2 K L@2 ~@22 G J@2 K N@2 O ~ G J@2 K N@2 ~@2 G J@2 K N@2 ~@2 G J@2 K N@2 ~@2 G J@2 K N@2 ~@2 G J@2 K
N@2 ~@2 G J@2 ~@5 G J@2 K N@2 ~@2 G J@2 ~ P
>`.pickRestart({
A: "~@5 [e2,e4]@3, ~@10 d#4 ~@5", B: "[[a1,a3]@22 ~ [b2,b3]]/3", C: "[[c3,c4] [d3,d4]@2 ~ [b2,b3] ~ g3 a3@25]/4",
D: "[[c3,c4] [d3,d4]@2 ~ [b2,b3] ~ g3 a3@33]/5", E: "[[a1,a3]@37 ~@9 [b2,b3]@2]/3",
F: "[[c3,c4]@2 [d3,d4]@7 ~ d4@2 g3@2 a3@33 ~]/3", G: "~@5 [e2,e4]@3", H: "[[a1,a3]@39 ~@7 [b2,b3]@2]/3",
I: "[[c3,c4]@2 [d3,d4]@6 b3@3 ~ g3@2 a3@34]/3", J: "[a1,a3]/2", K: "~@7 [b2,b3]",
L: "[[c3,c4]@2 [d3,d4]@5 ~ b3@3 ~ g3@2 a3@18]/2", M: "[~ d4 ~@2 g3@12, [b3,c4,e4], ~@3 d4@13]/2",
N: "[[c3,c4]@2 [d3,d4]@5 ~ b3@3 ~ g3@2 a3@17 ~]/2", O: "c4@4 a3@2 ~@2 g3@2 g#3 ~ a3@2 ~@2",
P: "~@2 [c3,c5]@2 e3@2 [g3,g5] ~ [a3,e4,c5,a5]@2 [a3,e4,c5,a5] ~ [a3,e4,c5,a5]@2 ~@2, ~@4 e5 ~@11", // C G Am
})).s("gm_piano").gain(0.44).pan(0.6)
// bass · fretless bass · "tk2"
const bass = note(`<
~@18 A B C D E F E G H I H I H I H I H I J K L M N O N P C Q C M C O R M S O E T E U H V W X W Y W Z W AA AB AC C M AD
AE R M AF AG AH P R AI W AJ E AK AL AM L AN AO AP N AQ R AE C AR C AS C AT C AE W AU AV AW E AX AY AZ R AT BA BB R M
BC AE AH M N AE W AK W ~ BD AU BE BF BG BH BI Z W BJ BK BL L BM R AS BN BO BP BQ BR BM BS AE C BM BT AE BD BU BV BW BE
BJ J BL ~@2 BX ~ BY BX BZ CA AO M BC AE BS M BC AE CB Z BV CC BV Z BG Z CB Z BV T BV Z J CD BC M CE CF
>`.pickRestart({
A: "a1@2 ~@2 g1 ~ a1@2 ~@2 g1 ~ a1@3 ~", B: "~@2 c2@2 a1@2 ~@2 g1 ~ g#1 ~ a1@2 ~@2",
C: "a1@2 ~@2 g1 ~ a1@2 ~@2 g1 ~ a1@2 ~@2", D: "c2@2 ~@2 a1@2 ~@2 g1 ~ g#1 ~ a1@2 ~@2",
E: "a1@2 ~@2 g1 ~ a1@2 ~@2 g1 ~ a1 ~ a1@2", F: "~@2 a1@2 c2 ~ e2 ~ g2 ~ g#2 ~ a2@2 ~@2",
G: "~@2 a1 ~@3 e2 ~ g2 ~ g#2 ~ a2 ~@3", H: "a1@2 ~@2 g1 ~ a1@2 ~@2 g1 ~ a1@2 a1@2",
I: "~@2 a1 ~ c2@2 e2@2 g2 ~ g#2 ~ a2@2 ~@2", J: "a1 ~ a1 ~ a1@2 ~@2 b1@3 ~ b1@3 ~", K: "c2@3 ~ c2@3 ~ d2@6 ~@2",
L: "a1@2 ~@2 g1 ~ a1@3 ~ g1 ~ a1@3 ~", M: "~ c2 a1 ~ g1 g#1 a1 ~", N: "a1@2 ~@2 g1 ~ a1@3 ~ g1 ~ a1@2 ~@2",
O: "c2@3 ~ a1@2 ~@2 g1@2 g#1 ~ a1@2 ~@2", P: "~@2 c2 ~ a1@2 ~@2 g1@2 g#1@2 a1@2 ~@2",
Q: "c2@3 ~ a1@2 ~@2 g1@2 g#1@2 a1@2 ~@2", R: "a1@2 ~@2 g1@2 a1@2 ~@2 g1 ~ a1@2 ~@2",
S: "a1@3 ~ g1@2 a1@2 ~@2 g1 ~ a1@2 ~@2", T: "~@2 a1@2 c2@2 e2 ~ g2@2 g#2 ~ a2@2 ~@2",
U: "~@2 a1 ~ c2@2 e2 ~ g2@2 g#2 ~ a2@2 ~@2", V: "~@2 a1@2 ~@2 e2@2 g2@2 g#2 ~ a2@2 ~@2",
W: "a1@2 ~@2 g1@2 a1@2 ~@2 g1 ~ a1 ~ a1@2", X: "~ a1 ~ e2 g2 g#2 a2 ~", Y: "~@2 a1@2 ~@2 e2@2 g2 ~ g#2 ~ a2@2 ~@2",
Z: "~@2 a1@2 c2@2 e2 ~ g2@2 g#2@2 a2@2 ~@2", AA: "~@2 a1 ~ c2@2 e2 ~ g2@2 g#2@2 a2@2 ~@2",
AB: "a1@2 a1 ~ a1@2 ~@2 b1@3 ~ b1@3 ~", AC: "c2@3 ~ c2@4 d2@2 e2@5 ~", AD: "a1@3 ~ g1@2 a1@3 ~ g1 ~ a1@2 ~@2",
AE: "c2@2 a1 ~ g1 g#1 a1 ~", AF: "a1@2 ~@2 g1@2 a1@2 ~@2 g1 ~ a1@2 a1 ~", AG: "c2 ~ c2 ~ c2@3 ~ g1@3 ~ g#1@3 ~",
AH: "a1@2 ~@2 g1@2 a1@2 ~@2 g1 ~ a1@3 ~", AI: "c2@4 a1@3 ~ g1@2 g#1@2 a1@3 ~",
AJ: "~@2 a1@2 c2@2 e2@2 g2@2 g#2 ~ a2@3 ~", AK: "~@2 a1 ~ c2 ~ e2@2 g2@2 g#2@2 a2@2 ~@2",
AL: "a1@2 a1 ~ a1@4 b1@3 ~ b1@3 ~", AM: "c2@3 ~ c2@3 ~ d2@2 e2@6", AN: "~@2 c2@2 a1@2 ~@2 g1@2 g#1@2 a1@3 ~",
AO: "a1@2 ~@2 g1@2 a1@3 ~ g1 ~ a1@2 ~@2", AP: "c2@4 a1@3 ~ g1 ~ g#1 ~ a1@2 ~@2",
AQ: "~@2 c2 ~ a1@2 ~@2 g1 ~ g#1 ~ a1@2 ~@2", AR: "~@2 c2@2 a1@2 ~@2 g1@2 g#1 ~ a1@2 ~@2",
AS: "c2@4 a1@2 ~@2 g1@2 g#1 ~ a1@2 ~@2", AT: "~@2 c2 ~ a1@3 ~ g1@2 g#1 ~ a1@2 ~@2", AU: "~ a1 c2 e2 g2 g#2 a2 ~",
AV: "a1@3 ~ g1 ~ a1@2 ~@2 g1 ~ a1 ~ a1@2", AW: "~@2 a1@2 c2@2 e2 ~ g2@2 g#2 ~ a2@3 ~",
AX: "~@2 a1 ~ c2 ~ e2@2 g2 ~ g#2 ~ a2@2 ~@2", AY: "a1@3 ~ g1@2 a1@2 ~@2 g1@2 a1@2 a1@2",
AZ: "~@2 a1@2 c2 ~ e2@2 g2@2 g#2@2 a2@2 ~@2", BA: "a1@3 ~ g1@2 a1@2 ~@2 g1@2 a1 ~ a1 ~",
BB: "c2 ~ c2 ~ c2@3 ~ e1@4 g1@3 ~", BC: "a1 ~ g1 a1 ~ g1 a1 ~", BD: "a1@2 ~@2 g1@2 a1@2 ~@2 g1@2 a1 ~ a1@2",
BE: "a1@2 ~@2 g1 ~ a1@2 ~@2 g1@2 a1 ~ a1@2", BF: "~@2 a1@2 c2@2 e2@2 g2@2 g#2@2 a2@3 ~",
BG: "a1@2 ~@2 g1@2 a1@3 ~ g1@2 a1@2 a1@2", BH: "~@2 a1@2 c2@2 e2 ~ g2 ~ g#2@2 a2@2 ~@2",
BI: "a1@2 ~@2 g1@2 a1@3 ~ g1 ~ a1 ~ a1@2", BJ: "~@2 a1@2 c2 ~ e2 ~ g2@2 g#2@2 a2@2 ~@2",
BK: "a1 ~ a1 ~ a1@3 ~ b1@3 ~ b1@3 ~", BL: "c2@3 ~ c2@3 ~ d2@2 e2@5 ~", BM: "~@2 c2 ~ a1@2 ~@2 g1@2 g#1 ~ a1@2 ~@2",
BN: "a1@2 ~@2 g1 ~ a1@2 ~@2 g1@2 a1@3 ~", BO: "~@2 c2 ~ a1@3 ~ g1@2 g#1@2 a1@2 ~@2",
BP: "a1@2 ~@2 g1@2 a1@2 ~@2 g1 ~ a1 ~ a1 ~", BQ: "c2 ~ c2 ~ c2@4 e1@4 g1@4", BR: "a1 ~@3 g1@2 a1@2 ~@2 g1 ~ a1@2 ~@2",
BS: "a1@2 ~@2 g1@2 a1@3 ~ g1@2 a1@2 ~@2", BT: "a1@2 ~@2 g1@2 a1@2 ~@2 g1 ~ a1 ~@3",
BU: "~@2 a1 ~ c2@2 e2 ~ g2 ~ g#2 ~ a2@2 ~@2", BV: "a1@2 ~@2 g1@2 a1@3 ~ g1@2 a1 ~ a1@2",
BW: "~@2 a1@2 c2@2 e2 ~ g2@2 g#2 ~ a2 ~@3", BX: "a1 ~@7", BY: "a1 ~@6 a1", BZ: "a1@2 ~@4 a1@2 ~@6 a1 ~",
CA: "c2@3 ~@5 e1@7 ~", CB: "a1@3 ~ g1@2 a1@3 ~ g1 ~ a1@2 a1@2", CC: "~@2 a1@2 c2@2 e2@2 g2@2 g#2 ~ a2@2 ~@2",
CD: "c2 ~ c2 ~ c2@2 ~@2 d2@2 e2@5 ~", CE: "a1@2 ~@2 g1@2 a1@3 ~ g1@2 a1@3 ~",
CF: "~@2 c2@2 e2@2 g2@2 a2@2 a2 ~ a2@2 ~@2",
})).s("gm_fretless_bass").gain(0.44)
// chords · clavinet · "tk3"
const clavinet = note(`<
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 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 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 ~ 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 ~@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
>`.pickRestart({
A: "[c4,e4] ~ [a2,a3,c4] ~ g2 ~ [a2,c4,e4] ~@3 [g2,d4] ~ [c4,e4] ~ g3 ~, ~@6 a2 ~", // C Am G5 C
B: "[c3,c4,e4] ~ g3 ~ [a2,a3,c4] ~@3 [g2,d4] ~ [g#2,a3,c4] ~ [a2,c4,e4] ~ g3 ~", // C Am G5 G# Am
})).s("gm_clavinet").gain(0.2)
// chords · flute · "tk5"
const flute = note(`<
~@10 A ~@2 B C ~@5 D@2 ~@2 E@2 ~@2 F@2 ~@2 G H A ~@2 I@2 ~@3 A ~@2 I@2 ~@5 J@2 ~@2 K L ~@2 M@2 N@2 O@2 A ~@2 I@2 ~ P Q
R@8 ~@2 A ~@2 S@2 ~@3 A ~ T ~ A ~ U ~ A ~ U ~ A ~ V ~ W ~ W ~@2 X@2 ~@2 Y Z ~@3 AA@2 AB@2 AC@2 A ~@2 AD@2 ~@3 A ~@2
AE@2 ~ AF@2 R@6 W ~ W ~ W ~@3 AG ~@3 AH@2 A ~@2 AI@2 ~@3 A ~@2 AI@2 ~@3 AJ@2 AK@10 W ~ W ~ AL@2 AM@2
>`.pickRestart({
A: "[e4,g4,c5]@4 [e4,g4,c5]@2 [e4,g4,c5]@5 ~@5", B: "[e4,g4,c5]@2 [e4,g4,c5]@2 [d4,f4,a4]@2 [c4,e4,g4] [d4,f4,a4]",
C: "~ [c4,e4,g4]@4 ~@3", D: "[[c4,c5]@2 [c4,c5]@4 [c4,c5]@4 [c4,c5]@3 ~ [a3,a4]@5 ~@13]/2",
E: "[~@2 [e3,e4]@2 [c4,c5]@2 [c4,c5]@2 [c4,c5]@2 [c4,c5]@2 [c4,c5]@2 [a3,a4]@5 ~@13]/2", // E C A
F: "[~@2 [a3,a4]@2 [a3,a4]@2 [a3,a4]@2 ~@2 a4@2 a4@2 [c4,c5]@4 [a3,a4]@3 ~@11, ~@5 a3@2 ~@9]/2", // A C A
G: "[a3,a4]@3 ~ [a3,a4]@3 ~ [a3,a4]@3 ~ [a3,a4]@2 [a3,a4]@2", H: "[c4,c5]@3 [a3,a4]@5 ~@8",
I: "[[e4,g4,c5]@2 [e4,g4,c5]@2 [d4,f4,a4]@2 [c4,e4,g4] [d4,f4,a4]@2 [c4,e4,g4]@4 ~@3]/2", // C Dm C Dm C
J: "[~@8 [c4,c5]@3 ~ [c4,c5]@2 [a3,a4]@6 ~@12]/2", K: "~@4 a4@2 a4@2 [c4,c5]@3 ~ a3@2 [d4,d5]@2, ~@4 a3@4 ~@4 a4 ~@3",
L: "[c4,c5] ~@3", M: "[[e4,g4,c5]@2 [e4,g4,c5]@3 ~ [e4,g4,c5]@4 [e4,g4,c5]@4 [c4,e4,a4]@5 ~@11 [a3,a4]@2]/2",
N: "[[e4,e5]@2 [g4,g5]@4 [d4,d5]@6 [c4,c5]@2 [e4,e5]@5 ~@11 [g3,g4]@2]/2", // E G D C E G
O: "[[c4,c5]!3 [a3,a4] [c4,c5]@2 [c4,c5] [a3,a4]@2 ~@7]/2", // C A C A
P: "[c4,e4,a4] [c4,e4,a4]@2 [c4,e4,a4]@2 [c4,e4,a4]@2 [e4,g4,c5]", Q: "~ [c4,a4]@3 ~@12, e4@3 ~@13",
R: "[[c4,e4,a4,c5]@3 ~ [c4,e4,a4,c5]@3 ~ [c4,e4,a4,c5]@3 ~ [c4,e4,a4,c5]@2 [e4,g4,c5,e5]@4 ~ [e4,c5]@3 ~@10, ~@18 [c4,a4]@3 ~@11]/2", // Am C F
S: "[[e4,g4,c5]@4 [e4,g4,c5]@4 [d4,f4,a4]@3 ~ [c4,e4,g4]@2 [d4,f4,a4]@4 [c4,e4,g4]@8 ~@6]/2", // C Dm C Dm C
T: "[d4,e4,a4]@3 ~ [c4,e4,a4]@2 [c4,e4,a4]@5 ~@5", U: "[c4,e4,a4]@3 ~ [c4,e4,a4]@2 [c4,e4,a4]@5 ~@5",
V: "~ [c4,e4,a4]@3 ~ [c4,e4,a4]@2 [c4,e4,a4]@5 ~@4", W: "[c4,e4,a4] ~@3",
X: "[~@6 [c4,e4,a4]@2 [e4,g4,c5]@3 ~ [e4,g4,c5]@2 [c4,e4,a4]@4 ~@14]/2", Y: "~@6 [e4,a4] [c4,e4,g4], ~@12 c4 ~@3",
Z: "[e4,g4,c5]@3 ~ [c4,e4]@2 [f4,a4,d5]@2 [e4,g4,c5]@3 ~@5, ~@4 a4 ~@11", // C Dm C
AA: "[[c4,c5]@2 [c4,c5]@3 ~ [c4,c5]@3 ~ [c4,c5]@4 [a3,a4]@5 ~@11 a3@2, ~@30 a4 ~]/2", // C A
AB: "[[e4,e5] [g4,g5]@3 [d4,d5]@2 [c4,c5] [d4,d5]@2 [c4,c5]@2 ~@4 [a3,a4]]/2", // E G D C D C A
AC: "[[c4,c5]@2 [c4,c5]@2 [c4,c5]@2 a4@2 [c4,c5]@3 ~ [c4,c5]@2 [a3,a4]@5 ~@13, ~@6 a3 ~@25]/2", // C A
AD: "[[e4,g4,c5]@4 [e4,g4,c5]@4 [d4,f4,a4]@3 ~ [c4,e4,g4]@2 [d4,f4,a4]@4 [c4,e4,g4]@6 ~@8]/2", // C Dm C Dm C
AE: "[[e4,g4,c5]@4 [e4,g4,c5]@4 [d4,f4,a4]@3 ~ [c4,e4,g4]@2 [d4,f4,a4]@4 [c4,e4,g4]@5 ~@9]/2", // C Dm C Dm C
AF: "[[a3,a4]@3 ~ [a3,a4]@3 ~ [a3,a4]@3 ~ [a3,a4]@2 [c4,c5]@4 [a3,a4]@2 ~@12]/2", // A C A
AG: "[a3,a4]@2 [g3,g4] [a3,a4] [g3,g4] [a3,a4]@2 ~", // A G A G A
AH: "[[c4,c5]@3 ~ [a3,a4]@2 [c4,c5]@3 ~ [c4,c5]@3 ~ [a3,a4]@6 ~@12]/2", // C A C A
AI: "[[e4,g4,c5]@2 [e4,g4,c5]@2 [d4,f4,a4]@2 [c4,e4,g4] [d4,f4,a4]@2 [c4,e4,g4]@3 ~@4]/2", // C Dm C Dm C
AJ: "[[c4,e4]@3 ~ [c4,e4]@3 ~@2 [c4,e4]@3 [c4,e4]@2 [e4,g4]@4 ~ [c4,e4]@3 ~@10]/2", // C Em C
AK: "[[c4,e4]@3 ~ [c4,e4]@3 ~ [c4,e4]@3 ~ [c4,e4]@2 [e4,g4]@4 ~ e4@3 ~@10, ~@18 c4@3 ~@11]/2", // C Em
AL: "[[a3,a4]@3 ~ [a3,a4]@2 ~@2 [a3,a4]@3 ~ [a3,a4]@2 [c4,c5]@4 [a3,a4]@2 ~@12]/2", // A C A
AM: "[[a3,a4] ~ [a3,a4] ~ [a3,a4] ~ [a3,a4] [c4,c5]@2 [a3,a4] ~@6]/2", // A C A
})).s("gm_flute").gain(0.3).pan(0.4)
// chords · lead 5 charang · "tk6"
const lead_5_charang = note(`<
~@7 A B C ~@9 D ~ D ~ D ~ E ~ D ~ F G D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~
D ~ D ~ D ~ D ~ D ~ D H@3 ~@2 D ~ D ~ E ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D I J@2 D ~ D ~ D ~ D ~ D ~@3 D ~ D
~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ E ~ D ~ D K@2 L@2 ~ D ~ D ~ D ~ D ~@7 M ~ D ~ D ~ D ~ D ~@20
>`.pickRestart({
A: "~@2 [d5,d#5] ~@5 d5@2 c5@5 ~", B: "~@4 [g#4,a4] ~@3 e4 ~ d4@4 ~@2, ~@10 e4 ~@5", C: "d4 ~@7 a4 ~@7",
D: "[c4,e4]@4 a3 ~@11", E: "[c4,e4]@2 d4@4 c4 ~ d4 ~ c4@5 ~", F: "[c4,e4]@2 ~@2 [a3,d4,f#4]@11 ~", G: "a3 ~@15",
H: "[~@5 a4@19]/3", I: "~@7 a4", J: "[~@2 b4@2 ~@2 c5@3 ~ d5@2 ~@2 e5@4 ~@14]/2",
K: "[a3@2 ~@2 a3@2 ~@2 a3@3 ~ a3 ~ c4@4 ~ a3@5 ~@8]/2", L: "[a3@2 ~@2 a3@2 ~@2 a3@3 ~ a3 ~ c4@6 a3@2 ~@10]/2",
M: "~ d5@3 c5 a4 g4 ~",
})).s("gm_lead_5_charang").gain(0.19).pan(0.4)
// chords · electric guitar jazz · "tk7"
const electric_guitar_jazz = note(`<
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 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 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 ~ 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 ~@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
>`.pickRestart({
A: "[c4,e4,a4] ~@5 [c4,e4,a4] ~@5 [c4,e4,a4] ~@3", B: "~@2 [c4,e4,a4] ~@5 [c4,e4,a4] ~@7",
})).s("gm_electric_guitar_jazz").gain(0.14).pan(0.4)
// chords · electric guitar muted · "tk8"
const electric_guitar_muted = note(`<
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 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 A B A B A B A B A B A B ~@4 A B A B A B A B
A B A B A B A C A B A B A B A B A B A B A B A B A B A B A B D E F B A B A B A B A B A B G H G H G H G H 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: "~@2 [a3,c4] ~ [a3,c4] ~@3 [a3,c4] ~ [a3,c4] ~@3 [a3,c4] ~", // Am
B: "[a3,c4] ~@3 [a3,c4] ~ [a3,c4] ~@3 [a3,c4] ~ [a3,c4] ~ [a3,c4] ~", C: "c4 ~@15",
D: "g3 ~ g3!2 ~@2 g3!2 ~ g3!2 ~ a3 ~@2 g3", E: "~ g3!2 ~@2 g3!4 ~ g#3 ~ a3 ~@3",
F: "g3 ~ [a3,c4] ~ [a3,c4] ~@3 [a3,c4] ~ [a3,c4] ~@3 [a3,c4] ~", // Am
G: "[c4,e4,a4] ~ [a3,c4] ~ [a3,c4] ~ [c4,e4,a4] ~ [a3,c4] ~ [a3,c4] ~ [c4,e4,a4] ~ [a3,c4] ~", // Am
H: "[a3,c4] ~ [c4,e4,a4] ~ [a3,c4] ~ [a3,c4] ~ [c4,e4,a4] ~ [a3,c4] ~ [a3,c4] ~ [a3,c4] ~", // Am
})).s("gm_electric_guitar_muted").gain(0.2).pan(0.4)
// other · electric guitar muted · "tk9"
const electric_guitar_muted_2 = note(`<
~@108 A B A B ~@38 A B A B A B ~@24 A B A B A B A B A B A B A B C D A B A B
>`.pickRestart({
A: "g3 ~ g3!2 ~@2 g3!2 ~ g3!2 ~ a3@3 g3", B: "~ g3!2 ~@2 g3!4 ~ g#3@2 a3 ~@3",
C: "g3 ~ g3!2 ~@2 g3!2 ~ g3!2 ~ g3@3 g3", D: "~ g3!2 ~@2 g3!4 ~ g3@2 g3 ~@3",
})).s("gm_electric_guitar_muted").gain(0.21).pan(0.4)
// other · electric guitar muted · "tk11"
const electric_guitar_muted_3 = note(`<
~@108 A@2 B@2 ~@38 A@2 B@2 C@2 ~@24 A@2 B@2 C@2 D@2 E@2 F@4 A@2 F@2 G@2
>`.pickRestart({
A: "[a3 ~@3 a3 ~ a3@2 ~@2 a3 ~ a3 ~ c4@6 a3 ~@3 g3@2 g#3@2 a3 ~@3]/2",
B: "[a3 ~@3 a3@2 a3@2 ~@2 a3 ~ a3 ~ c4@6 a3 ~@3 g3@2 g#3 ~@5]/2",
C: "[~ a3@2 ~ a3@2 a3@2 ~@2 a3@2 a3 ~ c4@6 a3 ~@3 g3@2 g#3 ~@5]/2",
D: "[a3 ~@3 a3@2 a3@2 ~@2 a3@2 a3 ~ c4@6 a3 ~@3 g3 ~ g#3 ~@5]/2",
E: "[a3@2 ~@2 a3@2 a3 ~@3 a3@2 ~@2 c4@6 a3 ~@3 g3@2 g#3@2 a3 ~@3]/2",
F: "[a3@2 ~@2 a3@2 a3@2 ~@2 a3 ~ a3 ~ c4@6 a3 ~@3 g3 ~ g#3@2 a3 ~@3]/2",
G: "[a3@2 ~@2 a3@2 a3@2 ~@2 a3 ~ a3 ~ c4@6 ~@12]/2",
})).s("gm_electric_guitar_muted").gain(0.16).pan(1)
// other · trumpet · "tk12"
const trumpet = note(`<
~@3 A B ~@6 A B ~@2 C D ~@2 E ~@23 F G ~@2 H I ~@4 J ~@3 K L M ~ N L M ~ O ~@5 P D ~ L M Q N L M Q N ~ R ~@5 S D ~@2 A
T ~@2 S U ~@2 A T ~@2 S U ~@2 V ~ V ~@9 N ~ N ~@3 N W X ~ N W X ~ N ~@2 Y Z AA AB ~ AC AD AB ~ AE W X ~ AE W X ~ AE
~@7 AF AG AH AG AH AG AH AG AI W X ~ N W X ~ N W X ~ AJ AK X ~ N W X ~ N W X AL AM W X ~ AN
>`.pickRestart({
A: "~@3 e5", B: "a5 ~", C: "~@4 a5@2 g5 ~@3 a5@2 g5 ~ e5 ~", D: "g5@2 a5 ~@5",
E: "~@2 c4 ~ e4 ~ g4 ~ a4@2 a4 ~ a4 ~@3", F: "~@3 e4", G: "a4@5 ~@3", H: "~@4 a4@2 g4@2 ~@2 a4@2 g4@2 e4 ~",
I: "g4@2 a4 ~@5", J: "~@2 c4 ~ e4 ~ g4 ~ a4@2 a4@2 a4@2 ~@2", K: "~@2 c5 ~ e5 ~ g5 ~ a5@2 a5 ~ a5 ~@3",
L: "a4@2 ~@2 g4 ~ a4@2 ~@2 g4 ~ a4 ~@3", M: "c5@4 a4@2 ~@2 g4@2 g#4@2 a4 ~@3",
N: "~@2 c4 ~ e4 ~ g4 ~ a4@2 a4@2 a4 ~@3", O: "~@2 c5 ~ e5 ~ g5 ~ a5 ~ a5 ~ a5 ~@3",
P: "~@4 a5@2 g5@2 ~@2 a5 ~ g5 ~ e5 ~", Q: "~@2 a4 ~@5", R: "~@2 c5 ~ e5 ~ g5 ~ a5@2 a5@2 a5@2 ~@2",
S: "~@4 a5 ~ g5 ~@3 a5 ~ g5 ~ e5 ~", T: "a5@5 ~@3", U: "g5@4 a5 ~@11", V: "~@2 c4 ~ e4@2 g4 ~ a4@2 a4 ~ a4 ~@3",
W: "a4@2 ~@2 g4@2 a4@2 ~@2 g4 ~ a4 ~@3", X: "c5@2 a4 ~ g4 g#4 a4 ~", Y: "e4@2 e4@2 e4 ~@3 f#4@2 ~@2 f#4@2 ~@2",
Z: "g4@2 g4@2 g4@2 ~@2 a4 ~@3 g5@2 a5@2", AA: "~@6 a4@2 ~@2 g4@2 a4 ~@3", AB: "c5@4 a4 ~@3 g4@2 g#4@2 a4@2 ~@2",
AC: "~@2 c4 ~ e4 ~ g4 ~ a4 ~ a4 ~ a4@2 ~@2", AD: "a4 ~@3 g4 ~ a4@2 ~@2 g4 ~ a4 ~@3",
AE: "~@2 c4 ~ e4 ~ g4 ~ a4@2 a4 ~ a4@2 ~@2", AF: "~@8 a4 ~ a4@5 ~", AG: "a4 ~@3 g4 ~ a4 ~@3 g4 ~ a4 ~@3",
AH: "~@2 g4 ~ a4 ~@5 g4 ~ a4 ~@3", AI: "~@2 g4 ~ a4 ~ g4 ~ a4@2 a4 ~ g4 ~@3", AJ: "~@12 g5@2 a5 ~",
AK: "~@4 g4@2 a4@2 ~@2 g4 ~ a4 ~@3", AL: "e4!3 ~ f#4 ~ f#4 ~", AM: "g4!3 ~ a4 ~ g5 a5",
AN: "~@2 c5 ~ e5 ~ g5 ~ a5@2 a5@2 a5 ~@3",
})).s("gm_trumpet").gain(0.33)
// … 230 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.