Strudelify

Everyday Is a Winding Road

Crow Sheryl

KeyC majorTempo120 bpm
0:00/0:00
// Everyday Is a Winding Road — Crow Sheryl
// 120 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 118 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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 · "bass1"
const bass = note(`<
  ~@13 A@2 B C D E B E F G H G I J H G K L M N M L M N M L M N A@2 B C D E B E F G H G I J H G K G H G I J H G K ~@4 O P
  O Q O P O L M N M L M N ~@2 G H G I J H G K G H G I J H G K O P O Q O P O Q O P O Q O P O Q
>`.pickRestart({
  A: "[~@14 g1@6 ~@2 g1@7 ~ a#1@2]/2", B: "c2 ~@2 c2@3 a#1@2", C: "g1 ~@5 g1@7 ~ a#1@2", D: "~ c2@2 ~@3 c2@6 a#1@4",
  E: "g1 ~@5 g1@6 ~@2 a#1@2", F: "a#1 ~@2 a#1@3 a#1!2", G: "c1@2 ~@4 c1@7 ~@3", H: "f1 ~@2 f1@3 d#1@2",
  I: "f1@2 ~@4 f1@3 ~ f1@2 d#1@4", J: "c1@3 ~@3 c1@6 ~@4", K: "f1 ~@5 f1@6 d#1@4", L: "c2 ~@2 c2@3 ~@2",
  M: "f2 ~@5 f2@6 d#2@4", N: "c2 ~@5 c2@6 ~@4", O: "c2 ~@5 c2@6 a#1@4", P: "f1 ~@5 f1@6 ~@4", Q: "f1 ~@2 f1@3 ~@2",
})).s("gm_electric_bass_finger").gain(0.39)

// chords · electric guitar jazz
const electric_guitar_jazz = note("<~@2 A B A B A B A B C D A E@8 F ~@19 E@8 F ~@68>".pickRestart({
  A: "~@2 c2 ~ c2@2 ~@2", B: "~@2 f1 ~ f1@2 ~@2", C: "~@4 c2@2 ~@2 c2@5 ~@3", D: "~@4 f1@2 ~@2 f1@5 ~@3",
  E: "[~@4 f1@2 ~@2 f1@4 ~@2 [e4,g4]@8 ~@2 [e4,g4] ~ [d4,f4]@2 ~@3 e4@4 ~@11 [e4,g4]@8 ~@2 [e4,g4] ~ [d4,f4]@2 ~@3 e4@5 ~@10 [e4,g4]@7 ~@3 [e4,g4] ~ [d4,f4]@2 ~@2 [c4,e4]@6 ~@10 [e4,g4]@7 ~@3 [e4,g4] ~ [d4,f4]@2 ~@4, ~@30 c4@4 ~@28 c4@5 ~@61]/8", // Em Dm Em Dm Em Dm C Em …
  F: "[a#3,f4]@15 ~", // A#5
})).s("gm_electric_guitar_jazz").gain(0.18)

// chords · drawbar organ
const drawbar_organ = note(`<
  ~@14 A@7 B ~@20 A@7 B C ~@7 C ~@7 D@5 ~@6 E@4 F@3 G ~@9 C ~@7 H ~@3 H ~@3 H ~@7
>`.pickRestart({
  A: "[d4@12 a#4@4 ~@9 e4@7 d4@12 a#4@4 [e4,c5]@12 a#4@4 d4@12 a#4@4 [e4,c5]@12 a#4@4 d4@12 ~@4, g4@55 ~, ~@16 c5@15 ~@81]/7", // C
  B: "[f4,a#4]", C: "f4 ~@15", D: "[[g3,c4,e4]@13 ~@3]/5", E: "[~ f4 g4 f4, c4@31 ~]/4", F: "[g4 f4 g4, c4]/3",
  G: "[c4,g4]", H: "[g3,c4,e4] ~@15",
})).s("gm_drawbar_organ").gain(0.13)

// chords · drawbar organ · soft notes · C
const drawbar_organ_soft = note("<~@16 [a#4 ~@15] ~@27 [a#4 ~@15] ~@69 [[g3,c4,e4] ~@15] ~@3>")
  .s("gm_drawbar_organ").gain(0.07)

// chords · synth strings 2
const synth_strings_2 = note("<~@22 A@8 ~@20 A@16 ~@20 A@16 ~@16>".pickRestart({
  A: "[g4@16 f4@16 g4@16 f4@16 g4@16 f4@16 g4@16 f4@15 ~, c4@127 ~]/8",
})).s("gm_synth_strings_2").gain(0.14)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@2 A ~ B ~@18 C@2 D@2 E@2 F ~ A ~ B ~ A ~ B ~ A ~@11 C@2 D@2 E@2 F ~ C@2 D@2 E@2 F ~@4 A G B G A G B ~@10 C@2 D@2 E@2
  H ~ C@2 D@2 E@2 H A G B G A G B G A I J K ~@4
>`.pickRestart({
  A: "~@2 [e4,g4,c5] ~ [e4,g4,c5]@3 ~", B: "~@4 [e3,g3,c4]@2 ~@2 [e3,g3,c4]@7 ~", C: "[~ a3@3 f4@2 [a3,c4]@4 ~@6]/2",
  D: "[~@2 a3@6 f4@4 [a3,c4]@7 ~@13]/2", E: "[~@2 a3@6 f4@4 [a3,c4]@9 ~@11]/2", F: "~ a3@3 f4@2 [a3,c4]@2",
  G: "~@4 a4@3 ~@5 a4@4, ~ [c4,f4]@3 ~ [c4,f4]@3", H: "~ a3@3 f4@2 ~@2", I: "~@4 a4@3 ~@5 a4@4, ~ [c4,f4]@3 ~ f4@3",
  J: "~@4 [g3,c4]@2 ~@2 [g3,c4]@7 ~", K: "~ f4@3 ~ f4@3",
})).s("gm_acoustic_guitar_steel").gain(0.2)

// chords · acoustic guitar steel · soft notes · C F5 C F5
const acoustic_guitar_steel_2 = note(`<
  ~@111
  [~@5 c4@3]
  [~@4 e3@2 ~@2 e3@7 ~]
  [~@4 a4@3 ~@5 a4@4, ~ c4@3 ~ c4@3]
  [~@2 [e4,g4,c5] ~ [e4,g4,c5]@3 ~]
  [~@4 a4@3 ~@5 a4@4, ~ [c4,f4]@3 ~ [c4,f4]@3]
  [~@4 [e3,g3,c4]@2 ~@2 [e3,g3,c4]@7 ~]
  [~@4 a4@3 ~@5 a4@4, ~ [c4,f4]@3 ~ [c4,f4]@3]
>`).s("gm_acoustic_guitar_steel").gain(0.09)

// other · pad metallic
const pad_metallic = note("<~@66 A B C D ~@7 E F ~@39>".pickRestart({
  A: "~@4 a3@10 a#3 a3", B: "g3@7 ~", C: "~@2 f3@3 g3@3 a3@6 a#3 a3", D: "g3@15 ~", E: "c4@3 g3", F: "e4@5 ~ e4@2",
})).s("gm_pad_metallic").gain(0.25)

// drums · kick
const kick = s("bd").struct("<~@2 A@20 B@20 A@9 C A C A C A C A C A C A C A C B@19 A B@32>".pickRestart({
  A: "x!2 ~@6", B: "x ~ x ~@4 x ~@3 x ~@4", C: "x!2 ~@3 x ~@2",
})).gain(0.44)

// drums · snare
const snare = s("sd").struct(`<
  ~@5 A ~@3 A ~@3 A ~@3 A ~@3 B C D C D C D E D C D E D C D E D C D E D ~@3 A ~@3 B F C G C H C G C H C G C H C G C@2 D
  E D C D C D C D C@2 D E D C D E D B C D E D C D E D C D E D C D E D C D C D C D C D C D C A ~@4
>`.pickRestart({
  A: "~ x ~@2", B: "~@4 x ~@6 x!5", C: "~@4 x ~@4 x ~@2 x ~@3", D: "~ x ~@2 x ~@4 x ~@2 x ~@2 x", E: "~@4 x ~@4 x ~@6",
  F: "~@3 x", G: "~@4 x ~@3 x!2 ~@2 x!2 ~@2", H: "~ x ~ x",
})).gain(0.33)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@51 A B A ~ A B A ~ A B A ~ A B A ~@47 C D E D E>".pickRestart({
  A: "~ x!2 ~@13", B: "~@5 x ~ x", C: "~ x ~@7 x ~@2 x ~@2 x", D: "~@4 x ~@4 x ~@2 x ~@3",
  E: "~ x ~@2 x ~@4 x ~@2 x ~@2 x",
})).gain(0.16)

// drums · hihat
const hihat = s("hh").struct("<[x!4]!22 [x!3 ~]!20 [x!4]!24 [x!3 ~]!19 [x!4] [x!3 ~]!32>").gain(0.44)

// drums · open hat
const open_hat = s("oh").struct("<~@22 [~@3 x]!20 ~@24 [~@3 x]!19 ~ [~@3 x]!27 ~@5>").gain(0.44)

// drums · open hat · soft notes
const open_hat_soft = s("oh").struct("<~@113 [~@3 x]!5>").gain(0.11)

// drums · bongos
const bongos = s("bongo:18").struct("<~@2 A@20 ~@20 A@9 ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@20 A ~@32>".pickRestart({
  A: "~@9 x ~@6",
})).gain(1.15)

// drums · congas
const congas = s("conga:13").struct(`<
  ~@2 A B A C A B A C A B A C A B A C A B A C ~@20 A B A C A B A C A@2 D A@3 D A@3 D A@3 D A ~@19 C ~@32
>`.pickRestart({
  A: "~@4 x ~@3 x ~@5 x!2", B: "~@4 x ~@2 x ~@6 x!2", C: "~@8 x ~@5 x!2", D: "~@4 x ~@2 x ~@6 x ~",
})).gain(1.05)

// drums · congas
const congas_2 = s("conga:18").struct(`<
  ~@2 A B A@3 B A@3 B A@3 B A@3 B A@2 ~@20 A B A@3 B A@3 C D C A C D C A C D C A C D C ~@19 A ~@32
>`.pickRestart({
  A: "~@7 x ~@2 x ~ x ~@3", B: "~@8 x ~@2 x!2 ~@3", C: "~@7 x ~@4 x ~@3", D: "~@11 x!2 ~@3",
})).gain(1.05)

// drums · congas · soft notes
const congas_soft = s("conga:18").struct("<~@2 A@20 ~@20 A@9 ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@20 A ~@32>".pickRestart({
  A: "~ x ~@14",
})).gain(0.7)

// drums · congas
const congas_3 = s("conga:33").struct(`<
  ~@2 A B A@3 B A@3 B A@3 B A@3 B A@2 ~@20 A B A@3 B A@4 ~ A@3 ~ A@3 ~ A@3 ~ A ~@19 A ~@32
>`.pickRestart({
  A: "~@11 x ~ x ~@2", B: "~@10 x ~@2 x ~@2",
})).gain(1.05)

// drums · congas · soft notes
const congas_soft_2 = s("conga:33").struct("<~@2 A@20 ~@20 A@9 ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@20 A ~@32>".pickRestart({
  A: "~ x ~@6",
})).gain(0.7)

stack(
  bass, electric_guitar_jazz, drawbar_organ, drawbar_organ_soft, synth_strings_2, acoustic_guitar_steel,
  acoustic_guitar_steel_2, pad_metallic, kick, snare, snare_soft, hihat, open_hat, open_hat_soft, bongos, congas,
  congas_2, congas_soft, congas_3, congas_soft_2
)

More by Crow Sheryl