Strudelify

Don't Think Twice, It's Alright

Bob Dylan

KeyF majorTempo200 bpm
0:00/0:00
// Don't Think Twice, It's Alright — Bob Dylan
// 200 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 244 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(200/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 · harmonica · "Harmonica (Melody)"
const harmonica = note("<~@157 A B C@4 D@7 E@5 F@4 G H@2 I@8 ~@54>".pickRestart({
  A: "~@5 a4@2 ab4", B: "a4@7 ~ a4@8", C: "[c5@5 ~ c5@4 ~ c5@4 a4@5 g4@2 f4@25 bb3@7 ~@2 bb3@7 ~]/4",
  D: "[bb3@7 a3@4 bb3@4 c4@26 ~ a4@4 ~ a4@4 ~ a4@3 ~ a4@4 ab4@2 a4@4 ~ a4@4 ~ a4@3 ab4@3 g4@3 f4@30 ~, ~@23 ab4 ~@32]/7",
  E: "[g4@7 ~ g4@5 ~ g4@10 a4@3 ~ a4@2 g4@26 c4@4 d4@7 f4@6 ~ f4@4 ~@2]/5",
  F: "[f4@8 g4@4 f4@7 ab4@6 ~ g4@5 f4@8 g4@12 ~ d4@4 f4@3 ~ f4@2 ~@2]/4", G: "f4@3 ~ f4@3 ~ g4@7 ~",
  H: "[a4@7 g4@4 ~ f4@8 g4@12]/2",
  I: "[~@3 a4@5 ~@2 a4@4 ~ a4@6 ~ a4@4 ~ a4@4 a4@6 g4@5 a4@4 ~ f4@19 ~ a4@4 ~@3 a4@4 ~ g4@4 ~@5 ab4@2 g4@3 ~ f4@25 ~@9]/8",
})).s("gm_harmonica").gain(0.4)

// bass · acoustic bass · "Bass"
const bass = note(`<
  ~ A B C D E F G H I J K L M N O P Q R S T U V W X I J A B E F Y Z AA R S AB AC T I A B C D E F G H I J K L M N O P Q R
  S T U V W X I J A B E F Y Z AA R S AB AC T I A B C D E F G H I J K L M N O P Q R S T U V W X I J A B E F Y Z AA R S AB
  AC T I A B C D E F G H I J K L M N O P Q R S T U V W X I J A B E F Y Z AA R S AB AC T I J A B K AD E F AE AF R AG S T
  U V AH X A B I J M AI AJ AK AC R S AB AA AL A B A B C D E F AE AF R AG S T U V W X I J I AM E F AJ AN AC AG AO AP AA
  AQ AA@2 A B C D E F G H A B C D E F G H I J K L M ~
>`.pickRestart({
  A: "f2@7 ~ c2@5 ~@3", B: "f2@7 ~ c2@4 ~@4", C: "d2@7 ~ a1@5 ~@3", D: "d2@7 ~ a1@4 ~@4", E: "bb1@7 ~ f2@5 ~@3",
  F: "bb1@7 ~ f2@4 ~@4", G: "c2@7 ~ g2@5 ~@3", H: "c2@7 ~ g2@4 ~@4", I: "f2@7 ~ c2@7 ~", J: "f2@6 ~@2 f2@4 f2 ~@3",
  K: "d2@7 ~ a1@7 ~", L: "d2@6 ~@2 d2@4 b1 ~@3", M: "bb1@7 ~ f2@7 ~", N: "bb1@6 ~@2 bb1@4 d2 ~@3", O: "c2@7 ~ g1@7 ~",
  P: "c2@6 ~@2 c2@4 g1 ~@3", Q: "a1@7 ~ e1@6 ~@2", R: "a1@3 ~ a1@3 ~", S: "d2@3 ~ d2@3 ~", T: "c2@3 ~ c2@3 ~",
  U: "b1@7 ~ f1@5 ~@3", V: "b1@7 ~ f1@4 ~@4", W: "a1@3 ~ ab2@3 ~", X: "g2@3 ~ c2@3 ~", Y: "g2@7 ~ d2@5 ~@3",
  Z: "g2@7 ~ d2@4 ~@4", AA: "f2@7 ~ c2@6 ~@2", AB: "g2@3 ~ g2@3 ~", AC: "f2@3 ~ f2@3 ~", AD: "d2@6 ~@2 d2@4 d2 ~@3",
  AE: "c2@7 ~ g1@5 ~@3", AF: "c2@7 ~ g1@4 ~@4", AG: "a1@8 b1@3 ~ db2@3 ~", AH: "a1@6 ~@2 ab2@7 ~",
  AI: "bb1@6 ~@2 bb1@4 ab2 ~@3", AJ: "g2@7 ~ d2@7 ~", AK: "g2@6 ~@2 g2@4 gb2 ~@3", AL: "c2@7 ~ g1@6 ~@2",
  AM: "f2@6 ~@2 f2@4 f1 ~@3", AN: "g2@6 ~@2 g2@4 g2 ~@3", AO: "d2@7 ~ a1@6 ~@2", AP: "g2@7 ~ d2@6 ~@2",
  AQ: "c2@8 d2@3 ~ e2@3 ~",
})).s("gm_acoustic_bass").gain(0.35)

// chords · piano
const piano = note(`<
  ~ A@2 B@2 C@2 D@2 E@4 F@2 G@2 H I J K L@3 M@3 N@2 O@5 I P Q R S R A@2 B@2 C@2 D@2 E@4 F@2 G@2 H I J K L@3 M@3 N@2 O@5
  I P Q R S R A@2 B@2 C@2 D@2 E@4 F@2 G@2 H I J K L@3 M@3 N@2 O@5 I P Q R S R A@2 B@2 C@2 D@2 E@4 F@2 G@2 H I J K L@3
  M@3 N@2 O@5 I P Q R S T@2 U@2 V@2 W@5 X@2 Y Z@2 AA AB A@2 AC@4 AD@2 AE AF AG Q AH@2 U@2 AI@2 AJ@2 C@2 AK@2 H I AL AM
  Z@2 AN@4 AO@2 C@2 AP@2 AQ I P Q R AR@2 AE A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 E@4 AS@2
>`.pickRestart({
  A: "[f2,a3,c4,f4,a4]/2", B: "[[d3,a3]@26 ~ d3 a3@2 ~@2, [d4,f4,a4]@31 ~]/2",
  C: "[~@12 [f3,d4]@3 ~, bb3@29 ~@3, ~ [bb2,d3]@30 ~]/2", D: "[~@12 c4 ~ [g3,c4] ~, [e3,bb3]@31 ~, ~@24 g3 ~@7]/2",
  E: "[~@24 [a3,f4]@6 ~@2 d3@25 ~@2 d3 a3@2 ~@2, c4@29 ~@2 a4@33, ~ [f2,f3]@30 f4@31 ~@2, ~@31 a3@27 ~@6, ~@16 d4@15 ~]/4", // Dm F
  F: "[~@12 d4 ~ [f3,d4] ~, [d3,bb3]@31 ~, ~@24 f3 ~@7]/2", G: "[[c3,g3]@26 ~ c3 g3@2 ~@2, [bb3,c4,e4]@31 ~]/2",
  H: "[a2,e3,g3,a3,c4]", I: "[a2,e3,g3,a3,db4]", J: "[d3,a3,c4,d4,f4]@7 ~", K: "~ [c3,f3]@15, c4",
  L: "[[b2,f3,a3,b3,d4]@15 ~ [e3,g3]@4 [ab2,ab3,b3,d4,f4]@4, ~@31 [a2,a3,c4]@9 ~@8]/3", // Bm7b5 Em Abdim Am
  M: "[[g2,g3,bb3,d4,f4]@8 ~ [c3,e3]@6 ~ c4@22 ~@2 [c4,a4]@2 ~@6, ~@8 bb3@6 ~ f2@30 ~@3, ~@5 [f4,a4]@8 ~@3, ~@16 a3@27 ~@5]/3", // Gm7 C F
  N: "[~@12 [f3,c4,eb4]@3 ~, a3@29 ~@3, ~ [f2,eb3]@30 ~]/2", // F7
  O: "[[bb3,d4,f4]@23 ~ [bb3,f4]@2 ~@30 d4@2 ~@2 [g3,d4]@2 ~@2 f3@16, bb2@29 ~@3 f3@30 ~@18, f3@27 ~@4 b3@32 c4@17, ~@56 g3 ~@23]/5", // Bb Bb5 G5
  P: "[d3,a3,d4,f4,a4]", Q: "[g2,g3,b3,d4,f4]", R: "[f2,a3,c4,f4,a4]", S: "~ [c3,e3]@15, bb3",
  T: "[[c4,f4,a4]@23 ~ [c4,a4]@2 ~@6, f2@29 ~@3, a3@27 ~@5]/2", U: "[~@12 f4 ~ [a3,f4] ~, [f3,c4]@31 ~, ~@24 a3 ~@7]/2",
  V: "[~@12 f4 ~ [a3,f4] ~, [f3,d4]@31 ~, ~@24 a3 ~@7]/2", // Dm
  W: "[~@12 [f3,d4]@3 ~ c3@15 ~ a2@8, bb3@29 ~@2 [g3,bb3,c4,e4]@32 [e3,g3,a3,c4]@17, ~ [bb2,d3]@30 ~@49]/5", // Dm C7 Am7 Bb
  X: "[[a2,e3,g3,a3,db4]@7 ~ d3@8, ~@15 [a3,c4,d4,f4]@17]/2", Y: "[f3,c4]",
  Z: "[[b2,f3]@26 ~ b2 f3@2 ~@2, [a3,b3,d4]@31 ~]/2", AA: "[a2,e3,g3,a3,c4]@7 ~ f3@8, ~@7 b3@9",
  AB: "[f3,bb3] [e3,bb3]", // Bb5 Edim
  AC: "[~@12 c4 ~ [f3,c4] ~ bb3@11 ~ [bb3,f4] ~@3, [eb3,a3]@30 ~ bb2@30 ~@3, ~@24 f3 ~@6 [d4,f4]@24 ~@9, ~@32 f3@27 ~@5]/4", // F5 Bb5 Ebdim Dm
  AD: "[~@12 [g3,d4,f4]@3 ~, b3@29 ~@3, ~ [g2,f3]@30 ~]/2", AE: "~ [f2,f3]@15, c4", AF: "[db3,g3]",
  AG: "~ [d3,f3]@15, d4", AH: "[[f2,a3,c4,f4,a4]@15 ~ [c3,bb3]@16, ~@15 [g3,c4,e4]@17]/2",
  AI: "[~@7 f4, f2, f4@13 c4@3, c4@23 a3@9, a3@5 f3@3]/2", AJ: "[~@7 f4, d3, f4@13 d4@3, d4@23 a3@9, a3@5 f3@3]/2",
  AK: "[~@12 [g3,c4,e4]@3 ~, bb3@29 ~@3, ~ [c3,e3]@30 ~]/2", AL: "~ [d3,f3]@15, c4", AM: "[c3,a3,c4,d4,f4]",
  AN: "[[a2,e3,g3,a3,c4]@4 [ab2,ab3,b3,d4,f4]@3 ~ f3@4 [e3,bb3]@3 ~@15 f4@2, ~@15 bb3@9 ~@7 f4@27 c4@6, ~@31 c4@24 a3@9, ~@31 a3@21 f3@12, ~ f2]/4", // Am7 Abdim Edim
  AO: "[[a3,c4,eb4]@23 ~ [a3,eb4]@2 ~@6, [f2,f3]@7 ~]/2", AP: "[[b3,d4,f4]@23 ~ [b3,f4]@2 ~@6, g2@29 ~@3, g3@27 ~@5]/2",
  AQ: "[f2,a3,c4,f4]", AR: "[~ [c3,e3]@14 ~ [a3,c4]@16, bb3@14 ~ [f2,f4,a4]@17]/2", AS: "[[d3,bb3]@31 ~]/2",
})).s("gm_piano").gain(0.3)

// chords · acoustic guitar nylon · "Acoustic Guitar (nylon)"
const acoustic_guitar_nylon = note("<~@161 A ~@3 B ~@3 C ~@2 D E@2 F@2 G H I J@2 K L M J G N O ~@55>".pickRestart({
  A: "[a3,d4,g4]@2 [a3,d4,f4] ~ [a3,d4,g4]@2 [a3,d4,f4] ~", // Dsus4 Dm Dsus4 Dm
  B: "[bb3,e4,a4]@4 [bb3,e4,g4]@2 ~@2 [bb3,e4,a4]@3 ~ [bb3,e4,g4]@3 ~", // A Edim A Edim
  C: "[a3,c4,g4]@3 ~ [a3,c4,f4] ~@4 [a3,c4,g4]@3 [a3,c4,f4]@2 ~@2", D: "[c4,e4,g4]@7 ~ [b3,f4,a4]@8",
  E: "[[d4,f4,bb4]@7 ~ [e4,g4]@8 [c4,a4]@3 ~ [a3,c4,f4]@3 ~@5 [a3,c4,f4]@4, bb3 ~@7 c5@11 ~@13]/2", // Bb Em F
  F: "~@5 [a3,c4,f4]@3 ~@4 [a3,c4,f4]@3 ~", G: "~@4 [a3,c4,f4]@4 ~@4 [a3,c4,f4]@3 ~",
  H: "~@5 [bb3,d4,f4]@3 ~@5 [bb3,d4,f4]@3", I: "~@4 [bb3,d4,f4]@3 ~@6 [bb3,d4,f4]@3",
  J: "~@4 [b3,d4,f4]@3 ~@5 [b3,d4,f4]@3 ~", K: "~@4 [a3,c4,f4]@3 ~@5 [a3,c4,f4]@3 ~",
  L: "~@4 [g3,db4,e4]@3 ~@6 [g3,db4,e4]@2 ~", M: "~@4 [f3,a3,d4]@3 ~@6 [f3,a3,d4]@2 ~",
  N: "~@5 [g3,bb3,e4]@3 ~@5 [g3,bb3,e4]@3", O: "~@4 [a3,c4,f4]@3 ~@5 [a3,c4,f4]@2 ~@2",
})).s("gm_acoustic_guitar_nylon").gain(0.35)

// chords · acoustic guitar steel · "Acoustic Guitar (steel)"
const acoustic_guitar_steel = note(`<
  ~ A@4 B C@3 ~@3 D ~@3 E ~@3 F ~@2 G H@2 I@2 J K L M@2 N O P M J Q R A@4 B C@3 ~@3 D ~@3 E ~@3 F ~@2 G H@2 I@2 J K L
  M@2 N O P M J Q R A@4 B C@3 ~@3 D ~@3 E ~@3 F ~@2 G H@2 I@2 J K L M@2 N O P M J Q R A@4 B C@3 ~@3 D ~@3 E ~@3 F ~@2 G
  H@2 I@2 J K L M@2 N O P M J Q R ~@65 A@4 B C@3 A@4 B C@3 ~@3 D ~@2
>`.pickRestart({
  A: "[~@4 [f4,a4,c5]@2 [c4,f4,a4]@2 ~@2 [bb3,d4,g4] ~ [a3,c4,f4]@12 [c4,f4,a4] ~@2 [c4,f4,a4] ~ [c4,f4,a4] [a3,f4]@10 [d4,f4,a4] ~@3 [f3,a3,d4]@2 [a3,d4,f4]@17 ~, ~@6 g4 ~@8 c4 ~@16]/4", // F Gm F Dm
  B: "[d3,f3,bb3]@2 ~@6 [d3,f3,bb3]@3 ~@3 [d3,f3,bb3] ~", // Bb
  C: "[[d3,f3,bb3]@3 ~ [d3,f3,bb3]@4 [d3,f3,a3]@4 [d3,f3,bb3] ~ [d3,f3]@2 [c3,e3]@23 ~@9, ~@14 c4@25 ~@9]/3", // Bb Dm Bb Dm C
  D: "[a3,d4,g4]@2 [a3,d4,f4] ~ [a3,d4,g4]@2 [a3,d4,f4] ~", // Dsus4 Dm Dsus4 Dm
  E: "[bb3,e4,a4]@4 [bb3,e4,g4]@2 ~@2 [bb3,e4,a4]@3 ~ [bb3,e4,g4]@3 ~", // A Edim A Edim
  F: "[a3,c4,g4]@3 ~ [a3,c4,f4] ~@4 [a3,c4,g4]@3 [a3,c4,f4]@2 ~@2", G: "[c4,e4,g4]@7 ~ [b3,f4,a4]@8",
  H: "[[d4,f4,bb4]@7 ~ [e4,g4]@8 [c4,a4]@3 ~ [a3,c4,f4]@3 ~@5 [a3,c4,f4]@4, bb3 ~@7 c5@11 ~@13]/2", // Bb Em F
  I: "~@5 [a3,c4,f4]@3 ~@4 [a3,c4,f4]@3 ~", J: "~@4 [a3,c4,f4]@4 ~@4 [a3,c4,f4]@3 ~",
  K: "~@5 [bb3,d4,f4]@3 ~@5 [bb3,d4,f4]@3", L: "~@4 [bb3,d4,f4]@3 ~@6 [bb3,d4,f4]@3",
  M: "~@4 [b3,d4,f4]@3 ~@5 [b3,d4,f4]@3 ~", N: "~@4 [a3,c4,f4]@3 ~@5 [a3,c4,f4]@3 ~",
  O: "~@4 [g3,db4,e4]@3 ~@6 [g3,db4,e4]@2 ~", P: "~@4 [f3,a3,d4]@3 ~@6 [f3,a3,d4]@2 ~",
  Q: "~@5 [g3,bb3,e4]@3 ~@5 [g3,bb3,e4]@3", R: "~@4 [a3,c4,f4]@3 ~@5 [a3,c4,f4]@2 ~@2",
})).s("gm_acoustic_guitar_steel").gain(0.28)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  ~@25 A@2 B@2 C@2 D@2 E F E G E H B@2 ~@23 A@2 B@2 C@2 D@2 E F E G E H B@2 ~@23 A@2 B@2 C@2 D@2 E F E G E H B@2 ~@23
  A@2 B@2 C@2 D@2 E F E G E H B@6 C@2 I@2 J F K@2 B@2 L M B@4 C@2 D@2 E J E G N H O@2 ~@16 O@2 B@2 C@2 D@2 E J E G E H
  E@2 ~@22
>`.pickRestart({
  A: "[~ f6, a5@31 ~]/2", B: "a5/2", C: "f5/2", D: "b5/2", E: "a5", F: "g5@14 ~ g5", G: "b5", H: "bb5", I: "bb5/2",
  J: "g5", K: "c6", L: "g5 b5", M: "bb5!2", N: "a5@14 ~ a5", O: "[a5@14 ~ a5@17]/2",
})).s("gm_string_ensemble_1").gain(0.24)

// chords · string ensemble 1 · "Strings" · soft notes
const string_ensemble_1_soft = note(`<
  ~@25 A ~ B@2 C@2 D@2 E F E@3 G D@2 ~@23 A ~ B@2 C@2 D@2 E F E@3 G D@2 ~@23 A ~ B@2 C@2 D@2 E F E@3 G D@2 ~@23 A ~ B@2
  C@2 D@2 E F E@3 G D@6 C@2 H@2 I F E A C@2 J K D@2 B@2 C@2 D@2 E L E@3 M D@2 ~@16 D@2 B@2 C@2 D@2 E F A E@2 M E@2 ~@22
>`.pickRestart({
  A: "f6@3 ~", B: "eb6/2", C: "d6/2", D: "f6/2", E: "f6", F: "db6", G: "e6", H: "e6/2", I: "c6", J: "c6 f6", K: "f6 e6",
  L: "db6@3 ~", M: "e6@3 ~",
})).s("gm_string_ensemble_1").gain(0.08)

// chords · electric guitar jazz · "Electric Guitar (jazz)"
const electric_guitar_jazz = note(`<
  ~ A B C D E F G H A B I J K L M N O P Q R S T U V W X Y Z AA AB AC AD I P C AE AF AG I A B C D E F G H A B I J K L M N
  O P Q R S T U V W X Y Z AA AB AC AD I P C AE AF AG I A B C D E F G H A B I J K L M N O P Q R S T U V W X Y Z AA AB AC
  AD I P C AE AF AG I A I C D E F G H A B I J K E M N AH P Q R S T U V W X Y Z AA AB AC AD I P C AE AF AG I J A B AF I
  AI AJ M N AK AL R Q AM AN U V W X AO AP E F AQ AR I P AS AE AT AG AT AU I J C D AA AB G H AV P Q AW AM AX AY AZ AF I
  BA BB E F AC AD AF P I BC AF M AF I A I C D E F G H A B C D E F G H A B I J K ~
>`.pickRestart({
  A: "~@4 [a3,f4]@7 ~ [a3,f4] ~@3", B: "~@4 [a3,f4] ~@7 [a3,f4]@2 ~@2", C: "~@4 [d4,a4]@2 ~@6 [d4,a4] ~@3",
  D: "~@4 [d4,a4]@2 ~@6 [d4,a4] ~@3, ~@11 a3@2 ~@3", E: "~@4 [f3,d4] ~@7 [f3,d4] ~@3",
  F: "~@4 [f3,d4]@4 ~@4 [f3,d4] ~@3", G: "~@4 [bb3,e4] ~@7 [bb3,e4] ~@3", H: "~@4 [bb3,e4]@4 ~@4 [bb3,e4] ~@3",
  I: "~@4 [a3,f4] ~@7 [a3,f4] ~@3", J: "~@4 [a3,f4]@4 ~@4 [a3,f4] ~@3", K: "~@4 [f3,d4]@7 ~ [f3,d4] ~@3",
  L: "~@4 [f3,d4] ~@7 [f3,d4]@2 ~@2", M: "~@4 [bb3,e4] ~@6 g3 [bb3,e4]@2 ~@2", N: "~@4 [bb3,e4] ~@7 [bb3,e4]@2 ~@2",
  O: "~@4 [g3,c4]@2 ~@6 [g3,c4] ~@3", P: "~@4 [g3,db4]@2 ~@6 [g3,db4] ~@3", Q: "~@4 [c4,f4] ~@7 [c4,f4] ~@3",
  R: "~@4 [c4,f4]@7 ~ [c4,f4] ~@3", S: "~@4 [a3,d4]@7 ~ [a3,d4] ~@3", T: "~@4 [a3,d4] ~@7 [a3,d4]@2 ~@2",
  U: "~@2 [g3,c4] ~@3 [b3,f4] ~", V: "~@2 [bb3,f4] ~ [bb3,e4]@4", W: "~@4 [c4,a4] ~@6 a3 [c4,a4]@2 ~@2",
  X: "~@4 [c4,a4] ~@7 [c4,a4]@2 ~@2", Y: "~@4 [a3,eb4] ~@7 [a3,eb4] ~@3", Z: "~@4 [a3,eb4]@4 ~@4 [a3,eb4] ~@3",
  AA: "~@4 [bb3,f4]@2 ~@6 [bb3,f4] ~@3", AB: "~@4 [bb3,f4]@2 ~@6 [bb3,f4] ~@3, ~@11 f3@2 ~@3",
  AC: "~@4 [b3,f4] ~@7 [b3,f4] ~@3", AD: "~@4 [b3,f4]@4 ~@4 [b3,f4] ~@3", AE: "~@4 [b3,f4]@2 ~@6 [b3,f4] ~@3",
  AF: "~@4 [a3,f4]@2 ~@6 [a3,f4] ~@3", AG: "~@4 [bb3,e4]@2 ~@6 [bb3,e4] ~@3", AH: "~@4 [g3,c4] ~@7 [g3,c4] ~@3",
  AI: "~@4 [bb3,f4] ~@6 f3 [bb3,f4]@2 ~@2", AJ: "~@4 [bb3,f4] ~@7 [bb3,f4]@2 ~@2",
  AK: "~@4 [g3,c4] ~@6 e3 [g3,c4]@2 ~@2", AL: "~@4 [g3,db4] ~@7 [g3,db4] ~@3", AM: "~@4 [a3,d4]@2 ~@6 [a3,d4] ~@3",
  AN: "~@4 [a3,d4]@2 ~@6 [a3,d4] ~@3, ~@11 f3@2 ~@3", AO: "~@4 [a3,eb4]@2 ~@6 [a3,eb4] ~@3",
  AP: "~@4 [a3,eb4]@2 ~@6 [a3,eb4] ~@3, ~@11 f3@2 ~@3", AQ: "~@4 [b3,f4]@7 ~ [b3,f4] ~@3",
  AR: "~@4 [b3,f4] ~@7 [b3,f4]@2 ~@2", AS: "~@4 [d4,a4] ~@6 a3 [d4,a4]@2 ~@2", AT: "~@4 [c4,a4]@2 ~@6 [c4,a4] ~@3",
  AU: "~@4 [c4,a4]@2 ~@6 [c4,a4] ~@3, ~@11 a3@2 ~@3", AV: "~@4 [g3,c4]@7 ~ [g3,c4] ~@3",
  AW: "~@4 [c4,f4]@2 ~@6 [c4,f4] ~@3", AX: "~@4 [a3,d4] ~@7 [a3,d4] ~@3", AY: "~@2 [g3,c4] ~ [b3,f4]@4",
  AZ: "~@4 [bb3,f4] ~@3 [bb3,e4]@8", BA: "~@4 [a3,eb4]@7 ~ [a3,eb4] ~@3", BB: "~@4 [a3,eb4] ~@7 [a3,eb4]@2 ~@2",
  BC: "~@4 [b3,f4] ~@6 g3 [b3,f4]@2 ~@2", // Bdim
})).s("gm_electric_guitar_jazz").gain(0.25)

// chords · piano · "Bright Acoustic Piano"
const piano_2 = note("<~@76 A ~@3 B ~@3 C ~@2 D E@2 F@2 G H I J@2 K L M J G N O ~@140>".pickRestart({
  A: "[a3,d4,g4]@2 [a3,d4,f4] ~ [a3,d4,g4]@2 [a3,d4,f4] ~", // Dsus4 Dm Dsus4 Dm
  B: "[bb3,e4,a4]@4 [bb3,e4,g4]@2 ~@2 [bb3,e4,a4]@3 ~ [bb3,e4,g4]@3 ~", // A Edim A Edim
  C: "[a3,c4,g4]@3 ~ [a3,c4,f4] ~@4 [a3,c4,g4]@3 [a3,c4,f4]@2 ~@2", D: "[c4,e4,g4]@7 ~ [b3,f4,a4]@8",
  E: "[[d4,f4,bb4]@7 ~ [e4,g4]@8 [c4,a4]@3 ~ [a3,c4,f4]@3 ~@5 [a3,c4,f4]@4, bb3 ~@7 c5@11 ~@13]/2", // Bb Em F
  F: "~@5 [a3,c4,f4]@3 ~@4 [a3,c4,f4]@3 ~", G: "~@4 [a3,c4,f4]@4 ~@4 [a3,c4,f4]@3 ~",
  H: "~@5 [bb3,d4,f4]@3 ~@5 [bb3,d4,f4]@3", I: "~@4 [bb3,d4,f4]@3 ~@6 [bb3,d4,f4]@3",
  J: "~@4 [b3,d4,f4]@3 ~@5 [b3,d4,f4]@3 ~", K: "~@4 [a3,c4,f4]@3 ~@5 [a3,c4,f4]@3 ~",
  L: "~@4 [g3,db4,e4]@3 ~@6 [g3,db4,e4]@2 ~", M: "~@4 [f3,a3,d4]@3 ~@6 [f3,a3,d4]@2 ~",
  N: "~@5 [g3,bb3,e4]@3 ~@5 [g3,bb3,e4]@3", O: "~@4 [a3,c4,f4]@3 ~@5 [a3,c4,f4]@2 ~@2",
})).s("gm_piano").gain(0.35)

// drums · kick
const kick = s("bd").struct("<~ [x!2]!125 ~@118>").gain(0.48)

// drums · rim
const rim = s("rim").struct("<[x!4] ~@243>").gain(0.56)

// drums · snare
const snare = s("sd").struct("<~ A@7 B A@7 B A@7 B A@15 C A@31 C A@15 B A@15 C A@7 B A@7 B A@5 ~@118>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x ~@2 x", C: "~@4 x ~@6 x!2 ~@3",
})).gain(0.48)

// drums · clap
const clap = s("cp").struct("<~ A@8 ~@16 B A@15 ~@16 C@2 A@4 C A@9 ~@16 A@32 ~@123>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@8 x ~@2", C: "~@5 x ~@6 x ~@3",
})).gain(0.64)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A B@3 A B A@4 B A B A@2 C A B@3 A B A@2 ~@48 A B@6 A@3 B@6 ~@16 A B@3 A B A@3 B@3 A B A@4 B A B ~@118
>`.pickRestart({
  A: "x ~@3 x ~@2 x!2 ~@3 x ~@2 x", B: "x ~@3 x ~@3 x ~@3 x ~@2 x", C: "x ~@3 x ~@2 x!2 ~@3 x ~@3",
})).gain(0.48)

// drums · mid tom
const mid_tom = s("mt").struct("<~@48 [~@11 x!2 ~@2 x] ~@7 [~@11 x!2 ~@2 x] ~@187>").gain(0.48)

// drums · open hat
const open_hat = s("oh").struct("<~@16 [~@15 x] ~@227>").gain(0.48)

// drums · high tom
const high_tom = s("ht").struct("<~@48 [~@4 x ~@2 x ~@8] ~@7 [~@4 x ~@2 x ~@8] ~@187>").gain(0.48)
// … 22 more lines

More by Bob Dylan