Strudelify
One More Time cover art

Discovery

One More Time

Daft Punk

KeyG majorTempo120 bpm
0:00/0:00
// One More Time — Daft Punk
// 120 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 115 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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 · brass section · "M #1"
const brass_section = note(`<
  A B A B A B A B A B A B A C D E A B A B A B A B A B A B A C ~@53 F B A B A B A B A B A B A B A ~ A B A B A B D E A B A
  B A C ~@2
>`.pickRestart({
  A: "[g4,b4,d5]@7 ~ [g4,b4,d5]@7 ~", B: "[g4,b4,d5]@9 ~ [f#4,a4,c#5,e5]@6", C: "[g4,b4,d5]@9 ~ [f#4,a4,c#5,e5]@5 ~",
  D: "[f#4,a4,c#5,e5]@3 ~ [f#4,a4,c#5,e5]@3 ~ [f#4,a4,c#5,e5]@3 ~ [f#4,a4,c#5,e5]@3 ~", // F#m7
  E: "[f#4,a4,c#5,e5]@3 ~ [f#4,a4,c#5,e5]@3 ~ [f#4,a4,c#5,e5] ~ [e4,f#4,a4,c#5]@5 ~", F: "~@8 [g4,b4,d5]@7 ~",
})).s("gm_brass_section").gain(0.56)

// bass · electric bass finger · "M #2"
const bass = note(`<
  A B A B A B A B C D C D C D E F C D C D C D C D C D C D C D ~@69 C D C D C D E F C D C D C D ~@2
>`.pickRestart({
  A: "g2@5 ~ d2@2 g2@5 ~ d2@2", B: "g2@5 ~ d2@2 e2@2 a1@5 ~", C: "g1@5 ~ g1@2 g1@5 ~ g1@2",
  D: "g1@5 ~ g1@2 d2@2 a1@5 ~", E: "f#1@3 ~ f#1@3 ~ f#1@3 ~ f#1@4", F: "f#1@3 ~ f#1@3 ~ f#1@2 a1@5 ~",
})).s("gm_electric_bass_finger").gain(0.56)

// other · brass section · "M #4"
const brass_section_2 = note("<~@8 A@6 B C A@14 ~@54 D A@12 E ~ A@14 ~@2>".pickRestart({
  A: "[g3@26 f#3@5 ~]/2", B: "f#4@3 ~ f#4@3 ~ f#4@3 ~ f#4@4", C: "f#4@3 ~ f#4@3 ~ f#4@2 e4@5 ~", D: "~@10 f#3@5 ~",
  E: "g3@15 ~",
})).s("gm_brass_section").gain(0.27)

// chords · string ensemble 1 · "M #5"
const string_ensemble_1 = note("<~@8 A@6 B C A@14 ~@69 A@6 B C A@6 ~@2>".pickRestart({
  A: "[[g3,b3,d4]@26 [f#3,a3,c#4]@5 ~]/2", // G F#m
  B: "[f#3,a3,c#4,e4]@3 ~ [f#3,a3,c#4,e4]@3 ~ [f#3,a3,c#4,e4]@3 ~ [f#3,a3,c#4,e4]@3 ~", // F#m7
  C: "[f#3,a3,c#4,e4]@3 ~ [f#3,a3,c#4,e4]@3 ~ [f#3,a3,c#4,e4]@2 [e3,f#3,a3,c#4]@5 ~", // F#m7
})).s("gm_string_ensemble_1").gain(0.27)

// chords · percussive organ · "M #6"
const percussive_organ = note(`<
  ~@39 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 E ~@17
>`.pickRestart({
  A: "[g4,b4,d5]", B: "[f#4,a4,d5]", C: "[e4,g4,b4]", D: "[e4,a4,c#5]", E: "[e4,g4,b4]@15 ~",
})).s("gm_percussive_organ").gain(0.72)

// chords · epiano2 · "M #7"
const epiano2 = note("<~@31 A B A B A B A C ~@76>".pickRestart({
  A: "[g3,b3,d4]@2 [g3,b3,d4]@3 ~@3 [g3,b3,d4]@2 [g3,b3,d4]@3 ~@3", // G
  B: "[g3,b3,d4]@2 [g3,b3,d4]@3 ~@3 [g3,b3,d4]@2 [f#3,a3,c#4,e4]@3 ~@3", // G F#m7
  C: "[g3,b3,d4]@2 [g3,b3,d4]@3 ~@3 [g3,b3,d4]@2 [f#3,a3,c#4,e4]@5 ~", // G F#m7
})).s("gm_epiano2").gain(0.72)

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

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

// drums · clap
const clap = s("cp").struct("<~@8 A@6 ~ B A@14 B A@8 ~@44 A@15 ~ A@6 ~ B A@6 ~@2>".pickRestart({
  A: "~ x ~ x", B: "~@3 x",
})).gain(0.56)

// drums · clap · soft notes
const clap_soft = s("cp").struct("<[~ x ~ x]!8 ~@107>").gain(0.16)

// drums · snare
const snare = s("sd").struct("<~@8 A@6 ~ B A@14 ~ A@8 ~@44 A@15 ~ A@6 ~ B A@6 ~@2>".pickRestart({
  A: "~ x ~ x", B: "~@3 x",
})).gain(0.56)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<[~ x ~ x]!8 ~@107>").gain(0.16)

// drums · hihat
const hihat = s("hh").struct("<~@8 A@6 B C A@14 D A@8 ~@20 C@12 E ~@11 A@15 C A@6 B C A@6 C@2>".pickRestart({
  A: "~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2", B: "~@2 x!3 ~ x!3 ~ x!3 ~ x!2", C: "x ~ x!3 ~ x!3 ~ x!3 ~ x!2",
  D: "~@2 x!3 ~ x!3 ~ x!2 ~@2 x!2", E: "x ~ x!3 ~ x!2 ~@8",
})).gain(0.56)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<[~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2]!8 ~@107>").gain(0.16)

// drums · tambourine
const tambourine = s("tb").struct("<~@30 A ~@28 A@12 B ~@26 A ~@14 A@2>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(0.56)

stack(
  brass_section, bass, brass_section_2, string_ensemble_1, percussive_organ, epiano2, kick, kick_soft, clap, clap_soft,
  snare, snare_soft, hihat, hihat_soft, tambourine
)

More by Daft Punk