Strudelify

doin it right

Parker Tibbetts

KeyF♯ majorTempo89 bpm
0:00/0:00
// doin it right — Parker Tibbetts
// 89 bpm, 4/4, key F# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5907808; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 20 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(89/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · piano
const piano = note("<~@3 A ~@2 B C ~@2 B C ~@2 B C ~@2 B C>".pickRestart({
  A: "~@6 c#4!10", B: "c#4!4 ~@2 c#4!10", C: "[b3,c#4]!4 ~@2 c#4!10",
})).s("gm_piano").gain(0.3)

// other · piano · soft notes · Bsus2
const piano_soft = note("<~@2 [c#4!4 ~@2 c#4!10] [[b3,c#4]!4 ~@12] ~@16>").s("gm_piano").gain(0.2)

// other · piano
const piano_2 = note("<~@3 A B C D B@2 C D B@2 C D B@3 D B>".pickRestart({
  A: "~@6 f#3!10", B: "f#3!4 ~@2 f#3!10", C: "f#3!4 ~@2 f#3!6 g#3!4", D: "a#3!4 ~@2 g#3!10",
})).s("gm_piano").gain(0.3)

// other · piano · soft notes
const piano_soft_2 = note("<[f#3!4 ~@2 f#3!10] [f#3!4 ~@2 f#3!6 g#3!4] [a#3!4 ~@2 g#3!10] [f#3!4 ~@12] ~@16>")
  .s("gm_piano").gain(0.2)

// other · piano
const piano_3 = note("<~@3 A B C D E B C D E B C D E B C D E>".pickRestart({
  A: "~@6 b2!10", B: "g#2!4 ~@2 g#2!6 a#2!4", C: "b2!4 ~@2 b2!6 c#3!4", D: "d#3!4 ~@2 c#3!10", E: "b2!4 ~@2 b2!10",
})).s("gm_piano").gain(0.3)

// other · piano · soft notes
const piano_soft_3 = note("<[g#2!4 ~@2 g#2!6 a#2!4] [b2!4 ~@2 b2!6 c#3!4] [d#3!4 ~@2 c#3!10] [b2!4 ~@12] ~@16>")
  .s("gm_piano").gain(0.2)

// chords · piano
const piano_4 = note("<~@8 A B C B A B C B D E F E>".pickRestart({
  A: "g#2 ~", B: "b2 ~", C: "d#2 ~", D: "[g#2,d#3] ~", E: "[b2,f#3] ~", F: "[d#2,a#2] ~",
})).s("gm_piano").gain(0.4)

// drums · rim
const rim = s("rim").struct("x!16").gain(0.15)

// drums · low tom
const low_tom = s("lt").struct("<~@8 x!8 [x!4]!4>").gain(0.3)

// drums · hihat
const hihat = s("hh").struct("<~@8 [~ x!3 ~@12]!8 [x!16]!4>").gain(0.3)

// drums · china
const china = s("cr").struct("<~@8 [~ x ~ x]!12>").gain(0.4)

stack(piano, piano_soft, piano_2, piano_soft_2, piano_3, piano_soft_3, piano_4, rim, low_tom, hihat, china)