Strudelify

Ayrton

Dalla

KeyE♭ majorTempo119 bpm
0:00/0:00
// Ayrton — Dalla
// 119 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: Full arrangement: all 129 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 25.
setcpm(119/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(`<
  ~@24 A@2 B@2 C@2 D@2 E F B@2 G H I@2 J K L@2 M N ~ O P@2 Q@2 R S T U P@2 Q@2 R S V@2 W X Y@2 Z ~@3 AA@4 AB AC@7 AD@5 ~
  AE@8 AF@8 AG@4 AH@4 AF@8 AI@6 ~
>`.pickRestart({
  A: "[~@48 eb4@15 ~, eb3@57 ~@7]/2", B: "[[bb3,bb4]@32 f4@13 ~@3 [d4,bb4]@15 ~, d3@59 ~@5, d4@31 ~@33]/2",
  C: "[~@16 g3@36 ~@4 [d4,f4]@7 ~, c4@13 ~@3]/2", // Dm
  D: "[g4@7 ~@17 c4@15 ~ c4@11 ~@2 eb4@11, eb4@33 ~@31, c4@6 ~@7 c4@3, ~@6 g4@25 ~]/2", E: "eb3@31 ~",
  F: "~@16 eb4@15 ~, eb3@31 ~", G: "[c3,eb4,g4,c5]", H: "[bb2,eb4]@31 ~, bb4@7 ~",
  I: "[[c4,eb4]@2 [c4,eb4]@4 [ab4,c5] [eb2,c4,eb4,ab4], ab4@7 ~@57]/2", J: "[d2,a3,c4,g4]@31 ~", K: "[f4,g4]@29 ~@3",
  L: "[~@56 eb4@7 ~, ab2@63 ~, ~@48 c5@15 ~]/2", M: "[c4,f4]", N: "f4@31 ~",
  O: "~@4 eb4@4 [c4,eb4]@8 ~@4 eb4@3 ~ [c4,eb4]@8, bb4@8 ~@8 c5@9 ~@7", // Cm
  P: "[eb4@11 ~@37 [bb3,eb4,bb4]@16, bb4@23 ~@9, bb3@10 f4@13 ~@9, g4@2 ~ g4@5 eb3@8, ~@12 bb3@11 ~@9]/2", // Eb5
  Q: "[[d3,d4,f4,bb4]@6 [f4,bb4] [bb3,bb4]]/2", R: "[bb3,eb4,g4]", S: "[eb4,bb4]@9 ~@7 g4@15 ~, g4@6 ~@6 eb4@19 ~",
  T: "[eb4,bb4]@7 ~ [c4,eb4]@8", U: "~@8 eb4@3 ~ ab3@4 ~@4 f4@11 ~, ab3@12 ~@4 ab3@11 ~@5, ~@4 c4@8 [c4,eb4]@9 ~@11",
  V: "[~ c5@15 ~@12 eb4@32 ~@4, eb4@5 c5@10 ~, bb4@2 eb5@5 ~, ~@3 ab4@4 ~]/2", W: "[d3,g4]", X: "g2",
  Y: "[~@32 c5@23 ~@2 eb4@4 f4@3, [ab2,c4]]/2", Z: "~ c4@31",
  AA: "[~@5 eb4@47 ~@12 f4@4 ~ [d4,f4]@53 ~@3 bb4@3, ~@53 eb4@7 bb4@8 ~@60, ~@57 bb3@8 ~@63]/4", AB: "~ f4@12 ~@19",
  AC: "[~@88 f4@13 [g4,bb4]@46 ~@9 bb3@8 ~ [f4,bb4]@47 [f4,bb4]@8 [bb3,bb4]@4, ~@28 ab4@22 ~@30 eb4@19 ~@49 bb4@16 ~@60, ~@33 eb4@17 ~@3 ab3@42 ~@6 [bb3,eb4]@56 ~@67, ~@36 ab2@57 ~@71 d3@48 ~@12]/7", // Gm Bb5 Bb Eb5
  AD: "[~@5 [eb4,g4]@31 [eb4,bb4]@9 ~@8 g4@15 [eb4,bb4]@14 ~@2 [c4,eb4]@16 ~@8 eb4@3 ~ ab3@4 ~@4 f4@11 ~@2 c4@21 ~@6, ~@4 bb3@32 g4@6 ~@7 eb4@19 ~@32 ab3@12 ~@4 ab3@11 ~@33, ~@104 c4@8 [c4,eb4]@9 ~@39]/5", // Eb Eb5 Cm
  AE: "[~@37 c5@30 ~@17 [ab3,c4,f4]@17 [g3,b3,f4]@31 [bb3,eb4,g4]@14 ~@2 [bb3,eb4,g4]@15 ~ [g4,bb4,eb5]@16 [bb3,eb4,g4]@15 ~ [bb3,d4,f4]@15 ~ [bb3,d4,f4]@16 [d4,f4,bb4]@15 ~ d4@4 d4@4 bb4@4, ~@5 ab2@64 ~@32 g2@29 ~@114 f4@12, ~@244 bb4@7 ~@5]/8", // Fm G7 Eb Bb
  AF: "[~@4 [f4,bb4,db5]@16 [f4,bb4,db5]@16 ~ eb4@14 ~ [eb4,g4,bb4]@16 ~ [c4,eb4,ab4]@15 ~ [c4,eb4,ab4]@15 [c4,eb4,ab4]@12 [eb3,c4,ab4]@8 [db4,ab4]@11 ~ [bb3,eb4,g4]@14 ~@2 [bb3,eb4,g4]@15 ~ [g4,bb4,eb5]@16 [bb3,eb4,g4]@15 ~ [bb3,d4,f4]@15 ~ [bb3,d4,f4]@16 [d4,f4,bb4]@15 ~ d4@4 d4@4 bb4@4, ~@36 [ab4,c5]@13 ~@63 ab3@20 ~@112 f4@12, ~@244 bb4@7 ~@5]/8", // Bbm Eb Ab Db5 Eb Bb Ab
  AG: "[~@4 [g4,c5,eb5]@16 [g4,c5,eb5]@16 ~ [g4,d5,eb5]@15 [g4,bb4,d5]@16 ~ [c4,eb4,ab4]@15 ~ [c4,eb4,ab4]@15 [c4,eb4,ab4]@12 [eb3,ab3,c4,ab4]@8 [ab3,c4,ab4]@8, ~@18 bb4@7 ~@39]/4", // Cm Ebmaj7 Gm Ab
  AH: "[~@4 [bb3,eb4,g4]@14 ~@2 [bb3,eb4,g4]@15 ~ [g4,bb4,eb5]@16 [bb3,eb4,g4]@15 ~ [bb3,d4,f4]@15 ~ [bb3,d4,f4]@16 [d4,f4,bb4]@15 ~ d4@4 d4@4 bb4@4, ~@29 f4@3, ~@116 bb4@7 ~@5]/4", // Eb Bb
  AI: "[~@4 [g4,c5,eb5]@16 [g4,c5,eb5]@16 ~ [g4,d5,eb5]@15 [g4,bb4,d5]@16 ~ [c4,eb4,ab4]@15 ~ [c4,eb4,ab4]@15 ~@2 [c4,eb4,ab4]@12 [eb3,ab3,c4,ab4]@8 ~ [ab3,c4,ab4]@8 ~@5 [eb3,bb3]@47 ~@9, ~@36 bb4@14 ~@86 g4@51 ~@5]/6", // Cm Ebmaj7 Gm Ab Eb5
})).s("gm_piano").gain(0.44)

// chords · piano · soft notes
const piano_soft = note(`<
  ~@24 A@2 ~@2 B C D@2 E@2 ~@4 F@2 ~ G ~@3 H ~@5 I ~ J K ~@4 I ~ J ~@2 L M N@5 ~ O@2 P@2 Q@3 ~@4 R@2 S T@2 U@3 ~@38
>`.pickRestart({
  A: "[bb3@57 bb3@7]/2", B: "g3@15 ~@17", C: "~@3 [bb2,bb3]", D: "[~@8 f4@5 ~@19 ab3@14 ~@7 bb4@11, ab2@15 ~]/2",
  E: "[bb3@47 ~ bb3@13 ~@3]/2", F: "[ab2@2 ab2@4 c3 ~]/2", G: "[g2,b3]@29 ~@3", H: "b3", I: "~@24 d4@7 ~",
  J: "~@8 bb3@21 ~@3", K: "~ ab2", L: "c4", M: "b3@15 ~", N: "[ab3@65 ~@33 b3@34 ~@28, ~@13 d2@13 ~@6]/5",
  O: "[~@2 [eb3,bb3]@27 ~@3]/2", P: "[~@5 bb3@53 ~@6]/2", Q: "[~@5 [db3,bb3]@63 ~@28]/3", R: "[~@29 d4@7 ~@28]/2",
  S: "~@3 bb3@5", T: "[~@5 ab2@4 ~@7]/2", U: "[~@29 c4@7 b3@30 ~@30, ~@5 g3@61 ~@30]/3",
})).s("gm_piano").gain(0.19)

// bass · electric bass finger
const bass = note(`<
  ~@24 A@2 B@2 C D E F A@2 B@2 C D G@2 H I J@2 K L M@2 N O P Q R S E T N O P Q R S U V K W X@2 Y@3 ~@9 Z@4 AA@6 AB@2 ~@2
  AC@7 AD@8 AE@2 AF AG@5 AH@2 AF AI@5 AJ@4
>`.pickRestart({
  A: "[eb2@31 ~]/2", B: "[d2@63 ~]/2", C: "c2@15 ~", D: "bb1@29 ~@3", E: "ab1@31 ~", F: "ab2@31 ~",
  G: "[ab1@47 ~ f2@8 eb2@8]/2", H: "d2", I: "g1", J: "[ab1@9 eb2 ab2 bb2 ab2@4]/2", K: "d2@15 ~", L: "g1@29 ~@3",
  M: "[ab1@63 ~]/2", N: "eb2@31 ~", O: "eb2@23 ~ eb2@8", P: "d2@31 ~", Q: "d2@23 ~ d2@8", R: "c2@23 ~ c2@8",
  S: "bb1@23 ~ bb1@8", T: "ab2@2 ab1 bb1", U: "ab1@27 ~ eb1@2 ~@2", V: "ab1@2 f2 eb2", W: "g1@15 ~",
  X: "[ab1@61 ~@3]/2", Y: "[~ d2@68 ~@27]/3", Z: "[~@4 eb2@47 ~ bb2@15 ~ d2@48 bb2@12]/4",
  AA: "[~@4 db2@52 ~@4 bb1@8 ~ ab1@47 f2@8 eb2@8 ~ d2@30 ~ g1@28]/6", AB: "[~ ab1@15]/2",
  AC: "[~@5 eb2@61 ~@3 d2@31 d1@15 ~ d2@15 ~ db2@31 ~ db1@16 db2@16 ab1@26 ~@2]/7",
  AD: "[eb1@4 ab1@3 ~ eb1@4 ab1@16 bb1@8 ~ eb2@61 ~@3 d2@31 d1@15 ~ d2@15 ~ c2@23 ~ c2@7 ~ bb1@23 ~ bb1@7 ~ ab1@26 ~@2]/8",
  AE: "[eb1@4 ab1@3 ~ eb1@4 bb1@4 ab1@11 ~ bb1@8 ~ eb2@27]/2", AF: "bb1@4 eb2@3 ~@5 eb2@20",
  AG: "[~@5 d2@31 d1@15 ~ d2@15 ~ db2@31 ~ c2@16 bb1@16 ab1@26 ~@2]/5",
  AH: "[eb1@4 ab1@3 ~ eb1@4 ab1@12 bb1@11 ~@2 eb2@27]/2",
  AI: "[~@5 d2@31 d1@15 ~ d2@15 ~ c2@23 ~ c2@7 ~ bb1@23 ~ bb1@7 ~ ab1@27 ~]/5",
  AJ: "[~ eb1@4 ~ ab1@4 eb1@4 bb1@4 ab1@12 ~ bb1@8 ~ eb2@65 ~@23]/4",
})).s("gm_electric_bass_finger").gain(0.58)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 E F D@2 E F D@2 G H I J K L M@2 G H I J K L M@2 N O P@2 N O P@2 G H I J K L M@2 G H I
  J K L M@2 N O Q@2 R@2 ~@2 S@8 T@8 U@7 ~@34
>`.pickRestart({
  A: "~@3 g4@5, eb3@25 ~@7, ~ bb3@6 ~, ~@4 f4@11 ~", B: "~@3 g4@5, d3@25 ~@7, ~ bb3@6 ~, ~@4 eb4@11 ~",
  C: "~@3 g4@5, db3@25 ~@7, ~ bb3@6 ~, ~@4 eb4@11 ~", D: "~@3 bb4@5, ab2@25 ~@7, ~ c4@6 ~, ~@4 eb4@11 ~",
  E: "~@3 g4@5, d3@25 ~@7, ~ c4@6 ~, ~@4 f4@11 ~", F: "~@3 g4@5, d3@25 ~@7, ~ b3@6 ~, ~@4 f4@11 ~",
  G: "~@3 bb3, eb3@15 ~, ~@4 bb3@19 ~@9, ~@8 f4@12 f4@11 ~, ~@12 g4@19 ~",
  H: "~@3 bb3, eb3@31 ~, ~@4 bb3@19 ~@9, ~@8 f4@12 f4@11 ~, ~@3 g4@5",
  I: "~@3 bb3, d3@15 ~, ~@4 bb3@19 ~@9, ~@8 eb4@12 eb4@11 ~, ~@3 g4@5",
  J: "~@3 bb3, d3@15 ~, ~ bb3@5 ~@2, ~@8 eb4@12 eb4@11 ~, ~@3 g4@5",
  K: "~@3 bb3, c3@31 ~, ~@4 bb3@19 ~@9, ~@2 eb4@3 eb4@3, ~@3 g4@5",
  L: "~@3 bb3, bb2@31 ~, ~@4 bb3@19 ~@9, ~@2 eb4@3 eb4@3, ~@3 g4@5",
  M: "[~@7 c4, ab2@15 ~, ~@4 c4@19 ~ c4@8 ~@8 c4@8 ~@16, ~@8 eb4@12 eb4@11 ~@5 eb4@11 ~@5 eb4@11 ~, ~@12 bb4@15 ~ bb4@14 ~@2 bb4@14 ~@6]/2",
  N: "~@24 c4@7 ~, d3@25 ~@7, ~ c4@5 ~@2, ~@8 f4@12 f4@11 ~, ~@3 g4@5",
  O: "~@24 b3@7 ~, d3@25 ~@7, ~@4 b3@19 ~@9, ~@8 f4@12 f4@11 ~, ~@3 g4@5",
  P: "[~@12 c4@2 bb4@4 ~@8 eb4@2 c4@3 ~, ab2@25 ~@39, ~@2 c4@10 ~@8 c4@7 ~@5, ~@4 eb4@6 eb4@5 ~@3 eb4@7 ~@7, ~@12 bb4@15 ~@17 bb4@16 ~@4]/2",
  Q: "[~@24 c4@4 bb4@8 ~@16 eb4@4 ~ c4@6 ~, ab2@25 ~@39, ~@2 c4@10 ~@8 c4@7 ~@5, ~@4 eb4@6 eb4@5 ~@3 eb4@7 ~@7, ~@12 bb4@15 ~@17 bb4@17 ~@3]/2",
  R: "[~@26 c4@8 b3@19 ~@11, ~ d3@26 ~@37, ~@5 c4@20 ~@39, ~@9 f4@12 ~ f4@11 ~@31, ~@14 g4@21 ~@29]/2",
  S: "[~@4 g4@5 ~@3 g4@5 ~@3 g4@5 ~@3 g4@5 ~@3 g4@5 ~@3 g4@5 ~@3 bb4@5 ~@3 bb4@4, ~@4 eb3@25 ~@7 eb3@25 ~@7 d3@25 ~@7 d3@25 ~@7 db3@25 ~@7 db3@25 ~@7 ab2@25 ~@7 ab2@25 ~@3, ~ bb3@3 ~ bb3@3 ~ bb3@3 ~ bb3@3 ~ bb3@3 ~ bb3@3 ~ c4@3 ~ c4@3, ~@6 f4@11 ~@5 f4@11 ~@5 eb4@11 ~@5 eb4@11 ~@5 eb4@11 ~@5 eb4@11 ~@5 eb4@11 ~@5 eb4@10]/8",
  T: "[~@60 bb3@8 ~@12 eb4@16 [bb3,d4,f4]@3 ~@5 [bb3,d4,f4]@2 ~@6 [bb3,d4,f4]@3 ~ [bb3,d4,f4]@16 ~@24 bb3@8 ~@24 bb3@8 ~@56 c4@4, ~@4 eb3@25 ~@39 d3@56 ~@8 db3@25 ~@7 db3@25 ~@7 ab2@60, ~@8 bb3@20 bb3@12 ~@4 bb3@14 ~@18 bb3@20 ~@40 bb3@19 ~@13 bb3@19 ~@13 c4@19 ~ c4@14 ~@2 c4@14 ~@6, ~@12 f4@11 ~ f4@12 ~@4 f4@14 ~@2 f4@10 ~@74 eb4@11 ~ eb4@12 ~@8 eb4@11 ~ eb4@12 ~@8 eb4@12 eb4@14 ~@2 eb4@14 ~@2 eb4@8, ~@16 g4@16 g4@16 g4@20 ~@76 g4@20 ~@12 g4@20 ~@12 bb4@15 ~ bb4@15 ~ bb4@16]/8", // Bb
  U: "[~@4 g4@5 ~@3 g4@5 ~@3 bb4@5 ~@3 bb4@5 ~@3 g4@5 ~@3 g4@5 ~@7, ~@4 d3@25 ~@7 d3@25 ~@7 ab2@25 ~@7 ab2@25 ~@7 d3@25 ~@7 d3@25 ~@35, ~ c4@3 ~ b3@3 ~ c4@3 ~ c4@3 ~ c4@3 ~ b3@3 ~@4, ~@6 f4@11 ~@5 f4@11 ~@5 eb4@11 ~@5 eb4@11 ~@5 f4@11 ~@5 f4@11 ~@15]/7",
})).s("gm_acoustic_guitar_nylon").gain(0.26)

// chords · french horn
const french_horn = note("<~@40 A@2 B@2 A@2 B@2 ~@81>".pickRestart({
  A: "[c4@31 ~ d4@31 ~, g3@57 ~@7]/2", B: "[ab3,eb4]/2",
})).s("gm_french_horn").gain(0.18)

// chords · french horn · soft notes
const french_horn_soft = note("<~@68 A B@3 ~@57>".pickRestart({
  A: "~ [d3,a3]@31", B: "[~ [d3,g3]@46 ~]/3",
})).s("gm_french_horn").gain(0.05)

// chords · string ensemble 2
const string_ensemble_2 = note("<~@48 A@2 B@2 C D E@2 A@2 B@2 C D E@2 ~@65>".pickRestart({
  A: "[eb3,bb3]/2", B: "[[d3,bb3]@31 ~]/2", C: "[c3,g3]@31 ~", D: "[bb2,g3]@15 ~", E: "[[eb3,ab3]@63 ~]/2",
})).s("gm_string_ensemble_2").gain(0.19)

// chords · string ensemble 2
const string_ensemble_2_2 = note("<~@47 A B@2 C@2 D E F@2 G@2 H@2 I@2 J@2 ~@30 K@8 L@4 M@8 N@8 O@7>".pickRestart({
  A: "eb4 f4 g4 ab4", B: "[[g4,bb4], eb3@61 ~@3]/2", C: "[f4@7 bb4, d3@31 ~]/2", D: "[c3,eb4]",
  E: "d5@16 eb5@15 ~, bb2", F: "[ab5@8 ab5@3 g5@3 f5@2, ab2]/2", G: "[~@31 eb5@12 ~ d5@10 ~@2 c5@8, g5]/2",
  H: "[g5 bb5 ab5 g5, bb4]/2", I: "[ab4@12 g4@11 f4@8 eb4@16 ~ d4@8 eb4@8, eb5]/2", J: "[[eb4,c5]@63 ~]/2",
  K: "[~@4 [eb4,g4]@64 [d4,f4]@63 ~@2 db5@31 ~ c5@15 bb4@16 [eb4,ab4]@60, ~@133 f4@63 ~@60]/8", // Eb Dm Ab5
  L: "[~ [eb4,g4]@16 [d4,f4]@15]/4", M: "[~ c4@8 bb3@8 g4@8 f4@8 [eb4,g4]@16 [d4,f4]@15, ~@4 g4@64 eb4@63 ~@125]/8",
  N: "[~@4 db5@32 c5@16 bb4@15 ~ [eb4,ab4]@63 ~ [eb4,g4]@64 [d4,f4]@60, ~@4 f4@63 ~@189]/8", // Ab5 Eb Dm
  O: "[~@4 c4@32 bb3@32 g4@33 ~ f4@34 [bb3,eb4]@68 ~@20, ~@4 g4@64 eb4@67 ~@89]/7", // Eb5
})).s("gm_string_ensemble_2").gain(0.31)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note("<~@94 A@5 B C D@6 E C F@6 B C D@6 E G@4 ~>".pickRestart({
  A: "[~@5 g4@7 ~@8 [eb4,g4]@8 ~@5 g4@7 ~ [eb4,g4]@4 g4@3 ~ g4@4 [eb4,g4]@8 [eb4,g4]@8 [bb3,d4]@8 [bb3,d4]@7 ~ d4@11 ~@9 g4@4 [bb3,d4]@7 ~ [d4,g4]@8 d4@3 ~ d4@4 [f3,bb3]@8 [f3,bb3]@8 [f3,bb3]@8 f3@3, ~@4 eb4@16 ~@9 eb4@12 ~@44 g4@8 ~@3 g4@8 ~@24 g4@4 ~@28, ~@4 bb3@8 bb3@16 ~ bb3@16 [bb3,eb4]@8 bb3@16 ~@15 bb3@24 ~@8 bb3@8 ~ bb3@8 ~@27, ~@97 d4@12 ~@24 eb4@16 eb4@11]/5", // Eb Bb G5 Bb5 Eb5
  B: "~ [bb3,eb4]@7 ~@5 f3@7 ~ [bb3,eb4]@11, ~@9 [bb3,eb4]@11 f3@7 ~@5", // Eb5
  C: "~ [bb3,eb4]@3 ~ [ab3,eb4]@8 ab3@8 [ab3,c4]@8 c4@3, ~@5 c4@16 eb4@11", // Eb5 Ab5 Ab
  D: "[~ [c4,eb4]@7 ~@5 ab3@3 ~ [ab3,c4,eb4]@7 ~ [db4,eb4]@11 ~ g4@7 ~@8 [eb4,g4]@8 ~@5 g4@7 ~ [eb4,g4]@4 g4@3 ~ g4@4 [eb4,g4]@8 [eb4,g4]@8 [bb3,d4]@8 [bb3,d4]@7 ~ d4@11 ~@9 g4@4 [bb3,d4]@7 ~ [d4,g4]@8 d4@3 ~ d4@4 [g3,c4]@8 [g3,c4]@8 c4@8 g3@3, ~@9 [c4,eb4]@8 ~@7 ab3@12 eb4@16 ~@9 eb4@12 ~@44 g4@8 ~@3 g4@8 ~@24 g4@4 ~@28, ~@36 bb3@8 bb3@16 ~ bb3@16 [bb3,eb4]@8 bb3@16 ~@15 bb3@24 ~@8 bb3@8 ~ bb3@8 ~@27, ~@129 d4@12 ~@24 eb4@16 eb4@11]/6", // Cm Ab Dbsus2 Eb Bb G5 C5 Cm …
  E: "~ [c4,eb4]@4 ~@8 f3@7 ~ [bb3,eb4]@11, ~@9 [bb3,eb4]@11 f3@7 ~@5", // Cm Eb5
  F: "[~ [c4,eb4]@7 ~@5 ab3@3 ~ [ab3,c4,eb4]@7 ~ [c4,eb4]@11 ~ g4@7 ~@8 [eb4,g4]@8 ~@5 g4@7 ~ [eb4,g4]@4 g4@3 ~ g4@4 [eb4,g4]@8 [eb4,g4]@8 [bb3,d4]@8 [bb3,d4]@7 ~ d4@11 ~@9 g4@4 [bb3,d4]@7 ~ [d4,g4]@8 d4@3 ~ d4@4 [f3,bb3]@8 [f3,bb3]@8 [f3,bb3]@8 f3@3, ~@9 [c4,eb4]@8 ~@7 ab3@12 eb4@16 ~@9 eb4@12 ~@44 g4@8 ~@3 g4@8 ~@24 g4@4 ~@28, ~@36 bb3@8 bb3@16 ~ bb3@16 [bb3,eb4]@8 bb3@16 ~@15 bb3@24 ~@8 bb3@8 ~ bb3@8 ~@27, ~@129 d4@12 ~@24 eb4@16 eb4@11]/6", // Cm Ab Cm Eb Bb G5 Bb5 Cm …
  G: "[~ [bb3,eb4]@3 ~ [ab3,eb4]@8 ab3@8 [ab3,c4]@8 ~ c4@4 [c4,eb4]@8 ~@4 ab3@3 ~@2 [c4,eb4]@8 [ab3,c4,eb4]@10 ~@3 [eb4,g4]@52 ~@4, ~@5 c4@16 eb4@12 ~@9 [c4,eb4]@8 ab3@8 ~@13 bb3@49 ~@8]/4", // Eb5 Ab5 Ab Cm Ab Eb Cm
})).s("gm_acoustic_guitar_steel").gain(0.34).pan(0.7)

// chords · acoustic guitar steel · soft notes
const acoustic_guitar_steel_2 = note(`<
  ~@96 A B ~ C D@2 ~@2 A B ~ E D@2 ~@2 A B ~ C D@2 ~@2 A B ~ E F@2 ~@3
>`.pickRestart({
  A: "~@5 g4@8 ~@16 g4@3", B: "~@13 g4@7 ~@12", C: "~ f3@7 ~ f3@3 ~@17 f3@3", D: "[~ f3@3 ~@25 ab3@16 ~@19]/2",
  E: "~ g3@4 ~@4 f3@3 ~@17 f3@3", F: "[~ f3@3 ~@25 ab3@17 ~@18]/2",
})).s("gm_acoustic_guitar_steel").gain(0.2).pan(0.7)

// bass · acoustic bass
const bass_2 = note("<~@68 [~@24 c1 ~@7] [~@7 c1@2 ~@12 c1@2 ~@9] [~@4 c1@2 ~@13 c1 ~@12] [~@2 c1 ~@14 c1 ~@14] ~@57>")
  .s("gm_acoustic_bass").gain(0.49)

// bass · acoustic bass · soft notes
const bass_soft = note("<~@68 [~@29 c1 ~@2] [~@11 c1 ~@14 c1 ~@5] [~@9 c1 ~@13 c1 ~@8] [~@6 c1 ~@14 c1 ~@10] ~@57>")
  .s("gm_acoustic_bass").gain(0.28)

// other · distortion guitar
const distortion_guitar = note("<~@93 A@2 B@5 C@3 D E F G H@4 I@2 J K L@4 D E F G M@6>".pickRestart({
  A: "[~@5 [f2,f3]@4 g4@2 bb4@5]/2", // F
  B: "[g4@8 eb5@20 g4@8 bb4@16 ~@4 f4@2 g4@2 ~@3 c4@2 ~ g3@2 ~@12 [c2,f2]@32 g5@19 ~@2 g5@2 ~@3 g5@2 ~@4 gb5@2 ~@3 g5@2 ~@4 g5@3 ~@2, ~@53 g4@2 eb4@2 ~@4 eb4@2 ~@97, ~@54 f4@2 ~@4 f4@2 d4@2 ~ bb3@2 ~ f3@17 ~@75]/5", // F5
  C: "[ab5@3 ~ g5@6 ~@2 f5@2 c5@2 f5@12 ~ c5@19 [eb4,bb4]@3 ~@2 [eb4,bb4]@4 ~ [eb4,bb4]@10 ~ c3@27, ~@11 c5@2 ~@15 eb5@2 ~@66]/3", // Eb5
  D: "~ bb2@19 eb3@4 g3@4 d4@4", E: "eb4@5 f4@19 f4@6 eb4@2", F: "c4@5 f3@25 ~@2", G: "~ eb5@7",
  H: "[~@2 bb4@2 eb5@9 ~ bb4@3 eb5@2 ~ bb5@17 d6@61 ~@2 bb4@24 eb5@4]/4", I: "[~ bb4@24 d5@4 eb5@4 f5@30 ~]/2",
  J: "bb4@29 ~@3", K: "~ bb4@3 bb4@8 ab4@3 ~ ab4@12 g4@4",
  L: "[~ g4@15 c5@21 ~@3 ab4@4 g4@4 eb4@4 ~@16 ab2@20 ~ bb2@12 c3@27, ~@37 bb4@5 ~@10 ab3@29 ~@47]/4",
  M: "[~ bb4@3 eb5@9 ~ bb4@3 eb5@2 ~ bb5@17 d6@45 ~ c6@4 bb5@16 ~@2 [eb3,bb3,eb4]@67 ~@20]/6", // Eb5
})).s("gm_distortion_guitar").gain(0.64)

// chords · electric guitar jazz
const electric_guitar_jazz = note(`<
  ~@16 A B C@2 D B C@2 E@2 F@2 G ~@3 H@2 I@2 J@2 K@2 L@2 M@2 L@2 M@2 ~@16 N O P@3 Q@2 ~ R@4 S@2 T@6 U@3 ~@3 V ~@3 W@3 X
  Y@4 W@3 X Z@7 X Y@4 W@3 X AA@7
>`.pickRestart({
  A: "d3@29 ~@3", B: "g3@27 ~@5", C: "[ab3@13 ~@3]/2", D: "d4@29 ~@3", E: "[~ g4@59 ~@4]/2",
  F: "[~@32 f4@23 ~@9, [d3,d4]@57 ~@7, g4@27 ~@5]/2", G: "[g4,c5]", H: "[~ g4@51 ~@12, bb3@7 ~, eb3@51 ~@13]/2",
  I: "[~ [d3,bb3]@48 ~@15]/2", J: "[[g4,c5]@15 ~]/2", K: "[[ab3,eb4]@15 ~]/2", L: "[c4@31 ~ d4@31 ~, g3@57 ~@7]/2",
  M: "[ab3,eb4]/2", N: "d3@31 ~, a3@27 ~@5", O: "b3@7 ~", P: "[[ab3,c4]@65 d3@31, ~@65 a3@28 ~@3]/3",
  Q: "[~ b3@29 ~@2]/2", R: "[~@4 [eb3,bb3,eb4]@63 ~ [d3,bb3,d4]@60]/4", S: "[~@5 [bb3,eb4,g4]@59]/2",
  T: "[~@4 [ab2,ab3]@61 ~@47 f5@12 eb5@8 ~ bb3@33 ~@26, ~@68 g5@27 ~@97, ~@23 bb3@21 ~@20, ~@69 eb4@58 ~@5 d4@59 ~]/6", // Ab
  U: "[~@15 g5@30 ~@2 ab5@11 ~@2 bb5@8 ~ eb5@18 ~@9]/3", V: "~@5 c4@27", W: "[~@20 bb5@71 ~@5]/3", X: "~ f4@7",
  Y: "[~@5 db5@31 c5@16 bb4@16 ab4@47 ~@13]/4", Z: "[~@4 eb4@31 ~@2 f4@32 g4@30 ~@2 f4@31 ~@16 bb5@71 ~@5]/7",
  AA: "[~@4 eb4@31 ~@2 f4@32 g4@31 ~@2 f4@33 ~ eb4@64 ~@24]/7",
})).s("gm_electric_guitar_jazz").gain(0.16).pan(0.4)

// chords · electric guitar jazz · soft notes
const electric_guitar_jazz_2 = note("<~@24 A@2 ~@4 B ~@34 C ~@3 D@2 ~@17 E F ~@39>".pickRestart({
  A: "[eb4@7 ~, bb3@13 ~@3]/2", B: "ab3@31 ~", C: "g3@7 ~", D: "[~ g2@31]/2", E: "~@5 [d4,g4]@27", F: "~@3 b3@19 ~@10",
})).s("gm_electric_guitar_jazz").gain(0.1).pan(0.4)

// drums · kick
const kick = s("bd").struct(`<
  ~@48 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ B ~@11 C ~ C ~ C ~ C ~@6 D E F E F C F C F C F E F C F C ~ G F E F C F C
  F C F E F C F C ~ H ~@2
>`.pickRestart({
  A: "x", B: "~ x ~@30", C: "~ x ~@6", D: "~@24 x ~@4 x ~@2", E: "~ x ~@2 x ~@27", F: "~@3 x ~@4", G: "x!2 ~@6",
  H: "~ x!2 ~@5",
})).gain(0.72)

// drums · rim
const rim = s("rim").struct("<~@49 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@12 B ~ B ~ B ~ B ~@42>".pickRestart({
  A: "x", B: "~@5 x ~@2",
})).gain(0.56)

// drums · snare
const snare = s("sd").struct(`<
  ~@94
  [~@5 x ~@2]!15
  [~@2 x ~ x ~ x!2]
// … 65 more lines

More by Dalla