Strudelify

K.K. Bossa

Toru Minegishi

KeyG majorTempo130 bpm
0:00/0:00
// K.K. Bossa — Toru Minegishi
// 130 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/6290631; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 77 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, b" plays two voices at once · [...]/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.

// other · piano · "Piano, Piano"
const piano = note("<~@23 A B@4 C@2 ~ A D@4 E F@2 ~@38>".pickRestart({
  A: "~@15 f5",
  B: "[f#5@8 ~ c#5 d5@2 b4@2 d5@8 ~ a#4 b4@2 d5@2 e5@2 f#5@9 ~@2 c#5 d5@2 b4@2 d5@9 ~@2 c#5 d5@3 c#5@3]/4",
  C: "[c5@6 ~ b4 c5@2 e5@2 g5@2 f#5@4 ~@2 d5@2 a4@2 ~@4 d5@2 b4@2]/2",
  D: "[f#5@8 ~ c#5 d5@2 b4@2 d5@8 ~ a#4 b4@2 d5@2 e5@2 f#5@9 ~@2 f#5 g5@2 f#5@2 e5@9 ~@2 d#5 e5@2 g5@2 a5@2]/4",
  E: "b5@15 ~", F: "[~@5 a5 a#5@2 f#5@2 d5@2 e5@2 f#5@17 ~]/2",
})).s("gm_piano").gain(0.4)

// chords · acoustic guitar nylon · "Classical Guitar, Guitar"
const acoustic_guitar_nylon = note(`<
  A B C D A B C E A B F G H I C D A B J K L M C D A B F G H I C D A B J K L M A B N G O P Q R A B N G S T U V W X Y D A
  B F G H I C D A B J K Z AA AB@5
>`.pickRestart({
  A: "[e3,a3,d4] ~ [e3,a3,d4]@2 ~ [e3,a3,d4] ~ [e3,a3,d4]", B: "~ [e3,a3,d4]@3 [e3,a3,d4] ~ [e3,a3,d4] ~",
  C: "[e3,a3,d4] ~ [e3,a3,d4]@2 ~ [e3,a3,d4] ~ [f#3,c4,f4]", D: "~ [f#3,c4,f4]@3 [f#3,c4,f4] ~ [f#3,c4,d#4] ~",
  E: "~ [f#3,c4,d#4]@3", F: "[e3,a#3,d4] ~ [e3,a#3,d4]@2 ~ [e3,a#3,d4] ~ [e3,a#3,d4]",
  G: "~ [e3,a#3,d4]@3 [e3,a#3,d4] ~ [e3,a#3,d4] ~", H: "[g3,b3,c4] ~ [g3,b3,c4]@2 ~ [g3,b3,c4] ~ [f#3,b3,c4]",
  I: "~ [f#3,b3,c4]@3 [f#3,b3,c4] ~ [f#3,b3,c4] ~", J: "[e3,a#3,d4] ~ [e3,a#3,d4]@2 ~ [e3,a#3,d4] ~ [d3,a3,c#4]",
  K: "~ [d3,a3,c#4]@3 [d3,g#3,c4] ~ [d3,g#3,c4] ~", L: "[g3,c#4,f#4] ~ [g3,c#4,f#4]@2 ~ [g3,c#4,f#4] ~ [f#3,c4,f4]",
  M: "~ [f#3,c4,f4]@3 [f#3,c4,f4] ~ [f#3,c4,f4] ~", N: "[g3,b3,e4] ~ [g3,b3,e4]@2 ~ [g3,b3,e4] ~ [e3,a#3,d4]",
  O: "[a3,b3,d4] ~ [a3,b3,d4]@2 ~ [a3,b3,d4] ~ [g#3,c4]", P: "~ [g#3,c4]@3 [g#3,c4] ~ [g#3,c4] ~",
  Q: "[g3,a3,c4] ~ [g3,a3,c4]@2 ~ [g3,a3,c4] ~ [f#3,c4]", R: "~ [f#3,c4]@3 [f#3,c4] ~ [f#3,c4] ~",
  S: "[a#3,d4] ~ [a#3,d4]@2 ~ [a3,d4] ~ [a3,d4]", T: "~ [a3,d4]@3 [g#3,c4] ~ [g#3,c4] ~",
  U: "[g3,c#4,f#4] ~ [g3,c#4,f#4]@2 ~ [g3,c#4,f#4] ~ [g3,c#4,f#4]", V: "~ [g3,c#4,f#4]@3 [g3,c#4,f#4] ~ [g3,c#4,f#4] ~",
  W: "[g3,c4,e4] ~ [g3,c4,e4]@2 ~ [g3,c4,e4] ~ [a3,d4,e4]", X: "~ [a3,d4,e4]@3 [g#3,d4,e4] ~ [g#3,d4,e4] ~",
  Y: "[g3,c4,e4] ~ [g3,c4,e4]@2 ~ [g3,c4,e4] ~ [f#3,c4,f4]", Z: "[g3,c#4,f#4] ~ [g3,c#4,f#4]@2 ~ [g3,c#4,f#4]@3",
  AA: "[f#3,c4,f4]", AB: "[[e3,a3,d4]@4 ~@2 [e3,a3,d4]@2 ~@7 d4@61 ~@4, ~@13 e3@63 ~@4, ~@7 a3@31 ~@2]/5",
})).s("gm_acoustic_guitar_nylon").gain(0.4)

// bass · acoustic guitar nylon · "Classical Guitar, Bass"
const bass = note(`<
  ~@8 A@2 B@2 C D A E A@2 B F C D A E A@2 B@2 C D A E A@2 B F C D A@2 G H I J C D A@2 G H K F C@3 L C D A@2 B@2 C D A E
  A@2 B F C M N@5
>`.pickRestart({
  A: "g2!2", B: "c3!2", C: "a2!2", D: "d3!2", E: "g#2!2", F: "b2 e2", G: "c#3!2", H: "f#2!2", I: "b2!2", J: "e2!2",
  K: "c3 f2", L: "b2 e3", M: "d3", N: "[g2@2 ~ g2 ~@2 g2@32 ~@2]/5",
})).s("gm_acoustic_guitar_nylon").gain(0.4)

// chords · string ensemble 2 · "Strings, Strings"
const string_ensemble_2 = note(`<
  ~@24 A@2 B@2 C D E F A@2 G H I J A@2 ~@18 A@2 B@2 C D E F A@2 G H I J ~@5
>`.pickRestart({
  A: "[g2,e3,a3,d4]/2", B: "[c3,e3,a#3,d4]/2", C: "[a2,g3,b3,c4]", D: "[d3,f#3,b3,c4]", E: "[g2,e3,a3,d4]",
  F: "[f#3,c4,f4] [f#3,c4,d#4], g#2", G: "[c3,e3,a#3,d4]", H: "[b2,d3,a3,c#4] [e2,d3,g#3,c4]", I: "[a2,g3,c#4,f#4]",
  J: "[d3,f#3,c4,f4]", // D7
})).s("gm_string_ensemble_2").gain(0.4)

// drums · rim
const rim = s("rim").struct(`<
  A B A B A B A C A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A D B ~@4
>`.pickRestart({
  A: "~@2 x ~@2 x ~@2", B: "x ~@2 x ~@2 x ~", C: "x!2 ~@2", D: "x",
})).gain(0.4)

// drums · triangle
const triangle = s("triangles:30").struct(`<
  A B A B A B A C A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A ~ D ~@4
>`.pickRestart({
  A: "~ x!2 ~ x!2 ~ x", B: "x ~ x!2 ~ x ~ x", C: "x!2 ~@4 x!2", D: "~ x ~@2",
})).gain(3.46)

// drums · triangle
const triangle_2 = s("triangles:35").struct(`<
  A B A B A B A C A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A D A ~@4
>`.pickRestart({
  A: "x ~@2 x ~@2 x ~", B: "~ x ~@2 x ~ x ~", C: "~ x ~@2", D: "x",
})).gain(3.46)

stack(piano, acoustic_guitar_nylon, bass, string_ensemble_2, rim, triangle, triangle_2)

More by Toru Minegishi