Strudelify

determination symphony

elements garden

KeyF majorTempo95 bpm
0:00/0:00
// determination symphony — elements garden
// 95 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/5971165; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 39 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(95/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
const piano = note("<A@2 B@2 C D E F C D E F G H I J K L I J K M N@2 O P Q@2 R@2 S@2 T@2 C D E F U>".pickRestart({
  A: "d2!8, d3",
  B: "d4!2 ~@2 d2@2 d4!2 ~@2 d2@2 d4 ~ [d2,e4]@2, d3, d2@2 d4@4 ~@2 d4@4 ~ d4@3, ~ d2 ~ d2!2 ~ d2 ~, ~@3 f4@6 f4@7", // Dsus2
  C: "~@15 d4, d4@5 g4@9 [d2,d3,c4]@2, [d2,d3]@2 [d2,d3,f4]@2 f4@3 e4 [d2,d3] e4@7, ~ e4@2 e4@3 [d2,d3]@2 f4@8, ~@4 [d2,d3]@2 d4@4 [d2,d3,c4] a3 [d2,d3,c4] a3@3", // D7 D Dm D D7
  D: "~@15 f4, d4@5 g4@5 [d2,d3,c4] a3 [d2,d3] a4 [d2,d3,g4]@2, [d2,d3]@2 [d2,d3,f4]@2 f4@3 e4 [d2,d3] e4@7, ~ e4@2 e4@3 [d2,d3]@2 f4@4 c4@4, ~@2 [d2,d3] d4@5", // D7 D G5 D Dm D
  E: "[bb1,bb2,g4]@2 [bb1,bb2,g4]@2 g4 ~@4 f4!5 [bb1,bb2,f4]@2, ~@2 [bb1,bb2]!5 ~, ~@5 g4@11, ~@7 f4@2 ~@7", // Eb Bb5 Bb
  F: "[c2,c3,a4]@2 [c2,c3,a4]@2 a4 ~@9 [c2,c3]@2, ~@4 [c2,c3]@2 [c2,c3]@2 [c2,c3]@2 [c2,c3]@2 [c2,c3,e4] c4@3, ~@5 a4@11, ~@7 g4@2 g4@7, ~@11 f4@5", // F C
  G: "[d2,d3]!2 [d2,d3]@2 d2 [d2,d3]!3 [d2,d3]@2 d2 [d2,d3]!3 [d2,d3]@2", // D
  H: "[d2,d3]!2 [d2,d3]@2 d2 [d2,d3]!3 [d2,d3]@2 d2 [d2,d3]!2 ~ [c2,c3]@2, ~@13 [d2,d3]@3", // D C D
  I: "~@4 [d2,d3]@2 ~@4 [d2,d3]@2 ~@3 c4, [d2,d3]@2 [d2,d3,d4]@2 d4@3 c4@2 c4@3 [d2,d3]@2 [d2,d3,d4]@2, ~ c4@2 c4@3 [d2,d3]@2 [d2,d3,d4]@2 d4@3 c4@2 ~", // D
  J: "~@4 [d2,d3]@2 ~@4 d4 ~@4 f4, [d2,d3]@2 [d2,d3,d4]@2 d4@3 c4@2 c4@4 c4@3, ~ c4@2 c4@3 [d2,d3]@2 [d2,d3,d4]@2 [d2,d3]@2 [d2,d3]@2 [d2,d3,d4]@2, ~@11 d4@3 ~@2", // D
  K: "[bb1,bb2]@2 ~@2 [bb1,bb2]@2 [bb1,bb2]@2 ~@2 [bb1,bb2]@2 [bb1,bb2]@2 ~ f4, [bb3,a4], ~ [bb1,bb2] ~ c4@5, ~@3 d4@5 [bb1,bb2]@2 ~@4 [bb1,bb2,d4]@2, ~@9 d4@5 ~@2", // Bb Bbmaj7 Bb
  L: "[c2,c3] ~ [c2,c3]!2 ~ [c2,c3]!3, a4, c4@3 c4@5, ~ [c2,c3] ~@2 [c2,c3] ~@3, ~@3 d4@6 d4@7", // C
  M: "[c2,c3] ~ [c2,c3]!2 ~ [c2,c3]!3, [c4,a4], ~ [c2,c3] ~ f4@5, ~@3 d4@13, ~@8 [c2,c3] e4@7", // C F C
  N: "[[bb1,bb2]@2 [bb1,bb2]@2 ~@2 c5!2 [bb1,bb2]@2 ~@6 [f1,f2]@2 [f1,f2,a4]@2 [f1,f2]@2 [f1,f2]@2 [f1,f2]@2 [f1,f2]@2 [f1,f2]@2 [f1,f2]@2, ~@2 [bb1,bb2]!2 c5@3 [bb1,bb2] ~@8, ~@5 c4@10 g4@9 [c4,g4]@8, ~@5 a4@3 ~@2 a4@6, ~@10 [bb1,bb2] g4 [bb1,bb2] f4@3 ~@4 f4@8 [a3,f4]@4]/2", // Bb F Bb C5 Bb Dm
  O: "[bb1,bb2]@2 [bb1,bb2]@2 ~@2 c5!2 [bb1,bb2]@2 ~@4 [bb1,bb2]@2, ~@4 [bb1,bb2]@2 [bb1,bb2]@2 c5@4 [bb1,bb2] f4@3, ~@5 c4@11, ~@5 a4@3, ~@10 [bb1,bb2] g4@5", // Bb
  P: "[a1,a2,g4]@2 g4 ~@5 [a1,a2]@2 [a1,a2]@2 [a1,a2]@4, ~ [a1,a2]!2 bb4@5, ~@3 g4@2 g4@11, ~@3 [a1,a2] ~@4, ~@7 a4@9", // A7 A
  Q: "[[gb2,gb3,gb4,db5]@2 ~@2 [gb2,gb3]@2 db5@2 ~ db5!3 ~@18 [db2,db3]@2, ~@2 [gb2,gb3]@2 ~@2 [gb2,gb3,d4]@9 b4@3 ~@2 b4@8 [db2,db3] e4@3, ~@3 gb4@13 ~ a4@2 a4@2 a4@4 ab4 [db2,db3] ab4@5, ~@3 db5@3 ~@2 [d2,d3]@2 [d2,d3]@2 db5@4 ~@7 ab4 [db2,db3]@2 a4@6, ~@12 [d2,d3] b4 [d2,d3,a4]@2 [e2,e3]@2 [e2,e3,b4]@2 [e2,e3]@2 [e2,e3]@10]/2", // Gb5 Gb Db Gb D Db D Db …
  R: "[[gb2,gb3,gb4,db5]@2 ~@2 [gb2,gb3]@2 ~@3 e4 ~@2 [d2,d3]@2 ~@2 [e2,e3]@2 ~@2 [e2,e3]@2 ~@2 [db2,db3]@2 b4 ~ [db2,db3]@2 [db2,db3]@2, ~@2 [gb2,gb3]@2 ~@2 [gb2,gb3,gb4,db5]@9 db5@4 db5@4 db5@9, ~@3 [gb4,db5]@3 ~@2 [d2,d3]@2 e4@6 ~@2 a4@14, ~@5 [d2,d3] ~ [d2,d3,d5] ~ [e2,e3] ~ [e2,e3,d5]@5, ~@11 e5@5 ~@10 [db2,db3] b4@5]/2", // Gb5 Gb D E Db Gb Gb5 D …
  S: "[[gb2,gb3]@2 [gb2,gb3]@2 [gb2,gb3]@2 ~@2 [d2,d3]@2 a4 ~ [d2,d3]@2 ~@2 [a2,a3]@2 ~@2 [a2,a3]@2 e5 ~ [e2,e3]@2 ~@2 [e2,e3]@2 [e2,e3,b4]@2, ~@2 gb4@12 [d2,d3,b4]@2 ~@3 e5@3 ~ e5@3 [e2,e3] db5@5, ~@4 ab4@11 db5@11 d5@6, ~@3 [gb2,gb3]@5 ~ [a2,a3] ~ [a2,a3]@5, ~@6 a4@2 b4@2 [d2,d3] a4@5 ~@2 a4@14]/2", // Gb D A E E5 G E Gb …
  T: "[[gb2,gb3,gb4,db5]@2 ~@2 [gb2,gb3]@2 ~@4 db5!2 ~@2 db5 ~@9 [db2,db3,e5]@2 [db2,db3,e5]@2 ~@2 [gb1,gb2,gb5]@2, ~ [gb2,gb3] ~ [gb2,gb3,d4]@4 [d2,d3] [e2,e3] [e2,e3,db5]!2 [e2,e3,db5]@5, ~@3 gb4@12 db5@3 ~@14, ~@3 db5@3 db5@3 e4@7 ~@12 [db2,db3,e5]@4, ~@8 [d2,d3]@2 [d2,d3]@2 [d2,d3,db5] b4@3 ~ b4@2 b4@2 b4@2 b4@9]/2", // Gb5 Gb Dbm Gb D E Dbm D …
  U: "d4!3 f4@3 d4!3 f4@3 d4!4",
})).s("gm_piano").gain(0.4)

// bass · electric bass finger · "일렉트릭 베이스"
const bass = note("<~@25 [~@8 a2!3 a2@2 e3 db3@2] ~@12 [d2!3 f2@3 d2!3 f2@3 d2!4]>")
  .s("gm_electric_bass_finger").gain(0.4)

// drums · kick
const kick = s("bd").struct("<A@2 B@2 C@2 D E C@2 D E ~@10 F@3 A ~@7 G C@2 D E ~>".pickRestart({
  A: "x", B: "x!8", C: "x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~", D: "x!4", E: "x!3 ~", F: "x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~",
  G: "~@4 x!4",
})).gain(0.25)

// drums · snare
const snare = s("sd").struct("<~@2 A@2 B@2 C D E B C D F@10 G@3 H A@3 I J@2 A@2 B@2 C D K>".pickRestart({
  A: "x!8", B: "~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x ~ x", C: "~ x ~ x ~ x ~ x", D: "~@2 x ~@3 x ~@3 x ~ x!4",
  E: "x!3 ~ x!2 ~ x!2 ~ x!2 ~ x ~ x", F: "x!4 ~ x!5 ~ x!5", G: "~ x!2 ~ x!2 ~ x ~ x!2 ~ x!2 ~ x", H: "~ x!8 ~@7",
  I: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2", J: "x ~ x ~@3 x ~@3 x ~ x ~ x!2", K: "x",
})).gain(0.25)

// drums · crash
const crash = s("cr").struct("<~@29 [~@3 x ~@4] ~@9>").gain(0.25)

stack(piano, bass, kick, snare, crash)

More by elements garden