Strudelify

PanFlute-Clean Water

Mintsoda-15

KeyG majorTempo96 bpm
0:00/0:00
// PanFlute-Clean Water — Mintsoda-15
// 96 bpm, 4/4, key G 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/6317634; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 66 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(96/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 B C D E F G H I J K L M N O P Q R I S@4 T@2 U@2 V@2 U@2 W X Y@2 Z@2 AA AB AC AD AE AF AG AH AI AJ AG AK AL AM@3 AN@2
  AO AP AQ@2 AR@2 AS AT@4
>`.pickRestart({
  A: "~@3 g3 ~@3 a3, [g1,g2] [a1,a2], ~ g3@2 ~@2 a3@2 ~, ~ [b3,d4] ~ [c#4,e4]", // G A Bm C#m
  B: "~ f#3 ~ f#3 ~@3 g3, [d2,d3] [f#2,a3,d4] g2@2, ~@5 g3@2 ~, ~@3 [b1,b2,b3,d4]", // D Bm
  C: "~@3 g3 ~ g3 ~ g3, [c2,c3]@2 [b1,b2] [g1,g2,b3,d4], ~ g3@2 ~@5, ~ [c4,e4] ~@2", // C B G C
  D: "~@3 e3 ~@3 f#3, [a1,a2] [d2,d3], ~ e3@2 ~@2 f#3@2 ~, ~ [a3,c4] ~ [a3,d4]", // A D Am D5
  E: "~@3 g3 ~@3 a3, [g1,g2] [a1,a2], ~ g3@2 ~@2 a3@2 ~, ~ [b3,g4] ~ [c#2,c#3,c#4,g4]", // G A Em C#dim
  F: "~ a3 ~ a3 ~@3 b3, [d2,d3] [f#2,f#3,d4,f#4] [g2,g3]@2, ~@5 b3@2 ~, ~@3 [b1,b2,d4,g4]", // D G
  G: "~@3 g3 ~@3 g3, [c2,c3] [b1,b2], ~ g3@2 ~@2 g3@2 ~, ~ [c4,e4,g4] ~ [g1,g2,b3,d4,g4]", // C B C G
  H: "~@3 e3 ~@3 f#3, [a1,a2] [d2,d3], ~ e3@2 ~@2 f#3@2 ~, ~ [a3,c4,e4] ~ [a3,d4]", // A D Am D5
  I: "~@3 g3 ~@3 g3, [g1,g2]!2, ~ g3@2 ~@2 g3@2 ~, ~ [b3,d4] ~ [b3,d4]", // G Bm
  J: "~@3 a3 ~@3 a3, [a1,a2]!2, ~ a3@2 ~@2 a3@2 ~, ~ [c#4,e4] ~ [c#4,g4]", // A C#m C#dim
  K: "~@3 f#3 ~@3 g3, [d2,d3] [e2,e3], ~ f#3@2 ~@2 g3@2 ~, ~ [a3,d4] ~ [c#4,e4]", // D E D5 C#m
  L: "~@3 a3 ~@3 b3, [f#2,f#3] [g2,g3], ~ a3@2 ~@2 b3@2 ~, ~ [d2,d4,f#4] ~ [d4,g4]", // F# G D G5
  M: "~@3 f#3 ~@3 e3, a2 [a1,a2], ~ f#3@2 ~@2 e3@2 ~, ~ [a3,d4] ~ [g3,c#4]", // A D5 Gdim
  N: "~@7 d3, d2!2, ~ d3@2 d3@2 d3@2 ~, ~ [f#3,a3]@2 [f#3,a3]", // F#m
  O: "~@7 d3, d2!2, ~ d3@2 d3@2 d3@2 ~, ~ [f#3,c4]@2 [f#3,c4]", // F#dim
  P: "~@3 g3 ~@3 a3, [g1,g2] [a1,a2], ~ g3@2 ~@2 a3@2 ~, ~ [b3,d4] ~ [d4,f#4]", // G A Bm D
  Q: "~@3 b3 ~@3 g3, [b1,b2] [c2,c3], ~ b3@2 ~@2 g3@2 ~, ~ [g1,g2,d4,g4] ~ [e2,e3,c4,e4,g4]", // B C G5 C
  R: "~@3 g3 ~@3 a3, [d2,d3]!2, ~ g3@2 ~@2 a3@2 ~, ~ [b3,d4] ~ [c4,d4]", // D Bm Csus2
  S: "[~@9 [g3,a5]@2 ~@10 [a3,b5]@2 ~@10 [g3,c6]@2 ~@10 [g3,d6]@2 ~@10 g3@3 a5 b5!2 ~ b5 a5!2 b5 ~ [a3,g5]@2 ~@22 g3@3, [g2,b4,b5] [a2,c5,c6] [b2,d5,d6] [c3,e5,e6] [d3,d5,b5] [d3,c5] g2!2, ~@3 g3@6 ~@2 b5@2 ~@5 [d4,f#4]@6 ~@3 g3@6 ~@2 d6@2 ~@5 [e4,g4]@6 ~@3 g3@6 ~@6 a3@5 b5@4 ~@6 [b3,d4]@12 [b3,d4]@6, ~@6 [b3,d4]@6 ~@3 a3@6 ~@2 c6@2 ~@5 [d4,g4]@6 ~@3 g3@6 ~@2 c6@2 ~@5 [d4,g4]@6 ~ a5@2 a5@2 b5@2 a5@3 ~ a5@2 ~@2 g3@6 g3@6 g3@6 ~@3, ~@11 [c4,f#4] [b4,g5]@4]/4", // Gsus2 Asus2 C5 G5 A7 G Am Bm …
  T: "[g5 a5!2 ~ a5 g5!2 a5 ~ g5 a5!2 ~ a5 g5!2 a5 ~@4 [a3,a5]@2 ~@10 [f#3,e5]@2 ~@10 g3@3, c#5@20 g5@3 g5@2 ~@10 f#5@2 ~@11, a2@7 g5 a5 a3 g5@2 a2@12 [d3,a4,f#5]@12 [e3,b4,g5]@12, ~ g5@2 a3@3 c#4@6 g5@2 a5 a3 g5 a5 [c#4,g4,f#5]@6 ~@3 f#3@6 ~@6 g3@6 ~@3, ~@3 g5@2 a5 e4@18 ~@6 [a3,d4]@6 ~@6 [b3,e4,b5]@6]/2", // A F#7 D Em F# D5 E5
  U: "[~@9 e3@3 ~@9 [f#3,g5]@2 ~@10 [b3,c#6]@2 ~@10 a3@3, [a2,c#5,a5]@2 ~ [a3,d4] [g3,d5,b5]@2 [f#3,d5,a5]@2, ~@3 e3@6 ~@3 [d3,d5,f#5]@12 ~@3 b3@6 ~@2 b5@2 ~@5 [d4,f#4,f#5]@6, ~@6 [a3,c#4,e5]@6 ~@3 f#3@6 ~@2 a5@2 ~@5 [d4,g4]@6 ~@3 a3@6 ~@3]/2", // Gmaj7 Bsus2 A D5 G D A G5
  V: "[~@9 g3@3 ~@9 [a3,d5]@2 ~@10 [f#3,e5]@2 ~@10 g3@3, [e3,b4,g5] [a2,g4,e5] [d3,a4,f#5] [e3,b4,g5], ~@3 g3@6 ~@6 a3@6 ~@2 e5@2 ~@5 [a3,d4]@6 ~@3 g3@6 ~@3, ~@6 [b3,e4,f#5]@6 ~@6 [c#4,e4]@6 ~@3 f#3@6 ~@2 f#5@2 ~@5 [b3,e4,b5]@6]/2", // D5 F#7 Em A7 D Em D5 Bsus4 …
  W: "~@3 g3 ~@3 a3, [e3,b4,g5] [a2,g4,e5], ~ g3@2 ~@2 a3@2 ~, ~ [b3,e4,f#5] ~ [c#4,e4,c#5]", // Em A7 Bsus4 C#m
  X: "~@7 f#3, [f#4,d5], d3!2, ~ f#3@2 f#3@2 f#3@2 ~, ~ [a3,d4]@2 [a3,d4]", // D D5
  Y: "[c5 d5!2 ~ d5 c5!2 d5 ~ c5 d5!2 ~ d5 c5!2 d5 ~@4 [f#3,d5]@2 ~@22 g3@3, f#4@20 c5@3 c5@2 ~@5 [b3,d4]@12 [b3,d4]@6, d3@7 c5 d5 f#3 c5@2 d3@12 d3@12 d3@12, ~ c5@2 f#3@3 a3@6 c5@2 d5 f#3 c5 d5 [a3,c4,b4]@6 ~@3 g3@6 g3@6 g3@6 ~@3, ~@3 c5@2 d5 d4@18 [g4,b4]@24]/2", // D Bm Am G
  Z: "[a4 b4!2 ~ b4 a4!2 b4 ~ a4 b4!2 ~ b4 a4!2 b4 ~@4 [d#3,b4]@2 ~@10 g#3@3 ~@9 g3@3, d#4@4 e4 [b3,e4] ~ [a#3,e4], b2@10 a4@2 b2@12 ~@3 g#3@6 ~@6 g3@6 ~@3, ~ a4@2 d#3@4 a4 b4 d#3@3 a4@2 b4 d#3@3 [f#3,b3,g#4]@6 [e3,g#4]@12 [c#3,c#4,g4]@12, ~@3 a4@2 b4 [f#3,b3]@10 a4 b4@3 a4@3 a4@2 ~@23]/2", // G#m E5 A#dim G#m7 E C#dim B5
  AA: "~@3 f#3 ~@3 e3, [d3,f#4] [g2,e4], d4 [a3,d4] b3 [g3,b3], ~ f#3@2 ~@2 e3@2 ~", // D C D5 G
  AB: "~@3 d3 ~@3 a2, [a2,d4,f#4]@4 a2@3 ~, ~ d3@2 ~@2 e3@3, ~ [f#3,a3] [c#4,e4]@2, ~@3 [g3,a3]", // D F#m C#m Gsus2
  AC: "~@3 d3 ~@3 d3, [d2,d4] c2, ~ d3@2 ~@2 d3@2 ~, ~ [f#3,a3] ~ [f#3,a3]", // D F#m
  AD: "~@3 d3 ~@3 d3, b1 a1, ~ d3@2 ~@2 d3@2 ~, ~ [g3,b3] ~ [f#3,c4]", // G F#dim
  AE: "~@3 g3 ~@3 a3, [g1,b4,g5] [a1,c5,g5], ~ g3@2 ~@2 a3@2 ~, ~ [b3,d4] ~ [c4,e4]", // G Am7 Bm C
  AF: "~@3 d3 ~@3 g3, [d2,a4,f#5] [g2,b4,g5], ~ d3@2 ~@3 [b3,d4]@2, ~@2 [a3,d4]@2 ~ g3@2 ~", // D G Bm D5
  AG: "~@3 g3 ~@3 g3, [c3,c5,g5] [b2,b4,g5], ~ g3@2 ~@2 g3@2 ~, ~ [c4,e4] ~ [b3,d4]", // C5 Em C Bm
  AH: "~@3 e3 ~@3 d3, [a2,c5,g5] [d2,a4,f#5], ~ e3@2 ~@2 d3@2 ~, ~ [a3,c4] ~ [a3,c4]", // Am7 D Am
  AI: "~@3 g3 ~@3 a3, [g2,b4,g5] [a2,c5,g5], ~ g3@2 ~@2 a3@2 ~, ~ [b3,d4] ~ [c4,e4]", // G Am7 Bm C
  AJ: "f#5 g5!2 ~ g5 f#5!2 g5 ~ [d3,e5]@2 ~@10 g3@3, a4@11 f#5@2 ~@5 [b3,e4]@6, d3@7 f#5 g5@4 ~@12, ~ f#5@2 f#3@9 [e3,b4,g5]@12, ~@3 f#5@2 g5 [a3,d4]@6 ~@3 g3@6 ~@3", // Dsus2 E5 Em D5
  AK: "~@3 e3 ~@3 d3, [a2,c5,g5] [d2,c5,f#5], ~ e3@2 ~@2 d3@2 ~, ~ [a3,c4] ~ [a3,c4]", // Am7 D7 Am
  AL: "~@7 g3, [b4,g5], g2!2, ~ g3@2 g3@2 g3@2 ~, ~ [b3,d4]@2 [b3,d4]", // Em Bm
  AM: "[~@9 [g3,a5]@2 ~@10 [a3,b5]@2 ~@10 [g3,c6]@2 ~@10 [g3,d6]@2 ~@22 g3@3, [g2,b4,b5] [a2,c5,c6] [b2,d5,d6] [c3,e5,e6] d3!2, ~@3 g3@6 ~@2 b5@2 ~@5 [d4,f#4]@6 ~@3 g3@6 ~@2 d6@2 ~@5 [e4,g4]@6 [d5,b5]@24, ~@6 [b3,d4]@6 ~@3 a3@6 ~@2 c6@2 ~@5 [d4,g4]@6 ~@3 g3@6 ~@2 c6@2 ~@2 g3@6 g3@6 g3@6 ~@3, ~@9 [d4,g4]@2 [d4,g4]]/3", // Gsus2 Asus2 C5 G5 G Am Bm C …
  AN: "[b5 [a5,b5] ~ b5 [a5,b5] a5 b5 a5 ~@2 a5 b5!2 a5 ~ b5 a5!2 b5 ~@2 [a3,g5]@2 ~@22 g3@3, c5@23 a5@2 ~@5 [b3,d4]@12 [b3,d4]@6, d3@9 b5@2 a5 d3@12 g2@12 g2@12, ~@2 a5@2 ~@2 [c4,f#4]@10 b5@2 [c4,f#4]@6 ~@3 g3@6 g3@6 g3@6 ~@3, ~@3 a3@4 b5 a5 a3@4 b5 a5 a3@4 [a5,b5]@5 [b4,g5]@24]/2", // Asus2 A7 Bm Cdim Asus2 Em
  AO: "~@3 e3 ~@3 g3, [a2,a4,g5] [b2,b4,g5], ~ e3@2 ~@3 [b3,d4]@2, ~@2 [a3,c4]@2 ~ g3@2 ~", // A7 Em Bm Am
  AP: "~@3 g3 ~@3 b2, [c3,c5,g5]@4 b2@3 ~, ~ g3@2 ~@2 g3@3, ~ [c4,e4] ~ [b3,d4,d5,d6]", // C5 C Bm
  AQ: "[~@9 [e3,b5]@2 ~@10 [g3,c6]@2 ~@10 g3@3 ~@9 b2@3, [a2,c5,c6]@4 [b2,d5,d6]@4 [c3,e5,e6]@4 b2@3 ~, ~@3 e3@6 ~@2 c6@2 ~@5 [b3,d4]@6 ~@3 g3@6 ~@6 g3@9, ~@6 [a3,c4]@6 ~@3 g3@6 ~@2 d6@2 ~@5 [c4,e4]@6 ~@6 [b3,d4,d5,d6]@6]/2", // E5 C5 Am Bm C Bm Am C …
  AR: "[~@9 [e3,b5]@2 ~@10 [g3,c6]@2 ~@10 g3@3 ~@9 g3@3, [a2,c5,c6] [b2,d5,d6] [c3,e5,e6] c#3, ~@3 e3@6 ~@2 c6@2 ~@5 [b3,d4]@6 ~@3 g3@6 ~@6 g3@6 ~@3, ~@6 [a3,c4]@6 ~@3 g3@6 ~@2 d6@2 ~@5 [c4,e4]@6 ~@6 [a#3,e4,c#5,g5]@6]/2", // E5 C5 Am Bm C Bm Am C …
  AS: "~@7 g3, [b4,g5], d3!2, ~ g3@2 g3@2 g3@2 ~, ~ [b3,d4]@2 [b3,d4]", // Em Bm
  AT: "[f#5 [f#5,g5] ~ f#5 [f#5,g5] g5 f#5 g5 ~@2 g5 f#5!2 g5 ~ f#5 g5!2 f#5 g5 ~ [d3,e5]@2 ~@49 g2@24, a4@23 f#5@2 ~@5 [b3,d4]@12 d4@48 ~@6, d3@9 f#5@2 g5 d3@7 f#5 g5@4 [b4,g5]@45 d3@27, ~@2 g5@2 ~@2 [c4,d4]@10 f#5@2 [c4,d4]@6 ~@3 g3@6 g3@6 g3@3 b3@6 g2@9 d3@3 g2@12 ~@24, ~@3 f#3@4 f#5 g5 f#3@4 f#5 g5 f#3@9 g2@12 g2@9 g3@6 d3@3 [g3,b3]@9 d3@3 [g3,b3]@30]/4", // Gmaj7 Dsus2 Bm Em Csus2 G
})).s("gm_piano").gain(0.25)

stack(piano)