Strudelify
Another Day cover art

1995 · Whigfield 1

Another Day

Whigfield

KeyB♭ majorTempo133 bpm
0:00/0:00
// Another Day — Whigfield
// 133 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 135 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(133/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · piano · "Piano 3"
const piano = note(`<
  ~@37 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 D ~@16 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 ~@3
>`.pickRestart({
  A: "[f4,bb4,d5] ~@2 [f4,bb4,d5] ~@2 [f4,bb4,d5] ~@3 [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,eb5] ~", // Bb Ebsus2
  B: "[f4,bb4,d5] ~@2 [f4,bb4,d5] ~@2 [f4,bb4,d5]@2 ~@2 [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,eb5] ~", // Bb Ebsus2
  C: "[f4,bb4,c5] ~@2 [f4,bb4,c5] ~@2 [f4,bb4,c5]@2 ~@2 [f4,bb4,c5] ~ [f4,bb4,c5] ~ [f4,bb4,d5] ~", // Fsus4 Bb
  D: "[d4,f4,bb4] ~@2 [d4,f4,bb4] ~@2 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~ [d4,f4,bb4] ~ [g4,bb4,eb5] ~", // Bb Eb
})).s("gm_piano").gain(0.31).pan(0.3)

// other · pad new age · "Fantasia"
const pad_new_age = note(`<
  ~@27 A@2 B C ~ D B ~@25 A@2 B C ~ D B ~@2 E F G H D B I H ~@23 A@2 B J H D B I H K L ~@2 K L ~@6 D B ~ A@2 M I H D B I
  H D C ~
>`.pickRestart({
  A: "[~@7 eb6@2 d6 c6 bb5 eb6 d6 bb5 c6]/2", B: "bb5@3 c6 bb5@3 c6", C: "bb5@3 ~@5", D: "~@3 bb5 eb6 d6 bb5 c6",
  E: "~@6 bb5@2 eb6@2 d6@2 f6@2 bb5 ~", F: "bb5 ~@5 c6 ~ bb5 ~@5 c6 ~", G: "~@6 c6 ~@7 d6@2", H: "bb5@2 a5 bb5@4 ~",
  I: "~@7 d6", J: "bb5@3 ~@4 d6", K: "~@3 bb5 eb6 d6 f6 bb5", L: "bb5@3 c6 bb5@3 ~", M: "bb5@3 ~@13",
})).s("gm_pad_new_age").gain(0.23).pan(0.3)

// other · pad new age · "Fantasia" · soft notes
const pad_new_age_soft = note("<~@30 A ~@3 B ~@27 A ~@3 B ~@3 C ~@3 B ~@27 A ~@32>".pickRestart({
  A: "~@6 c6@2 bb5@5 ~@3", B: "bb5@3 c6 bb5@4", C: "bb5 ~@7 bb5 ~@7",
})).s("gm_pad_new_age").gain(0.09).pan(0.3)

// other · electric guitar muted · "Muted Gt"
const electric_guitar_muted = 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 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
  B C D E B C D E B C D E B C D E B C D E B C D E ~@8 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 B C D E B
  C D E B C D ~@3
>`.pickRestart({
  A: "~@12 f2@2 g2 ~", B: "bb2 ~@2 bb2@2 ~ bb2@2 ~@2 bb2@2 g2@2 f2 ~", C: "g2 ~@2 g2 ~@2 g2@3 ~ f2 ~ f2@2 g2@2",
  D: "c2 ~@2 c2@2 ~ c2@2 ~@2 c2 ~ c2@2 d2 ~", E: "eb2 ~@2 eb2 ~@2 eb2 ~ f2 ~ f2 ~ f2@2 g2 ~",
})).s("gm_electric_guitar_muted").gain(0.31).pan(0.6)

// bass · synth bass 2 · "Bass"
const bass = 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 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
  B C D E B C D E B C D E B C D E B C D E B C D E ~@8 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 B C D E B
  C D E B C D ~@3
>`.pickRestart({
  A: "~@12 f1@2 g1 ~", B: "bb1 ~@2 bb1@2 ~ bb1@2 ~@2 bb1@2 g1@2 f1 ~", C: "g1 ~@2 g1 ~@2 g1@3 ~ f1 ~ f1@2 g1@2",
  D: "c1 ~@2 c1@2 ~ c1@2 ~@2 c1 ~ c1@2 d1 ~", E: "eb1 ~@2 eb1 ~@2 eb1 ~ f1 ~ f1 ~ f1@2 g1 ~",
})).s("gm_synth_bass_2").gain(0.48).pan(0.4)

// chords · marimba
const marimba = note(`<
  ~@61 A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C ~@16 A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2
  B ~@3
>`.pickRestart({
  A: "[bb4,d5] ~@2 [bb4,d5] ~@2 [bb4,d5] ~@2 [bb4,d5] ~@2 [bb4,d5] ~@3", // Bb
  B: "[bb4,c5] ~@2 [bb4,c5] ~@2 [bb4,c5] ~@2 [bb4,c5] ~@2 [bb4,c5] ~@3", // Bbsus2
  C: "[f4,bb4] ~@2 [f4,bb4] ~@2 [f4,bb4] ~@2 [f4,bb4] ~@2 [f4,bb4] ~@3", // Bb5
})).s("gm_marimba").gain(0.27).pan(0.2)

// chords · marimba
const marimba_2 = note(`<
  ~@61 A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C ~@16 A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2
  B ~@3
>`.pickRestart({
  A: "~@2 [bb4,d5] ~@2 [bb4,d5] ~@2 [bb4,d5] ~@2 [bb4,d5] ~@2 [c5,eb5] ~", // Bb Cm
  B: "~@2 [bb4,c5] ~@2 [bb4,c5] ~@2 [bb4,c5] ~@2 [bb4,c5] ~@2 [bb4,d5] ~", // Bbsus2 Bb
  C: "~@2 [f4,bb4] ~@2 [f4,bb4] ~@2 [f4,bb4] ~@2 [f4,bb4] ~@2 [c5,eb5] ~", // Bb5 Cm
})).s("gm_marimba").gain(0.23).pan(0.8)

// other · synth drum · "Synth Dr"
const synth_drum = note("<~@28 A B@16 ~@7 A B@7 C B@11 C B@3 C B@7 C ~@15 A B@7 C B@3 C B@2 D C B@15 ~@3>".pickRestart({
  A: "~@10 d6 b5 g5 ~@3", B: "e3 ~@7 e3 ~@5 d6 ~", C: "~@14 d6 ~", D: "e3 ~@13 d6 ~",
})).s("gm_synth_drum").gain(0.32)

// other · electric guitar muted · "Funk Gt."
const electric_guitar_muted_2 = 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 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 D A B C D ~@8 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 ~@3
>`.pickRestart({
  A: "~@10 bb3 ~ bb3!2 ~ bb3", B: "~ g3 ~@8 g3 ~ g3!2 ~ g3", C: "c4 ~@9 c4 ~ c4 d4 ~ d4",
  D: "eb4 ~@5 eb4 ~@2 eb4 f4 ~ f4 ~ f4 ~",
})).s("gm_electric_guitar_muted").gain(0.26).pan(0.7)

// other · lead 2 sawtooth · "Saw Wave"
const lead_2_sawtooth = note("<~ A@2 ~@33 A@2 ~@22 A@2 ~@14 A@2 ~@14 A@2 ~@38 B@3>".pickRestart({
  A: "bb5/2", B: "bb5/3",
})).s("gm_lead_2_sawtooth").gain(0.15).pan(0.2)

// other · lead 2 sawtooth · "Saw Wave" · soft notes
const lead_2_sawtooth_soft = note("<A ~@34 B ~@23 B ~@15 B ~@15 B ~@39 B ~@3>".pickRestart({
  A: "g0 ~@15", B: "g1 ~@15",
})).s("gm_lead_2_sawtooth").gain(0.05).pan(0.2)

// other · lead 1 square · "SquareWa"
const lead_1_square = note("<~ A@2 ~@33 A@2 ~@22 A@2 ~@14 A@2 ~@14 A@2 ~@38 B@3>".pickRestart({
  A: "bb6/2", B: "bb6/3",
})).s("gm_lead_1_square").gain(0.15).pan(0.8)

// other · lead 1 square · "SquareWa" · soft notes
const lead_1_square_soft = note("<A ~@34 A ~@23 A ~@15 A ~@15 A ~@39 A ~@3>".pickRestart({
  A: "g1 ~@15",
})).s("gm_lead_1_square").gain(0.05).pan(0.8)

// other · pad poly · "Polysynt"
const pad_poly = note("<~ A B C ~@32 A B C ~@21 A B C ~@13 A B C ~@13 A B C ~@37 A B C>".pickRestart({
  A: "~@3 bb5 bb4 bb5 bb4 bb5", B: "bb4 bb5 bb4 bb5 bb4 bb5 bb4 bb5", C: "bb4 bb5 bb4 bb5 bb4 ~@3",
})).s("gm_pad_poly").gain(0.2)

// other · pad poly · "Polysynt" · soft notes
const pad_poly_soft = note("<~ A ~ B ~@32 A ~ B ~@21 A ~ B ~@13 A ~ B ~@13 A ~ B ~@37 A ~ B>".pickRestart({
  A: "bb4 bb5 bb4 ~@5", B: "~@10 bb5 ~ bb4@2 bb5 ~",
})).s("gm_pad_poly").gain(0.1)

// drums · kick
const kick = s("bd").struct(`<
  ~@29 A@16 ~@8 A@7 ~ A@11 ~ A@3 ~ A@7 ~ B@7 ~@9 A@7 ~ A@3 ~ A@2 C ~ A@15 ~@3
>`.pickRestart({
  A: "x!4", B: "x ~ x ~ x!2 ~@2 x ~@3 x!2 ~@2", C: "x",
})).gain(0.5)

// drums · clap
const clap = s("cp").struct("<~ [~ x ~ x]!91 ~ [~ x ~ x]!39 ~@3>").gain(0.35)

// drums · snare
const snare = s("sd").struct("<~@29 [~@15 x]!16 ~@8 [~@15 x]!39 ~@9 [~@15 x]!31 ~@3>").gain(0.35)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A@28 B A@7 B A@3 B A@3 B A@7 B A@3 B A@3 B A@7 B A@3 B A@7 B A@7 B A@2 ~ A@8 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B
  A@3 B A@2 ~@3
>`.pickRestart({
  A: "x!4", B: "~ x!3",
})).gain(0.25)

// drums · open hat
const open_hat = s("oh").struct("<~ [~ x ~ x ~ x ~ x]!91 ~ [~ x ~ x ~ x ~ x]!39 ~@3>").gain(0.3)

// drums · crash
const crash = s("cr").struct(`<
  ~@29 A ~@7 A ~@3 A ~@3 A ~@7 A ~@3 A ~@3 A ~@7 A ~@3 A ~@7 A ~@7 A ~@11 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A
  ~@5
>`.pickRestart({
  A: "x",
})).gain(0.3)

// drums · cowbell
const cowbell = s("cb").struct("<~@85 [x!4]!6 ~@44>").gain(0.4)

// drums · bongos
const bongos = s("bongo:4").struct("<~ [~ x ~ x ~ x ~ x]!91 ~ [~ x ~ x ~ x ~ x]!39 ~@3>").gain(0.78)

// drums · bongos
const bongos_2 = s("bongo:18").struct("<~@92 [~ x ~ x ~ x ~ x] ~@42>").gain(0.78)

// drums · congas
const congas = s("conga:13").struct("<~ [x!4]!131 ~@3>").gain(0.79)

// drums · agogo bells
const agogo_bells = s("agogo:4").struct("<~@85 [~@15 x]!7 ~@43>").gain(2.22)

// drums · shaker
const shaker = s("sh").struct(`<
  ~@21
  [x!2 ~@6 x!2 ~@6]!24
  ~@8
  [x!2 ~@6 x!2 ~@6]!24
  [x!16]!15
  ~
  [x!2 ~@6 x!2 ~@6]!39
  ~@3
>`).gain(0.25)

stack(
  piano, pad_new_age, pad_new_age_soft, electric_guitar_muted, bass, marimba, marimba_2, synth_drum,
  electric_guitar_muted_2, lead_2_sawtooth, lead_2_sawtooth_soft, lead_1_square, lead_1_square_soft, pad_poly,
  pad_poly_soft, kick, clap, snare, hihat, open_hat, crash, cowbell, bongos, bongos_2, congas, agogo_bells, shaker
)

More by Whigfield