Strudelify

Cumuni

883

KeyF majorTempo120 bpm
0:00/0:00
// Cumuni — 883
// 120 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 151 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 27.
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.

// chords · electric guitar jazz
const electric_guitar_jazz = note(`<
  ~@12 A B A B A B C B D B ~@34 A B A B A B C B D B ~@34 A B A B A B C B D B ~@41
>`.pickRestart({
  A: "~@4 c4@11 ~, ~@2 f4@11 ~@3", B: "c4 ~@3 c4@11 ~, ~@2 g4@11 ~@3", C: "~@4 a3@11 ~, ~@2 c4@11 ~@3",
  D: "~@4 c4@11 ~, ~@2 g4@11 ~@3",
})).s("gm_electric_guitar_jazz").gain(0.62)

// chords · electric guitar jazz · soft notes
const electric_guitar_jazz_2 = note("<~ A B C D E F G C A H I ~@139>".pickRestart({
  A: "e4!2", B: "f4!2", C: "eb4!2", D: "eb4 d4", E: "d4@3 ~", F: "e4 d4", G: "eb4@3 ~", H: "bb3 ab3", I: "ab3 g3",
})).s("gm_electric_guitar_jazz").gain(0.06)

// other · baritone sax
const baritone_sax = note("<~@134 A B@3 C D@3 E B@3 C D@3 F>".pickRestart({
  A: "~@8 e4 ~ e4 ~ e4 ~ e4 ~", B: "[g4@3 ~ g4 ~ g4@3 ~ a4@3 ~@27 e4 ~ d4 ~@3 d4 ~, ~@14 c4@31 ~@3]/3",
  C: "c4@8 e4 ~ e4 ~ e4 ~ e4 ~", D: "[g4@3 ~ g4 ~ g4@3 ~ a4@3 ~@27 e5 ~ d5 ~ c5 ~ d5 ~, ~@7 c4@16 ~]/3",
  E: "c5@8 e4 ~ e4 ~ e4 ~ e4 ~", F: "c5 ~",
})).s("gm_baritone_sax").gain(0.4)

// bass · synth bass 1
const bass = note(`<
  ~@2 A B A B A B C D B D A B A B A B C D B D A E C F C F C D B G A@2 B G A@2 B G A@2 B G A@3 B A B A B C D B D A B A B
  A B C D B D A E C F C F C D B G A@2 B G A@2 B G A@2 B G A@2 ~@10 A B A B A B C D B D A E C F C F C D B G A@2 B G A@2 B
  G A@2 B G A@2 B G A@2 B G A@2 B G A@2 B G A@2 ~
>`.pickRestart({
  A: "[f1,f2]!8", B: "[c1,c2]!8", C: "[a1,a2]!8", D: "[g1,g2]!4 [f1,f2]!4", E: "[f1,f2]!4 [g1,g2]!4",
  F: "[f1,f2]!6 [g1,g2]!2", G: "[g1,g2]!8",
})).s("gm_synth_bass_1").gain(0.4)

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

// drums · snare
const snare = s("sd").struct(`<
  A B A C A C A C A C A B A C A C A C A C A B A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A B A C A
  C A C A C A B A C A C A C A C A C A C A C A C A C A C A C A C ~@9 B A C A C A C A C A B A C A C A C A C A C A C A C A
  C A C A C A C A C A C A C A C A C A C A C A C A C ~
>`.pickRestart({
  A: "~ x ~ x", B: "~ x!2 ~@2 x!2 ~", C: "~@2 x ~@2 x!2 ~",
})).gain(0.64)

// drums · hihat
const hihat = s("hh").struct("<~@22 [x!3 ~ x!3 ~]!24 ~@20 [x!3 ~ x!3 ~]!24 ~@20 [x!3 ~ x!3 ~]!40 ~>").gain(0.64)

// drums · crash
const crash = s("cr").struct(`<
  ~@2 A ~@9 A ~@9 A ~@7 B ~@15 A ~@9 A ~@9 A ~@7 B ~@15 A ~@9 A ~@9 A ~@7 B ~@15 B ~@16
>`.pickRestart({
  A: "~ x ~@2", B: "x",
})).gain(0.64)

// drums · jingle bells
const jingle_bells = s("sleighbells:4").struct("<~ [x!10 ~@6]!149 ~>").gain(1.73)

// drums · jingle bells · soft notes
const jingle_bells_soft = s("sleighbells:4").struct("<~ [~@5 x ~@2]!149 ~>").gain(0.69)

stack(
  electric_guitar_jazz, electric_guitar_jazz_2, baritone_sax, bass, kick, snare, hihat, crash, jingle_bells,
  jingle_bells_soft
)

More by 883