Strudelify

True Color

Element Gardents

KeyD majorTempo80 bpm
0:00/0:00
// True Color — Element Gardents
// 80 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "Flute" named as a pipe, played on flute (its cello patch is not one); ch 2 "Oboe" named as a reed, played on oboe (its pizzicato strings patch is not one); ch 3 "B♭ Clarinet" named as a reed, played on clarinet (its tremolo strings patch is not one)
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/5824439; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 26 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(80/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 · flute
const flute = note("<~@6 A B C@2 D@2 E F G H I J K@2 L@2 M ~@2 N>".pickRestart({
  A: "~@3 d3", B: "a2@2 d3 c#3", C: "[g2 d3 g3 b3@13]/2", D: "[g2 d3 f#3 a3@13]/2", E: "b2", F: "a2", G: "a4 b4, b2",
  H: "c#5@2 d5 c#5, a2", I: "g3", J: "~@4 d3 c#3 b2 a2", K: "[f#2@6 ~ b2@3 ~@3 e6 d6 b5, ~@11 b2@5]/2",
  L: "[e2@3 e2 e2@3 ~@2 d5 e5 a5@2 g5 f#5 g5, a5@23 ~@5 f#2@16 f#2@12 f#2@8]/2", M: "f#5@4 d5@8 a4@19 ~, g2",
  N: "[a2,d5] [a2,e5]", // D5 A5
})).s("gm_flute").gain(0.2)

// other · oboe
const oboe = note("<~@8 A B@2 C@2 D E F ~@5 G H I@2 ~>".pickRestart({
  A: "a4 b4 c#5 d5 a4 g4 f#4 g4", B: "[a4@2 d4 e4@2 f#4@2 a4@2 b4 c#5 d5 a4 g4 f#4 g4]/2",
  C: "[a4@2 d4 e4@2 f#4@2 a4@4 g4 g4@3 f#4]/2", D: "f#4@3 d4 d4@4", E: "a4 b4", F: "c#5@2 d5 c#5",
  G: "~ d5 e5 a5@2 g5 f#5 g5", H: "f#5 d5@2 a4@5", I: "[g4 f#4 g4 d5@2 e5@2 f#5@9]/2",
})).s("gm_oboe").gain(0.2)

// other · clarinet · "B♭ Clarinet"
const clarinet = note("<~@14 A B ~@7 C@2 ~>".pickRestart({
  A: "d4 e4", B: "f#4 e4 f#4 e4", C: "[g4 f#4 g4 f#4@2 g4@2 a4@9]/2",
})).s("gm_clarinet").gain(0.2)

// other · bassoon
const bassoon = note("<~@12 A B A B ~@6 C D ~@2>".pickRestart({
  A: "b2", B: "a2", C: "b3", D: "a#3@3 a3@5",
})).s("gm_bassoon").gain(0.2).pan(0.6)

// other · glockenspiel
const glockenspiel = note("<~@8 A B@2 C@2 D ~@2 E F G ~@2 H I ~@3>".pickRestart({
  A: "a6 b6 c#7 d7 a6 g6 f#6 g6", B: "[a6@2 d6 e6@2 f#6@2 a6@2 b6 c#7 d7 a6 g6 f#6 g6]/2",
  C: "[a6@2 d6 e6@2 f#6@2 a6@4 g6 g6@3 f#6]/2", D: "f#6@3 d6 d6@4", E: "d7", F: "~@4 d7 c#7 b6 a6", G: "f#6 ~",
  H: "~ d7 e7 a7@2 g7 f#7 g7", I: "f#7 d7@2 a6@5",
})).s("gm_glockenspiel").gain(0.2)

// chords · piano
const piano = note("<A@6 B C D E F G@2 H I J K@2 L@2 M@2 N O P Q>".pickRestart({
  A: "[~@27 c#5@2 ~@6 [b4,g5] ~@3 f#5 ~@3 [b4,d5] ~@2 f#2@2, g3@4 a5 g5 f#5 g5 [b4,d5,a5] d3 [g3,d5] [b3,g4,e5]@2 [g3,b4,d5,f#5] d2 a5@3 c#6 [b4,f#5,g5] a5 g5 f#5 g5 [b4,d5,a5] a3 [c#4,d5] [e4,e5]@2 [f#4,a4,c#5,f#5] a2 a5@11 a3 b3 [b4,d5]@4, b4@2 c#6@14 d5@2 e4 d6@13 ~@4 g5@12, ~ d5@11 d6@52 b4@4 [d4,b5]@60 ~@16 b4@20 f#3@28, ~ a5@3 b5@60 g3@64 b2@32 [b2,f#5]@32]/6", // Em Bm Bm7 G5 Em Gmaj7 Bm7 Dmaj7 …
  B: "~@3 e4, c#5, b2@3 b2@5, ~ d4@3, ~ [f#4,d5]", // D
  C: "~@2 [a3,e4] [a2,a3,d4], [b2,f#4,a4]@16 d5@15 ~, ~ f#3@5 ~@2, ~ g4@2 ~, ~@2 a3 b3@3 ~@2", // A5 D5 B7
  D: "~@4 d3@4 g3@4 b3@19 ~, b4, g2 ~@7, ~ [d5,a5]@31", E: "g2 b2 d3 f#3@2 d3 d2@2, [b4,d5]@19 ~ [b4,d5,f#5]@11 ~",
  F: "g2@4 d3@4 f#3@4 a3@19 ~, [f#4,a4,d5]@15 ~", // D
  G: "[a2 a3 d4 [e4,c#5,e5]@2 d3 ~@2 b2 f#3 a3 [g4,g5] ~@3 [f#4,f#5], [b4,d5]@11 ~@9 [a4,c#5,f#5]@8 [a4,a5]@15 ~ b3@11 ~ a3@8, ~@12 a1@4 b1@15 ~, ~@48 [g4,g5]@11 ~@5]/2", // C#m G F# Bm F#m A G
  H: "b2 f#3 a3 [d4,d5] ~@2 a3@2, b1@15 ~, [f#4,f#5]@11 ~ b3@11 ~@9, ~@16 [d4,d5]@15 ~", // D F# D
  I: "[b1,b2,a3,c#4,f#4]@15 ~ [d4,f#4]@8 e4@8, ~@16 [b1,b2]@15 ~", // F#m D B
  J: "b2 f#3 a3 b3 [a2,a3,c#4,e4]@2 [a1,a2,c#4,e4]@2, [b1,d4,f#4]@15 ~@17", // A Bm
  K: "[~@15 e5, a5 d6 e6 f#6 a6@5 [d5,a5] [e5,e6] f#5 d6 e5 [g3,f#5]@2, g4 f#5@13 d6@2 g4@16, ~ b4@63, ~ d5@19 e6@4 f#6@40]/2", // D5 E Gmaj7
  L: "[[f#5,a5] d6 e6 f#6 a6 e6 f#6 [b2,d6]@2 [d3,a5] [f#3,g5] e3@2 e3 b2@2, f#3@27 ~ f#5@4 ~@12 f#5@19 ~]/2", // F#m Bm D5 Gmaj7
  M: "[[e2,a4] a4 d5 [e1,e2,a4] e5 a4 f#5 a4@2 d5 e5 a5@2 g5 f#5 g5, ~@4 e3@8 ~@4 [e1,e2]@11 ~ [f#1,f#2]@15 ~ [f#1,f#2]@11 ~ f#2@8]/2", // A5 E F#
  N: "f#5 d5@2 ~@4 g2, g2@27 ~@5, ~@12 a4@19 ~",
  O: "~ [d6,g6]@3 f#6@4 g6@4 [a3,d7]@8 [a2,e7]@11 ~, a#3@11 ~@21, a#5 ~@7", P: "~@4 f#4@4 g4@4 [b4,d5]@19 ~, g2@15 ~",
  Q: "[a1,a2,b3,f#4,a4]@15 ~ [a1,a2,c#4,e4,a4]@15 ~", // B7 A
})).s("gm_piano").gain(0.2)

// other · violin
const violin = note("<~@4 A@3 B ~@2 C@2 ~@2 D E F G H I J@2 K ~ H L>".pickRestart({
  A: "a6!32", B: "a6!16 a5@16", C: "d6!32", D: "a5 b5", E: "c#6@2 d6 c#6", F: "b5", G: "~@4 d6 c#6 b5 a5", H: "f#5",
  I: "~@5 e6 d6 b5", J: "[a5@6 ~ a4@4 a5@2 g5 f#5 g5]/2", K: "f#5 d5@2 a4@5", L: "d5 c#5",
})).s("gm_violin").gain(0.15).pan(0.4)

// other · viola
const viola = note("<~@7 A B ~ C@2 D E F G H I J@2 K@2 L ~ L M>".pickRestart({
  A: "~@2 a3 e3", B: "d3 ~", C: "[a3!31 a3@17 ~@16]/2", D: "a3@3 b3 b3@3 a3", E: "a3@3 b3 a3@2 a3@2", F: "b3!2",
  G: "a3!2", H: "d4", I: "~@4 d4 c#4 b3 a3", J: "[f#3@6 ~ b3@3 ~ b3@5]/2", K: "[b3@4 b3@3 c#4@6 c#4 c#4@2]/2", L: "b3",
  M: "b3 a3",
})).s("gm_viola").gain(0.15)

stack(flute, oboe, clarinet, bassoon, glockenspiel, piano, violin, viola)