Strudelify

Minecraft

Minecraft

KeyD majorTempo74 bpm
0:00/0:00
// Minecraft — Minecraft
// 74 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Transcription provider: pdmx. https://musescore.com/score/5510952; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 124 bars on a 48-step grid, each part at one level. Source detail keeps the original performance.
setcpm(74/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.

// chords · piano · "Grand Piano"
const piano = note(`<
  A@4 B@7 C@4 D@2 E@2 F@3 G@2 H@2 I@4 J@3 K@4 L M L M L M L N O P O Q R S T@2 U V W X Y Z AA AB AC AD AE AF AG@8 AH AI
  AJ@2 AK AL AM AN AO AP AO AQ@3 AR@2 AS@3 AT@8 AU@7 AV@7 AW@5 AX AY@4
>`.pickRestart({
  A: "[~@24 g2@40 ~@3 d3@40 ~@2 a2@40 ~@2 c#3@40 ~, ~@24 e2@20 ~@23 a2@20 ~@22 f#2@20 ~@22 a2@20 ~@21]/4",
  B: "[~@2 [e2,g2]@20 ~@22 [a2,d3]@20 ~@22 [f#2,a2]@20 ~@22 [a2,c#3]@20 ~@23 [e2,g2]@20 ~@22 [a2,d3]@20 ~@22 [f#2,a2]@20 ~@23 [a2,c#3]@20 ~@18, ~@2 b2@40 ~@2 f#3@40 ~@2 c#3@40 ~@2 e3@40 ~@3 b2@40 ~@2 f#3@40 ~@2 c#3@40 ~@3 e3@38]/7", // Em D5 F#m A Em D5 F#m A
  C: "[~@4 [e3,g3,b3]@20 ~ a4@10 ~ b4@10 [a2,d3,f#4]@30 ~@2 d4@5 e4@5 [a2,c#4]@30 ~@2 f#4@5 a4@5 ~ [a2,c#3,e4]@40 ~@2 [e2,g2,b3]@10 ~ d5@8, ~@22 f#2@5 ~@21]/4", // Em D A Em
  D: "[~@2 b4@10 ~ a4@10 [a2,d3,f#4]@30 ~@2 d4@5 e4@5 ~ [a2,c#4]@30, ~@33 f#2@10 ~@5]/2", // D A
  E: "[~ a4@5 ~ f#4@5 [a2,c#3,e4]@40 ~@2 [e2,g2,b3]@20 ~ a4@10 ~ b4@10]/2", // A Em
  F: "[[d3,f#3]@20 ~@12 [d3,f#5]@5 [e3,e5]@5 ~ [d3,c#5]@30 ~ [f#3,d5]@5 ~ c#5@5 [a2,c#3,e3,a4]@40 ~@2 [e2,g2,b3]@17, d5@5 ~@19]/3", // D E Dmaj7 D A Em
  G: "[~@4 b4@10 ~ a4@10 ~ [a2,d3,f#4]@30 ~ d4@5 ~ e4@5 [a2,c#4]@28, ~@17 f#2@5 ~@2]/2", // D A
  H: "[~@4 f#4@5 a4@5 [a2,c#3,e4]@40 ~@2 [e2,g2,g3]@20 ~@2 a4@10 b4@8]/2", // A Em
  I: "[~@3 [a2,d3,f#4]@30 ~ d4@5 ~ e4@5 f#2@20 ~ f#5@10 ~ f#4@5 a4@5 [a2,c#3,a3,c#4,e4]@40 ~@3 [b2,d3,f#4]@30 ~ b4@5 ~ a4@5 [g#2,b2,e4]@20, ~@15 [a2,c#3]@10 ~@39]/4", // D A Bm E A
  J: "[~ e4@10 ~ d4@10 [e2,a2,c#4]@30 ~@2 d4@5 e4@5 [d2,g2,b3]@40 ~@3 [b2,d3,f#3,d5]@30 ~ b4@5 ~]/3", // A G Bm
  K: "[a4@5 [g#2,b2,e4]@20 ~ e4@10 ~ [d3,e5]@10 [e2,a2,c#3,c#5]@20 ~ d5@10 ~ f#5@10 ~ [d2,g2,b3,b4]@80 ~@4 a2@6 e3@6 a3@6]/4", // E Dsus2 A G
  L: "b3 c#4 b3 a3 e3 d3 f#3 c#4", M: "e4@6 c#4@6 a3@17 ~ a2@6 e3@6 a3@6", N: "e4@6 c#4@6 a3@17 ~ g2@6 b2@6 d3@6",
  O: "f#3 a3 f#3 d3 b2 g2 b2 d3", P: "f#3@6 a3@23 ~ g2@6 b2@6 d3@6", Q: "f#3@6 a3@23 ~ a2@6 c#3@6 a3@6",
  R: "b3 c#4 b3 a3 e3 a2 c#3 a3", S: "b3@6 c#4@6 e4@6 a4@6 c#5@23 ~", T: "b2@6 d3@6 f#3@6 a3@6 c#4@23 ~",
  U: "g2@6 b2@6 d3@6 g3@6 a3@23 ~", V: "[a2,e3,a3]@23 ~", W: "e2 g#2 b2 e3 g#3 e3 b2 g#2",
  X: "e2@6 g#2@6 b2@6 e3@6 g#3@6 e3@6 a2@11 ~", Y: "g2 b2 d3 f#3 a3 f#3 d3 b2", Z: "a2 c#3 e3 a3 c#4 a3 e3 c#3",
  AA: "[e2,g#5]@6 [g#2,e5]@6 [b2,b4]@6 [e3,g#4]@6 [g#3,e4]@23 ~", AB: "e2@6 g#2@6 b2@6 e3@6 g#3@23 ~",
  AC: "e2@6 g#2@6 b2@6 e3@6 b2@23 ~", AD: "e2@6 g#2@6 b2@6 e3@6 e3@23 ~", AE: "a2 e3 a3 b3 c#4 b3 a3 e3", AF: "a2@23 ~",
  AG: "c3@11 ~ [e3,b3]@11 ~ g3@11 ~ [e3,b3]@11 ~", // E5
  AH: "b4 c5 d5 ~@4 b4, c4@11 ~ [b3,e4]@11 ~ g3@11 ~ [b3,e4]@11 ~, ~@18 e5@11 ~ d5@11 ~@7", // E5
  AI: "c4@11 ~ [b3,e4]@11 ~ [g3,g4]@11 ~ [b3,e4,b4]@11 ~, c5@23 ~@25", // E5 G E5
  AJ: "[b4@6 e5@6 d5@6 ~@30 a3@11 ~ [c4,e4]@11 ~ a3@11 ~ [c4,e4,b4]@11 ~, a3@11 ~ [c4,e4]@11 ~ a3@11 ~ [c4,e4]@11 ~@49, ~@18 e5@11 ~ g5@11 ~ e5@17 ~ d5@23 ~@13]/2", // C Cmaj7 C
  AK: "f5@6 ~@24 a4@6 [a3,c4,c5]@11 ~, f3@11 ~ [a3,c4]@11 ~ f3@11 ~@13, ~@6 e5@11 ~ c5@11 ~@19", // Am
  AL: "b4 ~@4 d5 e4 f4, g3@11 ~ [b3,d4]@11 ~ g3@11 ~ [b3,d4]@11 ~, ~@6 g4@11 ~ e5@11 ~@19", // Bm
  AM: "f5@6 ~@24 a4@6 [a3,c4,a5]@11 ~, f3@11 ~ [a3,c4]@11 ~ f3@11 ~@13, ~@6 e5@11 ~ c5@11 ~@19", // Am
  AN: "[g3,g5]@11 ~ e5@6 ~@12 b4@6 [b3,d4,g4]@11 ~, ~@12 [b3,d4]@11 ~ g3@11 ~@13, ~@18 d5@11 ~@19", // G Bm
  AO: "c3@11 ~ [c4,b4,g5]@11 ~ [c3,g4,e5]@11 ~ [c4,b4,g5]@11 ~", // Cmaj7 C Cmaj7
  AP: "c3@11 ~ [b3,e4,b4,g5]@11 ~ [c3,g4,e5]@11 ~ [b3,e4,b4,g5]@11 ~", // Em C Em
  AQ: "[c3@11 ~ [b3,e4,b4,g5]@11 ~ [c3,g4,e5]@11 ~ [b3,e4,b4,g5]@103 ~@5]/3", // Em C Em
  AR: "[[f#3,a#3,f#4,a#4]@17 ~ [g#3,g#4]@8 ~ [d#3,d#4]@17 [a#2,f#3,a#3,f#4]@25 ~@2 [f#3,a#3,f#4,a#4]@17 ~ [g#3,g#4]@7]/2", // F# G# D# D#m F# G#
  AS: "[~@2 [d#3,d#4]@17 [c#3,c#4]@25 ~@2 [f#3,a#3,f#4,a#4]@17 ~ [g#3,g#4]@8 ~ [d#3,d#4]@17 [f#3,f#4]@25 ~@2 [f#3,a#3,f#4,a#4]@17 ~ [g#3,g#4]@8 ~]/3", // D# C# F# G# D# F# G#
  AT: "[[d#3,d#4]@17 ~ [f#2,c#3,f#3,c#4]@25 ~ [f#3,a#3,f#4,a#4]@17 ~ [g#3,g#4]@8 ~ [d#3,d#4]@17 ~ [f#3,f#4]@25 ~ [f#3,a#3,f#4,a#4]@17 ~ [g#3,g#4]@8 ~ [d#3,d#4]@8 ~ [f#3,f#4]@8 ~ [c#3,c#4]@17 [a#2,a#3]@8 ~ [f#3,a#3,f#4,a#4]@17 ~ [c#3,c#4]@8 ~ [d#3,d#4]@17 ~ [a#2,f#3,a#3,f#4]@17 [g#3,g#4]@8 ~ [f#3,a#3,f#4,a#4]@17 ~ [g#3,g#4]@8 ~ [a#3,a#4]@17 ~ [c#4,c#5]@25 ~ [f#3,a#3,f#4,a#4]@17 ~ [c#4,c#5]@8 ~ [d#4,d#5]@17 ~ [c#4,c#5]@8 ~ [a#3,a#4]@2]/8", // D# F#5 F# G# D# F# G# D# …
  AU: "[~@6 [g#3,g#4]@8 ~ [f#3,a#3,f#4,a#4]@17 ~ [g#3,g#4]@8 ~ [a#3,a#4]@17 ~ [a#2,f#3,a#3,f#4]@25 ~ [c#3,c#4]@25 ~@2 [d#3,d#4]@17 ~ [a#2,f#3,a#3,f#4]@25 ~ [g#3,g#4]@17 ~ [a#3,a#4]@8 ~ [f#3,f#4]@42 ~@2 g4@11 ~ a4@11 b4@11 c5@11 g4@11 a4@11 b4@11 d5@11 c5@11 b4@8, ~@184 [a#2,a#3]@34 ~@10 [g2,d3]@21 ~@2 [d3,g3]@21 ~ [g2,b2]@21 ~ [d3,g3]@21 ~ [f2,d3]@19]/7", // G# F# G# A# D#m C# D# D#m …
  AV: "[~@3 c5@11 ~ d5@11 [e3,g4]@42 ~@2 g4@11 a4@11 b4@11 g4@11 e4@11 ~ d4@11 g4@11 e4@11 d4@11 e4@5 ~ d4@5 c4@11 d4@11 [a2,e3,e4]@21 ~ [e3,g3,g4]@21 ~@2 d4@11 a4@11 b4@11 d5@11 ~@11 b4@11 c5@11 d5@11, ~@3 [c3,f3]@21 ~@46 [a2,c3]@21 ~ [b2,e3]@21 ~ [f2,c3]@21 ~@2 [e2,d3]@21 ~ c3@21 ~ g2@21 ~ f2@42 ~@3 [g2,d3]@21 ~ [d3,g3]@21 ~ f2@21 ~ d3@21 ~]/7", // Em A5 Em F5 Am E5 F5 E7 …
  AW: "[[c2,c3,d3]@21 ~@2 [c3,f3]@21 ~ [e2,g2,c3]@21 ~@23 g4@11 a4@11 b4@11 ~ c5@11 d4@11 [a4,c5]@11 [b4,e5]@11 d5@11 ~@11 b4@11 c5@11 d5@11 [c2,c3]@18, ~@89 [g2,b2]@21 ~ d3@21 ~@2 f2@21 ~ d3@21 ~ c2@21 ~ c3@21 ~@19]/5", // Csus2 F5 C Am E5 C G
  AX: "~@29 d6@9 c6@10, ~@9 g3@7, ~@27 d5@11 ~@10, ~@14 g5@5 ~@5",
  AY: "[~ b5@11 g5@11 [f4,f5]@11 [e4,e5]@11 [g4,d5]@11 ~ [g4,c5]@11 [d4,g4]@11 b4@5 c5@5 ~ [a4,d5]@11 [c5,g5]@11 [c2,c3,d4,g4,b4]@42 ~@38, ~ d3@21 ~ c3@21 ~ g3@21 ~@2 [c2,c3]@21 ~ g3@21 ~@81]/4", // F E G5 C5 G5 D5 C5 G …
})).s("gm_piano").gain(0.2)

// bass · electric bass pick · "Bass Guitar"
const bass = note(`<
  A@4 B@4 C@7 D@4 E@7 F@7 G@4 ~@3 H@5 I@5 ~ J@2 K L M ~ N@2 ~ O ~@8 P Q P Q R@2 S@2 T U T U P Q P Q V@2 W@2 X@3 Y@6 Z@7
  ~@7 AA@5 AB AC@2 ~@4
>`.pickRestart({
  A: "[~@24 e2@21 ~ f#2@21 g2@21 b2@21 a2@21 g2@21 d2@41]/4",
  B: "[~@2 e2@21 f#2@21 g2@21 b2@21 a2@21 g2@21 d2@42 ~ e2@21]/4",
  C: "[f#2@21 g2@21 b2@21 a2@21 g2@21 ~ d2@42 e2@21 f#2@21 g2@21 b2@11 ~@10 a2@21 ~ g2@21 d2@42 e2@19]/7",
  D: "[~@2 f#2@21 g2@21 b2@11 ~@11 a2@21 g2@21 d2@42 e2@21 f#2@21]/4",
  E: "[g2@21 ~ b2@11 ~@10 a2@21 g2@21 d2@42 e2@21 f#2@21 ~ g2@21 b2@11 ~@10 a2@21 g2@21 d2@42 e2@21 ~ f#2@18]/7",
  F: "[~@3 g2@21 b2@11 ~@10 a2@21 g2@21 d2@42 ~ b1@42 e2@42 a1@42 g1@42 ~ b1@37]/7",
  G: "[~@5 e2@42 a1@42 ~ g1@84 ~@18]/4", H: "[~@5 g#2@6 a2@2 f#2@6 e2 f#2 g#2@6 b2 c#3@2 f#2@4 ~ c#3 e3 g3@3]/5",
  I: "[f#3 d3@2 a2 b2@9 g3@2 f#3@2 d3@2 a2 b2@7 a2@2 e2@8 ~@3]/5", J: "[d3@3 c#3 a2@2 e2 f#2@2 d3@5 b2 c#3]/2",
  K: "d3@2 c#3 d3@2 f#3@3", L: "c#3@6 b2 a2", M: "b2", N: "[g3 f#3 e3 d3 e3 d3 e3 f#3@2 e3@3 a3@4]/2",
  O: "b3 g#3 e3 b2 g#2@4", P: "c2 c3 c2 c3", Q: "c2 b2 c2 b2", R: "c2 b2 g2 b2", S: "a1 c3 a2 c3", T: "f1 a2 f2 a2",
  U: "g1 b2 g2 b2", V: "e2/2", W: "[c#2@27 f#2@44 c#2@25]/2", X: "[~@2 f#2@44 c#2@27 f#2@44 c#2@27]/3",
  Y: "[f#2@44 c#2@27 f#2@44 c#2@27 f#2@44 c#2@27 f#2@44 c#2@18 f#2@9 a#2@4]/6",
  Z: "[~@14 c#3@26 c#2@27 f#2@44 c#2@27 f#2@44 c#2@27 f#2@44 c#2@27 f#2@44 ~@12]/7",
  AA: "[~@8 b3@33 c4@6 d4@11 g3@5 e3@6 d3@11 g3@5 a3@6 b3@11 c4@3 b3@11 d4@3 b3@11 a3@5 b3@28 ~@22 g3@22 d3@22 ~ g3@5 d3@5]/5",
  AB: "~ g2@16 d2@6 a2@6 b2@11 c3@2 b2@3 d3@3", AC: "[b2@3 b2@3 d3@2 b2@3 e3@3 g3@3 b2@2 a2@6 b2@50 ~@21]/2",
})).s("gm_electric_bass_pick").gain(0.2)

stack(piano, bass)