Strudelify

My Favorite Game

The Cardigans

KeyF minorTempo145 bpm
0:00/0:00
// My Favorite Game — The Cardigans
// 145 bpm, 4/4, key F minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 4 "04- Overdriven Guitar" named as a guitar, played on overdriven guitar (its piano patch is not one)
// note: duplicate parts dropped: ch 4 "04- Overdriven Guitar" overdriven guitar (copy of ch 2 "02- Charang Lead" lead 5 charang)
// note: Full arrangement: all 131 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): 07- Clean El. Guitar.
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.

// other · lead 5 charang · "02- Charang Lead"
const lead_5_charang = note(`<
  ~@5 A B C D A B C D ~@8 A B C D ~@21 A B C D A B C D ~@8 A B C D ~@30 A B C D ~@17 A B C D A B C D C D C D C D
>`.pickRestart({
  A: "~@2 eb3 ~ eb3 d3@2 ~", B: "~@4 eb3 ~@3 eb3@2 d3@3 ~@3", C: "~@4 eb3@2 ~@2 eb3@2 d3@3 ~@3",
  D: "~@4 eb3@4 ~@4 d3@3 ~",
})).s("gm_lead_5_charang").gain(0.8)

// other · distortion guitar · "03- Distortion Guitar"
const distortion_guitar = note(`<
  ~@4 A B C D E B C D E B C D E B C D E B C D E B C D E B C D E ~@13 B C D E B C D E B C D E B C D E B C D E B C D E B C
  D E ~@20 F A B C D E G H G H G H G H G H G H G I J K A B C D E B C D E D E D E D L
>`.pickRestart({
  A: "[g1,g2]!7 [bb1,bb2]", B: "[c2,c3]!4", C: "[bb1,bb2]!4", D: "[f1,f2]!4", E: "[ab1,ab2]!2 [bb1,bb2]!2",
  F: "[g1,g2]!8", G: "[eb3,c4,eb4,g4] ~@3 [eb3,c4,eb4,g4] ~@3 [eb3,c4,eb4,g4] ~@3 [eb3,c4,eb4,g4] ~@3",
  H: "[e3,db4,e4,ab4] ~@3 [e3,db4,e4,ab4] ~@3 [e3,db4,e4,ab4] ~@3 [e3,db4,e4,ab4] ~@3", // Dbm
  I: "[c3,ab3,c4,eb4] ~@3 [c3,ab3,c4,eb4] ~@3 [c3,ab3,c4,eb4] ~@3 [c3,ab3,c4,eb4] ~@3", // Ab
  J: "[ab2,f3,ab3,c4] ~@3 [ab2,f3,ab3,c4] ~@3 [ab2,f3,ab3,c4] ~@3 [ab2,f3,ab3,c4] ~@3", // Fm
  K: "[d3,bb3,d4,f4] ~@3 [d3,bb3,d4,f4] ~@3 [d3,bb3,d4,f4] ~@3 [d3,bb3,d4,f4] ~@3", L: "[ab1,ab2]!2 [bb1,bb2] ~",
})).s("gm_distortion_guitar").gain(0.4)

// bass · electric bass pick · "05- Bass"
const bass = note(`<
  ~@3 A B C D E F C D E F C D E F C D E F C D E F C D E F C D E F ~@12 B C D E F C D E F C D E F C D E F C D E F C D E F
  C D E F ~@20 G B C D E F ~@16 B C D E F C D E F E F E F E H
>`.pickRestart({
  A: "d4", B: "g3!7 bb3", C: "c4!8", D: "bb3!8", E: "f3!8", F: "ab3!4 bb3!4", G: "g3!8", H: "ab3!4 bb3!2 ~@2",
})).s("gm_electric_bass_pick").gain(0.5)

// other · electric guitar muted · "06- Muted El. Guitar"
const electric_guitar_muted = note(`<
  [c4 ~@3 c4 ~@3 c4 ~@3 c4 ~@3]
  [eb4 ~@3 eb4 ~@3 eb4 ~@3 eb4 ~@3]
  [f4 ~@3 f4 ~@3 f4 ~@3 f4 ~@3]
  [d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3]
  ~@127
>`).s("gm_electric_guitar_muted").gain(0.13)

// chords · electric guitar clean · "07- Clean El. Guitar"
const electric_guitar_clean = note("<[~ eb4 ~ eb4 ~ eb4 ~ eb4] [~ f4 ~ f4 ~ f4 ~ f4]!2 [~ d4 ~ d4 ~ d4 ~ d4] ~@127>")
  .s("gm_electric_guitar_clean").gain(0.13)

// chords · pad sweep · "08- Sweep Pad"
const pad_sweep = note("<A B C D ~@37 E@5 ~@36 F@6 G@7 ~@5 A H A H A H A H A H A H E@5 ~@14>".pickRestart({
  A: "[c4,eb4,g4]", B: "[c4,f4,ab4]", C: "[c4,f4,a4]", D: "[bb3,d4,f4]",
  E: "[[c4,eb4] [ab3,c4] ~ [bb3,d4,f4]@2, g4@2 [f3,ab3,c4]@2 ~, ~ eb4@2 ~@2]/5", // Cm Ab Bb Fm
  F: "[[c4,eb4] [ab3,c4] ~@2 [c4,eb4] [ab3,c4,eb4], g4 [f3,ab3,c4] g4, ~ eb4@2 [bb3,d4,f4]@2 ~]/6", // Cm Ab Cm Ab Fm Bb
  G: "[~@2 [c4,eb4] [ab3,c4] ~ [bb3,d4,f4]@2, [f3,ab3,c4]@2 g4@2 [f3,ab3,c4]@2 ~, ~ [bb3,d4,f4]@2 eb4@2 ~@2]/7", // Cm Ab Bb Fm Bb
  H: "[db4,e4,ab4]", // Dbm
})).s("gm_pad_sweep").gain(0.3)

// other · lead 1 square · "09- Square Wave"
const lead_1_square = note(`<
  ~@5 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 ~@13 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 ~@22 A B C D ~@17 A B C D A B C D C D C D C D
>`.pickRestart({
  A: "c4 ~ eb4 ~ eb4!3 f4", B: "f4 ~@7", C: "c4 ~ eb4 ~ eb4!3 d4", D: "c4 ~@7",
})).s("gm_lead_1_square").gain(0.19)

// bass · lead 2 sawtooth · "11- Saw Wave"
const bass_2 = note(`<
  ~@4 A B C D E B C D E B C D E B C D E B C D E B C D E B C D E F@3 G F@3 G B H D C ~ B C D E B C D E B C D E B C D E B
  C D E B C D E B C D E F@3 G F@3 G B H D C B H D C B H D C A@2 B C D E B I B I B I B I B I B I B H D C A B C D E B C D
  E D E D E D J
>`.pickRestart({
  A: "g1", B: "c2", C: "bb1", D: "f1", E: "ab1 bb1", F: "c2/3", G: "g1 bb1", H: "ab1", I: "db2", J: "ab1@2 bb1 ~",
})).s("gm_lead_2_sawtooth").gain(0.41)

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

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

// drums · hihat
const hihat = s("hh").struct("<A@4 ~ B@28 A@12 ~ B@28 A@20 ~@2 B@5 C B C B C B C B C B C A@4 ~ B@14>".pickRestart({
  A: "x!8", B: "x!7 ~", C: "x!6 ~@2",
})).gain(0.5)

// drums · open hat
const open_hat = s("oh").struct("<~@5 A@28 ~@13 A@28 ~@22 A@16 ~@5 A@13 ~>".pickRestart({
  A: "~@7 x",
})).gain(0.5)

// drums · crash
const crash = s("cr").struct(`<
  ~@5 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@14 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~@23 A ~ A ~@18 A ~ A ~ A ~ A ~ A ~ A ~ A ~
>`.pickRestart({
  A: "x",
})).gain(0.5)

stack(
  lead_5_charang, distortion_guitar, bass, electric_guitar_muted, electric_guitar_clean, pad_sweep, lead_1_square,
  bass_2, kick, snare, hihat, open_hat, crash
)

More by The Cardigans