Strudelify

Mogez!UnderSwap - When You're Kind

Andrea Maksimova

KeyG♭ majorTempo130 bpm
0:00/0:00
// Mogez!UnderSwap - When You're Kind — Andrea Maksimova
// 130 bpm, 4/4, key Gb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5828496; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 52 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(130/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 · clavinet · "Клавикорд, MIDI Out"
const clavinet = note("<A B C D E F G H I J K L M N O P Q R S T U V W X Q R S T U V W X ~@20>".pickRestart({
  A: "~@2 [b3,d4]@2 gb3 ~ [b3,d4] ~ d4@3 [a3,bb3] b3@4", B: "bb3@2 b3 ~ db4@3 [a3,bb3] [gb3,b3]@2 ~@6",
  C: "db3@2 d3 ~ f3@4 gb3 ~ d3 ~ b2 ~ gb2!2", D: "bb2@2 b2!2 [b2,db3] db3@3 b2@2 ~@6",
  E: "~@2 [b3,d4]@2 gb3 ~ [b3,d4] ~ d4@3 [g4,ab4] a4@4", F: "b4 ~ a4 ~ gb4 ~ d4 [e4,f4] [d4,gb4]@2 ~@6",
  G: "db4 ~ d4 ~ f4@4 gb4 ~ d4 [a3,bb3] b3 ~ gb3@2", H: "bb3 ~ b3 ~ db4@2 gb3 ~ [gb3,b3]@2 ~@6",
  I: "~@2 [b3,d4] ~ gb3 ~ [b3,d4] ~ d4@3 [e4,f4] gb4@4", J: "f4 ~ d4 ~ f4@4 [d4,gb4,a4]@2 ~@6",
  K: "db4 ~ d4 ~ f4@4 gb4 ~ d4 bb3 b3 ~ gb3 ~", L: "db4 ~ d4 ~ b3@4 bb3@2 ~@6",
  M: "~@2 [b3,d4]@2 gb3 ~ [b3,d4] ~ d4@3 [f4,gb4] g4@4", N: "gb4 ~ f4 ~ gb4@4 ~@2 b4 ~ gb4 ~ d4 ~",
  O: "b3 ~ bb3 ~ b3 ~ db4!2 d4@2 ~@2 b3@2 ~@2", P: "bb3 ~ b3!2 [b3,db4] db4@3 b3@4 ~@4",
  Q: "~@2 [b3,d4]@2 g3 ~ [b3,d4] eb4 e4@4 b3@4", R: "bb3 ~ b3 ~ [db4,d4] db4@3 bb3 ~ gb3 ~ bb3 c4 db4 ~",
  S: "d4@2 [db4,d4]!2 db4 ~ b3 ~ b4@4 a4 ~ g4 ~", T: "gb4@2 [e4,gb4]!2 e4 ~ g4 ~ gb4@8",
  U: "~@2 [b3,d4]@2 g3 ~ [b3,d4] ~ e4@4 b3@4", V: "bb3 ~ b3 ~ [db4,d4] db4@3 bb3 ~ gb3 ~ bb3 ~ db4!2",
  W: "d4@4 db4 ~ b3 ~ b4@3 c5 db5 ~ d5 ~", X: "db5 ~ b4 ~ gb4 ~ g4 f4 [gb4,g4] gb4@7",
})).s("gm_clavinet").gain(0.35)

// other · piano · "Расстроенное фортепиано, MIDI Out #2"
const piano = note("<A B C D A E C F A B C G H I J K ~@36>".pickRestart({
  A: "b1@2 d3 ~ gb1@2 b2 ~ b1@2 d3 ~ gb1@2 b2 ~", B: "db2@2 db3 ~ ab1@2 db3 ~ db2@2 ~@6",
  C: "d2@2 gb3 ~ a1@2 d3 ~ d2@2 gb3 ~ a1@2 d3 ~", D: "db2@2 f3 ~ ab1@2 d3 ~ [gb1,gb2,db3]@2 ~@6",
  E: "db2@2 f3 ~ ab1@2 d3 ~ [db2,bb2,db3]@2 ~@6", F: "db2@2 f3 ~ ab1@2 db3 ~ [gb1,gb2,bb2]@2 ~@6",
  G: "db2@2 f3 ~ ab1@2 db3 ~ [db2,gb2,db3]@2 ~@6", H: "b2@2 d4 ~ gb2@2 b3 ~ b2@2 d4 ~ gb2@2 b3 ~",
  I: "db3@2 f4 ~ ab2@2 db4 ~ db3@2 f4 ~ ab2@2 db4 ~", J: "d3@2 gb4 ~ a2@2 d4 ~ d3@2 gb4 ~ a2@2 d4 ~",
  K: "db3@2 db4 ~ gb2@2 bb3 ~ [b2,gb3,b3]@2 ~@6", // B5
})).s("gm_piano").gain(0.5)

// other · viola · "Альт, MIDI Out #4"
const viola = note("<~@16 A B C D E B F G A B C D E B F G ~@8 A B C D E B F G ~@4>".pickRestart({
  A: "~@2 [b3,d4] ~ g3 ~ [b3,d4] eb4 e4@4 b3@4", B: "bb3 ~ b3 ~ db4@4 bb3 ~ gb3 ~ bb3 ~ db4 ~",
  C: "d4@4 db4 ~ b3 ~ b4@4 a4 ~ g4 ~", D: "gb4@2 e4 gb4 e4 ~ g4 ~ gb4@8", E: "~@2 [b3,d4] ~ g3 ~ [b3,d4] ~ e4@4 b3@4",
  F: "d4@4 db4 ~ b3 ~ b4@3 c5 db5 ~ d5 ~", G: "db5 ~ b4 ~ gb4 ~ g4 ~ gb4@8",
})).s("gm_viola").gain(0.35)

// other · xylophone · "Ксилофон, MIDI Out #5"
const xylophone = note("<~@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 D ~@4>".pickRestart({
  A: "~@2 b5 ~ d6 ~ b5 ~@3 b5 ~ d6 ~ b5 ~", B: "~@2 b5 ~ d6 ~ b5 ~@3 bb5 ~ db6 ~ bb5 ~",
  C: "~@2 b5 ~ d6 ~ b5 ~@3 b5 ~ d6 ~ e6 ~", D: "~@2 d6 ~ gb6 ~ d6 ~@3 bb5 ~ db6 ~ bb5 ~",
})).s("gm_xylophone").gain(0.35)

// other · tremolo strings · "Виолончель, MIDI Out #7"
const tremolo_strings = note("<~@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 D ~@4>".pickRestart({
  A: "[g3,g4] [d3,d4]", B: "[gb3,gb4] [bb3,bb4]", C: "[b3,b4] [gb3,gb4]", D: "[b3,b4] [db4,db5]",
})).s("gm_tremolo_strings").gain(0.35)

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

// drums · snare
const snare = s("sd").struct("<~@16 [~ x ~ x]!32 ~@4>").gain(0.3)

// drums · hihat
const hihat = s("hh").struct("<~@16 A B A B A B A B A B A B A B A B C@8 A B A B A B A B D ~@3>".pickRestart({
  A: "x!12 ~ x!3", B: "x!4 ~ x!7 ~ x!3", C: "x ~ x!3 ~ x ~ x ~ x ~ x ~ x ~", D: "x",
})).gain(0.3)

// drums · low tom
const low_tom = s("lt").struct("<~@15 A ~@7 A ~@7 A ~@7 A ~@7 A ~@4>".pickRestart({
  A: "~@12 x!4",
})).gain(0.3)

// drums · open hat
const open_hat = s("oh").struct("<~@16 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@5>".pickRestart({
  A: "x",
})).gain(0.3)

// drums · mid tom
const mid_tom = s("mt").struct("<~@15 A ~@7 A ~@7 A ~@7 A ~@7 A ~@4>".pickRestart({
  A: "~@8 x!4 ~@4",
})).gain(0.3)

// drums · crash
const crash = s("cr").struct("<~@16 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3>".pickRestart({
  A: "x",
})).gain(0.35)

// drums · cowbell
const cowbell = s("cb").struct("<~@15 [~ x] [x!2]!36>").gain(0.3)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@15 [~@3 x] [~@2 x!2 ~@2 x ~]!33 [~ x ~ x] [~@2 x!2 ~@2 x ~] [~ x ~ x]>")
  .gain(1.26)

stack(
  clavinet, piano, viola, xylophone, tremolo_strings, kick, snare, hihat, low_tom, open_hat, mid_tom, crash, cowbell,
  cabasa
)

More by Andrea Maksimova