Strudelify
KeyF minorTempo120 bpm
0:00/0:00
// sugar — Arrang? par Justin VAST
// 120 bpm, 4/4, key F minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/4311801; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 53 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/4)

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

// other · alto sax · "Saxophone Alto"
const alto_sax = note("<~@8 A@2 B C A@2 B C D ~@7 D ~@7 E F G H E F G H I J K L I J K M I J K M N>".pickRestart({
  A: "ab4", B: "ab4@3 ab4 bb4@3 bb4", C: "f4", D: "f4 ~@7", E: "f4 ~ f4 ~ f4 ~ f4 ~", F: "~@2 eb4@3 f4@3 eb4@8",
  G: "eb4 ~ eb4 ~ eb4 ~ eb4 ~", H: "~@2 ab4@2 ab4@2 ab4 eb4@9", I: "f4@4 ab4@2 f4@2 ab4 bb4 ab4@2 ab4@2 f4@2",
  J: "c4@2 eb4@2 eb4@2 eb4 f4 eb4@2 c4@2 c4@2 ab3@2", K: "ab3@2 c4 ab3 bb3@2 d4 bb3",
  L: "f3@4 ab4@2 f4@2 ab4 bb4 ab4@4 eb4@2", M: "c4@4 ab4@2 f4@2 ab4 bb4 ab4@4 eb4@2", N: "f4 eb4 f4@14",
})).s("gm_alto_sax").gain(0.3)

// other · baritone sax · "Saxophone Baryton"
const baritone_sax = note(`<
  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 E@2 F G H I F G H I F G J
>`.pickRestart({
  A: "f3@4 ab3@2 f3@2 ab3 bb3 ab3@2 ab3@2 f3@2", B: "c3@2 eb3@2 eb3@2 eb3 f3 eb3@2 c3@2 c3@2 ab2@2",
  C: "ab2@2 c3 ab2 bb2@2 d3 bb2", D: "f2@4 ab3@2 f3@2 ab3 bb3 ab3@4 eb3@2", E: "ab2", F: "ab2 ~ c3 ~ bb2 ~ d3 ~",
  G: "c3 ~ ab2 ~ bb2 ~ ab2 eb2", H: "f2 ~ ab2 ~ f2 ~ ab2 ~", I: "c3 ~ eb3 ~ c3 ~ eb3 ~", J: "f2 eb2 f2@14",
})).s("gm_baritone_sax").gain(0.3)

// drums · kick
const kick = s("bd").struct("<~@16 [x!4]!24 ~ [x!4]!11 x>").gain(0.3)

// drums · rim
const rim = s("rim").struct("<A B A B A B A B A B A B A B A B A@24 ~@3 A@9 ~>".pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@3 x!2",
})).gain(0.3)

// drums · low tom
const low_tom = s("lt").struct("<~@3 [~@6 x!2] ~@3 [~@6 x!2] [x!2 ~ x!3 ~ x]!8 ~@37>").gain(0.4)

// drums · hihat
const hihat = s("hh").struct("<~@16 [~ x ~ x ~ x ~ x]!24 ~@2 [~@7 x] [~ x ~ x ~ x ~ x]!9 ~>").gain(0.3)

stack(alto_sax, baritone_sax, kick, rim, low_tom, hihat)