Strudelify

Mandolin Minuet/Ländler in D major

Andrew D Boden

KeyD majorTempo120 bpm
0:00/0:00
// Mandolin Minuet/Ländler in D major — Andrew D Boden
// 120 bpm, 3/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/51887; 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(120/3)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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 · acoustic guitar nylon · "Mandolin"
const acoustic_guitar_nylon = note(`<
  A B C D E B F G H I J K L M N O@2 P Q R S T U V W X Y Z AA AB AC AD W AE AF AG AH AI AJ AK AL AM AN AO AP AQ AC AR AS
  AT AU AV AW AX AY AZ BA BB BC D E B F G BD P Q BE BF BG BH BI BJ BK BL BM BN
>`.pickRestart({
  A: "~@11 f#4@2 g4@3", B: "a4@5 a4@5 ~ d5@5", C: "a4@5 a4@5 ~ g#4@2 a4@3", D: "b4@3 a4@2 g4@3 f#4@3 e4@2 d4@3",
  E: "e4@5 e4@5 ~ f#4@2 g4@3", F: "a4@5 a4@5 ~ f#5@5", G: "e5@3 d5@2 c#5@3 b4@3 a4@2 g#4@3", H: "b4@5 a4@5 ~ d4@2 e4@3",
  I: "f#4@5 f#4@5 ~ f4@5", J: "f#4@5 f#4@5 ~ f4@2 f#4@3", K: "g4@3 f#4@2 e4@3 d4@3 c#4@2 b3@3",
  L: "c#4@3 b3@2 a3@3 c#4@3 d4@2 e4@3", M: "f#4@5 f#4@5 ~ g4@5", N: "f#4@8 e4@3 d4@5", O: "[e4@11 d4@10 c#4@5 ~@6]/2",
  P: "c#4@3 d4@2 e4@5 ~ g4@5", Q: "f#4@3 e4@2 d4@11", R: "d#4@3 f4@2 f#4@5 ~ a4@5", S: "g#4@5 c#5@5 ~ f5@5",
  T: "c#6@3 d6@2 b5@3 c#6@3 a5@2 b5@3", U: "g#5@3 a5@2 f#5@3 g#5@3 a5@2 f#5@3", V: "e5@3 f#5@2 g#5@3 e5@3 d5@2 b4@3",
  W: "a4@11 ~@5", X: "a#4@8 b4@3 c#5@5", Y: "d5@3 c#5@2 b4@11", Z: "c5@8 c#5@3 d#5@5", AA: "f5@11 c#5@5",
  AB: "a5@5 g#5@5 ~ f#5@5", AC: "e5@8 d5@3 c#5@5", AD: "b4@5 d5@5 ~ g#4@5", AE: "c#5@11 e5@5", AF: "a5@11 f#5@5",
  AG: "b4@8 c#5@3 d5@5", AH: "c#5", AI: "g#5@11 g#5@5", AJ: "a5@8 g#5@3 f#5@5", AK: "e5@11 g#4@5", AL: "a4",
  AM: "c#5@11 c#5@5", AN: "d5", AO: "e5@11 e5@5", AP: "f#5", AQ: "c#6@5 a5@5 ~ f#5@5", AR: "b4@11 b4@5",
  AS: "c#5@11 ~@5", AT: "c#5@5 c#5@5 ~@6", AU: "d5@3 e5@2 d5@5 ~@6", AV: "d#5@3 e5@2 d#5@5 ~@6",
  AW: "e5@3 f#5@2 e5@5 ~@6", AX: "f5@3 f#5@2 f5@5 ~ c#5@5", AY: "f#5@5 c#5@3 b4@3 a4@5",
  AZ: "g#4@3 a4@2 b4@3 c#5@3 b4@5", BA: "a4@5 ~@6 f#4@2 g4@3", BB: "a4@3 g#4@2 a4@3 d5@3 c#5@2 b4@3",
  BC: "a4@3 g#4@2 a4@3 f#4@3 g4@2 a4@3", BD: "b4@5 a4@5 ~@6", BE: "e4@3 c#5@2 b4@3 f#5@3 e5@2 d5@3", BF: "c#5@11 g4@5",
  BG: "f#4@3 a4@2 g4@3 b4@3 a4@2 c#5@3", BH: "b4@3 d5@2 c#5@3 e5@3 d5@2 b4@3", BI: "a4@3 b4@2 a4@3 g4@3 f#4@2 e4@3",
  BJ: "d4@5 ~@6 a4@2 b4@3", BK: "a4@5 ~@6 b4@2 c#5@3", BL: "b4@5 ~@6 c#5@2 d5@3",
  BM: "c#5@3 a4@2 g#4@3 a4@3 b4@2 c#5@3", BN: "d5@5 ~@11",
})).s("gm_acoustic_guitar_nylon").gain(0.45).pan(0.4)

// bass · acoustic bass
const bass = note(`<
  ~ A B C D A B E F A B C D A B E G H I J K L M N O H I J K L M N P ~@16 P Q R S T U V W A B C D A B E G H X Y P Z AA W
  B W@2 P B
>`.pickRestart({
  A: "d2@5 a2@5 ~ a1@5", B: "d2@5 d3@5 ~@6", C: "g2@5 g1@5 ~@6", D: "a1@5 a2@5 ~ c#2@5", E: "b2@5 e2@5 ~ e2@5",
  F: "a1@5 a2@5 ~@6", G: "a1@5 a2@5 ~ a2@2 g2@3", H: "f#2@5 f#1@5 ~@6", I: "b1@5 ~@6 b2@2 a2@3", J: "g#2@5 g#1@5 ~@6",
  K: "c#2@5 c#3@5 ~@6", L: "f#2@5 g#2@5 ~ a2@5", M: "b2@5 d3@5 ~ d#3@5", N: "e3@5 e2@5 ~@6", O: "a2@5 a1@5 ~ a2@2 g2@3",
  P: "a2@5 e2@5 ~ a1@5", Q: "a2@5 f#2@5 ~ a1@5", R: "a2@5 f#2@5 ~ b1@5", S: "e2@5 b1@5 ~ e1@5", T: "g#1@5 c#2@5 ~ f2@5",
  U: "f#2@8 e2@3 d2@5", V: "e2@5 e1@5 ~ e2@5", W: "a2@5 a1@5 ~@6", X: "b1@5 ~@6 b2@5", Y: "e2@5 e3@5 ~ g#2@5",
  Z: "d2@5 e2@5 ~ f#2@5", AA: "g2@5 a2@5 ~ b2@5",
})).s("gm_acoustic_bass").gain(0.3)

stack(acoustic_guitar_nylon, bass)