Strudelify

Sneaky Snitch

Kevin MacLeod

KeyF majorTempo87 bpm
0:00/0:00
// Sneaky Snitch — Kevin MacLeod
// 87 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/2312351; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 48 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(87/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 · oboe
const oboe = note("<~@8 A ~ A ~ A B A C ~@8 A ~ A ~ A B A C ~@8 D E F G H I J K>".pickRestart({
  A: "f5 ~@2 e5 d5 ~ f5 ~ e5 ~@2 d5 db5 ~@3", B: "~@6 bb5 ~ a5 ~ g5 ~ f5 ~ e5 ~", C: "~@4 db5 ~@3 d5 ~@7",
  D: "~@2 g4 ~ bb4 ~@3 g4 ~ bb4 ~@3 g4 ~", E: "c5 ~@5 bb4 c5 d5 ~@3 bb4 ~@3", F: "~@2 gb4 ~ g4 ~@3 gb4 ~ g4 ~@3 gb4 ~",
  G: "g4 ~@3 gb4 ~ g4 ~@3 gb4 ~ g4 ~@3", H: "~@2 bb4 ~ g4 ~@3 bb4 ~ gb4 ~@3 bb4 ~",
  I: "f4 ~@3 bb4 ~ e4 ~@3 bb4 ~ eb4 ~@3", J: "~@2 g5 ~ gb5 ~ f5 ~ e5 ~ eb5 ~ d5 ~ db5 ~",
  K: "c5 b4 ~ bb4 a4 ab4 ~ gb4 g4@2 ~@6",
})).s("gm_oboe").gain(0.3)

// other · pizzicato strings · "Violas"
const pizzicato_strings = note(`<
  A B A C A D A E A B A C A D A E F@2 G H F@2 I J A B A C A D A E A B A C A D A E F@2 G H F@2 I J
>`.pickRestart({
  A: "~ f4 ~ g4", B: "~ g4 ~ e4", C: "~ g4 [e4,a4] ~", D: "~ g4 ~@2", E: "~ a4 [f4,a4] a3", F: "~ d4 ~ d4",
  G: "~ d4!2 ~ d4!2 ~@2", H: "d4 ~@2 d4 ~ d4!2 ~", I: "~@2 d4 ~ d4!2 ~ d4", J: "d4!2 ~ g3",
})).s("gm_pizzicato_strings").gain(0.3)

// other · pizzicato strings · "Violoncellos"
const pizzicato_strings_2 = note(`<
  A B A C A D A E A B A C A D A E F@2 ~@2 F@2 ~ G A B A C A D A E A B A C A D A E F@2 ~@2 F@2 ~ G
>`.pickRestart({
  A: "~ a3 ~ bb3", B: "~ bb3 ~ a3", C: "~ bb3 db4 ~", D: "~ bb3 ~@2", E: "~ a3 d4 a3", F: "~ g3 ~ g3", G: "~@3 g3",
})).s("gm_pizzicato_strings").gain(0.3)

// bass · pizzicato strings · "Contrabasses"
const bass = note(`<
  A B A C A B D E A B A C A B D E F G H I F G H J A B A C A B D E A B A C A B D E F G H I F G H J
>`.pickRestart({
  A: "d2@2 ~ f2 e2@2 bb2 a2", B: "g2@2 ~ f2 e2@2 a1@2", C: "g2 ab2 a2 a1", D: "d2@2 ~ f2 e2@2 db2@2", E: "~ a1 d2 a1",
  F: "g2 gb2", G: "f2@2 ~ f2 e2@2 ~ e2", H: "eb2 d2 db2 d2 eb2 d2 db2 d2", I: "gb2 d2 ~ gb2 eb2 ~ gb2@2",
  J: "eb2 gb2 g2 g1",
})).s("gm_pizzicato_strings").gain(0.5)

// drums · snare
const snare = s("sd").struct("<~@8 A B A C A B D E D@2 F G H I J K A B A C A B D E ~@7 L D@2 F G H I J M>".pickRestart({
  A: "x ~@2 x!2 ~@2 x", B: "x ~@5 x ~ x ~@3 x!4", C: "x!2", D: "x ~@2 x!2 ~@3", E: "~ x!2 ~", F: "~ x!2 ~ x!2 ~ x",
  G: "x ~@3 x ~ x ~@3 x ~ x!4", H: "x ~ x ~@2 x!2 ~", I: "~@2 x ~@2 x!2 ~", J: "x!5 ~ x!2", K: "x!5 ~ x ~",
  L: "x!2 ~ x!3 ~ x!2 ~@7", M: "~@4 x!2 ~ x!2 ~@3 x ~@3",
})).gain(0.25)

stack(oboe, pizzicato_strings, pizzicato_strings_2, bass, snare)