Strudelify

This is the life

Tim Karthaus

KeyF♯ majorTempo95 bpm
0:00/0:00
// This is the life — Tim Karthaus
// 95 bpm, 4/4, key F# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5748720; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 69 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(95/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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 · trumpet · "1. Trompete"
const trumpet = note(`<
  ~@20 A B C D E F G H E F G H I J K H I J K H A B C D A B C D ~@4 L@3 M L@3 M A B C M ~@5
>`.pickRestart({
  A: "c#5 ~ d#5 ~ e5 ~ c#5!3 d#5 ~ e5 ~ c#5!3", B: "c#5 ~ d#5 ~ e5 ~ c#5!3 d#5 ~ e5 ~ e5!3",
  C: "e5 ~ f#5 ~ g#5 ~ e5!3 f#5 ~ g#5@2 f#5@2 e5", D: "d#5 ~", E: "c#5", F: "a4", G: "e4", H: "g#4", I: "c#5@3 b4",
  J: "a4@3 g#4", K: "e4@3 e4", L: "g#5@2 g#5!2 f#5@2 f#5!2 e5@2 e5!2 d#5@2 d#5!2", M: "d#5@3 ~",
})).s("gm_trumpet").gain(0.4).pan(0.4)

// other · trumpet · "1. Trompete" · soft notes
const trumpet_soft = note("<A B C D A B C D A B C D E F G D E F G D ~@28 H@3 I ~@12 E F G D A>".pickRestart({
  A: "c#5", B: "a4", C: "e4", D: "g#4", E: "c#5@3 b4", F: "a4@3 g#4", G: "e4@3 e4", H: "g#5!2 f#5!2 e5!2 d#5!2",
  I: "g#5@3 ~",
})).s("gm_trumpet").gain(0.2).pan(0.4)

// other · trumpet · "2. Trompete"
const trumpet_2 = note(`<
  ~@20 A B C D E F G H E F G H I J K H I J K H A B C D A B C D ~@4 L@3 M L@3 M A B C N ~@5
>`.pickRestart({
  A: "c#4 ~ d#4 ~ e4 ~ c#4!3 d#4 ~ e4 ~ c#4!3", B: "c#4 ~ d#4 ~ e4 ~ c#4!3 d#4 ~ e4 ~ e4!3",
  C: "e4 ~ f#4 ~ g#4 ~ e4!3 f#4 ~ g#4@2 f#4@2 e4", D: "d#4 ~", E: "e4", F: "c#4", G: "b3", H: "d#4", I: "e4@3 d#4",
  J: "c#4@3 d#4", K: "b3@3 g#4", L: "g#5@2 g#5!2 f#5@2 f#5!2 e5@2 e5!2 d#5@2 d#5!2", M: "d#5@3 ~", N: "d#4@3 ~",
})).s("gm_trumpet").gain(0.4).pan(0.6)

// other · trumpet · "2. Trompete" · soft notes
const trumpet_soft_2 = note("<A B C D A B C D A B C D E F G D E F G D ~@44 E F G D A>".pickRestart({
  A: "e4", B: "c#4", C: "b3", D: "d#4", E: "e4@3 d#4", F: "c#4@3 d#4", G: "b3@3 g#4",
})).s("gm_trumpet").gain(0.2).pan(0.6)

// other · baritone sax · "Baritonsaxophon"
const baritone_sax = note(`<
  ~@15 A@2 B C@2 D E F G H I J K H I J L@2 B M@3 B C@2 D E F G D E F N ~@7 A@2 B O@2 P Q R S ~@5
>`.pickRestart({
  A: "[~@9 d#4@2 d#4!2 e4 d#4 c#4@3 c#4 b3 c#4!2 e4 c#4@2 c#4!3 e4 c#4!3]/2", B: "c#4!5 e4!3 c#4@2 c#4 b3 c#4 b3 b3@2",
  C: "[b3@2 b3!2 b3@2 ~ b3 b3@2 b3@2 e4@2 d#4 d#4@5 ~@2 d#4 d#4@2 d#4 d#4@2 e4@2 d#4@2]/2",
  D: "e3 ~@2 e3 ~@2 e3 ~ e3 ~@2 e3 ~@2 b2 ~", E: "a2 ~@2 a2 ~@2 a2 ~ a2 ~@2 a2 ~@2 g#2 ~",
  F: "e2 ~@2 e2 ~@2 e2 ~ e2 ~@2 e2 ~@2 e2 ~", G: "g#2 ~@2 g#2 ~@2 g#2 ~ g#2 ~@2 g#2 ~@2 g#2 ~", H: "c#3", I: "a2",
  J: "e2", K: "g#2", L: "[g#2@8 ~ d#4@2 d#4!2 e4 d#4 c#4@3 c#4 b3 c#4!2 e4 c#4@2 c#4!3 e4 c#4!3]/2",
  M: "[b3@2 b3!2 b3@2 ~ b3 b3@2 b3@2 e4@2 d#4 d#4@5 ~@5 d#4@2 d#4!2 e4 d#4 c#4@3 c#4 b3 c#4!2 e4 c#4@2 c#4!3 e4 c#4!3]/3",
  N: "g#2 ~@2 g#2 ~@2 g#2 ~@9", O: "[b3@2 b3!2 b3@2 ~ b3 b3@2 b3@2 e4@2 d#4 d#4@5 ~@12]/2", P: "c#3@3 b2",
  Q: "a2@3 g#2", R: "e2@3 e2", S: "g#2@3 ~",
})).s("gm_baritone_sax").gain(0.4).pan(0.6)

// other · baritone sax · "Baritonsaxophon" · soft notes
const baritone_sax_soft = note("<A B C D A B C D A B C D E F G H ~@36 E F G H ~@13>".pickRestart({
  A: "c#3", B: "a2", C: "e2", D: "g#2", E: "c#3@3 b2", F: "a2@3 g#2", G: "e2@3 e2", H: "g#2 ~",
})).s("gm_baritone_sax").gain(0.2).pan(0.6)

// other · trombone · "Posaune"
const trombone = note(`<
  ~@3 A B C D E F G H I ~@8 J K L M N O P Q R S T@2 U V U W U V U W J K L X Y@2 Z I ~@8 U V U AA Y@2 Z AB ~@5
>`.pickRestart({
  A: "~@13 c#3@2 c#3", B: "c#3@4 c#3 d#3@2 e3@5 ~@3 c#3", C: "c#3@2 c#3@2 c#3 d#3@2 e3@5 ~ b2 b2@2",
  D: "b2@2 g#2@2 g#2 a2@2 b2@2 b2@3 ~@4", E: "~@2 d#3!3 e3@2 d#3@5 ~ e3@2 d#3",
  F: "c#3@2 c#3 b2 c#3@2 c#3 b2 c#3!2 d#3 c#3 ~ c#3@2 c#3", G: "c#3 b2 c#3 b2 c#3@2 c#3 b2 c#3!2 d#3 e3 ~ e3@2 e3",
  H: "e3@2 e3!2 e3@2 e3 e3@2 e3 e3@2 e3@2 e3@2", I: "d#3 ~", J: "e3 ~@2 e3 ~@2 e3 ~ e3 ~@2 e3 ~@2 b2 ~",
  K: "c#3 ~@2 c#3 ~@2 c#3 ~ c#3 ~@2 c#3 ~@2 d#3 ~", L: "b2 ~@2 b2 ~@2 b2 ~ b2 ~@2 b2 ~@2 g#3 ~",
  M: "d#3 ~@2 d#3 ~@2 d#3 ~@6 e4@2 e4", N: "e4 c#4!3 c#4@2 g#3!4 b3 g#3@2 e4@2 e4",
  O: "e4 c#4!2 c#4@4 ~ a3!2 b3 g#3 ~@2 e4@2", P: "e4 b3!3 ~@4 e4 b3!2 e4@2 e4@3", Q: "d#4@4 ~@9 e4@2 e4",
  R: "e4@2 c#4@2 c#4@2 g#3@2 g#3!2 b3 g#3@2 e4!3", S: "e4@2 c#4!4 g#3!4 b3 g#3 ~@2 e4@2",
  T: "[e4@2 e4!2 e4@2 ~ e4 e4@2 e4@2 e4@2 d#4 d#4@9 ~@8]/2", U: "g#3@3 f#3", V: "e3@3 e3", W: "b3",
  X: "d#3 ~@2 d#3 ~@2 d#3 ~ d#3 ~@2 d#3 ~@2 d#3 ~", Y: "~@2 c#4@3 b3@3 g#3@3 e3@4 ~",
  Z: "b2 ~@2 b2 ~@2 b2 ~ b2 ~@2 b2 ~ f#3@2 e3", AA: "b3@3 ~", AB: "d#3@3 ~",
})).s("gm_trombone").gain(0.4)

// other · trombone · "Posaune" · soft notes
const trombone_soft = note("<~ A B C ~@8 D E D F D E D F ~@30 G H D E D F ~@13>".pickRestart({
  A: "~@5 f#3@3", B: "g#3@12 b3 c#4@3", C: "d#4@3 ~", D: "g#3@3 f#3", E: "e3@3 e3", F: "b3", G: "~@3 e3@5", H: "d#3 ~",
})).s("gm_trombone").gain(0.2)

// bass · tuba
const bass = 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 A B C D A B C E ~@4 F G H I F G H I F
  G H J ~@5
>`.pickRestart({
  A: "c#3@4 c#4@4 b3@3 g#3@3 e3@2", B: "a2@4 a3@4 a2@3 a3@3 a3@2", C: "e2@4 e2@4 e3@3 e3@3 e3@2",
  D: "g#2@4 b2@4 g#3@3 g#3@3 g#3@2", E: "g#2 b2 d#3@2", F: "c#3@2 g#2@2 c#3@2 g#2 b2", G: "a2@2 e2@2 a2@2 b2 d#3",
  H: "e3 b2 e3 b2", I: "g#2 e2 g#2 e2", J: "g#2@3 ~",
})).s("gm_tuba").gain(0.3)

// bass · tuba · soft notes
const bass_soft = note("<~@48 A B C D ~@12 E F G H I>".pickRestart({
  A: "c#3@2 g#2@2 c#3@2 g#2 b2", B: "a2@2 e2@2 a2@2 b2 d#3", C: "e3 b2 e3 b2", D: "g#2 e2 g#2 e2", E: "c#3@3 b2",
  F: "a2@3 g#2", G: "e2@3 e2", H: "g#2", I: "c#3",
})).s("gm_tuba").gain(0.2)

// drums · kick
const kick = s("bd").struct("<[x!4]!48 ~@4 [x!4]!11 [x!2 ~@2] ~@5>").gain(0.2)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@64 [x!4]!4 ~>").gain(0.13)

// drums · rim
const rim = s("rim").struct(`<
  [~@2 x ~@3 x ~@3 x ~@2 x!3]!20
  ~@4
  [~@2 x ~@3 x ~@3 x ~@2 x!3]!16
  ~@12
  [~@2 x ~@3 x ~@3 x ~@2 x!3]!11
  [~ x ~ x ~@4]
  ~@5
>`).gain(0.2)

// drums · rim · soft notes
const rim_soft = s("rim").struct("<~@64 [~@2 x ~@3 x ~@3 x ~@2 x!3]!4 ~>").gain(0.13)

// drums · hihat
const hihat = s("hh").struct("<[~ x ~ x ~ x ~ x]!48 ~@4 [~ x ~ x ~ x ~ x]!11 [~ x ~ x ~@4] ~@5>").gain(0.2)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@64 [~ x ~ x ~ x ~ x]!4 ~>").gain(0.13)

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

stack(
  trumpet, trumpet_soft, trumpet_2, trumpet_soft_2, baritone_sax, baritone_sax_soft, trombone, trombone_soft, bass,
  bass_soft, kick, kick_soft, rim, rim_soft, hihat, hihat_soft, splash
)