Strudelify

Shifty Boo Mansion - Piano Duet

Koji Kondo

KeyB majorTempo120 bpm
0:00/0:00
// Shifty Boo Mansion - Piano Duet — Koji Kondo
// 120 bpm, 3/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5597213; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 120 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/3)

// 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.

// chords · piano
const piano = note(`<
  ~@3 A B ~@2 C D E F@2 G H I J K L M N O P Q R S T S U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN@2 AO AP AQ
  AR AS AT AU AV AW AX AY AZ ~@3 A B ~@2 C D E F@2 G H I J K L M N O P Q R S T S U V W X Y Z AA AB AC AD AE AF AG AH AI
  AJ AK AL AM AN@2 AO AP AQ AR AS AT AU AV AW AX AY AZ
>`.pickRestart({
  A: "~@8 d#5@3 b4@2 g#4@3", B: "[g#2,g#3,d#4]@15 ~", C: "~@3 g#4@2 b4@3 d#5@3 g5@5",
  D: "g#5@5 ~@3 [d#2,d#3]@3 [e2,e3]@2 [d#2,d#3]@3, [g#1,g#2] ~, ~@5 g5@5 ~ f#5@5", // D# E D# G#
  E: "[d2,d3]@3 ~@5 [d#2,d#3]@3 [d2,d3]@2 [d#2,d#3]@3, f5@11 d5@5", // D D# D D#
  F: "[[g#1,g#2]@8 [d#2,d#3]@3 [e2,e3]@3 ~@2 [d#2,d#3]@5 [g#1,g#2]@5 ~ [f#1,f#2]@5, d#5@21 ~@11]/2", // G# D# E D# G# F#
  G: "g#5@5 ~@3 [b1,b2]@3 [e2,e3]@3 ~@2, [e1,e2] ~, ~@5 g5@5 ~ f#5@5", // B E
  H: "[b1,b2]@8 [e1,e2]@3 [f#1,f#2]@3 ~@2, e5@11 b5@5", I: "[g#1,g#2]@8 [d#2,d#3]@3 [e2,e3]@3 ~@2, a#5",
  J: "[d#2,d#3]@5 [b1,b2]@5 ~ [d#1,d#2]@5, g#5", // D# B D#
  K: "g#5@5 ~@3 [d#2,d#3]@3 [e2,e3]@3 ~@2, [g#1,g#2] ~, ~@5 g5@5 ~ f#5@5", // D# E G#
  L: "[d#2,d#3]@8 [e2,e3]@3 [d#2,d#3]@2 [e2,e3]@3, f5@11 d5@5", M: "[b1,b2]@8 [d#2,d#3]@3 [e2,e3]@3 ~@2, d#5",
  N: "[d#2,d#3]@5 [b1,b2]@5 ~ [g#1,g#2]@5", O: "c#5@5 ~@3 [d#2,d#3]@3 [e2,e3,c#5]@5, [a#1,a#2] ~, ~@5 d#5@5 ~@6",
  P: "[d#2,d#3]@8 [a#1,a#2]@3 [d#1,d#2]@3 ~@2, b4@11 g4@5", Q: "[g#1,g#2]@8 [d#2,d#3]@3 [e2,e3]@3 ~@2, a#4",
  R: "[d#2,d#3]@5 [d#1,d#2]@5 ~ [f1,f2]@2 [g1,g2]@3, g#4", S: "g#3 ~@7 d#4@3 e4@2 d#4@3", T: "d4@3 ~@5 d#4@3 b3@3 ~@2",
  U: "d4@3 d#4@2 d#3@5 ~ g3@5",
  V: "g#5@5 ~@3 [d#2,d#3]@3 [e2,e3]@2 [d#2,d#3]@3, d#5@15 ~, [g#1,g#2] ~, ~@5 g5@5 ~ f#5@5", // D# E D# G#
  W: "[d2,d3]@8 [d#2,d#3]@3 [d2,d3]@2 [d#2,d#3]@3, b4@15 ~, f5@10 ~ d5@5", // D D# D D#
  X: "[g#1,g#2]@8 [d#2,d#3]@3 [e2,e3]@3 ~@2, d#5@15 ~, ~@11 g#4@5", // G# D# E
  Y: "[d#2,d#3,a#4]@5 [g#1,g#2]@5 ~ [f#1,f#2]@5, ~@5 b4@10 ~", // D#5 G# F#
  Z: "g#5@5 ~@3 [b1,b2]@3 [e2,e3]@3 ~@2, d#5@15 ~, [e1,e2] ~, ~@5 g5@5 ~ f#5@5", // B E
  AA: "[b1,b2]@8 [e1,e2]@3 [f#1,f#2]@3 ~@2, b4@15 ~, e5@10 ~ b5@5", // B E F#
  AB: "[g#1,g#2]@8 [d#2,d#3]@3 [e2,e3]@3 ~@2, [d#5,a#5]@15 ~", // G# D# E D#5
  AC: "[d#2,d#3,b4]@5 [b1,b2,c#5]@5 ~ [d#1,d#2,d5]@5, g#5@15 ~", // G#m Bsus2 D#maj7
  AD: "g#5@5 ~@3 [d#2,d#3]@3 [e2,e3]@3 ~@2, d#5@15 ~, [g#1,g#2] ~, ~@5 g5@5 ~ f#5@5", // D# E G#
  AE: "[d#2,d#3]@8 [e2,e3]@3 [d#2,d#3]@2 [e2,e3]@3, b4@15 ~, f5@10 ~ d5@5", // D# E D# E
  AF: "[b1,b2]@8 [d#2,d#3]@3 [e2,e3]@3 ~@2, d#5@15 ~, ~@11 g#4@5", // B D# E
  AG: "[d#2,d#3,a#4]@5 [b1,b2]@5 ~ [g#1,g#2]@5, ~@5 b4@10 ~", // D#5 B G#
  AH: "c#5@5 ~@3 [d#2,d#3]@3 [e2,e3,c#5]@5, g#4@15 ~, [a#1,a#2] ~, ~@5 d#5@5 ~@6", // D# C#m A#
  AI: "[d#2,d#3]@8 [a#1,a#2]@3 [d#1,d#2]@3 ~@2, [g4,b4]@11 g4@5", // D# A# D# G
  AJ: "[g#1,g#2]@8 [d#2,d#3]@3 [e2,e3]@3 ~@2, [c#4,a#4]@15 ~", // G# D# E F#
  AK: "[d#2,d#3]@5 [d#1,d#2]@5 ~ [f1,f2]@2 [g1,g2]@3, [b3,g#4]@15 ~", // D# F G E
  AL: "e5@5 ~@3 [c2,c3]@3 [e2,e3]@3 ~@2, [a1,a2] ~, ~@5 d5@5 ~ c5@5", // C E A
  AM: "b4@5 ~@3 [e2,e3]@3 e4@2 f#4@3, [a2,a3]@8 ~@3 [a1,a2]@5, ~@5 a4@5 ~@6", // E A
  AN: "[[e1,e2]@8 [b1,b2]@3 [e2,e3]@3 ~@10 [e2,e3]@3 [b1,b2]@5, g4]/2", // E B E B
  AO: "e5@5 ~@3 [d#2,d#3]@3 [e2,e3]@3 ~@2, [a1,a2] ~, ~@5 d5@5 ~ c5@5", // D# E A
  AP: "b4@5 c5@3 d#5@3 e5@2 [a1,a2,a5]@3, [a2,a3]@8 [e2,e3]@5 ~@3", // A E
  AQ: "[e1,e2]@8 [b1,b2]@3 [e2,e3]@3 ~@2, g5@11 f#5@5", AR: "[g2,g3]@8 [e2,e3]@3 [b1,b2]@3 ~@2, e5",
  AS: "[d#2,d#3,f#5]@8 [f#2,f#3,e5]@3 [a#1,a#2,d#5]@2 c#5@3", AT: "[g#1,g#2,c5]@5 [a#1,a#2,a5]@5 ~ [c2,c3,g#5]@5",
  AU: "[c#2,c#3]@5 ~@3 e5@3 d#5@2 e5@3, f#5@8 ~@3 [b1,b2]@5", AV: "[a#1,a#2,g#5]",
  AW: "~@8 [f#1,f#2]@3 [f1,f2]@2 [e1,e2]@3, [g#1,g#2] ~, ~@5 c#4@5 ~ e4@5", // F# F E G#
  AX: "[d#1,d#2]@5 ~@3 e4@3 f#4@2 a#4@3, f#4 ~, ~@5 [g#1,g#2]@5 ~ [a#1,a#2]@5", // D# G# A#
  AY: "[g#1,g#2]@8 [c#2,c#3]@3 [d#2,d#3]@3 ~@2, c#5@15 ~", AZ: "[g#2,g#3]@8 [d#2,d#3]@3 [b1,b2]@5, d#5@15 ~",
})).s("gm_piano").gain(0.4)

// chords · piano
const piano_2 = note(`<
  A B C D A B C E F@3 G H@3 I J@2 K@2 L M N@2 A B C O P G Q R S T U V W G Q R X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL
  AM AN AO AP@2 A B C D A B C E F@3 G H@3 I J@2 K@2 L M N@2 A B C O P G Q R S T U V W G Q R X Y Z AA AB AC AD AE AF AG
  AH AI AJ AK AL AM AN AO AP@2
>`.pickRestart({
  A: "[d#5,d#6]!2 ~ [g#4,g#5]!2 [d#5,d#6] ~ [d#5,d#6] [g#4,g#5]!2 ~ [d#5,d#6]!2 [d#2,d#3]@3, [g#1,g#2]@3 ~@5 [d#2,d#3]@3 [e2,e3]@3 ~@2", // D# G# D# G# D# G# D# E
  B: "[e5,e6]!2 ~ [g#4,g#5]!2 [e5,e6] ~ [e5,e6] [g#4,g#5]!2 ~ [e5,e6]!2 ~@3, [d2,d3]@3 ~@5 [d#2,d#3]@3 [b1,b2]@3 ~@2", // E G# E G# E D D# B
  C: "[f5,f6]!2 ~ [g#4,g#5]!2 [f5,f6] ~ [f5,f6] [g#4,g#5]!2 ~ [f5,f6]!2 [d#2,d#3]@3, [g#1,g#2]@3 ~@5 [d#2,d#3]@3 [e2,e3]@3 ~@2", // F G# F G# F D# G# D# …
  D: "[e5,e6]!2 ~ [g#4,g#5]!2 [d#1,d#2]@2 [e5,e6] [g#4,g#5]!2 ~ [e5,e6]!2 ~@3, [d2,d3]@3 [d#2,d#3]@2 [e5,e6] ~@10", // E G# D# E G# E D D# …
  E: "[f#5,f#6]!2 ~ [g#4,g#5]!2 [d#1,d#2]@2 [f#5,f#6] [g#4,g#5]!2 ~ [f#5,f#6]!2 ~@3, [d2,d3]@3 [d#2,d#3]@2 [f#5,f#6] ~@5 [g1,g2]@5", // F# G# D# F# G# F# D D# …
  F: "[[d#4,g#4] b3 ~ [d#4,g#4] b3 [d#4,g#4] ~ [b3,d#4] [d#4,b4] [b3,d#4] ~ [d#4,b4] [b3,d#4] [d#4,b4] ~ [b3,d#4] [d#4,b4] [b3,g#4] ~ [d#4,b4] [b3,g#4] [d#4,b4] ~ [b3,g#4] [d#4,b4] [b3,g#4] ~ [d#4,b4] [b3,g#4] [d#4,b4] ~ [b3,g#4] [f#4,b4] [b3,g#4] ~ [f#4,b4] [b3,g#4] [f#4,b4] ~ [b3,g#4] [f#4,b4] [b3,g#4] ~ [f#4,b4] [b3,g#4] [f#4,b4] ~ [b3,g#4], [g#1,g#2]@41 ~@7]/3", // G#5 B G#m B G#m B G#m B …
  G: "[d#4,b4] [b3,g#4] ~ [d#4,b4] [b3,g#4] [d#4,b4] ~ [b3,g#4] [d#4,b4] [b3,g#4] ~ [d#4,b4] [b3,g#4] [d#4,b4] ~ [b3,g#4]", // G#m E G#m E G#m E G#m E …
  H: "[d#4 [b3,d#4] ~ d#4 [b3,d#4] d#4 ~ [b3,d#4] d#4 [b3,d#4] ~ d#4 [b3,d#4] d#4 ~ [b3,d#4] e4 [b3,e4] ~ e4 [b3,e4] e4 ~ [b3,e4] e4 [b3,e4] ~ e4 [b3,e4] e4 ~ [b3,e4] [d#4,f#4] [b3,d#4] ~ [d#4,f#4] [b3,d#4] [d#4,f#4] ~ [b3,d#4] [d#4,f#4] [b3,d#4] ~ [d#4,f#4] [b3,d#4] [d#4,f#4] ~ [b3,d#4], [e1,e2]@41 ~@7]/3", // B E5 D#m B D#m B D#m B …
  I: "[d#4,g#4] [b3,d#4] ~ [d#4,g#4] [b3,d#4] [d#4,g#4] ~ [b3,d#4] [d#4,g#4] [b3,d#4] ~ [d#4,g#4] [b3,d#4] [d#4,g#4] ~ [b3,d#4]", // G#5 B G#5 B G#5 B G#5 B …
  J: "[[d#4,g#4] b3 ~ [d#4,g#4] b3 [d#4,b4] ~ [b3,g#4] [d#4,b4] [b3,g#4] ~ [d#4,b4] [b3,g#4] [d#4,b4] ~ [b3,g#4] [d#4,b4] [b3,g#4] ~ [d#4,b4] [b3,g#4] [d#4,b4] ~ [b3,g#4] [d#4,b4] [b3,g#4] ~ [d#4,b4] [b3,g#4] [d#4,b4] ~ [b3,g#4], [g#1,g#2]@15 ~]/2", // G#5 G#m E G#m E G#m E G#m …
  K: "[[f#4,b4] [b3,g#4] ~ [f#4,b4] [b3,g#4] [f#4,b4] ~ [b3,g#4] [f#4,b4] [b3,g#4] ~ [f#4,b4] [b3,g#4] [f#4,b4] ~ [b3,g#4] [d#4,b4] [b3,g#4] ~ [d#4,b4] [b3,g#4] [d#4,b4] ~ [b3,g#4] [d#4,b4] [b3,g#4] ~ [d#4,b4] [b3,g#4] [d#4,b4] ~ [b3,g#4], [b1,b2]@15 ~]/2", // B5 E B5 E B5 E B5 E …
  L: "e4 b3 ~ e4 b3 e4 ~ b3 e4 b3 ~ e4 b3 e4 ~ b3, [a#1,a#2]@15 ~", // A#
  M: "d#4 b3 ~ d#4 b3 d#4 ~ b3 d#4 b3 ~ d#4 b3 d#4 ~ b3, [d#1,d#2]@15 ~", // D#
  N: "[d#4 b3 ~ d#4 b3 d#4 ~ b3 d#4 b3 ~ d#4 b3 d#4 ~ b3 d#4 b3 ~ d#4 b3 d#4 ~ b3 d#4 b3 ~ d#4 b3 d#4 ~ b3, [g#1,g#2]@5 ~@3]/2", // G#
  O: "[f#5,f#6]!2 ~ [g#4,g#5]!2 [f#5,f#6] ~ [f#5,f#6] [g#4,g#5]!2 ~ [f#5,f#6]!2 ~@3, [d2,d3]@3 [d#2,d#3]@2 [d#1,d#2]@5 ~ [g1,g2]@5", // F# G# F# G# F# D D# G
  P: "[d#4,g#4] b3 ~ [d#4,g#4] b3 [d#4,g#4] ~ [b3,d#4] [d#4,b4] [b3,d#4] ~ [d#4,b4] [b3,d#4] [d#4,b4] ~ [b3,d#4]", // G#5 B G#m B G#m B G#m B
  Q: "[f#4,b4] [b3,g#4] ~ [f#4,b4] [b3,g#4] [f#4,b4] ~ [b3,g#4] [f#4,b4] [b3,g#4] ~ [f#4,b4] [b3,g#4] [f#4,b4] ~ [b3,g#4], g#5@5 g5@5 ~ f#5@5", // B5 E B5 E B5 E B5 E …
  R: "[d#4,b4] [b3,g#4] ~ [d#4,b4] [b3,g#4] [d#4,b4] ~ [b3,g#4] [d#4,b4] [b3,g#4] ~ [d#4,b4] [b3,g#4] [d#4,b4] ~ [b3,g#4], f5@11 e5@5", // G#m E G#m E G#m E G#m E …
  S: "d#4 [b3,d#4] ~ d#4 [b3,d#4] d#4 ~ [b3,d#4] d#4 [b3,d#4] ~ d#4 [b3,d#4] d#4 ~ [b3,d#4], d#5", // B
  T: "e4 [b3,e4] ~ e4 [b3,e4] e4 ~ [b3,e4] e4 [b3,e4] ~ e4 [b3,e4] e4 ~ [b3,e4]", // E5
  U: "[d#4,f#4] [b3,d#4] ~ [d#4,f#4] [b3,d#4] [d#4,f#4] ~ [b3,d#4] [d#4,f#4] [b3,d#4] ~ [d#4,f#4] [b3,d#4] [d#4,f#4] ~ [b3,d#4], d#5@5 e5@5 ~ f5@5", // D#m B D#m B D#m B D#m B …
  V: "[d#4,g#4] [b3,d#4] ~ [d#4,g#4] [b3,d#4] [d#4,g#4] ~ [b3,d#4] [d#4,g#4] [b3,d#4] ~ [d#4,g#4] [b3,d#4] [d#4,g#4] ~ [b3,d#4], f#5@5 g5@5 ~ g#5@5", // G#5 B G#5 B G#5 B G#5 B …
  W: "[d#4,g#4] b3 ~ [d#4,g#4] b3 [d#4,b4] ~ [b3,g#4] [d#4,b4] [b3,g#4] ~ [d#4,b4] [b3,g#4] [d#4,b4] ~ [b3,g#4], a#5", // G#5 G#m E G#m E G#m E G#m …
  X: "e4 b3 ~ e4 b3 e4 ~ b3 e4 b3 ~ e4 b3 e4 ~ b3, d#5",
  Y: "d#4 b3 ~ d#4 b3 d#4 ~ b3 d#4 b3 ~ d#4 b3 d#4 ~ b3, ~@5 d#5@5 ~ c#5@5",
  Z: "d#4 b3 ~ d#4 b3 d#4 ~ b3 d#4 b3 ~ d#4 b3 d#4 ~ b3, c#5",
  AA: "d#4 b3 ~ d#4 b3 d#4@2 b3 d#4 b3 ~ d#4 b3 b4@2 b3, b4@13 d#4 ~@2, ~@3 g#3@3 ~@2 e4@3 g#4@3 ~@2",
  AB: "c5@5 a4@5 ~ d#4@5, [c4,e4]@15 ~", AC: "a4@3 [a4,c5]@2 [a4,c5]@3 a4@3 [a4,c5]@2 [a4,c5]@3, e4@15 ~",
  AD: "a4@3 a4@2 a4@3 a4@3 [a4,b4]@2 [a4,b4]@3, e4@15 ~, b4@5 b4@5 ~@6", // Asus2
  AE: "a4@3 a4@2 a4@3 a4@3 [a4,b4]@2 [a4,b4]@3, [e4,b4]@5 [e4,g5]@10 ~, ~@5 b4@5 ~@6", // Asus2 E5 Em
  AF: "~@5 a4@5 ~ d#4@5, [c5,e5,a5]@15 ~", // Am
  AG: "[a4,c5]@3 [a4,c5]@2 a4@3 a4@3 [a4,c5]@2 [a4,c5]@3, [a5,c6]@10 ~ [a5,e6]@5, ~@5 c5@5 ~@6", // Am A5
  AH: "[a4,b4]@3 a4@2 [a4,b4]@3 a4@3 [a4,b4]@2 [a4,b4]@3, [g5,g6]@10 ~ [f#5,f#6]@5", // Asus2 G F#
  AI: "[a4,b4]@3 a4@2 [a4,b4]@3 a4@3 [a4,b4]@2 [a4,b4]@3, [e5,e6]@15 ~", // Asus2 E
  AJ: "[a#4,c#5] ~@2 [a#4,c#5] ~ [a#4,c#5] ~@2 [a#4,c#5] ~@2 [a#4,c#5] ~ [a#4,c#5] ~@2", // A#m
  AK: "[c5,d#5] ~@2 [c5,d#5] ~ [c5,d#5] ~@2 [c5,d#5] ~@2 [c5,d#5] ~ [c5,d#5] ~@2", // Cm
  AL: "[c#5,e5] ~@2 [c#5,e5] ~ [c#5,e5] ~@2 [c#5,e5] ~@2 [c#5,e5] ~ [c#5,e5] ~@2", // C#m
  AM: "[c#5,e5]@3 [c#5,e5] ~ c#5@3 c#5@3 [c#5,e5] ~ [c#5,e5] ~@2, ~@5 c#6@5 ~@6, ~@5 e5 ~@2 e5 ~@2 [d#5,d#6]@5", // C#m D#
  AN: "[g#4,c#5]@3 [g#4,c#5]@2 [g#4,c#5]@3 [g#4,c#5,d#5,d#6]@3 [g#4,c#5,c#6]@2 [g#4,c#5,e5,e6]@3, [e5,e6] ~", // C#5 G#sus4 C#5 C#m E
  AO: "[g#4,e5]@3 [g#4,e5]@2 [g#4,e5]@3 [g#4,e5,e6]@3 [g#4,d#5,e5,d#6]@2 [g#4,e5,f#5,f#6]@3, [f#5,f#6] ~", // C#m Emaj7 C#m F#
  AP: "[~ f#5@30 ~, [g#4,c#5,g#5,g#6]]/2", // C#5
})).s("gm_piano").gain(0.2)

stack(piano, piano_2)

More by Koji Kondo