Strudelify

Don't Worry

Kim Appleby

KeyB♭ minorTempo123 bpm
0:00/0:00
// Don't Worry — Kim Appleby
// 123 bpm, 4/4, key A# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 115 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(123/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 · "FINGERDBAS"
const bass = note(`<
  A@2 ~@2 B C@2 D@2 E F D@2 E F G H I J G K I L G M I J G K N O D@2 E F D@2 E F ~@2 G H I J G K I L G M I J G K N O D@2
  E F D@2 E F P Q R S T U V@2 W X D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F ~@8
>`.pickRestart({
  A: "[bb1@31 ~]/2", B: "eb2", C: "[c2@7 ~ bb1@24]/2", D: "bb1 ~@3 bb1 ~ d2 ~@2 bb1 d2 ~ eb2 ~ f2 ~",
  E: "gb1 ~@2 gb1 ~@2 bb1 ~@2 gb1 bb1 ~ b1 ~ db2 ~", F: "ab1 ~@2 ab1 ~@2 c2 ~@2 [ab1,c2] ~@2 eb2 ~ db2 ~",
  G: "bb1@4 bb1@3 bb1!2 f1 bb1 f1 bb1@2 f1@2", H: "bb1@4 bb1@2 ~ bb1!2 f1 bb1 f1 bb1@2 f1 ~",
  I: "gb1@4 gb1@3 gb1!2 db1 gb1 db1 gb1 ~ db1@2", J: "ab1@4 ab1@3 ab1!2 eb1 ab1 eb1 db2@2 c2 ~",
  K: "bb1@4 bb1@3 bb1!2 f1 bb1 f1 bb1@2 f1 ~", L: "ab1@4 ab1@3 ab1!2 eb1 ab1 eb1 ab1@2 eb1 ~",
  M: "bb1@4 bb1@4 bb1@2 f1@2 ab1@2 bb1 ~", N: "eb1@4 eb1@3 eb1!5 eb1@2 eb1@2", O: "f1@4 f1@4 ~@4 ab1@3 ~",
  P: "~@3 gb1 ~@2 bb1 ~@2 gb1 bb1 ~ b1 ~ db2 ~", Q: "ab1 ~@2 ab1 ~@2 ab1 ~@2 ab1 ~@2 ab1 ~ ab1 ~",
  R: "e1@6 e1@2 e1@4 e1 ab1 db2@2", S: "gb1@3 gb1 gb1@3 gb1", T: "ab1@6 ab1@2 ab1@4 ab1 b1 db2@2",
  U: "gb1@6 gb1@2 gb1@6 gb1 ~", V: "b1@3 b1 b1@3 b1", W: "ab1@3 ab1 ab1@3 ab1", X: "bb1@6 bb1@2 bb1@6 bb1 ~",
})).s("gm_electric_bass_finger").gain(0.45)

// other · celesta · "ICE RAIN"
const celesta = note("<~@39 [bb4!4 ab5 bb5!3 bb4!4 f4!4] [bb4!4 ab5 bb5!3 bb4!4 f4 ~@3] ~@74>")
  .s("gm_celesta").gain(0.32).pan(0.7)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note("<~@23 A@3 B A@3 B ~@18 A@3 B A@3 B ~@26 A@3 B A@3 B ~@24>".pickRestart({
  A: "ab3@3 bb3 ~@4 ab3@3 bb3 ~@4", B: "ab3@3 bb3 ~@2 ab3@2 db4@2 c4@2 bb3@2 ab3@2",
})).s("gm_electric_guitar_muted").gain(0.35).pan(0.2)

// other · rock organ · "ELEC ORGAN"
const rock_organ = note(`<
  ~@7 A B C D A B C D ~ E F G ~ E F G ~@8 A B C D A B C D ~@3 E F G ~ E F G ~@8 A B C D A B C D C D ~@8 A B C D A B C D
  ~@8 A B C D A B C D A B C D A B C D ~@8
>`.pickRestart({
  A: "[d5,bb5] ~@2 [d5,f5] ~@2 bb5 [d5,f5] ~@2 [d5,f5] ~ [d5,f5] ~ [d5,f5] ~", // Gm Dm
  B: "[d5,f5,bb5] ~@2 [d5,f5] ~@2 [d5,f5] ~@2 [d5,f5,bb5] ~@2 [d5,bb5] ~ [d5,bb5] ~", // Bb Dm Bb Gm
  C: "[db5,gb5,bb5] ~@2 [db5,gb5,bb5] ~@2 [db5,bb5] ~@2 [db5,gb5,bb5] ~@2 [db5,gb5] ~ [db5,gb5] ~", // Gb Gb5
  D: "[c5,ab5] ~@2 [c5,eb5,ab5] ~@2 [c5,eb5] ~@2 [eb5,ab5] c5 ~ [c5,eb5] ~ [c5,ab5] ~", E: "~@7 bb4",
  F: "bb4!3 ab4@2 ~@9 bb4@2", G: "bb4!3 ab4@2 ~@11",
})).s("gm_rock_organ").gain(0.35).pan(0.9)

// chords · brass section · "BRASS"
const brass_section = note(`<
  ~@7 A B@2 C D E F C ~@16 A B@2 C D E F G H@2 ~@16 A B@2 C D E F I J K ~@8 A B@2 C D E F L ~@8 A B@2 C D E F G A B@2 C
  D E F G ~@8
>`.pickRestart({
  A: "~ [d5,f5,bb5]@2 ~ [d5,f5,bb5] ~@2 [d5,f5,bb5] ~@2 [d5,f5,bb5] ~@3 [d5,f5,bb5] ~", // Bb
  B: "[[d5,f5,bb5]@3 [d5,f5,bb5] ~@2 [d5,f5,bb5] ~@3 [d5,f5,bb5] ~@3 [d5,f5,bb5] ~ [db5,gb5]@3 [db5,gb5,bb5] ~@2 [db5,gb5,bb5] ~@3 [db5,gb5,bb5] ~@3 [db5,gb5,bb5] ~, ~@15 bb5@3 ~@14]/2", // Bb Gb5 Gb
  C: "[c5,eb5,ab5]@2 ~ [c5,eb5,ab5] ~@2 [c5,eb5,ab5] ~@3 [c5,eb5,ab5] ~@3 [c5,eb5,ab5] ~", // Ab
  D: "[d5,f5,bb5]@3 [f5,bb5] d5 ~ [d5,f5,bb5] ~@3 [d5,f5,bb5] ~@3 [d5,f5,bb5] ~", // Bb Bb5 Bb
  E: "[d5,f5,bb5]@3 [d5,f5,bb5] ~@2 [d5,f5,bb5] ~@3 [d5,f5,bb5] ~@3 [d5,f5,bb5] ~", // Bb
  F: "[db5,gb5,bb5]@3 [db5,gb5] bb5 ~ [db5,gb5,bb5] ~@3 [db5,gb5,bb5] ~@3 [db5,gb5,bb5] ~", // Gb Gb5 Gb
  G: "[c5,eb5,ab5]@3 [c5,eb5] ab5 ~ [c5,eb5,ab5] ~@3 [c5,eb5,ab5] ~@3 [c5,eb5,ab5] ~, ~ f5 bb5 db6", H: "[bb5@15 ~]/2",
  I: "[c5,eb5,ab5]@3 [c5,eb5] ~@2 [c5,eb5,ab5] ~@3 [c5,eb5,ab5] ~@3 [c5,eb5,ab5] ~, ~ f5 ~@2", // Ab Cm Ab
  J: "~@3 [db5,gb5] bb5 ~ [db5,gb5,bb5] ~@3 [db5,gb5,bb5] ~@3 [db5,gb5,bb5] ~", // Gb5 Gb
  K: "[c5,eb5,ab5]@3 [c5,eb5] ab5 ~ [c5,eb5,ab5] ~@3 [c5,eb5,ab5] ~@3 [c5,eb5,ab5] ~", // Ab Cm Ab
  L: "[c5,eb5,ab5]@3 [c5,eb5] ~@2 [c5,eb5,ab5] ~@3 [c5,eb5,ab5] ~@3 [c5,eb5,ab5] ~", // Ab Cm Ab
})).s("gm_brass_section").gain(0.3).pan(0.2)

// other · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note("<A@4 B C D@3 E F G@2 H I J@2 ~@23 K ~@25 L M N O P Q R N S ~@40>".pickRestart({
  A: "[bb3@63 ~]/4", B: "eb4 d4", C: "c4 bb3", D: "bb3/3", E: "gb3", F: "eb3", G: "[bb3@5 f3 bb3 f4]/2",
  H: "eb4@6 db4 c4", I: "db4@3 c4", J: "bb3/2",
  K: "~ [eb4,f4,g4] [g3,a3,bb3,c4,d4] [c3,d3,eb3,f3] [eb2,f2,g2,a2,bb2] [c2,d2] ~ bb3 [eb3,f3,g3,a3] [f2,g2,a2,bb2,c3,d3] [c2,d2,eb2] bb1@2 ~@3, ~@5 bb1@2 ~@9", // Eb Gm Dm7 Eb Csus2 F7 Dm7 Cm
  L: "~@13 [e2,f2,g2,a2] [b2,c3,d3,e3] [d3,f3,g3,a3,b3,c4]", M: "d4 ~@11 ab4@4", N: "gb4", O: "ab4", P: "bb4", Q: "b4",
  R: "db5", S: "ab4@7 ~",
})).s("gm_string_ensemble_2").gain(0.25).pan(0.6)

// other · string ensemble 2 · "SLOWSTRING" · soft notes
const string_ensemble_2_soft = note("<~@39 [~@15 bb4] [a4 ~@4 f2 a1 ~@9] ~@25 [~@11 c2 d2 ~ g2 ~] [e4@3 ~] ~@47>")
  .s("gm_string_ensemble_2").gain(0.1).pan(0.6)

// chords · piano · "A.PIANO"
const piano = note(`<
  ~@40 A B@2 C D E F G H ~@26 I J K L M N O P Q R S T U@2 V Q ~@8 W@2 X Y Z@2 AA AB ~@8
>`.pickRestart({
  A: "~@10 bb5 [f5,g5,a5] [a4,bb4,c5,d5,eb5,f5] [c4,d4,eb4,f4,g4] bb3@2", // F Dm7 Cm
  B: "[d4,f4,g4,bb4]@3 ~ [d4,f4,g4,bb4] ~ [d4,f4,g4,bb4] ~@9", // Gm7
  C: "[db4,eb4,gb4,bb4]@3 [db4,eb4,gb4,bb4] ~@2 [db4,eb4,gb4,bb4] ~@9", // Ebm7
  D: "[c4,eb4,ab4]@3 [c4,eb4,ab4] ~@2 [c4,eb4,ab4] ~@3 [c4,db4,eb4,ab4] ~@3 [c4,eb4,ab4] ~", // Ab
  E: "[d4,f4,g4,bb4]@2 ~ [d4,f4,g4,bb4] ~@2 [d4,f4,g4,bb4] ~@9", // Gm7
  F: "[d4,f4,g4,bb4]@2 ~@2 [d4,f4,g4,bb4] ~ [d4,f4,g4,bb4] ~@9", // Gm7
  G: "[db4,eb4,gb4,bb4]@2 ~@2 [db4,eb4,gb4,bb4] ~ [db4,eb4,gb4,bb4] ~@9", // Ebm7
  H: "[c4,eb4,ab4]@3 ~ [c4,eb4,ab4] ~ [c4,eb4,ab4] ~@3 [c4,eb4,ab4] ~@3 [c4,eb4,ab4] ~", // Ab
  I: "~@3 bb4@2 [bb4,d5,g5]@2 ~ [bb4,d5,f5]@2 ~ [bb4,d5,g5]@2 ~ [bb4,d5,f5] ~, ~ [d5,f5] ~@6", // Gm Bb Gm Bb Dm
  J: "~@2 [bb4,d5,f5]@2 ~ [bb4,d5,g5]@2 ~ [bb4,d5,f5]@2 [bb4,d5]@2 ~ [bb4,ab5] d5 ~, ~@10 g5 ~@5", // Bb Gm Bb Bb7
  K: "~@2 [gb4,bb4,db5]@2 ~ [gb4,bb4,eb5]@2 ~ [gb4,bb4,db5]@2 ~ [gb4,bb4,eb5]@2 ~ [gb4,bb4,db5] ~", // Gb Ebm Gb Ebm Gb
  L: "~@2 [ab4,c5,eb5]@2 ~ [ab4,c5]@2 ~ [ab4,c5,eb5]@2 ~ [ab4,c5]@2 ~ [ab4,c5,eb5] ~, ~@5 f5 ~@5 f5 ~@4", // Ab
  M: "~@2 [bb4,d5,f5]@2 ~ [bb4,d5,g5]@2 ~ [bb4,d5,f5]@2 ~ [bb4,d5,g5]@2 ~ [bb4,d5,f5] ~", // Bb Gm Bb Gm Bb
  N: "~@2 [bb4,d5,f5]@2 ~ [bb4,d5,g5]@2 ~ [bb4,d5,f5]@2 ~ [bb4,g5] ~@2 [bb4,d5,ab5] ~, ~@11 d5@2 ~@3", // Bb Gm Bb Eb Bb7
  O: "~@2 [gb4,db5] ~@2 [gb4,bb4,eb5] ~@2 [gb4,bb4,db5]@2 ~ [gb4,bb4]@2 ~ [gb4,bb4,db5] ~, ~@2 bb4@2 ~@7 eb5 ~@4", // Gb5 Ebm Gb
  P: "~@2 [ab4,c5,eb5]@2 ~ [ab4,f5] ~@2 [ab4,c5,eb5]@2 ~ [ab4,c5]@2 ~ [ab4,c5,eb5] ~, ~@5 c5@2 ~@4 f5 ~@4", // Ab Db Ab
  Q: "~@2 [ab4,eb5,ab5] ~@2 [bb4,f5,bb5] ~@2 [bb4,f5,bb5] ~@2 [ab4,eb5,ab5] ~@2 [bb4,f5,bb5] ~", // Ab5 Bb5 Ab5 Bb5
  R: "~@2 [ab4,eb5,ab5] ~@2 [bb4,f5,bb5] ~@2 [f5,bb5]@2 ~ [ab4,eb5] ~@2 [bb4,f5,bb5] ~, ~@8 bb4 ~@2 ab5@2 ~@3", // Ab5 Bb5 Ab5 Bb5
  S: "~@2 [f5,bb5]@2 ~ [ab4,eb5,ab5] ~@2 [ab4,eb5,ab5] ~@2 [bb4,f5,bb5] ~@2 [bb4,f5,bb5] ~, ~@2 bb4 ~@13", // Bb5 Ab5 Bb5
  T: "~@2 [ab4,eb5,ab5] ~@2 [bb4,f5,bb5] ~@2 [bb4,bb5] ~@2 [ab4,eb5,ab5] ~@2 [bb4,f5,bb5] ~, ~@4 f5 ~@3", // Ab5 Bb5 Bb Ab5 Bb5
  U: "~@2 [ab4,eb5,ab5] ~@2 [bb4,f5,bb5] ~@2 [bb4,f5] ~@2 [ab4,eb5,ab5] ~@2 [bb4,f5,bb5] ~, ~@4 bb5 ~@3", // Ab5 Bb5 Ab5 Bb5
  V: "~@2 [bb4,f5,bb5] ~@2 [ab4,eb5,ab5] ~@2 [ab4,eb5,ab5] ~@2 [bb4,f5,bb5] ~@2 [bb4,f5,bb5] ~", // Bb5 Ab5 Bb5
  W: "f6!4 e6 f6!7 e6 f6!3", X: "gb6!4 f6 gb6!7 f6 gb6!3", Y: "ab6!4 gb6 ab6!7 gb6 ab6!3", Z: "f5!4 e5 f5!7 e5 f5!3",
  AA: "gb5!4 f5 gb5!7 f5 gb5!3", AB: "ab5!4 gb5 ab5!7 gb5 ab5 ~@2",
})).s("gm_piano").gain(0.4).pan(0.4)

// drums · kick
const kick = s("bd").struct("<~@6 [~@13 x ~@2] [x!2]!32 [x!4] [x ~@3 x ~@3 x ~@3 x ~ x!2] [x!2]!66 ~@8>").gain(0.5)

// drums · clap
const clap = s("cp").struct("<~@70 [~@8 x ~@2 x ~@2 x ~] [~@11 x ~@2 x ~]!3 ~@41>").gain(0.5)

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

// drums · hihat
const hihat = s("hh").struct("<~@7 [x!16]!99 [x!14 ~@2] ~@8>").gain(0.5)

// drums · low tom
const low_tom = s("lt").struct("<~@6 [~@11 x!3 ~@2] ~@108>").gain(0.5)

// drums · mid tom
const mid_tom = s("mt").struct("<~@6 [~@9 x!2 ~@5] ~@33 [~@5 x!2 ~ x!2 ~@6] ~@74>").gain(0.4)

// drums · high tom
const high_tom = s("ht").struct("<~@6 [~@8 x!2 ~@6] ~@33 [x!4 ~@12] ~@74>").gain(0.35)

// drums · crash
const crash = s("cr").struct(`<
  ~@9 A ~@3 A ~@9 B ~@2 C ~@6 A ~@3 A ~@11 B ~@2 C ~@6 A ~@3 A ~ A ~@11 A ~@3 A ~ B ~@2 C ~@6 A ~@3 A ~@3 A ~@3 A ~@9
>`.pickRestart({
  A: "x", B: "~ x ~@2", C: "~@3 x",
})).gain(0.5)

// drums · tambourine
const tambourine = s("tb").struct("<~@7 [~ x ~ x ~ x ~ x]!99 [~ x ~ x ~ x ~@2] ~@8>").gain(0.3)

stack(
  bass, celesta, electric_guitar_muted, rock_organ, brass_section, string_ensemble_2, string_ensemble_2_soft, piano,
  kick, clap, snare, hihat, low_tom, mid_tom, high_tom, crash, tambourine
)