Strudelify

Take It to the Limit

Centory

KeyC♯ minorTempo145 bpm
0:00/0:00
// Take It to the Limit — Centory
// 145 bpm, 4/4, key C# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 113 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(145/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 · synth bass 1
const bass = note(`<
  ~@12 A B C D A B C D ~@4 A B C D A B C D A B C D ~@3 E ~@12 A B C D A B C D A B C D A B C D A B C D ~@20 A B C D A B C
  D A B C D A B C D ~@5
>`.pickRestart({
  A: "g#3!16", B: "b3!16", C: "e3!16", D: "f#3!16", E: "~@15 f#3",
})).s("gm_synth_bass_1").gain(0.05).pan(0.1)

// bass · fretless bass
const bass_2 = note(`<
  A@4 B@2 C D E F C D G H I J G H C J K L M N K L M N K L M N K L M N O P Q R O P O P O P O P O P O S K L M N K L M N K
  L M N K L M N K L M N B@2 I T B@2 I T B@2 C T B@2 I T B@2 I T K L M N K L M N K L M N K L M N U@4 ~
>`.pickRestart({
  A: "[c#1@63 ~]/4", B: "c#2/2", C: "a1@15 ~", D: "f#1@15 ~", E: "c#2@3 ~ c#2@2 ~@4 c#2 ~@3 c#2@2",
  F: "~@2 c#2@2 ~@2 c#2@2 ~@2 c#2 ~@5", G: "c#2", H: "e2", I: "a1", J: "b1", K: "c#2@3 ~ c#2@3 ~ c#2@2 ~ c#2 ~@2 c#2 ~",
  L: "e2@3 ~ e2@3 ~ e2@2 ~ e2 ~@2 e2 ~", M: "a1@3 ~ a1@3 ~ a1@2 ~ a1 ~@2 a1 ~", N: "b1@3 ~ b1@3 ~ b1@2 ~ b1 ~@2 b1 ~",
  O: "c#2@2 ~@2 c#2@3 ~ c#2@3 ~ b1@2 c#2@2", P: "~@2 c#2@2 ~@2 c#2@2 ~@2 c#2 ~ e2@2 b1@2",
  Q: "c#2@2 ~@2 c#2@2 ~@2 c#2@3 ~ e1@2 f#1@2", R: "~@2 f#1@3 ~ f#1@3 ~ f#1 ~ f#1@2 b1 ~", S: "f#1 ~@7", T: "f#1",
  U: "c#1/4",
})).s("gm_fretless_bass").gain(0.31)

// other · lead 8 bass lead
const lead_8_bass_lead = note("<~@40 A B C D A B E A@2 B E ~@37 F G H ~@22>".pickRestart({
  A: "c#3@2 g#3 ~ g#3 ~@3 g#3 ~@2 a3 ~ c#3 f#3 ~", B: "c#3@2 g#3 ~ g#3 ~ c#3 ~ g#3 ~ g#3 a3 ~ c#3 f#3 ~",
  C: "c#3@2 g#3 ~ g#3 ~ c#3 ~ g#3 ~@2 a3 ~@2 f#3 ~", D: "c#3@2 g#3 ~ g#3 ~@3 g#3 ~@2 a3 ~@2 f#3 ~",
  E: "c#3@2 g#3 ~ g#3 ~ c#3 ~ g#3 ~@2 a3 ~ c#3 f#3 ~", F: "c#3!16", G: "d#3!16", H: "e3!16",
})).s("gm_lead_8_bass_lead").gain(0.05).pan(0.1)

// other · lead 8 bass lead · soft notes
const lead_8_bass_lead_soft = note("<~@40 A ~ B C A ~ D A@2 ~ D ~@62>".pickRestart({
  A: "~@6 c#3 ~@3 g#3 ~@5", B: "~@10 g#3 ~@2 c#3 ~@2", C: "~@6 c#3 ~@3 g#3 ~@2 c#3 ~@2", D: "~@10 g#3 ~@5",
})).s("gm_lead_8_bass_lead").gain(0.03).pan(0.1)

// chords · synth strings 1
const synth_strings_1 = note(`<
  A@6 B C D@2 E F@2 G@2 H I G@2 J K@3 L M@3 L K@3 L M@3 L N I O P ~@8 N I O Q@8 ~ K@3 L M@3 L R@2 S L T@8 U@2 V W X@2 Y
  L X@2 Y L ~@8 K@3 L M@3 L Z@3 ~@2
>`.pickRestart({
  A: "[~@2 c#4, c#3]/6", B: "[a2,e4]", C: "[f#2,f#4]", D: "[c#3,c#4]/2", E: "e4", F: "f#4/2", G: "c#6/2", H: "b5 a5",
  I: "g#5", J: "b5", K: "[c#4 b3 [a3,c#4], e4, g#3@7 ~@5, c#6 ~@11]/3", L: "[b3,d#4,f#4]",
  M: "[c#4 b3 [a3,c#4], e4, g#3@2 ~]/3", N: "c#6", O: "a5", P: "f#5@15 ~", Q: "f#5/8",
  R: "[c#4@16 b3@15 ~, e4@31 ~, g#3@7 ~, c#6 ~@7]/2", S: "[a3,c#4]",
  T: "[~@32 a1@15 ~ f#1@16, c#4, [e4,g#4]@3 ~, c#2 ~, ~@15 b4@32 [f#4,a4]@16 ~]/4", U: "c#4/2", V: "e4@15 ~", W: "f#4",
  X: "[c#4,e4,g#4]/2", Y: "[a3,c#4,e4]", Z: "[c#2,c#4,d#4,e4,g#4]/3",
})).s("gm_synth_strings_1").gain(0.05).pan(0.2)

// other · lead 8 bass lead
const lead_8_bass_lead_2 = note(`<
  ~@4 A B C D A B C D A B C D A B C D ~@16 E@3 F ~@4 G E@4 H I ~@29 A B J D A B C D A B C ~@22
>`.pickRestart({
  A: "g#3 c#4 g#4 ~ f#4 ~ e4 d#4", B: "g#3 c#4 ~ d#4 ~ e4 d#4 c#4", C: "a3 c#4 g#4 a3 f#4 a3 e4 d#4",
  D: "~ c#4 b3 d#4 b3 e4 d#4 c#4", E: "c#3!16", F: "c#3!15 ~", G: "~@12 c#3!4", H: "d#3!16", I: "e3!16",
  J: "a3@2 c#4@2 g#4@2 a3@2 f#4@2 a3@2 e4@2 d#4 ~",
})).s("gm_lead_8_bass_lead").gain(0.03).pan(0.8)

// other · lead 8 bass lead · soft notes
const lead_8_bass_lead_soft_2 = note(`<
  ~@4 A B ~ C A B ~ C A B ~ C A B ~ C ~@24 D ~@35 A B ~ C A B ~ C A B ~@23
>`.pickRestart({
  A: "~@3 g#3 ~ g#3 ~@2", B: "~@2 g#3 ~ g#3 ~@3", C: "b3 ~@7", D: "c#3!12 ~@4",
})).s("gm_lead_8_bass_lead").gain(0.02).pan(0.8)

// other · tenor sax
const tenor_sax = note("<~@40 A B C D E F G H I J K L ~@9 M N ~@2 M N ~@5 O P Q R S ~@24 M N ~@10>".pickRestart({
  A: "e4 d#4 ~ d#4!3 ~ c#4 d#4 ~ e4 ~ d#4 ~ d#4 ~", B: "c#4 ~ d#4 ~ e4 ~@3 d#4!2 c#4 ~ d#4 ~ e4 ~",
  C: "d#4 ~ c#4 d#4 ~ e4 ~@2 d#4 ~ c#4 d#4 ~ e4 ~@2", D: "~@2 d#4 ~ d#4!2 c#4 ~ d#4!2 c#4 ~ e4 ~@3",
  E: "d#4@2 ~@2 d#4 ~ d#4@3 d#4 c#4 ~ d#4 ~ d#4 ~", F: "d#4!2 ~ d#4!2 ~ d#4 ~ c#4 ~ d#4 ~ c#4 ~ d#4 ~",
  G: "d#4!4 c#4 ~ d#4 ~ d#4 ~ d#4 ~ d#4!2 ~ d#4", H: "d#4 ~ d#4!3 ~ d#4 ~ d#4 ~ d#4!3 ~ d#4 ~",
  I: "d#4!2 ~ d#4!2 c#4 ~ d#4!2 e4 d#4 ~ d#4!2 ~ d#4", J: "d#4!2 ~ d#4 ~ e4@2 ~@3 c#4 ~ e4 d#4 ~@2",
  K: "c#4 ~ b3 c#4@2 ~@2 c#4 ~ e4 c#4 ~@2 c#4 b3 ~", L: "c#4 ~ d#4 ~ f#3 ~ d#4 ~ f#3 ~ e4 f#3@2 ~@3",
  M: "~@2 c#4 ~ c#4@2 f#3@2 d#4 ~ f#3@2 d#4@2 f#3 ~", N: "e4@2 f#3 ~@13", O: "~@7 f#3@8 ~",
  P: "f#3 ~ f#3 ~@2 f#3 ~ f#3 ~ g#3 ~ e3@2 c#3 ~@2", Q: "c#3@2 ~ e3@6 ~@7",
  R: "~@2 b2 ~ c#3 ~ b2 ~ c#3 ~ b2 ~ c#3 ~ b2 ~", S: "e3@2 b2@7 ~@7",
})).s("gm_tenor_sax").gain(0.33)

// chords · pad halo · Amaj7 A
const pad_halo = note(`<
  ~@77
  [[a3,c#4,e4,g#4] ~ [a3,c#4,e4,g#4] ~ [a3,c#4,e4,g#4]@2 [a3,c#4,e4,g#4] ~ [a3,c#4,e4,g#4] ~ [a3,c#4,e4,g#4] ~ [a3,c#4,e4,g#4]@2 [a3,c#4,e4,g#4] ~]
  [[a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4]@2 [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4]@2 [a3,c#4,e4] ~]
  [[a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4]@2 [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4]@2 ~@2]
  ~@33
>`).s("gm_pad_halo").gain(0.05)

// other · pad choir
const pad_choir = note("<~@84 A B C D E B C D ~@21>".pickRestart({
  A: "g#4 ~@3 g#4!2 ~@2 g#4!2 ~@2 g#4!2 ~@2", B: "d#4!2 d#4@2 d#4!2 d#4@2 d#4!2 d#4@2 d#4!2 d#4@2",
  C: "e4!2 e4@2 e4!2 e4@2 e4!2 e4@2 e4!2 e4@2", D: "f#4!2 f#4@2 f#4!2 f#4@2 f#4!2 f#4@2 f#4!2 f#4@2",
  E: "g#4!2 g#4@2 g#4!2 g#4@2 g#4!2 g#4@2 g#4!2 g#4@2",
})).s("gm_pad_choir").gain(0.25)

// other · pad choir · soft notes
const pad_choir_soft = note("<~@84 [~ g#4 g#4@2 ~@2 g#4@2 ~@2 g#4@2 ~@2 g#4@2] ~@28>").s("gm_pad_choir").gain(0.14)

// chords · xylophone · G# C#5 E G# C#5 E G# C#5 …
const xylophone = note(`<
  ~@36
  [~@8 [g#4,c5] ~@2 [g#4,c5] ~@2 [g#4,c#5] ~]
  [~@2 [e4,g#4] ~@3 [g#4,c5] ~ [g#4,c5] ~@2 [g#4,c5] ~@2 [g#4,c#5] ~]
  [~@2 [e4,g#4] ~@5 [g#4,c5] ~@2 [g#4,c5] ~@2 [g#4,c#5] ~]
  [~@2 [e4,g#4] ~@3 [g#4,c5] ~ [g#4,c5] ~@2 [g#4,c5] ~@2 [g#4,c#5] ~]
  ~@73
>`).s("gm_xylophone").gain(0.06)

// drums · kick
const kick = s("bd").struct(`<
  ~@8 A ~@10 B C@3 D C@3 D C@3 D C@3 D C@3 D C@3 D C@3 D C@3 E C@3 D C@3 D C@3 D C@3 D C@3 D B ~@18 E C@3 D C@3 D C@3 D
  C@3 D B ~@4
>`.pickRestart({
  A: "x!2 ~@2", B: "x", C: "x!4", D: "x ~ x ~ x ~ x!2", E: "x ~@10 x!2 ~ x ~",
})).gain(0.52)

// drums · snare
const snare = s("sd").struct(`<
  ~@18 A ~ B C B C B C B D B C B C B C B D B C B@3 C B C B C B C B C B ~ B C B C B C B D B C B C B C B D B C B@2 ~@20 B
  C B D B C B E B C B C B C B E ~@5
>`.pickRestart({
  A: "~@14 x!2", B: "~ x ~ x", C: "~@4 x ~@7 x ~@2 x", D: "~@4 x ~@7 x ~ x!2", E: "~@4 x ~@3 x!8",
})).gain(0.21)

// drums · clap
const clap = s("cp").struct("<~@16 A@3 ~ A@31 ~ A@20 ~@16 A@3 ~ A@16 ~@5>".pickRestart({
  A: "~ x ~ x",
})).gain(0.21)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@20
  [x!2 ~@2 x ~@3 x!2 ~@2 x ~@3]!31
  x
  [x!2 ~@2 x ~@3 x!2 ~@2 x ~@3]!20
  ~@12
  [x!2 ~@2 x ~@3 x!2 ~@2 x ~@3]!24
  ~@5
>`).gain(0.15)

// drums · open hat
const open_hat = s("oh").struct("<~@20 [~ x ~ x ~ x ~ x]!31 ~ [~ x ~ x ~ x ~ x]!20 ~@16 [~ x ~ x ~ x ~ x]!20 ~@5>")
  .gain(0.21)

// drums · open hat · soft notes
const open_hat_soft = s("oh").struct("<~@84 [~ x ~ x ~ x ~ x]!4 ~@25>").gain(0.1)

// drums · china
const china = s("cr").struct("<~@8 A ~@10 B C@16 B ~ B ~ B@2 ~ B ~ B ~ B A B ~ B C@20 B ~@15 C@20 B ~@4>".pickRestart({
  A: "x!2 ~@2", B: "x", C: "x!2",
})).gain(0.1)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@37 A ~ A ~@36 B C@2 D ~@33>".pickRestart({
  A: "~@3 x!2 ~@3", B: "~@5 x!3", C: "x!8", D: "x!4 ~@4",
})).gain(1.05)

// drums · cabasa · soft notes
const cabasa_soft = s("cabasa:4").struct("<~@76 [x!5 ~@3] ~@2 [~@4 x!4] ~@33>").gain(0.52)

// drums · shaker
const shaker = s("sh").struct("<~@20 A@19 B A@11 C A@20 ~@16 A@3 C A@16 ~@5>".pickRestart({
  A: "x!16", B: "x!15 ~", C: "x",
})).gain(0.15)

stack(
  bass, bass_2, lead_8_bass_lead, lead_8_bass_lead_soft, synth_strings_1, lead_8_bass_lead_2, lead_8_bass_lead_soft_2,
  tenor_sax, pad_halo, pad_choir, pad_choir_soft, xylophone, kick, snare, clap, hihat, open_hat, open_hat_soft, china,
  cabasa, cabasa_soft, shaker
)

More by Centory