Strudelify

Down So Long

Jewel

KeyC majorTempo156 bpm
0:00/0:00
// Down So Long — Jewel
// 156 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 3 "Organ" named as an organ, played on drawbar organ (its acoustic bass patch is not one); ch 4 "E. Guitar" named as a guitar, played on electric guitar clean (its contrabass patch is not one); ch 6 "Bass" named as a bass, played on electric bass finger (its epiano1 patch is not one)
// note: Full arrangement: all 175 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(156/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 · recorder
const recorder = note("<~@92 A B A B A C D ~ A B A B A C D ~@27 E@6 F ~ E@6 F ~ E@6 F ~ E@6 F ~ E@2 ~@7>".pickRestart({
  A: "b3@11 c4 b3@3 a3", B: "g3 ~@3", C: "g3@4 ~@8 a3 b3@3", D: "a3 ~@3", E: "[~@8 b3@11 c4 b3@3 a3 g3@4 ~@4]/2",
  F: "~@4 a3 b3@3 a3@4 ~@4",
})).s("gm_recorder").gain(0.06)

// chords · drawbar organ · "Organ"
const drawbar_organ = note(`<
  A@4 B@4 C@4 D@4 E@4 F@4 A@4 B@4 A@4 B@4 G H I J G H I J G H I J H K L@4 M@5 ~@15 G H I J G H I J G H I J H K A@4 B@4
  ~@8 N@3 O P@3 O P@3 O Q@7 R@6 S T@7 U@24 V@4 ~@6
>`.pickRestart({
  A: "[~@55 f4@4 ~ d4@4, a3@7 a3@8 d4@9 d4@7 c4@9 c4@7 c4@13 ~@4, ~@4 c4@7 a4@5 ~@11 a4@5 ~@11 g4@21, ~@8 e4@8 g3@7 g3@9 f3@7 f3@9 f3@16, ~@12 b3@8 b3@8 a3@8 a3@8 a3@8 a3@7 a3@5]/4",
  B: "[~@15 c4, a3@7 a3@8 d4@9 d4@7 c4@9 c4@7 c4@12 a3@5, ~@4 c4@7 a4@5 ~@11 a4@5 ~@11 g4@21, ~@8 e4@8 g3@7 g3@9 f3@7 f3@9 f3@16, ~@3 b3@2 b3@2 a3@2 a3@2 a3@2 f4@3]/4",
  C: "[~@52 a3@7 ~ d4@4, a3@7 a3@8 d4@9 d4@7 c4@9 c4@7 c4@12 a3@5, ~@4 c4@7 a4@5 ~@11 a4@5 ~@11 g4@21, ~@8 e4@8 g3@7 g3@9 f3@7 f3@9 f3@16, ~@3 b3@2 b3@2 a3@2 a3@2 a3@2 a4@3]/4",
  D: "[~@15 [c4,e4], a3@7 a3@8 d4@9 d4@7 c4@9 c4@7 c4@12 a3@5, ~@4 c4@7 a4@5 ~@11 a4@5 ~@11 g4@21, ~@8 e4@8 g3@7 g3@9 f3@7 f3@9 f3@16, ~@3 b3@2 b3@2 a3@2 a3@2 a3@2 f4@3]/4", // C
  E: "[~@52 a3@7 ~ f4@4, [a3,e4]@7 a3@8 d4@9 d4@7 c4@9 c4@7 c4@13 ~@4, ~@4 c4@7 a4@5 ~@11 a4@5 ~@11 g4@9 g4@12, ~@8 e4@8 g3@7 g3@9 f3@7 f3@9 f3@16, ~@12 b3@8 b3@8 a3@8 a3@8 a3@8 ~@7 a3@5]/4", // A5
  F: "[~@15 d4, [a3,e4]@7 a3@8 d4@9 d4@7 c4@9 c4@7 c4@9 c4@8, ~@4 c4@7 a4@5 ~@11 a4@5 ~@11 g4@21, ~@8 e4@8 g3@7 g3@9 f3@7 f3@9 f3@16, ~@12 b3@8 b3@8 a3@8 a3@8 a3@15 a3@5]/4", // A5
  G: "[g2,d3,g3,b3,d4]", H: "[f2,c3,f3,a3,c4]", I: "[c3,g3,c4,e4] [b2,g3,b3,d4]", J: "[a2,e3,a3,c4] [g2,d3,g3,b3]",
  K: "[g2,d3,g3,b3]", // G
  L: "[~@31 c4@9 ~@7 g4@9 f4@4 d4@3 e4, e4@8 e4@7 d4@9 d4@7 ~@13 a3@20, ~ c4@3 ~ b3@3 ~@2 c4@6, ~@3 a4@4 a4@4 ~@5]/4",
  M: "[~@31 c4@9 ~@7 g4@9 ~@4 d4@3 e4@17, ~ c4@3 ~ b3@3 ~@2 c4@4 c4@2 ~@4, ~@8 e4@7 d4@9 d4@7 ~@13 a3@20 ~@16, ~@3 a4@4 a4@4 ~@9]/5",
  N: "[~ [g2,d3,g3,b3,d4]@2 [f2,c3,f3,a3,c4]@2 [c3,g3,c4,e4]]/3", O: "[b2,g3,b3,d4] [a2,e3,a3,c4]",
  P: "[[g2,d3,g3,b3] [g2,d3,g3,b3,d4]@2 [f2,c3,f3,a3,c4]@2 [c3,g3,c4,e4]]/3", // G F C
  Q: "[[g2,d3,g3,b3]@2 [f2,c3,f3,a3,c4]@4 [g2,d3,g3,b3]@4 [f2,c3,f3,a3,c4]@4 [g2,d3,g3,b3]@4 [f2,c3,f3,a3,c4]@4 [g2,d3,g3,b3]@4 ~ c4, ~@13 e4]/7", // G F G F G F G
  R: "[~@23 c4@9 ~@7 g4@9 f4@4 d4@3 ~@32 c4@9, e4@7 d4@9 d4@7 ~@13 a3@20 ~@12 a4@16 a4@12, ~@4 a4@16 a4@16 ~@19 e4@9 e4@7 d4@9 d4@7 ~@9, ~@3 b3@3 ~@2 c4@6 ~ c4@3 ~ b3@3 ~@2]/6",
  S: "~@7 g4@9, c4, ~ a3@3",
  T: "[~@4 d4@3 ~@56 f4@4 ~ d4@4 ~@36 a3@3 f3, c4@7 e4@9 e4@7 d4@9 d4@7 c4@9 c4@7 c4@13 ~@8 c4@8 b3@8 b3@8 a3@8 ~@4, ~@8 a3@7 a3@9 g3@7 g3@9 f3@7 f3@9 f3@16 ~@11 a4@4 d4@9 d4@7 c4@9, ~@12 c4@7 a4@5 ~@11 a4@5 ~@11 g4@21 ~@8 e4@8 ~@11 a4@5 ~@8, ~@20 b3@8 b3@8 a3@8 a3@8 a3@8 a3@7 a3@5 a3@7 a3@9 g3@7 g3@9 f3@7 ~]/7",
  U: "[~@20 c4@4 ~@55 f4@4 ~ d4@4 ~@36 a3@3 f3, c4@7 c4@12 a3@5 a3@7 a3@8 d4@9 d4@7 c4@9 c4@7 c4@13 ~@8 c4@8 b3@8 b3@8 a3@8 ~@4, ~@3 g4@21 ~@8 e4@8 g3@7 g3@9 f3@7 f3@9 f3@16 ~@11 a4@4 d4@9 d4@7 c4@9, ~@4 a3@8 f4@12 ~@4 c4@8 b3@8 b3@8 a3@8 a3@8 a3@8 a3@7 a3@5 a3@7 a3@9 g3@7 g3@9 f3@7 ~, ~@8 f3@16 ~@11 a4@5 ~@11 a4@5 ~@11 g4@21 ~@8 e4@8 ~@11 a4@5 ~@8]/8",
  V: "[~@20 c4@4 ~@31 c4@9, c4@7 c4@12 a3@5 a3@7 a3@8 d4@9 d4@8 ~@8, ~@3 g4@21 ~@8 e4@8 g3@7 g3@9 ~@8, ~ a3@2 f4@3 ~ c4@2 b3@2 b3@2 a3@2 ~, ~@8 f3@16 ~@11 a4@5 ~@11 a4@5 ~@8]/4",
})).s("gm_drawbar_organ").gain(0.04)

// chords · electric guitar clean · "E. Guitar"
const electric_guitar_clean = note(`<
  ~@39 A@2 B C@3 B C@3 B D@2 E F ~@23 A@2 B C@3 B C@3 B D@2 E F ~@16 G@8 H@4 I@7 ~@48
>`.pickRestart({
  A: "[~ [g3,d4], ~@15 [g2,d3]@17]/2", B: "[f2,c3,g3,c4]",
  C: "[~@28 g4@3 ~ [g3,d4]@16, [c3,g3,c4]@8 [b2,g3,d4]@8 [a2,e3,c4]@8 [g2,d3,b3]@7 [g2,d3]@17, ~ g4@2 g4@2 g4@2 ~@5]/3", // G5 C5 G Am G G5
  D: "[~@7 g4, [c3,g3,c4] [b2,g3,d4] [a2,e3,c4] [g2,d3,b3], ~ g4@2 g4@2 g4@2 ~]/2", E: "[f2,c3,f3,c4]",
  F: "[g2,d3,g3,d4]", // G5
  G: "[~@8 [g2,d3,g3,d4]@16 [f2,c3,g3,c4]@16 ~@28 g4@3 ~ [g3,d4]@16 [f2,c3,g3,c4]@16 ~@20 g4@4, ~@40 [c3,g3,c4]@8 [b2,g3,d4]@8 [a2,e3,c4]@8 [g2,d3,b3]@7 [g2,d3]@17 ~@16 [c3,g3,c4]@8 [b2,g3,d4]@8 [a2,e3,c4]@8, ~@11 g4@2 g4@2 g4@2 ~@10 g4@2 g4@2 ~]/8", // G5 Fsus2 G5 Fsus2 C5 G Am G …
  H: "[~@4 g4@3 ~ [g3,d4]@16 [f2,c3,g3,c4]@16 ~@20 g4@4, [g2,d3,b3]@7 [g2,d3]@17 ~@16 [c3,g3,c4]@8 [b2,g3,d4]@8 [a2,e3,c4]@8, ~@11 g4@2 g4@2 ~]/4", // G5 Fsus2 G G5 C5 G Am
  I: "[~ g4 [f2,c3,f3,c4]@4 [g2,d3,g3,d4]@4 [f2,c3,f3,c4]@4 [g2,d3,g3,d4]@4 [f2,c3,f3,c4]@4 [g2,d3,g3,d4]@4 ~@2, [g2,d3,b3] ~@13]/7", // F5 G5 F5 G5 F5 G5 G
})).s("gm_electric_guitar_clean").gain(0.04)

// chords · acoustic guitar steel · "A. Guitar"
const acoustic_guitar_steel = note(`<
  A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D ~@14 A B C D A B C D A B C D A B C D A
  B C D A B C D ~@14 A B C D A B C D ~@26 E F G H I F G H I F G H I F G H I F G H I F G H I F G H I F G H I F G H I F G
  H I F J ~@6
>`.pickRestart({
  A: "[a2,e3] ~@3 [a2,e3] ~@3 [a2,e3,a3,c4]@7 [d3,g3]", B: "[g2,d3] ~@2 [d3,g3] [g2,d3] ~@3 [g2,d3,g3,b3]@7 [d3,g3]",
  C: "[f2,c3] ~@3 [f2,c3] ~@3 [f2,c3,f3,a3]@7 [f3,a3]", // F5 F
  D: "[f2,c3] ~@3 [f2,c3] ~@3 [f3,a3]@3 [g3,b3]@4 [d3,g3,b3], ~@8 [f2,c3]@7 ~", E: "~@8 [a2,e3] ~@3 [a2,e3] ~@3",
  F: "[a2,e3,a3,c4]@7 [d3,g3] [g2,d3] ~@2 [d3,g3] [g2,d3] ~@3", G: "[g2,d3,g3,b3]@7 [d3,g3] [f2,c3] ~@3 [f2,c3] ~@3",
  H: "[f2,c3,f3,a3]@7 [f3,a3] [f2,c3] ~@3 [f2,c3] ~@3", // F F5
  I: "[f3,a3]@3 [g3,b3]@4 [d3,g3,b3] [a2,e3] ~@3 [a2,e3] ~@3, [f2,c3]@7 ~@9", J: "[g2,d3,g3,b3]@7 [d3,g3] ~@8",
})).s("gm_acoustic_guitar_steel").gain(0.04)

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~@24 A B C@2 A B C@2 A B C@2 A B D E F G H I J K H I F L H I L M A B C@2 A B C@2 A B C@2 A B C@2 A B C@2 A B N@2 F G H
  I J K H I F L H I L M A B C@2 A B O@2 P ~@7 Q@3 R S@3 T U@3 R V@2 W@2 X@2 Y@5 ~ Z AA AB@8 AC@24 AD@3 ~@6
>`.pickRestart({
  A: "a1@3 ~ a1@11 a1", B: "g1@3 ~ g1@11 g1", C: "[f1@3 ~ f1@8 f1@8 f1@8 g1@4]/2", D: "f1@3 ~ f1@4 f1@7 f1",
  E: "~@3 f1 e1@4 f1@4 f#1@4", F: "g1@3 ~ g1@8 e1@4", G: "f1@3 ~ f1@7 f1 g1@4", H: "c2@7 c2 b1@7 b1",
  I: "a1@7 a1 g1@7 g1", J: "g1@3 ~ g1@8 g1@4", K: "f1@3 ~ f1@8 f1@4", L: "f1@3 ~ f1@7 g1 a1@4", M: "g1!2 g2 g1",
  N: "[f1@3 ~ f1@8 f1@7 f1 e1@4 f1@4 f#1@4]/2", O: "[f2@4 g2@3 e2@4 f2 d2@3 e2@4 d2@4 d2 c2@3 b1 a1@3 g1]/2", P: "a1 ~",
  Q: "[~@8 g1@3 ~ g1@8 e1@4 f1@3 ~ f1@7 f1 g1@4 c2@7 c2]/3", R: "b1@7 b1 a1@7 a1",
  S: "[g1@7 g1 g1@3 ~ g1@8 g1@4 f1@3 ~ f1@8 f1@4 c2@7 c2]/3", T: "c2@7 d2 a1@7 a1",
  U: "[g1@7 g1 g1@3 ~ g1@8 e1@4 f1@3 ~ f1@7 g1 a1@4 c2@7 c2]/3", V: "[g1@7 g1 f1@3 ~ f1@7 g1 a1@4 g1@4 g1@4]/2",
  W: "[g1@4 g1@4 f1@3 ~ f1@7 g1 a1@4 g1@4 g1@4]/2", X: "[g1@4 g1@4 f2@3 ~ f2@7 g2 a2@4 g2@4 g2@4]/2",
  Y: "[g2!2 a2@16 ~@2]/5", Z: "~@11 e3 d3@3 ~", AA: "e3@3 d3 c3@3 d3 g2@3 a2 c3@3 d3",
  AB: "[~@3 c3 c3@3 g2 a1@3 ~ a1@11 a1 g1@3 ~ g1@11 g1 f1@3 ~ f1@8 f1@8 f1@8 g1@4 a1@3 ~ a1@11 a1 g1@3 ~ g1@11 g1 f1@3 ~ f1@8 f1@8 f1@4]/8",
  AC: "[~@4 g1@4 a1@3 ~ a1@11 a1 g1@3 ~ g1@11 g1 f1@3 ~ f1@8 f1@8 f1@8 g1@4 a1@3 ~ a1@11 a1 g1@3 ~ g1@11 g1 f1@3 ~ f1@8 f1@8 f1@4]/8",
  AD: "[~@4 g1@4 a1@3 ~ a1@11 a1 g1@3 ~ g1@11 g1 ~@8]/3",
})).s("gm_electric_bass_finger").gain(0.36)

// chords · electric guitar jazz · "Aux Guitar"
const electric_guitar_jazz = note("<~@62 A@16 ~@57 B@36 ~@4>".pickRestart({
  A: "[~@15 d4@9 ~@7 c4@29 ~@4, ~@8 e4@7 ~@9 d4@7 ~@33, ~@3 a4@4 a4@8 ~]/4",
  B: "[~@7 d4@9 ~@7 c4@29 ~@12, e4@7 ~@9 d4@7 ~@41, ~ a4@4 a4@8 ~@3]/4",
})).s("gm_electric_guitar_jazz").gain(0.04)

// drums · kick
const kick = s("bd").struct(`<
  ~@23 A B C D C B C D C B C D C B C E F G C E G@2 C E B G C E H G F B C D C B C D ~ B C D C B C D C B C D C B C D I G C
  E G@2 C E B G C E H G F B C D C B C D C B C D C B C B ~ J A K J@2 A K L J A K J M J M J N L F A L I L A L I L A L I L
  A L I L A L I L A L I L A L I L A L I L A L I L A L I L A ~@7
>`.pickRestart({
  A: "~@3 x", B: "x", C: "~ x ~@2", D: "x ~@2 x", E: "x ~@6 x ~@8", F: "x!2", G: "x!2 ~@2", H: "x!3 ~", I: "~ x ~ x",
  J: "~@2 x!2", K: "~@8 x ~@6 x", L: "~ x", M: "x ~ x!2", N: "x!4",
})).gain(0.36)

// drums · snare
const snare = s("sd").struct(`<
  ~@23 A B C D E B C D E B C D E B C B F G@3 D G@2 B H G@5 I B C D E B C D J B C D E B C D E B C D E B C D K G@3 D G@2 B
  H G@5 I B C D E B C D L B C D E B M N ~@2 N@3 K N@2 O ~ N@5 P Q R S N T R J K T R J K T R J K T R J K T R J K T R J K
  T R J K T R J K T R J K T R J K T R ~@6
>`.pickRestart({
  A: "~@3 x!2 ~@2 x ~@3 x ~@3 x", B: "~@8 x ~@6 x", C: "~@3 x ~@4 x ~@6 x", D: "~@8 x ~@2 x ~@3 x",
  E: "~@3 x ~@4 x ~@2 x ~@3 x", F: "~@3 x!2 ~@2 x!2 ~@7", G: "~ x", H: "~ x ~@2", I: "~@4 x ~@3 x ~@2 x ~@3 x",
  J: "x ~@2 x ~@3 x ~@3 x ~@4", K: "x ~@2 x ~@3 x ~@8", L: "~@3 x ~@4 x ~@2 x ~@4", M: "~@3 x ~@4 x ~@7", N: "x",
  O: "x ~@6 x ~@4 x ~@3", P: "x ~@2 x!2 ~@2 x ~@8", Q: "x ~@10 x ~@4", R: "x ~@6 x ~@8", S: "x ~@2 x",
  T: "x ~@6 x ~@3 x ~@4",
})).gain(0.16)

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@43 A ~@3 B ~@3 A ~ C ~@27 A ~@3 B ~@3 A ~ C ~@19 D ~@3 E ~@3 D ~@5 F ~@49
>`.pickRestart({
  A: "~@7 x ~@8", B: "~@3 x ~@12", C: "~@3 x ~@3 x ~@8", D: "~@15 x", E: "~@11 x ~@4", F: "~@11 x ~@3 x",
})).gain(0.08)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@39 A ~@7 B ~@3 A ~@9 A ~@15 A ~@7 B ~@3 A ~@9 A ~@16 C ~@3 D ~@5 D ~@48
>`.pickRestart({
  A: "~@15 x", B: "~@11 x!2 ~@2 x", C: "~@3 x!2 ~@2 x ~@8", D: "~@7 x ~@8",
})).gain(0.36)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@39 A ~@7 B ~@3 A ~ A ~@7 A ~@15 A ~@7 B ~@3 A ~ A ~@7 A ~@16 C ~@3 D ~@5 D ~@48
>`.pickRestart({
  A: "~@3 x", B: "~ x", C: "x", D: "~ x ~@2",
})).gain(0.36)

// drums · high tom
const high_tom = s("ht").struct("<~@39 A ~@7 B ~@3 A ~@25 C ~@7 B ~@3 A ~@25 D ~@4 E ~@5 E ~@48>".pickRestart({
  A: "~@11 x ~@4", B: "~@7 x ~@8", C: "~@7 x!2 ~@2 x ~@4", D: "~@15 x", E: "~@3 x ~@12",
})).gain(0.36)

// drums · splash
const splash = s("cr").struct(`<
  ~@24 A ~@15 A ~@3 B ~@3 B ~@3 B ~ A ~@7 A ~@15 A ~@3 B ~@3 B ~@3 B ~ A ~@7 A ~@7 B ~@4 A ~@3 A ~@3 A ~ A ~ A B ~@7 B
  ~@40
>`.pickRestart({
  A: "x", B: "~ x",
})).gain(0.36)

// drums · cabasa
const cabasa = s("cabasa:4").struct(`<
  ~@27 A ~@3 A ~@3 A ~@3 B C D@2 E@2 D@2 B E D@2 F E B ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 F C D@2 E@2 D@2 B E D@2 F E B
  ~@3 A ~@3 A ~@3 A ~ G ~@2 G D@3 C@2 D H I C D@2 I C J C D K ~@3 G ~@3 G ~@3 G ~@3 G ~@3 G ~@3 G ~@3 G ~@3 G ~@3 G ~@3
  G ~@9
>`.pickRestart({
  A: "~ x ~@2", B: "x", C: "~ x!3", D: "x!4", E: "x!2 ~ x", F: "x!2 ~@2", G: "~@3 x", H: "x!3 ~", I: "~@2 x!2",
  J: "x ~ x!2", K: "~ x!2 ~",
})).gain(1.83)

// drums · shaker
const shaker = s("sh").struct(`<
  ~@24 A B@2 C B@3 C B@3 C B@3 ~@15 A B@2 C B@3 D A B@2 C B@3 C B@3 C B@3 ~@15 A B@2 C B@3 C A B@2 C B E F ~@19 G B@2 E
  B@3 E H B@2 E B@3 E B@3 E B@3 E B@3 E B@3 E B@3 E B@3 E B@2 I ~@6
>`.pickRestart({
  A: "~ x!3", B: "x!4", C: "x ~ x!2", D: "x!2", E: "x!3 ~", F: "x", G: "~@3 x", H: "x!2 ~ x", I: "x!2 ~@2",
})).gain(0.36)

stack(
  recorder, drawbar_organ, electric_guitar_clean, acoustic_guitar_steel, bass, electric_guitar_jazz, kick, snare,
  snare_soft, low_tom, mid_tom, high_tom, splash, cabasa, shaker
)

More by Jewel