Strudelify

In the Ghetto

Elvis

KeyB♭ majorTempo89 bpm
0:00/0:00
// In the Ghetto — Elvis
// 89 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 2/4 at bar 16, 4/4 at bar 18, 2/4 at bar 19, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 61 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(89/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.

// bass · electric bass finger
const bass = note(`<
  A B A B C D E F A@2 G H I J K L M N O P Q R@2 S@3 T@6 U@4 V@4 W@5 X Y Z AA AB@2 AC@2 AD@8
>`.pickRestart({
  A: "bb1@11 ~", B: "bb1@15 ~", C: "d2@22 ~@2 d2@18 f2@2 ~ e2@2 ~", D: "eb2@17 ~ g2@5 ~ f2@16 ~@2 f2@3 d2@3",
  E: "bb1@41 ~@4 bb1@3", F: "bb1@43 ~@5", G: "d2@19 ~@2 d2 ~@2 d2@15 ~@3 f2@2 ~ e2@2 ~",
  H: "eb2@17 ~ g2@5 ~ f2@13 ~@2 f2 ~@2 f2@3 d2@2 ~", I: "bb1@23 ~ bb1@20 ~ bb1@2 ~",
  J: "bb1@23 ~ bb1@17 ~ d2@2 ~ eb2@2 ~", K: "f2@8 ~ f2 ~@2 f2@8 ~ f2 ~@2 f2@7 ~@2 f2 ~@2 f2@6 g2@2 ~ e2@2 ~",
  L: "eb2@7 ~@2 eb2 ~@2 eb2@5 ~ d2@2 ~ c2@2 ~ bb1@7 ~@2 bb1 ~@2 bb1@6 ~@3 bb1 ~@2",
  M: "eb2@6 ~@3 eb2 ~@2 eb2@7 ~@2 ab2 ~@2 f2@7 ~@2 f2 ~@2 f2@6 f1 ~@2 a1 ~@2",
  N: "bb1@7 ~@2 bb1 ~@2 bb1@7 ~@2 bb1 ~@2 bb1 ~@2 bb1@5 ~ bb1 ~@2 bb1@5 ~ d2 ~@2 eb2@2 ~",
  O: "f2@7 ~@2 f2 ~@2 f2@6 ~@3 f2 ~@2 f2 ~@2 f2@5 ~ f2 ~@2 f2@5 ~ f2 ~@2 e2 ~@2",
  P: "eb2@6 ~@3 eb2 ~@2 eb2@7 ~@2 eb2 ~@2 bb1@7 ~@2 bb1 ~@2 bb1@6 ~@3 d2@2 ~", Q: "eb2@24 ~ d2@23",
  R: "[~@3 c2@27 ~@2 f1@57 ~@7]/2", S: "[~@44 bb1@39 ~@3 bb1@6 d2@22 ~@2 d2@15 ~@3 f2@2 ~ e2@2 ~ eb2@4]/3",
  T: "[~@14 g2@2 ~ gb2@2 ~ f2@14 ~ f2@2 ~ d2@2 ~ c2@2 ~ bb1@22 ~@2 bb1@20 ~ bb1@2 ~ bb1@22 ~@2 bb1@22 ~@2 bb1@21 ~@3 bb1@22 ~@2 bb1@20 ~@4 bb1@17 ~ bb1@2 ~ c2@2 ~ d2@20 ~ d2@2 ~ d2@15 ~@3 f2@2 ~ e2@2 ~ eb2@4]/6",
  U: "[~@14 g2@2 ~ gb2@2 ~ f2@14 ~ c2@2 ~ d2@2 ~ c2@2 ~ bb1@22 ~@2 bb1@20 ~ bb1@2 ~ bb1@22 ~@2 bb1@18 bb1 ~@2 d2@2 ~ f2@7 ~@2 f2 ~@2 f2@7 ~@2 f2 ~@2 f2@6 ~@3 f2 ~@2 f2@4 ~@2 f2@2 ~ e2 ~@2 eb2@4]/4",
  V: "[~@5 eb2 ~@2 eb2@7 ~@2 eb2 ~@2 bb1@6 ~@3 bb1 ~@2 bb1@7 ~@2 d2 ~@2 eb2@22 ~@2 d2@22 ~@2 c2@25 ~ f1@40 ~@34]/4",
  W: "[~@14 bb1 ~@2 bb1@42 ~ bb1@5 ~@2 d2@20 ~ d2@2 ~ d2@16 ~@3 f2@2 ~ e2@2 ~ eb2@14 ~@5 g2@2 ~ gb2@2 ~ f2@15 ~ f2@2 ~ d2@2 ~ c2@3 bb1@20 ~@5 bb1@21 bb1 ~@3 bb1@20 ~@4]/5",
  X: "bb1@22 ~@3 bb1@22 ~", Y: "~@2 bb1@22 ~@3 bb1@21", Z: "~@4 bb1@18 bb1@6 ~ d2@19",
  AA: "~@2 d2@2 ~ d2@16 ~@3 f2@2 ~ e2@2 ~ eb2@14 ~@4", AB: "[~ g2@2 ~ gb2@2 ~ f2@48 ~@41]/2",
  AC: "[~@10 bb1@19 ~@2 bb1 ~@2 bb1@20 ~@4 bb1@19 ~@2 bb1 ~@2 bb1@14]/2",
  AD: "[~@4 f1@2 ~ g1@2 ~ bb1@18 ~@3 bb1 ~@2 bb1 ~@2 bb1@18 ~@3 bb1@17 ~@4 bb1 ~@2 bb1 ~@2 bb1@17 ~@4 bb1@17 ~@4 bb1 ~@2 bb1 ~@2 bb1@17 ~@4 bb1@18 ~@3 bb1 ~@2 bb1@2 ~ bb1@17 ~@4 bb1@18 ~@3 bb1 ~@2 bb1 ~@2 bb1@17 ~@4 bb1@18 ~@3 bb1 ~@2 bb1@2 ~ bb1@18 ~@3 bb1@73 ~@13]/8",
})).s("gm_electric_bass_finger").gain(0.31).pan(0.3)

// other · french horn
const french_horn = note("<~@6 A@3 B C D@2 E@2 F G H I J@5 K@5 ~@11 L@6 ~ M@4 ~ N@7 O@2>".pickRestart({
  A: "[~@36 bb4@7 ~ c5@7 ~@2 f4@49 ~@42]/3", B: "f4@35 ~ d4@5 ~ c4@6", C: "a3@47 ~", D: "[bb3@23 ~ c4@23 bb3@49]/2",
  E: "[~@23 d4@9 eb4@10 ~ f4@53]/2", F: "eb4@24 d4@23 ~", G: "g4@23 f4@23 ~@2", H: "d4", I: "a4@17 ~ bb4@5 ~ a4@24",
  J: "[g4@23 ~ f4@153 ~@11 eb4@12 d4@35 c4@5]/5", K: "[~@2 bb3@40 ~@2 a3@47 ~ g4@23 f4@18 ~ eb4@6 d4@72 ~@28]/5",
  L: "[~@42 f4@12 c4@11 ~@2 d4@49 ~ eb4@23 ~ f4@124 ~@23]/6", M: "[~@29 f4@47 ~@2 eb4@25 c4@51 ~@38]/4",
  N: "[~@45 eb4@14 f4@72 ~@10 eb4@14 f4@72 ~@10 eb4@14 f4@72 ~@10 eb4@3]/7", O: "[~@11 f4@72 ~@13]/2",
})).s("gm_french_horn").gain(0.07).pan(0.9)

// chords · string ensemble 1
const string_ensemble_1 = note("<~@6 A@3 ~ B C D ~@2 E F G H I J@3 ~@9 K@3 L@4 M@5 ~ N@6 O@8 P@2>".pickRestart({
  A: "[~@12 [d6,f6]@85 ~@47]/3", B: "[f4,a4]@47 ~", C: "[g4,bb4] [a4,c5]", D: "[f4,bb4]@47 ~",
  E: "~@18 f4 bb4 c5 d5 eb5 f5", F: "g5@4 f5@3 eb5", G: "d5@7 ~", H: "a5@18 bb5@6 a5@23 ~",
  I: "bb5@23 ~ f5@12 f5@2 g5@2 a5@2 bb5@2 c6@2 d6@2", J: "[f6@125 ~@19]/3",
  K: "[~@38 [bb5,d6]@2 ~ [c6,eb6]@2 ~ [d6,f6]@95 ~@5]/3", // Bb Cm Dm
  L: "[~@38 [d6,f6]@6 [eb6,g6]@23 ~ [d6,f6]@23 ~ eb6@24 [d6,f6]@23 ~ [c6,eb6]@26 ~ [c6,f6]@25, ~@91 g6@24 ~@77]/4", // Dm Eb Dm Cm F5
  M: "[~@18 [bb5,d6]@96 ~ [f5,a5]@49 [eb5,g5]@24 ~ [f5,a5]@28 ~@23]/5", // Bb F Eb F
  N: "[~@25 d4@37 eb4@3 ~ d4@3 eb4@6 ~@37 f5@2 g5@2 a5@2 ~ bb5@2 c6@2 d6@2 f6@49 eb6@25 c6@54 ~@9 bb5@23 ~ eb6@2, ~@75 d4@49 ~@164]/6",
  O: "[~ d6@3 eb6@5 ~ d6@49 ~@34 eb6@12 ~ f6@48 ~@35 eb6@12 ~ f6@48 ~@35 eb6@12 ~ f6@48 ~@35 eb6@3]/8",
  P: "[~@10 f6@73 ~@13]/2",
})).s("gm_string_ensemble_1").gain(0.08).pan(1)

// chords · cello
const cello = note("<~@8 A@3 B C ~@3 D E ~ F G H@2 ~@5 I@7 ~ J@4 K@4 ~ L@4 M@8 N@4>".pickRestart({
  A: "[[d4,f4]@143 ~]/3", B: "[eb4,g4]@23 ~ f4@24, ~@23 a4@23 ~@2", C: "[d4,f4]", D: "[eb3,g3] [f3,a3]", E: "[bb3,d4]",
  F: "[eb4,g4]@23 ~ [d4,f4]@23 ~", G: "[eb4,g4]@24 ~ [d4,f4]@23", H: "[~@4 [eb4,g4]@28 [f4,a4]@49 ~@15]/2",
  I: "[~@44 d4@35 eb4@3 d4@2 ~ eb4@6 ~ d4@16 ~ f3@78 ~ g3@24 a3@24 bb3@95 ~@5]/7",
  J: "[~@11 [eb4,g4]@6 [d4,f4]@6 [c4,eb4]@17 ~@8]/4", // Eb Dm Cm
  K: "[~@42 f4@11 ~ c4@12 ~ d4@49 ~ eb4@24 [f4,a4]@24 ~@27, ~@29 g4@6 ~@13]/4", // F
  L: "[~@26 d4@35 ~ eb4@3 ~ d4@2 eb4@5 ~@2 d4@49 ~ [d4,f4]@49 [eb4,g4]@18]/4", // Dm Eb
  M: "[~@7 [f4,a4]@53 ~@22 [bb3,d4]@12 [a3,c4]@12 [f3,bb3]@49 ~@35 [bb3,eb4]@12 [bb3,d4]@49 ~@35 [bb3,eb4]@12 [bb3,d4]@49 ~@35 [bb3,eb4]@2]/8", // F Bb Am Bb5 Eb5 Bb Eb5 Bb …
  N: "[~@10 [bb3,d4]@49 ~@35 [bb3,eb4]@12 [bb3,d4]@73 ~@13]/4", // Bb Eb5 Bb
})).s("gm_cello").gain(0.08).pan(0.2)

// other · cello
const cello_2 = note("<A B@2 ~@7 C D E F ~@2 G@3 H I J@2 ~ K@5 ~ L@5 ~ M@4 N@6 ~ O@5 P@2 Q@2 R@2 S@3>".pickRestart({
  A: "~@9 bb2 c3@2", B: "[~ f2@77 ~@18]/2", C: "d3@47 ~", D: "eb3@23 ~ f3@23 ~", E: "bb2@24 bb2@11 ~ bb2@11 ~",
  F: "f2@47 ~", G: "[g3@24 a3@22 ~ bb3@58 ~@39]/3", H: "g3@23 ~ bb2@23 ~", I: "eb3@25 d3@23",
  J: "[~@3 c3@27 ~@2 f2@57 ~@7]/2",
  K: "[~@44 f3@47 eb3@24 ~ c3@17 ~ d3@3 eb3@2 ~@37 g2@5 ~ f2@5 ~ bb1@44 ~@8, ~@139 bb2@92 ~@9]/5",
  L: "[~@44 d3@47 eb3@24 ~ f3@23 ~ bb2@92 ~@8]/5", M: "[~@44 eb3@23 ~ d3@24 c3@65 ~@27 eb3@4 d3@4]/4",
  N: "[~@4 c3@12 bb2@25 ~ f3@12 c3@12 ~ d3@48 ~ eb3@24 ~ f3@25 bb2@98 ~@24]/6",
  O: "[~@29 d3@48 ~@2 eb3@24 f3@51 ~@24 eb3@9 ~ d3@8 bb2@42 ~@2]/5", P: "[~@10 bb1@81 ~@5]/2", Q: "[~@10 bb1@77 ~@9]/2",
  R: "[~@5 bb1@37 ~@6]/2", S: "[~@10 bb1@121 ~@13]/3",
})).s("gm_cello").gain(0.11).pan(0.2)

// other · timpani
const timpani = note(`<
  A ~ A ~@3 A ~ A ~@3 A ~@10 B ~@3 B ~ B ~@3 B ~@6 C ~@3 D ~ E ~@4 F ~ F ~ F ~ F ~ F ~
>`.pickRestart({
  A: "~@42 bb2!2 ~@2 bb2!2", B: "~@37 bb2 ~ bb2 ~ bb2 ~ bb2 ~@4", C: "~@11 bb2!2 ~@2 bb2!2 ~@31",
  D: "~@17 bb2 ~ bb2 ~ bb2 ~ bb2 ~@24", E: "~@21 bb2!2 ~@2 bb2!2 ~@21", F: "~@4 bb2!2 ~@2 bb2!2 ~@38",
})).s("gm_timpani").gain(0.14).pan(0.7)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note("<A B A B C D A B A B C D A B E F G H E I@2 J@8 K@5 L@7 M@4 N@8 O@8>".pickRestart({
  A: "~@12 d4@6 ~@3 d4@3 ~@6 [f3,d4]@3 ~@6 d4@3 ~@3 bb2@2 ~, bb2@17 ~ bb2@8 ~ bb2@8 ~ bb2@8 ~@4, ~@6 f3@13 ~@2 f3@2 ~ [f3,eb4]@5 ~@4 [f3,eb4]@5 ~ f3@2 ~ [f3,eb4]@5 ~", // Dm F7
  B: "~@12 d4@6 ~@3 d4@3 [f3,eb4]@3 [f3,d4]@3 [f3,eb4]@5 ~ [bb2,f3,d4]@11 ~, bb2@17 ~ bb2@8 ~ bb2@8 ~@13, ~@6 f3@13 ~@2 f3@2 ~@25", // F7 Dm F7 Bb
  C: "~@7 a3, a2@18 a3@12 d3@17 ~, ~@6 d3@17 ~ a2@22 ~@2, ~@11 f3@23 ~@2 [f3,d4]@12, ~@6 d4@11 ~@7", // Dm
  D: "~@18 bb3@6 ~@18 c4@5 ~, bb2@23 ~ c3@23 ~, ~@6 eb3@17 ~@7 f3@18, ~@12 [g3,eb4]@13 ~@11 [a3,f4]@12", // Cm Dm
  E: "~@7 a3, f2@18 a3@12 c3@17 ~, ~@6 c3@17 ~ f2@22 ~@2, ~@11 f3@23 ~@2 [f3,c4]@12, ~@6 c4@11 ~@7", // F5
  F: "~@18 bb3@6 ~@18 d4@5 ~, bb2@23 ~ bb2@23 ~, ~@6 eb3@17 ~@7 f3@18, ~@12 [g3,eb4]@13 ~@11 [bb3,f4]@12", // Cm Bb5
  G: "~@3 bb3 ~@3 a3, bb2@19 ~@5 f2@22 ~@2, ~@6 eb3@17 ~@7 c3@17 ~, ~@11 g3@12 ~@13 [f3,c4]@12, ~ eb4 ~@2", // F5
  H: "~@18 d4@6 ~@18 d4@5 ~, bb2@23 ~ bb2@23 ~, ~@6 f3@17 ~@7 f3@18, ~@12 [bb3,f4]@13 ~@11 [bb3,f4]@12", // Bb5
  I: "[~@17 bb3@6 ~@19 d4@5 ~ [g3,bb3,eb4]@23 ~@3 d4@22, bb2@23 ~ bb2@23 eb3@23 ~@3 [d3,f3,a3]@23, ~@6 eb3@17 ~@7 f3@18 ~@48, ~ [g3,db4,eb4] ~ [bb3,f4] ~@4]/2", // Eb Dm Eb7 Bb5
  J: "[~@4 [c4,eb4]@26 ~@3 [a3,c4,f4]@59 ~@12 d4@6 ~@3 d4@3 ~@6 [f3,d4]@3 ~@6 d4@3 ~@3 bb2@2 ~@13 d4@6 ~@3 d4@3 [f3,eb4]@3 [f3,d4]@3 [f3,eb4]@5 ~ [bb2,f3,d4]@11 ~@43 a3@6 ~@18 bb3@6 ~@18 c4@5 ~@13 d4@6 ~@3 d4@3 ~@6 [f3,d4]@3 ~@6 d4@3 ~@3 bb2@2 ~@13 d4@6 ~@3 d4@3 [f3,eb4]@3 [f3,d4]@3 [f3,eb4]@5 ~ [bb2,f3,d4]@11 ~ bb2@4, ~@3 [eb3,g3]@26 ~@3 [eb3,f3]@59 ~ bb2@18 bb2@8 ~ bb2@8 ~ bb2@8 ~@4 bb2@17 ~ bb2@8 ~ bb2@8 ~@13 a2@18 a3@12 d3@17 ~@7 eb3@17 ~@7 f3@18 ~@6 f3@13 ~@2 f3@2 ~ [f3,eb4]@5 ~@4 [f3,eb4]@5 ~ f3@2 ~ [f3,eb4]@5 ~@7 f3@13 ~@2 f3@2 ~@29, ~@98 f3@13 ~@2 f3@2 ~ [f3,eb4]@5 ~@4 [f3,eb4]@5 ~ f3@2 ~ [f3,eb4]@5 ~@7 f3@13 ~@2 f3@2 ~@31 d3@17 ~ a2@22 ~@2 bb2@23 ~ c3@23 ~ bb2@17 ~ bb2@8 ~ bb2@8 ~ bb2@8 ~@4 bb2@17 ~ bb2@8 ~ bb2@8 ~@17, ~@199 f3@23 ~ f3@11 ~@13 g3@12 ~@12 a3@12 ~@101, ~@200 d4@22 ~@2 d4@12 ~@12 eb4@13 ~@11 f4@11 ~@101]/8", // Cm F Dm F7 Dm F7 Bb Dm …
  K: "[~@8 d4@6 ~@3 d4@3 ~@6 [f3,d4]@3 ~@6 d4@3 ~@3 bb2@2 ~@13 d4@6 ~@3 d4@3 [f3,eb4]@3 [f3,d4]@3 [f3,eb4]@5 ~ [bb2,f3,d4]@11 ~@43 a3@6 ~@18 bb3@6 ~@18 c4@5 ~@13 d4@6 ~@3 d4@3 ~@6 [f3,d4]@3 ~@6 d4@3 ~@3 bb2@2 ~ bb2@4, ~@2 f3@12 bb2@8 ~ bb2@8 ~ bb2@8 ~@4 bb2@17 ~ bb2@8 ~ bb2@8 ~@13 a2@18 a3@12 d3@17 ~@7 eb3@17 ~@7 f3@18 ~@6 f3@13 ~@2 f3@2 ~ [f3,eb4]@5 ~@4 [f3,eb4]@5 ~ f3@2 ~ [f3,eb4]@5 ~@5, ~@17 f3@2 ~ [f3,eb4]@5 ~@4 [f3,eb4]@5 ~ f3@2 ~ [f3,eb4]@5 ~@7 f3@13 ~@2 f3@2 ~@31 d3@17 ~ a2@22 ~@2 bb2@23 ~ c3@23 ~ bb2@17 ~ bb2@8 ~ bb2@8 ~ bb2@8 ~@8, ~@103 f3@23 ~ f3@11 ~@13 g3@12 ~@12 a3@12 ~@53, ~@104 d4@22 ~@2 d4@12 ~@12 eb4@13 ~@11 f4@11 ~@53]/5", // Dm F7 Dm F7 Bb Dm F7
  L: "[~@8 d4@6 ~@3 d4@3 [f3,eb4]@3 [f3,d4]@3 [f3,eb4]@5 ~ [bb2,f3,d4]@11 ~@43 a3@6 ~@17 bb3@6 ~@19 d4@5 ~ [bb3,eb4]@22 ~@2 [a3,d4]@23 ~@2 [c4,eb4]@23 ~@4 f4@39 ~@13 d4@6 ~@3 [f3,d4]@3 ~@6 [f3,d4]@3 ~@7 d4@3 ~@3 bb2@3 ~@12 d4@7 ~@3 [f3,d4]@3 [f3,eb4]@3 [bb2,f3,d4]@3, ~@2 f3@12 bb2@8 ~ bb2@8 ~@13 f2@18 a3@12 c3@17 ~ bb2@23 ~ bb2@23 [eb3,g3]@22 ~@2 [d3,f3]@23 ~@2 [eb3,g3]@23 ~@3 [eb3,f3]@38 ~@3 bb2@18 ~ bb2@8 ~ bb2@9 bb2@9 ~@4 bb2@18 ~ bb2@8 ~@4, ~@17 f3@2 ~@31 c3@17 ~ f2@22 ~@14 eb4@13 ~@11 f4@11 ~@197, ~@55 f3@23 ~ f3@11 ~@8 eb3@17 ~@7 f3@18 ~@121 f3@14 ~@5 [f3,eb4]@6 ~@3 [f3,eb4]@6 ~ f3@2 ~ [f3,eb4]@6 ~@6 f3@14 ~@11, ~@56 c4@22 ~@2 c4@12 ~@11 g3@12 ~@12 bb3@12 ~@76 [a3,c4]@39 ~@82]/7", // F7 Dm F7 Bb Eb5 D5 Cm Dm …
  M: "[[f3,eb4]@6 [bb2,f3,d4]@12 ~@44 a3@6 ~@19 bb3@6 ~@19 c4@6 ~@12 d4@7 ~@3 [f3,d4]@3 ~@6 [f3,d4]@3 ~@6 d4@3 ~@3 bb2@3 ~@13 d4@6 ~@3 [f3,d4]@3, ~@19 a2@18 a3@17 ~@26 g3@12 ~@7 f3@18 ~@7 f3@14 ~@5 [f3,eb4]@6 ~@3 [f3,eb4]@6 f3@2 ~ [f3,eb4]@6 ~@7 f3@14 ~@4, ~@25 d3@17 ~ a2@23 ~@2 bb2@24 ~ c3@24 ~ bb2@18 ~ bb2@8 ~ bb2@9 bb2@9 ~@4 bb2@18 bb2@6, ~@31 [f3,d4]@24 ~ [f3,d4]@12 ~@13 eb4@13 ~@11 [a3,f4]@12 ~@75, ~@50 d3@17 ~@7 eb3@18 ~@100]/4", // F7 Bb Dm F7 Dm
  N: "[[f3,eb4]@4 [f3,d4]@3 [f3,eb4]@6 [bb2,f3,d4]@12 ~@13 d4@6 ~@3 [f3,d4]@3 ~@6 [f3,d4]@3 [f3,eb4]@4 ~@3 d4@3 ~@3 bb2@3 ~@12 d4@7 ~@3 [f3,d4]@3 [f3,eb4]@3 [f3,d4]@3 [f3,eb4]@6 [bb2,f3,d4]@12 ~@44 a3@6 ~@19 bb3@6 ~@16 f4@34 ~@13 d4@6 ~@3 d4@3 ~@6 [f3,d4]@3 ~@6 d4@3 ~@3 bb2@2 ~@13 d4@6 ~@3 d4@3 [f3,eb4]@3 [f3,d4]@3 [f3,eb4]@5 ~ [bb2,f3,d4]@11 ~@13 d4@6 ~@3 d4@3 ~@6 [f3,d4]@3 ~@3 bb2@2, ~@4 bb2@9 ~@12 bb2@18 ~ bb2@8 ~ bb2@9 ~ bb2@9 ~@3 bb2@18 ~ bb2@8 ~ bb2@9 ~@13 a2@18 a3@17 ~@26 g3@12 ~@9 f3@42 ~@7 f3@13 ~@2 f3@2 ~ [f3,eb4]@5 ~@4 [f3,eb4]@5 ~ f3@2 ~ [f3,eb4]@5 ~@7 f3@13 ~@2 f3@2 ~@31 f3@13 ~@2 f3@2 ~ [f3,eb4]@5 ~@4 [f3,eb4]@5, ~@31 f3@14 ~@5 [f3,eb4]@6 ~@10 f3@2 ~ [f3,eb4]@6 ~@6 f3@14 ~@36 d3@17 ~ a2@23 ~@2 bb2@24 ~ c3@48 ~@3 bb2@18 bb2@8 ~ bb2@8 ~ bb2@8 ~@4 bb2@17 ~ bb2@8 ~ bb2@8 ~@13 bb2@17 ~ bb2@8 ~ bb2@8 ~@3, ~@137 [f3,d4]@24 ~ [f3,d4]@12 ~@13 eb4@13 ~@13 a3@34 ~@137, ~@156 d3@17 ~@7 eb3@18 ~@16 c4@34 ~@136]/8", // F7 Dm F7 Bb Dm F7 Dm F7 …
  O: "[~ d4@3 ~@3 bb2@2 ~@13 d4@6 ~@3 d4@3 [f3,eb4]@3 [f3,d4]@3 [f3,eb4]@5 ~ [bb2,f3,d4]@11 ~@13 d4@6 ~@3 d4@3 ~@6 [f3,d4]@3 ~@6 d4@3 ~@3 bb2@2 ~@13 d4@6 ~@3 d4@3 [f3,eb4]@3 [f3,d4]@3 [f3,eb4]@5 ~ [bb2,f3,d4]@11 ~@13 d4@6 ~@3 d4@3 ~@6 [f3,d4]@3 ~@6 d4@3 ~@3 bb2@2 ~@13 d4@6 ~@3 d4@3 [f3,eb4]@3 [f3,d4]@3 [f3,eb4]@5 ~ [bb2,f3,d4]@11 ~@13 d4@6 ~@3 d4@3 ~@6 [f3,d4]@3 ~@6 d4@3 ~@3 bb2@2 ~@2 [d4,bb4]@72 ~@13, ~ f3@2 ~ [f3,eb4]@5 ~ bb2@17 ~ bb2@8 ~ bb2@8 ~@13 bb2@17 ~ bb2@8 ~ bb2@8 ~ bb2@8 ~@4 bb2@17 ~ bb2@8 ~ bb2@8 ~@13 bb2@17 ~ bb2@8 ~ bb2@8 ~ bb2@8 ~@4 bb2@17 ~ bb2@8 ~ bb2@8 ~@13 bb2@17 ~ bb2@8 ~ bb2@8 ~ bb2@8 ~@3 bb2@73 ~@14, ~@16 f3@13 ~@2 f3@2 ~@31 f3@13 ~@2 f3@2 ~ [f3,eb4]@5 ~@4 [f3,eb4]@5 ~ f3@2 ~ [f3,eb4]@5 ~@7 f3@13 ~@2 f3@2 ~@31 f3@13 ~@2 f3@2 ~ [f3,eb4]@5 ~@4 [f3,eb4]@5 ~ f3@2 ~ [f3,eb4]@5 ~@7 f3@13 ~@2 f3@2 ~@31 f3@13 ~@2 f3@2 ~ [f3,eb4]@5 ~@4 [f3,eb4]@5 ~ f3@2 ~ [f3,eb4]@5 ~ f3@72 ~@14]/8", // F7 Dm F7 Bb Dm F7 Dm F7 …
})).s("gm_acoustic_guitar_nylon").gain(0.1).pan(0.7)

// chords · brass section
const brass_section = note("<~@14 A B ~@2 C D ~@14 E@6 ~@21>".pickRestart({
  A: "~@18 [d4,f4]@2 ~ [d4,f4]@2 ~", B: "[eb4,g4]@22 ~ [d4,f4]@15 ~@10", C: "a4@17 ~ bb4@6 a4@14 ~@4 a4@4 ~@2",
  D: "g4 f4",
  E: "[~@44 [f4,a4]@47 [eb4,g4]@24 ~ [f4,bb4]@22 ~@2 [eb4,g4]@21 ~@3 [d4,f4]@23 ~ [c4,eb4]@24 ~@2 eb4@7 ~ c4@8 a3@25 ~@33]/6", // F Eb Bb5 Eb Dm Cm
})).s("gm_brass_section").gain(0.11).pan(0.8)

// bass · tuba
const bass_2 = note("<~@14 A B ~@2 C D ~@14 E@5 ~@14 F@8>".pickRestart({
  A: "~@18 f2@2 ~ f2@2 ~", B: "eb2@23 ~ bb2@16 ~@8", C: "a3@17 ~ bb3@6 a3@14 ~@4 a3@4 ~@2", D: "g3@11 ~ f3@12",
  E: "[~@44 f3@47 eb3@23 ~ bb2@23 ~@2 eb3@22 ~@2 d3@23 ~ c3@24 ~@28]/5", F: "[~@10 bb1@73 ~@13]/2",
})).s("gm_tuba").gain(0.1).pan(0.9)

// chords · brass section
const brass_section_2 = note("<~@14 A B C D E F ~@14 G@5 ~@22>".pickRestart({
  A: "~@18 [d5,f5]@2 ~ [d5,f5]@2 ~", B: "[eb5,g5]@23 [d5,f5]@15 ~@10", C: "eb5@22 ~@2 f5@17 ~ eb5@5 ~", D: "d5@9 ~@7",
  E: "[f5,a5]@17 ~ [g5,bb5]@6 [f5,a5]@14 ~@4 [f5,a5]@4 ~@2", F: "[eb5,g5]@23 ~ [d5,f5]@23 ~",
  G: "[~@44 [f5,a5]@47 ~ eb5@23 ~ [f5,bb5]@22 ~@2 [eb5,g5]@21 ~@3 [d5,f5]@23 ~ [c5,eb5]@24 ~@28, ~@91 g5@24 ~@125]/5", // F Bb5 Eb Dm Cm
})).s("gm_brass_section").gain(0.09).pan(0.7)

// other · pad metallic
const pad_metallic = note("<~@54 A@6 ~>".pickRestart({
  A: "[~@10 bb6@57 ~@29]/2",
})).s("gm_pad_metallic").gain(0.04).pan(0.3)

// other · french horn
const french_horn_2 = note("<~@53 A B@4 C@2 ~>".pickRestart({
  A: "~@17 f4@7", B: "[~@3 d4@3 ~ c4@2 ~ d4@47 ~@25 f4@14]/2", C: "[~@3 d4@3 ~ c4@2 ~ d4@47 ~@39]/2",
})).s("gm_french_horn").gain(0.07).pan(0.7)

// drums · kick
const kick = s("bd").struct("<~@6 A ~@5 A ~ B@6 C D ~@12 E F@2 G H ~@2 I G J ~@3 K L ~@3 M@8 ~>".pickRestart({
  A: "x", B: "x ~@7 x ~@2 x ~@3 x", C: "x ~@24 x ~@22", D: "~@3 x ~@28 x ~@15", E: "~@11 x", F: "~@5 x ~@5 x",
  G: "~@20 x ~@24 x ~@2", H: "~@23 x ~@24", I: "~@19 x ~@24 x ~@3", J: "~@11 x ~@12", K: "~@29 x ~@18", L: "~@5 x ~@2",
  M: "~@5 x ~@18",
})).gain(0.25).pan(0.6)

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@14
  [~@3 x ~@3 x ~@8]!6
  ~@15
  [~@5 x ~@11 x ~@11 x ~@11 x ~@6]!2
  ~@4
  [~@5 x]
  [~@7 x]
  ~@18
>`).gain(0.15).pan(0.6)

// drums · hihat
const hihat = s("hh").struct("<~@34 A B@2 C ~@3 D E F ~@17>".pickRestart({
  A: "~@11 x", B: "~@2 x ~@2 x ~@2 x ~@2 x", C: "~@2 x ~@2 x ~@2 x ~@3", D: "~@19 x ~@11 x ~@12 x ~@3",
  E: "~@8 x ~@11 x ~@12 x ~@11 x ~@2", F: "~@5 x ~@18",
})).gain(0.2).pan(0.6)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@35
  [~ x ~@5 x ~@5 x ~@5 x ~@4]!3
  ~@3
  [~@25 x ~@11 x ~@10]
  [~@2 x ~@11 x ~@12 x ~@11 x ~@8]
  [~ x ~@14]
  ~@17
>`).gain(0.1).pan(0.6)

// drums · ride
const ride = s("rd").struct("<~@20 A B ~@15 C D ~@8 E F G ~@2 H@7 ~@2>".pickRestart({
  A: "x ~@11 x ~@12 x ~@12 x ~@9", B: "~@3 x ~@14 x ~@13 x ~@15", C: "~@15 x", D: "~@9 x ~@13 x ~@6 x ~@7 x ~@9",
  E: "~@29 x ~@11 x ~@6", F: "~@6 x ~@11 x ~@11 x ~@12 x ~@4", G: "~@7 x ~@14 x ~@25", H: "~@11 x ~@12",
})).gain(0.2).pan(0.6)

// drums · ht
const ht = s("ht").struct(`<
  ~@4 A@2 B ~@3 A@2 B ~ C@6 ~@5 D E F ~ G@2 D E H ~ D@3 ~@3 I J K L M N ~@5 O@8 ~
>`.pickRestart({
  A: "x!4", B: "x", C: "~ x ~ x", D: "~ x ~@2 x ~", E: "~@4 x ~@11 x ~@2 x!4 ~", F: "~@19 x!4 ~", G: "~ x ~@4",
  H: "~@19 x ~ x!2 ~", I: "~@31 x ~@16", J: "~@8 x ~@24 x ~@14", K: "~@5 x ~@2 x!4 ~@12",
  L: "~@17 x ~@2 x ~ x ~ x ~@23", M: "~@19 x ~@4", N: "~@13 x ~@2", O: "~@2 x!4 ~@18",
})).gain(0.15).pan(0.6)

// drums · ht · soft notes
const ht_soft = s("ht").struct("<~@4 [~ x ~ x ~ x ~ x]!2 ~@4 [~ x ~ x ~ x ~ x]!2 ~@21 [~@5 x] ~@27>")
  .gain(0.05).pan(0.6)

stack(
  bass, french_horn, string_ensemble_1, cello, cello_2, timpani, acoustic_guitar_nylon, brass_section, bass_2,
  brass_section_2, pad_metallic, french_horn_2, kick, kick_soft, hihat, hihat_soft, ride, ht, ht_soft
)

More by Elvis