Strudelify

Sunset Lover

Petit Biscuit

KeyG♭ majorTempo91 bpm
0:00/0:00
// Sunset Lover — Petit Biscuit
// 91 bpm, 4/4, key Gb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "Tin Whistle" named as a pipe, played on whistle (its lead 4 chiff patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/5624383; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 29 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(91/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 · string ensemble 1 · "String Synthesizer"
const string_ensemble_1 = note("<~@8 A B C D@2 E F G H E F G H E F G H E F G H>".pickRestart({
  A: "~ bb2@3", B: "b2@3 b2", C: "db3@3 gb2", D: "[bb2@3 db3@2 db3@3]/2", E: "[gb2,eb3]@3 [eb2,gb3]",
  F: "[ab2,f3]@3 [eb2,gb3]", G: "[gb2,gb3]@3 [bb2,gb3]", H: "[b2,ab3] [db3,bb3]",
})).s("gm_string_ensemble_1").gain(0.3)

// drums · kick
const kick = s("bd").struct("<~@8 [x ~@2 x] [x!4]!6 [x!2]!2 [x!4]!12>").gain(0.3)

// drums · clap
const clap = s("cp").struct("<~@9 A B A B A B A B A B A B A B A B ~@4>".pickRestart({
  A: "~@4 x!2 ~ x!2 ~@3 x ~ x ~@5 x!2 ~ x!2 ~@3 x ~ x ~", B: "~@3 x ~ x ~@2 x ~@3 x ~@3 x ~@3 x!2 ~ x!2 ~@3 x ~ x ~",
})).gain(0.25)

// drums · shaker
const shaker = s("sh").struct("<~@17 [~ x!3 ~ x!3 ~ x!3 ~ x!3]!8 ~@4>").gain(0.3)

// drums · claves
const claves = s("clave:2").struct("<[~@3 x] [~ x ~ x]!24 ~@4>").gain(1.46)

stack(string_ensemble_1, kick, clap, shaker, claves)