Strudelify

Ticket to Heaven

Dire Straits

KeyD majorTempo115 bpm
0:00/0:00
// Ticket to Heaven — Dire Straits
// 115 bpm, 4/4, key D 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: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 126 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(115/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
const piano = note("<~@45 A@3 ~@5 A@3 ~ B C@2 ~@35 D@3 ~@5 D@3 ~ B E@2 ~ B E@2 ~@12>".pickRestart({
  A: "[[a4,d5]@3 [b4,d5]@2 [a4,d5]@7 [b4,d5] [a4,d5] [g4,c#5] [f#4,b4]@2 e4@7, ~@17 a4 ~@6]/3", B: "~ [g4,b4]",
  C: "[[e4,a4]@5 [g4,b4] [e4,g4] [f#4,a4]@6 ~@3]/2", // A5 G Em F#m
  D: "[[a4,d5]@3 [b4,d5]@2 [a4,d5]@7 [b4,d5] [a4,d5] [g4,c#5] [f#4,b4]@2 [e4,a4]@7]/3", // D5 Bm D5 Bm D5 Gdim B5 A5
  E: "[[e4,a4]@5 [g4,b4] [e4,g4] [f#4,a4]@9]/2", // A5 G Em F#m
})).s("gm_piano").gain(0.05)

// chords · piano
const piano_2 = note(`<
  ~@5 A@3 ~@3 B@2 C@2 D E F@3 ~@2 G@2 H I@3 ~@2 J@2 K L M@4 ~ N@2 O P Q@2 R@2 S@2 T U V@4 W@2 D X Y ~ Z@3 AA AB@3 AC AD
  ~@7 AE ~@2 J@2 K L M@4 ~ AF@2 AG AH Q@2 R@2 AI@2 ~@2 AJ@4 W@2 D X ~@2 D X AK@2 AL AM ~@2 D X AN AO AP@3
>`.pickRestart({
  A: "[~@3 a5@3 f#6@3 a5@3 e6@3 a5@3 d6@8 ~@16 c#6@2 ~ d6@2 ~@2 b5@18 ~@5, ~@47 d5@19 ~@6, ~@8 g5@3 ~]/3",
  B: "[[f#3,a3,d4]@17 ~@7]/2", C: "[[e3,a3,c#4]@14 ~ d4]/2", D: "[g3,b3]@23 ~", E: "c#4@21 g3@2 ~, a3@23 ~",
  F: "[[g3,b3]@18 ~@7 f#3@29 ~@18, ~@7 a3@11 ~@6, ~@2 e3 ~@3, ~@4 d3 ~@7]/3", // G
  G: "[~@15 [d4,d6], a3, [e3,c#4]@41 ~ c#6@5 ~, ~@39 e5@8 ~]/2", H: "[g3,b3]@23 ~, b5@19 ~@5, a5 ~@23",
  I: "[[c#5,a5]@19 ~@5 f#3@29 ~@19, a3@22 d5@25 ~@25, c#4@21 g3@2 [f#5,a5]@25 ~@24, ~@24 d6@23 ~@25]/3", // F#m
  J: "[~@39 e5@3 c#6@2 ~ [d4,d6]@2 a5, [e3,a3,c#4]@7 ~]/2", K: "~ b5@21 ~@2, [g3,b3]@23 ~",
  L: "[c#4,c#5,a5]@21 g3@2 ~, a3@23 ~", // F#m
  M: "[[g3,b3]@18 ~@30 d1@43 ~@5, ~@6 a3@11 ~@15, ~@2 e3 ~@5, ~@4 d3 ~@11, ~@25 f#3@29 ~@42]/4", // G
  N: "[~@45 [d4,d6]@2 a5, a3, [e3,c#4]@41 ~ c#6@5 ~, ~@39 e5@8 ~]/2", O: "[g3,b3]@23 ~, b5@19 ~@5",
  P: "[c#5,a5]@19 ~@2 g3@2 ~, a3@23 ~, c#4@7 ~", Q: "[f#3@29 ~@19]/2",
  R: "[~@3 a5@3 ~@3 a5@3 ~@6 d6@13 ~@17, d1 f#6 e6 ~@5, ~@15 f#5@16 ~@17]/2",
  S: "[~@39 e5@3 c#6@3 d6@2 ~, [e3,a3,c#4]@7 ~]/2", T: "a5 b5@23, [g3,b3]@23 ~", U: "c#4@21 g3@2 ~, [a3,a5]@23 ~",
  V: "[[g3,b3]@18 ~@33 a5@3 ~@3 a5@3 ~@6 d6@22 ~@8, ~@7 a3@11 f#6@2 e6@2 ~@10, ~@2 e3 ~@5, ~@8 d3@2 ~@6 d1@15 ~, ~@25 f#3@29 ~@9 a5@25 ~@8]/4", // G
  W: "[[e3,c#4]@41 ~@7, a3]/2", X: "[c#5,a5]@19 ~@5, a3@23 ~, c#4@7 ~", Y: "~@2 d3 e3 f#3 e3 d3 a2, ~@3 a2@8 ~@13",
  Z: "[~@6 f#5@2 ~ g5@3 ~@20 a4@3 a4 a#4 ~@4 g5@4 ~@2 f#5@2 ~ [a4,e5]@15 ~@7, ~@3 a4@6 g4@6 f#4@21 ~ [d3,g3,b4]@12 [e3,a3]@16 ~@7, ~@12 e5@6 d5@18 ~@9 g5@4 ~@23]/3", // A5 G A5
  AA: "~@21 d5@2 ~, a1@23 ~, ~@15 a4@8 ~, ~@18 c#5@5 ~",
  AB: "[~ b4@5 ~@3 g5@5 ~@6 f#5@3 ~@2 [c#5,e5]@16 ~@16 g4@2 d4 e4@4 ~@4 b3@4, [g3,b3]@23 ~ [a3,c#4]@16 ~@6 g2@26, g4@2 ~@4 b4@17 a4@17 ~@2 g4@5 d3@25, ~@15 g5@8 ~@22 a4@3 b3@17 d4@7, ~@48 [d4,a4] b4@4 a4@7 g4@12]/3", // C#m G A D5
  AC: "~ [d2,a3,d4]@18 ~@5", AD: "d1", AE: "d1@3 ~", AF: "[~@45 d5@2 a4, a3, [e3,c#4]@41 ~ c#5@5 ~, ~@39 e4@8 ~]/2",
  AG: "b4@19 ~@5", AH: "[c#4,a4]@19 ~@2 g3@2 ~", AI: "[[e3,a3,c#4]@7 ~]/2",
  AJ: "[~@51 a5@3 ~@3 a5@3 ~@6 d6@22 ~@8, ~@7 a3@11 f#6@2 e6@2 ~@10, ~@2 e3 ~@5, ~@8 d3@2 ~@6 d1@15 ~, ~@25 f#3@29 ~@9 a5@25 ~@8]/4",
  AK: "[~@15 f#5@3 d6@13 ~@17, ~ a5@2 a5@3 ~@10, ~ f#6@2 ~@5, ~@2 e6 ~@5]/2",
  AL: "~@6 [a5,d6]@2 ~ a5 b5@13 ~, [g3,b3]@23 ~, ~@9 d6@13 ~@2", // D5 G
  AM: "~@2 b6 a6@3 ~@2, a3@23 ~, c#4@7 ~, [c#5,a5]@19 ~@5", AN: "~@2 d3 e3 f#3 [e3,a3] [d3,d4] [a2,e4], ~@3 a2@8 ~@13",
  AO: "~ f#4@3 e4@4 d4@11 ~@5, e4 ~@11",
  AP: "[~@4 a6@3 ~ f#7@3 ~@13 d7@38 ~@10, ~@11 a6@12 ~@49, ~@5 e7@3 ~@16, ~@19 f#6@42 ~@11]/3",
})).s("gm_piano").gain(0.44).pan(0.3)

// other · electric guitar jazz
const electric_guitar_jazz = note(`<
  ~@48 A B ~@6 C@2 ~@15 D E ~@18 F G H ~@2 I J ~@6 C@2 ~@5 K L@2 ~ M N@2 ~ O P Q@2 ~
>`.pickRestart({
  A: "e4 d4 c#4@2", B: "b3@11 ~", C: "[f#5@4 e5@2 d5@2 b4@15 ~]/2", D: "e5 d5 c#5@2", E: "b4@19 ~@5",
  F: "d4@3 c#4@2 b3", G: "~@3 g3, a3@7 ~", H: "f#3@17 ~@7", I: "e5@2 d5@2 ~@3 d5, ~ c#5", J: "b4@11 ~",
  K: "~@12 d5@11 ~", L: "[d5@4 c#5@4 b4@3 ~ a4@3 ~ a4@10 g4@22]/2", M: "~@5 f#5@3 e5@15 ~",
  N: "[~@3 g5@2 f#5@3 ~ f#5@3 e5@2 d5@3 b4@3 a4@20 ~@8]/2", O: "~@9 d5@3 c#5@8 b4@4", P: "a4@8 g4@3 ~ f#4@6 e4@6",
  Q: "[~ d4@47]/2",
})).s("gm_electric_guitar_jazz").gain(0.31).pan(0.7)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@23 A@4 ~@13 B@4 C ~@11 A@4 ~@13 A@4 ~@13 B@4 C ~@11 A@4 ~ D@3 ~ D@3 ~ D@3 ~@4
>`.pickRestart({
  A: "[~@24 g4@20 ~@4 e4@18 ~@6 f#4@19 ~@5, ~@22 [g3,b3]@22 ~@2 e3@20 ~@4 d3@21 ~@5, ~@23 d4@21 ~@3 [a3,c#4]@19 ~@5 [a3,d4]@20 ~@5]/4", // G A D5
  B: "[~@24 g4@20 ~@4 e4@18 ~@6 f#4@19 ~@2 b4@3, ~@22 [g3,b3]@22 ~@2 e3@20 ~@4 d3@21 ~@5, ~@23 d4@21 ~@3 [a3,c#4]@19 ~@5 [a3,d4]@20 ~@5]/4", // G A D5
  C: "~ a4@21 ~@2",
  D: "[g4@20 ~@4 e4@18 ~@6 f#4@19 ~@5, ~@22 e3@20 ~@4 d3@21 ~@5, ~@23 [a3,c#4]@19 ~@5 [a3,d4]@20 ~@5]/3", // A D5
})).s("gm_electric_guitar_clean").gain(0.19).pan(0.7)

// bass · fretless bass
const bass = note(`<
  ~ A B C D E F C D G H I J K L M D N G H I J K L M D G H I J K L M D N G H I J K L M D G H I J K L M D N G I J K L M D
  G H I J K L M D N G H I J K L M D G H I J K L M D N G H I J K L M D G H I J K L M D N G I J K L M D G O M D G O M D G
  O M D G P Q@3
>`.pickRestart({
  A: "d2@3 f#2@3 d2@2", B: "b1@8 ~ d2@9 b1@6", C: "g1@8 ~ d2@9 g1@6", D: "a1@8 ~ e2@9 a1@6", E: "d2@3 f#2@3 a1@2",
  F: "b1@8 ~ d2@9 f#1@6", G: "d2@8 ~ f#2@9 a2@6", H: "d2@8 ~ a2@9 a1@5 ~", I: "d2@8 ~ a2@8 ~ a1@6",
  J: "d2@8 ~ a2@8 ~ d2@6", K: "a1@8 ~ c#2@8 ~ e2@5 ~", L: "a1@9 e2@9 a1@5 ~", M: "g1@8 ~ d2@8 ~ g1@5 ~",
  N: "g1@8 ~ b1@8 ~ a1@5 ~", O: "b1@8 ~ d2@9 b1@5 ~", P: "d2@8 ~ a2@9 a1@6", Q: "[~ d1@67 ~@4]/3",
})).s("gm_fretless_bass").gain(0.32)

// chords · synth strings 1
const synth_strings_1 = note(`<
  ~ A B@2 C D@2 E C F@2 ~@15 G H I@4 J@2 K@3 L@5 M N@2 F@2 O@2 P@6 Q@2 R M N@2 S@2 T@2 E C U@2 V F@2 W@2 X@4 Y@4 J@2 K@3
  L@5 M N@2 F@2 O@2 P@6 Q@2 R M Z@2 AA M Z@2 AA M Z@2 AA M AB@5
>`.pickRestart({
  A: "[a3,d4,f#4]", B: "[f#4 g4, [b3,d4]]/2", C: "[c#4,e4,a4]", D: "[a3 b3, [d4,f#4]]/2", E: "[b3,d4,g4]",
  F: "[a3,d4,f#4]/2", G: "[f#3,a3,d4]@23 ~", H: "[a3,d4,f#4] [g3,e4]", I: "[~ [e3,c#4], [f#3,d4] ~, ~@7 a3@87 ~@2]/4",
  J: "[[g3,b3,d4] [e3,c#4], a3]/2", K: "[[g3,b3]@24 [f#3,a3]@47 ~, d4@71 ~]/3",
  L: "[[d4,f#4]@47 ~ d4@12 c#4@12 b3@12 c#4@12 [g3,b3,d4]@24, a3@39 ~, ~@2 e4@2 ~]/5", M: "[e3,a3,c#4]",
  N: "[f#3,a3,d4]/2", O: "[a3,c#4,e4]/2",
  P: "[[g3,b3,d4]@24 [e3,c#4]@24 [g3,b3]@24 a3@24 [a3,d4]@23 ~@25, a3@72 f#3@47 ~@25, ~@48 d4@48 f#4@47 ~]/6", // G C#m G D5
  Q: "[d4 c#4 b3 c#4, e4]/2", R: "[g3,b3,d4]", S: "[[a3,d4,f#4]@23 ~]/2", T: "[c#4,a4]/2",
  U: "[[b3,g4]@4 [a3,f#4]@3 [g3,e4], d4@7 ~]/2", V: "[f#3,d4]", W: "[[c#4,a4]@2 [d4,b4] [c#4,a4], e4]/2",
  X: "[[b3,g4] f#4 [c#4,e4]@2 [f#3,d4]@4, d4 ~@3, ~ a3@7]/4", Y: "[[f#3,d4] [e3,c#4], a3@29 ~@3]/4",
  Z: "[a3 b3, [f#3,d4]]/2", AA: "[g3,d4], b3 ~@23", AB: "[[f#3,a3,d4]@59 ~]/5",
})).s("gm_synth_strings_1").gain(0.16).pan(0.4)

// chords · electric guitar jazz
const electric_guitar_jazz_2 = note(`<
  A@3 B@6 ~@18 C D ~@2 E F ~@3 G@2 H I@2 ~@2 J K ~@33 D ~@2 E F ~@3 G@2 H I@2 ~@2 J K ~@31
>`.pickRestart({
  A: "[~@24 d4@20 ~@4 f#4@19 ~@4 d4, ~@21 f#3@23 ~@3 d4@20 ~@5, ~@22 a3@22 ~@2 b3@21 ~@3 b3@2]/3",
  B: "[g4@17 ~@7 e4@19 ~@5 d4@20 ~@4 f#4@19 ~@5 g4@18 ~@6 e4@18 ~@6, ~@23 [a3,c#4]@20 ~@3 f#3@21 ~@4 d4@20 ~@4 d4@19 ~@5 [a3,c#4]@19 ~@6, ~@47 a3@20 ~@3 b3@21 ~@3 b3@20 ~@4 e3@20 ~@6]/6", // A
  C: "~@7 b3", D: "a3@11 ~", E: "~@2 b3 c#4@5", F: "d4@3 ~@5", G: "[~@25 f#4@18 ~@5, ~@23 a3@20 ~@5, ~@24 d4@19 ~@5]/2",
  H: "d4", I: "[~ c#4@28 ~@19]/2", J: "~@3 d4 c#4@3 b3", K: "a3@7 ~",
})).s("gm_electric_guitar_jazz").gain(0.21).pan(0.8)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  ~@4 A@6 B ~@2 C@2 ~@3 D@2 ~@2 E@2 ~@2 F@3 ~ G@2 ~@4 H@2 ~ I J K ~ L M N O P Q@6 ~ R@2 S@2 ~@10 T U V@3 W X Y Z ~@2
  AA@2 AB ~@2 AC@2 ~@2 AD AE ~@4 N O AF AG@4 AH AI ~ R@2 S@2 AJ AK@2 ~@3 AL@2 ~@2 S@2 ~ AM@4
>`.pickRestart({
  A: "[~@25 f#4@16 ~@7 f#4@19 ~@5 g4@18 ~@6 e4@18 ~@9 a2@3 d3@3 e3@5 ~ e3@3 a2@6, ~@23 a3@18 ~@6 [b3,d4]@20 ~@4 [b3,d4]@19 ~@5 [a3,c#4]@20 ~@4 [a3,d4]@21 ~@4, ~@24 d4@17 ~@79 f#4@20 ~@4]/6", // Bm A D5
  B: "d3@7 ~", C: "[~@9 e4@12 d4@22 ~@5]/2", D: "[~@6 [f#4,d5]@7 ~@3, ~ f#4@2 ~@5, ~@9 d4@28 ~@11]/2",
  E: "[~@9 [c#4,a4]@11 ~ [c#4,a4]@10 ~@2 [c#4,a4]@12 ~@3]/2", F: "[~@12 e4@3 d4@16 ~@2 d4 e4 ~ d4@18 ~@18]/3",
  G: "[~@6 g4@3 a4@17 ~@4 g4@3 a4@12 ~@3]/2", H: "[~@9 f#4 ~@2 f#4@3 e4@28 ~@5]/2", I: "~@4 g4@3 f#4", J: "e4",
  K: "d4 d4@18 ~@5", L: "~@9 f#4 g4@3 f#4@8 e4@3", M: "~ d4@19 ~@4", N: "~@7 e4", O: "d4@7 ~", P: "~@7 d4",
  Q: "[c#4@17 ~@7 g4@21 ~@3 a4@17 ~@7 g4@19 ~@5 f#4@14 ~@4 [f#4,d5]@21 ~@9, ~@22 b3@23 ~@2 e4@18 ~@6 d4@20 ~@4 d4@15 ~@34, ~@23 d4@22 ~ c#4@19 ~@5 b3@22 ~@2 a3@15 ~@35]/6", // D
  R: "[~@9 [c#4,a4]@11 ~ [c#4,d4]@3 c#4@7 ~@2 [c#4,a4]@12 b3 ~ d4, ~@21 a4@10 ~@17]/2", // F#m Dmaj7 F#m
  S: "[g4@21 ~@4 a4@14 ~@9, ~@23 c#4@15 ~@10, ~@12 e4@7 ~@5]/2", T: "~@21 e4@2 ~",
  U: "[g3,e4] f4 f#4@6 ~ f#4@2 ~ f#4 g4@3 ~ f#4@2 ~ e4 f#4 e4@2, ~ a3@9 ~@2 b3@4 a3@4 ~@4", // C
  V: "[~ d4@7 f#4@3 ~ f#4@7 ~ f#4@6 e4@12 ~ d4@3 ~@3 e4@21 ~@6, ~@7 c#4@4 ~]/3", W: "~@9 d4@3 a4@3 ~ g4@4 ~ f#4@2 g4",
  X: "f#4 e4@7 ~ c#4@3 f#4@8 ~ c#4@3", Y: "e4@3 ~ d4@13 ~ c#4@2 [c#4,d4] b3@3", Z: "~ a3@19 ~@4",
  AA: "[~@10 e4!2 e4@8 ~ d4 f#4 ~@11 c#4 e4 c#4@7 ~@2 b3 d4 ~, ~@23 d4@10 ~@15, ~@2 d5 ~]/2", AB: "b3@17 ~@7",
  AC: "[~@3 d3@3 e3@3 f#3@3 ~@12 d3@16 ~@8, ~@2 a3 e3 ~@4, ~@15 d4@6 a3@19 ~@8]/2",
  AD: "~@9 g3@3 b3@3 c#4@3 d4@2 ~ e4@2 ~", AE: "d4@3 ~@5", AF: "~@18 f#4@3 g4 f#4 ~, ~@18 d4@5 ~",
  AG: "[[c#4,e4]@17 ~@7 g4@18 ~@6 a4@17 ~@7 g4@19 ~@5, ~@21 b3@21 ~@5 e4@18 ~@6 d4@20 ~@5, ~@22 d4@20 ~@4 c#4@19 ~@5 b3@22 ~@4]/4", // C#m
  AH: "~@3 [d4,f#4]@3 [e4,g4]@2 ~ [e4,g4] f#4@3 ~ [f#4,a4] [e4,g4]@3 [d4,f#4]@3 [c#4,e4]@3, ~@3 a4 ~@4", // D Em F#m Em D C#m
  AI: "[d4,f#4]@3 ~", AJ: "~@3 f#3@6 a3@3 d4@8 ~ c#4@3",
  AK: "[~@2 b4@16 a3@3 c#4@2 ~@2 b3@19 ~@4, b3@18 ~@5 g3@20 ~@5]/2",
  AL: "[~@15 g3@3 b3@2 ~ g3@15 ~@12, ~ b3@17 ~@30]/2", AM: "[~@15 f#4@3 ~ e4@3 f#4@3 ~ d4@55 ~@15, ~@25 f#3@55 ~@16]/4",
})).s("gm_acoustic_guitar_nylon").gain(0.44).pan(0.6)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~ A B C D E F G H A@2 I J K@6 L I J M@5 L I J K@6 L I N O@5 L I N P@6 I N O@5 L I N P@6 L I Q O@5 L R Q P@6 L R Q O@5
  L R Q P@6 R Q S@5 T U@3 T U@3 T U@3 V W@3
>`.pickRestart({
  A: "[d3,a3,d4,f#4] ~@5 [d3,a3,d4,f#4]@3 [d3,a3,d4,f#4]@3 [d3,a3,d4,f#4]@3 [d3,a3,d4,f#4]@3 [d3,a3,d4,f#4]@3 [d3,a3,d4,f#4]@3", // D
  B: "[f#3,b3,d4,f#4] ~@5 [f#3,b3,d4,f#4]@3 [f#3,b3,d4,f#4]@3 [f#3,b3,d4,f#4]@3 [f#3,b3,d4,f#4]@3 [f#3,b3,d4,f#4]@3 [f#3,b3,d4,f#4]@3", // Bm
  C: "[d3,g3,b3,g4] ~@5 [d3,g3,b3,g4]@3 [d3,g3,b3,g4]@3 [d3,g3,b3,g4]@3 [d3,g3,b3,g4]@3 [d3,g3,b3,g4]@3 [d3,g3,b3,g4]@3", // G
  D: "[e3,a3,c#4,e4] ~@5 [a3,c#4,e4]@3 [e3,a3,c#4,e4]@3 [e3,a3,c#4,e4]@3 [e3,a3,c#4,e4]@3 [e3,a3,c#4,e4]@3 [e3,a3,c#4,e4]@3", // A
  E: "[d3,a3,d4,f#4] ~@6 f#4@2 [d3,a3,d4,f#4]@3 [d3,a3,d4,f#4]@3 [d3,a3,d4,f#4]@3 [d3,a3,d4,f#4]@2 ~ [d3,a3,d4,f#4]@3, ~@2 [d3,a3,d4] ~@5", // D D5
  F: "[f#3,b3,d4,f#4] ~@5 [f#3,b3,d4,f#4]@3 [f#3,b3,d4,f#4]@3 [f#3,b3,d4,f#4]@3 [b3,d4,f#4]@3 [b3,d4,f#4]@3 [f#3,b3,d4,f#4]@3, ~@5 f#3@2 ~", // Bm
  G: "[d3,g3,b3,g4] ~@5 [d3,g3,b3,g4]@3 ~ d3@2 [d3,g3,b3,g4]@3 ~ d3@2 ~ g4@2 [d3,g3,b3,g4]@3, ~@3 [g3,b3,g4] ~ [g3,b3,g4] [d3,g3,b3] ~", // G
  H: "[e3,a3,c#4,e4] ~@5 [e3,a3,c#4,e4]@3 [e3,a3,c#4,e4]@3 [e3,a3,c#4,e4]@3 [e3,a3,c#4,e4]@3 [e3,a3,c#4,e4]@3 [e3,a3,c#4,e4]@3", // A
  I: "~@6 f#4@2 ~ [a3,d4]@3 [a3,d4,f#4]@3 [d3,a3,d4,f#4]@3 [d3,a3,d4,f#4]@3 ~ a2@2, [a2,d3,a3]@4 a2@4 f#4@3 ~@13, ~ [d4,f#4]@4 [d3,a3,d4]@4 a2@12 ~@3, ~@3 d3@2 ~@2 [d3,a3,d4,f#4]", // D5 D D5 D D5 D
  J: "[a2,d3,a3,d4,f#4]@4 ~@2 f#4@2 ~ [d3,a3,d4]@3 [d3,a3,d4,f#4]@3 [d3,a3,d4,f#4]@3 [d3,a3,d4,f#4]@3 [d3,a3,d4,f#4]@3, ~@4 a2@5 a2@6 a2@8 ~, ~@5 [d3,a3,d4]@3 f#4@3 ~@13", // D D5 D D5
  K: "[[a2,e3,a3,c#4,e4]@4 ~@2 e4@2 ~ a3@3 [e3,a3,c#4,e4]@3 [e3,a3,c#4,e4]@3 [e3,a3,c#4,e4]@3 [e3,a3,c#4,e4]@3 [e3,a3,c#4,e4]@4 ~@2 [c#4,e4]@3 [c#4,e4]@3 [a3,c#4,e4]@3 [a3,c#4,e4]@3 [e3,a3,c#4,e4]@3 [a3,c#4,e4]@3 [g3,b3,g4]@4 ~@2 [b3,g4]@3 [g3,b3,g4]@3 [d3,g3,b3,g4]@3 [d3,g3,b3,g4]@3 [g3,b3,g4]@3 [g3,b3,g4]@3 [e3,a3,c#4,e4]@4 ~@2 [c#4,e4]@3 [a3,c#4,e4]@3 [e3,a3,c#4,e4]@3 [e3,a3,c#4,e4]@3 [a2,e3,a3,c#4,e4]@3 [a2,e3,a3,c#4,e4]@3 [b2,d3,g3,b3,g4]@4 ~@2 [b3,g4]@3 [g3,b3,g4]@3 [d3,g3,b3,g4]@3 [d3,g3,b3,g4]@3 [g3,b3,g4]@3 [g3,b3,g4]@3 [d3,a3,d4,f#4]@4 ~@2 [d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@3, ~@4 [e2,a2]@23 ~ [e2,a2]@24 g2@23 ~ e2@24 g2@20 ~@4 a2@20, ~@4 e3@7 ~@17 e3@7 ~ e3@6 ~@3 e3@7 b2@38 ~@10 b2@13 ~ b2@10 ~@20, ~@5 [a3,c#4]@3 [c#4,e4]@4 ~@17 a3@7 ~@16 d3@7 ~@7 d3@6 ~@5 e3@7 ~@16 d3@7 ~@7 d3@6 ~@4 d3@7 ~ d3@6 d3@6, ~@53 g3@4 ~@20 a3@4 ~@20 g3@4 ~@20 a3@4 ~@15]/6", // A C#m A G Em G A C#m …
  L: "[d3,a3,d4,f#4]@4 ~@2 f#4@3 [a3,d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@3 [d3,a3,d4,f#4]@3 [a2,d3,a3,d4,f#4]@3, a2@7 ~, ~@4 d3@7 ~ d3@6 ~@6, ~@5 [a3,d4]@4 ~@15", // D D5
  M: "[[a2,e3,a3,c#4,e4]@4 ~@2 e4@2 ~ a3@3 [e3,a3,c#4,e4]@3 [e3,a3,c#4,e4]@3 [e3,a3,c#4,e4]@3 [e3,a3,c#4,e4]@3 [e3,a3,c#4,e4]@4 ~@2 [c#4,e4]@3 [c#4,e4]@3 [a3,c#4,e4]@3 [a3,c#4,e4]@3 [e3,a3,c#4,e4]@3 [a3,c#4,e4]@3 [g3,b3,g4]@4 ~@2 [b3,g4]@3 [g3,b3,g4]@3 [d3,g3,b3,g4]@3 [d3,g3,b3,g4]@3 [g3,b3,g4]@3 [g3,b3,g4]@3 [e3,a3,c#4,e4]@4 ~@2 [c#4,e4]@3 [a3,c#4,e4]@3 [e3,a3,c#4,e4]@3 [e3,a3,c#4,e4]@3 [a2,e3,a3,c#4,e4]@3 [a2,e3,a3,c#4,e4]@3 [d3,d4,f#4]@4 ~@2 [d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@3, ~@4 [e2,a2]@23 ~ [e2,a2]@24 g2@23 ~ e2@24 ~@20, ~@4 e3@7 ~@17 e3@7 ~ e3@6 ~@3 e3@7 b2@38 ~@10 a2@20, ~@5 [a3,c#4]@3 [c#4,e4]@4 ~@17 a3@7 ~@16 d3@7 ~@7 d3@6 ~@5 e3@7 ~@16 d3@7 ~ d3@6 d3@6, ~@53 g3@4 ~@20 a3@4 ~@15 a3 ~@4 a3@4 ~@15]/5", // A C#m A G Em G A C#m …
  N: "[a2,d3,a3,d4,f#4]@4 ~@2 f#4@2 ~ [d3,a3]@3 [d3,a3,d4,f#4]@3 [d3,a3,d4,f#4]@3 [d3,a3,d4,f#4]@3 [d3,a3,d4,f#4]@3, ~@4 a2@5 a2@6 a2@8 ~, ~@5 [d3,a3,d4]@3 [d4,f#4]@3 ~@13", // D D5 D D5 D
  O: "[[a2,e3,a3,c#4,e4]@4 ~@2 e4@2 ~ a3@3 [e3,a3,c#4,e4]@3 [e3,a3,c#4,e4]@3 [e3,a3,c#4,e4]@3 [e3,a3,c#4,e4]@3 [e3,a3,c#4,e4]@4 ~@2 [c#4,e4]@3 [c#4,e4]@3 [a3,c#4,e4]@3 [a3,c#4,e4]@3 [e3,a3,c#4,e4]@3 [a3,c#4,e4]@3 [g3,b3,g4]@4 ~@2 [b3,g4]@3 [g3,b3,g4]@3 [d3,g3,b3,g4]@3 [d3,g3,b3,g4]@3 [g3,b3,g4]@3 [g3,b3,g4]@3 [e3,a3,c#4,e4]@4 ~@2 [c#4,e4]@3 [a3,c#4,e4]@3 [e3,a3,c#4,e4]@3 [e3,a3,c#4,e4]@3 [a2,e3,a3,c#4,e4]@3 [a2,e3,a3,c#4,e4]@3 [d3,d4,f#4]@4 ~@2 [d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@3, ~@4 [e2,a2]@23 ~ [e2,a2]@24 g2@23 ~ e2@24 ~@20, ~@4 e3@7 ~@17 e3@7 ~ e3@6 ~@3 e3@7 b2@38 ~@10 a2@20, ~@5 [a3,c#4]@3 [c#4,e4]@4 ~@17 a3@7 ~@16 d3@7 ~@7 d3@6 ~@4 e3@7 ~@17 d3@7 ~ d3@6 d3@6, ~@53 g3@4 ~@20 a3@4 ~@15 a3 ~@4 a3@4 ~@15]/5", // A C#m A G Em G A C#m …
  P: "[[a2,e3,a3,c#4,e4]@4 ~@2 e4@2 ~ a3@3 [e3,a3,c#4,e4]@3 [e3,a3,c#4,e4]@3 [e3,a3,c#4,e4]@3 [e3,a3,c#4,e4]@3 [e3,a3,c#4,e4]@4 ~@2 [c#4,e4]@3 [c#4,e4]@3 [a3,c#4,e4]@3 [a3,c#4,e4]@3 [e3,a3,c#4,e4]@3 [a3,c#4,e4]@3 [g3,b3,g4]@4 ~@2 [b3,g4]@3 [g3,b3,g4]@3 [d3,g3,b3,g4]@3 [d3,g3,b3,g4]@3 [g3,b3,g4]@3 [g3,b3,g4]@3 [e3,a3,c#4,e4]@4 ~@2 [c#4,e4]@3 [a3,c#4,e4]@3 [e3,a3,c#4,e4]@3 [e3,a3,c#4,e4]@3 [a2,e3,a3,c#4,e4]@3 [a2,e3,a3,c#4,e4]@3 [b2,d3,g3,b3,g4]@4 ~@2 g4@2 ~ [g3,b3,g4]@3 [d3,g3,b3,g4]@3 [d3,g3,b3,g4]@3 [g3,b3,g4]@3 [g3,b3,g4]@3 [d3,a3,d4,f#4]@4 ~@2 [d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@3, ~@4 [e2,a2]@23 ~ [e2,a2]@24 g2@23 ~ e2@24 g2@20 ~@4 a2@20, ~@4 e3@7 ~@17 e3@7 ~ e3@6 ~@3 e3@7 b2@38 ~@10 b2@13 ~ b2@10 ~@20, ~@5 [a3,c#4]@3 [c#4,e4]@4 ~@17 a3@7 ~@16 d3@7 ~@7 d3@6 ~@4 e3@7 ~@17 d3@7 ~@7 d3@6 ~@4 d3@7 ~ d3@6 d3@6, ~@53 g3@4 ~@20 a3@4 ~@20 [g3,b3]@4 ~@20 a3@4 ~@15]/6", // A C#m A G Em G A C#m …
  Q: "[a2,d3,a3,d4,f#4]@4 ~@2 f#4@2 ~ [d3,a3]@2 ~ [a3,d4,f#4]@3 [d3,a3,d4,f#4]@3 [d3,a3,d4,f#4]@3 [d3,a3,d4,f#4]@3, ~@4 [a2,d3]@5 a2@6 a2@8 ~, ~@5 [a3,d4]@3 [d4,f#4]@3 d3@3 ~@10", // D D5 D D5 D
  R: "~@6 f#4@2 ~ [a3,d4]@3 [a3,d4,f#4]@3 [d3,a3,d4,f#4]@3 [d3,a3,d4,f#4]@3 [a2,d3,a3,d4,f#4]@3, [a2,d3,a3,d4]@4 a2@4 f#4@3 ~@13, ~ f#4@4 [d3,a3,d4]@4 a2@12 ~@3, ~@3 d3@2 ~@3", // D5 D D5
  S: "[[a2,e3,a3,c#4,e4]@4 ~@2 e4@2 ~ a3@3 [e3,a3,c#4,e4]@3 [e3,a3,c#4,e4]@3 [e3,a3,c#4,e4]@3 [e3,a3,c#4,e4]@3 [e3,a3,c#4,e4]@4 ~@2 [c#4,e4]@3 [c#4,e4]@3 [a3,c#4,e4]@3 [a3,c#4,e4]@3 [e3,a3,c#4,e4]@3 [a3,c#4,e4]@3 [g3,b3,g4]@4 ~@2 [b3,g4]@2 ~ [g3,b3]@3 [d3,g3,b3,g4]@3 [d3,g3,b3,g4]@3 [g3,b3,g4]@3 [g3,b3,g4]@3 [e3,a3,c#4,e4]@4 ~@2 [c#4,e4]@3 [a3,c#4,e4]@3 [e3,a3,c#4,e4]@3 [e3,a3,c#4,e4]@3 [a2,e3,a3,c#4,e4]@3 [a2,e3,a3,c#4,e4]@3 [d3,d4,f#4]@4 ~@2 [d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@3, ~@4 [e2,a2]@23 ~ [e2,a2]@24 g2@23 ~ e2@24 ~@20, ~@4 e3@7 ~@17 e3@7 ~ e3@6 ~@3 e3@7 b2@38 ~@10 a2@20, ~@5 [a3,c#4]@3 [c#4,e4]@4 ~@17 a3@7 ~@16 d3@7 ~@7 d3@6 ~@4 e3@7 ~@17 d3@7 ~ d3@6 d3@6, ~@53 g3@3 g4@3 ~@18 a3@4 ~@15 a3 ~@4 a3@4 ~@15]/5", // A C#m A G Em G A C#m …
  T: "[d3,b3,d4,f#4]@4 ~@2 f#4@3 [b3,d4,f#4]@3 [b3,d4,f#4]@3 [b3,d4,f#4]@3 [d3,b3,d4,f#4]@3 [a2,d3,b3,d4,f#4]@3, a2@7 ~, ~@4 d3@7 ~ d3@6 ~@6, ~ b3 ~@4, ~@5 d4@3 ~@16", // Bm Bm7
  U: "[[g3,b3,g4]@4 ~@2 [b3,g4]@2 ~ [g3,b3]@3 [d3,g3,b3,g4]@3 [d3,g3,b3,g4]@3 [g3,b3,g4]@3 [g3,b3,g4]@3 [e3,a3,c#4,e4]@4 ~@2 [c#4,e4]@3 [a3,c#4,e4]@3 [e3,a3,c#4,e4]@3 [e3,a3,c#4,e4]@3 [a2,e3,a3,c#4,e4]@3 [a2,e3,a3,c#4,e4]@3 [d3,d4,f#4]@4 ~@2 [d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@3, ~@2 b2@19 ~@5 a2@10, ~@4 g2@23 ~ e2@24 ~@20, ~@4 d3@7 ~@7 d3@6 ~@4 e3@7 ~@17 d3@7 ~ d3@6 d3@6, ~@5 g3@3 g4@3 ~@18 a3@4 ~@15 a3 ~@4 a3@4 ~@15]/3", // G Em G A C#m A D
  V: "[d3,a3,d4,f#4]@4 ~@2 f#4@3 [a3,d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@3 [d3,a3,d4,f#4]@3 ~ a2@2, a2@11 ~, ~@4 d3@7 ~ d3@6 ~@4 d3 ~, ~@5 [a3,d4]@4 ~@12 [a3,d4,f#4]@3", // D D5 D
  W: "[~ f#4@27 ~@8, d3@29 ~@7, ~ [f#3,a3,d4]@57 ~@14]/3", // D
})).s("gm_acoustic_guitar_steel").gain(0.07).pan(0.7)

// chords · string ensemble 1
const string_ensemble_1 = note("<~@7 A B@3 ~@27 C@3 D@2 E@2 ~@41 F G@2 ~@37>".pickRestart({
  A: "g3", B: "[e3@11 a3@50 ~@11]/3", C: "[a3@11 ~]/3", D: "[b3@23 c#4@24 ~]/2", E: "[a3@11 ~]/2",
  F: "d4@8 [g3,e4]@4 [a3,f#4]@5 ~ d4@6, ~@17 a4@7", G: "[d5@43 ~@5, f#4@35 ~@13]/2",
})).s("gm_string_ensemble_1").gain(0.35).pan(0.2)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  ~ A B@3 C D E@2 F@2 ~@15 G@2 H@4 I J I K@2 ~ L@3 M N O@2 P@8 Q@7 R@3 ~@4 S@2 T@5 U@4 V@2 W@2 X@2 Y@5 Z@4 AA AB@3 AC@8
  AD@6 AE@3 AF@6 AG@6
>`.pickRestart({
  A: "[f#4,d5]@17 ~ f#5@2 ~ a5@3, ~@17 b4@3 d5@4", // D
  B: "[[f#5,b5]@17 ~ f#5@6 g5@17 ~ d5@5 ~ c#5@8 ~ d5@3 [c#5,e5]@6 [a4,c#5]@6, ~@17 d5@24 b4@6 a4@9 b4@4 ~@12]/3", // B5 C#m A
  C: "[f#4,d5]@4 ~@2 f#5@3 [d5,a5]@3, ~@8 g4@3 a4@7 ~@6, ~@9 e5@4 ~@11", D: "b5@17 ~ a5@6, f#5",
  E: "[[e5,g5]@11 ~ f#5@11 ~ e5@3 [b4,d5]@3 [a4,c#5]@3 [g4,b4]@3 [f#4,a4]@3 [e4,g4]@3 [d4,f#4]@2 [c#4,e4]@4, ~@11 d5@12 c#5@4 ~@21]/2", // Em Bm A G F#m Em D C#m
  F: "[d4@47 ~, f#4@15 ~]/2", G: "[~ f#4@2 e4]/2", H: "[d4@47 e4@6 g4@4 a4@39]/4", I: "g4", J: "a4", K: "[f#4@23 ~]/2",
  L: "[~@11 [d4,f#4]@7 ~@6 c#4@17 [d4,b4]@6 ~ e4@24, ~@18 [e4,g4]@7 ~@47, ~@23 a4@18 ~@6 c#5@24 ~]/3", M: "[g4,b4]",
  N: "[c#4,a4]", O: "[[d4,f#4]@47 f#4]/2",
  P: "[d5@47 ~ c#5@17 [d4,b4]@6 ~ a4@23 [b3,g4]@24 [c#4,a4]@24 [b3,g4]@24 [a3,f#4]@18 [d4,a4]@7, ~@47 e4@18 ~@6 c#4@24 ~@97]/8", // G Em F#m Em D D5
  Q: "[[f#4,d5]@35 [g4,e5]@6 [f#4,d5]@6 [e4,c#5]@48 ~ g5@17 [a4,f#5]@6 [g4,e5]@24 [f#4,d5]@17 ~ [f#4,d5] ~@2 [g4,e5]@4, ~@95 b4@18 ~@55]/7", // D C D C#m D C D C
  R: "[[a4,f#5]@8 [g4,e5]@4 [f#4,d5]@43 ~@17]/3", S: "[~@23 [a3,f#4]@9 [d4,a4]@4 [f#4,d5]@5 ~ e5@6, ~@41 g4@7]/2",
  T: "[[f#4,d5]@71 [c#5,a5]@24 [d5,b5]@12 [c#5,a5]@12 [b4,g5]]/5", // D F#m G F#m Em
  U: "[~@11 [a4,f#5]@12 [g4,e5]@24 ~ d5@48, ~@47 f#4@49]/4", V: "[a3@3 [b3,g4], f#4 ~@47]/2",
  W: "[[c#4,a4]@23 [d4,b4]@12 [c#4,a4]@13]/2", X: "[[b3,g4]@23 [c#4,a4]@25]/2",
  Y: "[[b3,g4]@23 a3@48 ~ d5@48, ~@23 f#4@96 ~]/5", // Em
  Z: "[[c#5,a5]@17 [b4,g5]@3 ~ a4@2 [g4,e5]@13 [f#4,d5]@6 [e4,c#5]@5 ~ b4@23 [e4,c#5]@24 ~, ~@20 f#5@3 ~@24 d4@24 ~@25]/4", // F#m Em C D C#m
  AA: "[f#4,d5]@20 [g4,e5]@3 [a4,f#5]", AB: "[~@8 [g4,e5]@3 [f#4,d5]@6 [d4,a4]@6 [a3,f#4]@36 [d4,d5]@12 e4]/3",
  AC: "[c#5@17 [d4,b4]@6 ~ a4@23 [b3,g4]@24 [c#4,a4]@24 [b3,g4]@24 [a3,f#4]@18 [d4,a4]@6 ~ d5@47 ~, ~@23 c#4@24 ~@96 f#4@47 ~@2]/8", // G Em F#m Em D D5
  AD: "[[c#5,a5]@17 [d5,b5]@3 [e5,c#6]@3 [f#5,d6]@6 ~ e5@5 [d5,b5]@6 [c#5,a5]@6 b4@24 c#5@24 [a4,f#5]@36 [c#5,a5]@13, ~@29 c#6@6 ~@12 g5@49 ~@48]/6", // F#m G C#m D G F#m D F#m
  AE: "[[b4,g5]@23 [c#5,a5]@24 [a4,f#5]@12 [g4,e5]@12 [f#4,d5]]/3", // Em F#m D C D
  AF: "[~@11 [e4,c#5]@12 [d4,b4]@24 [c#4,a4]@24 a3@24 ~@24 g4@24 [a3,e4], ~@71 f#4@48 ~@25, ~@95 b3@49]/6", // C#m G F#m A5
  AG: "[~@11 g3@12 [f#3,d4]@118 ~@3]/6", // D
// … 90 more lines

More by Dire Straits