Strudelify

Wenn die Sonne erwacht in den Bergen

Adam & Eve

KeyD majorTempo109 bpm
0:00/0:00
// Wenn die Sonne erwacht in den Bergen — Adam & Eve
// 109 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: duplicate parts dropped: ch 9 "NYLON GTR" acoustic guitar nylon (copy of ch 8 "STEEL GTR" acoustic guitar steel)
// note: Full arrangement: all 111 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(109/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.

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~@4 A B C B D E@2 B F B C B G E@2 H I J K L M N O P Q B C B G E@2 R S E@2 R T B C B D E@2 B F B C B G E@2 H I J K L M
  N O P Q B C B G E@2 R S U V W X Y Z Y AA AB@2 Y AC Y Z Y AA AB@2 AD AE AF AG AH AI AJ AK AL AM AN AO AN AP AQ@2 AR@4
>`.pickRestart({
  A: "~@5 d2 a1@3 ~@2 a1", B: "d2 ~ a1 ~", C: "g1 ~ d2 g2", D: "d2@6 ~@7 a1@5 d2@6", E: "e2 ~ a1 ~",
  F: "d2@6 ~@4 d2 ~ a#1@6 a1@6", G: "d2 ~ a1 d2", H: "d2@7 ~@5 a1@8 ~@4", I: "d2@5 ~ d2@5 ~ e2@4 ~@2 f#2@4 ~@2",
  J: "g2@6 ~@4 g2 ~ d2@6 ~@4 d2@2", K: "g2@6 ~@4 g2@2 a2@4 g#2@2 g2@2 ~@2 g2 ~", L: "d2@6 ~@4 d2@2 a1@7 ~@3 c#2@2",
  M: "d2@6 ~@4 d2@2 a1@5 ~ d2@3 ~ d#2 ~", N: "e2@3 ~@2 e2 b1@3 ~@2 d#2", O: "e2@6 ~@4 e2 ~ e2@3 ~@3 g#2@4 ~@2",
  P: "a2@6 ~@4 a2 ~ e2@6 ~@4 e2@2", Q: "a2@3 ~@3 e2@5 ~ e2@5 ~ d#2@4 ~@2", R: "d2@7 ~@5 g2@8 ~@4",
  S: "d2@5 ~@5 d2@2 d2@4 d2 ~ c#2@4 b1@2", T: "d2@5 ~@5 d2@2 d2@4 ~@2 e2@4 ~@2", U: "a1@3 ~@2 d#2 e2@3 ~@2 e2",
  V: "a1@3 ~@3 e2@3 ~@2 c#2", W: "d2@7 ~@3 d2@2 d2@6 ~@4 d2@2", X: "a#1@3 ~", Y: "d#2 ~ a#1 ~", Z: "g#1 ~ d#2 g#2",
  AA: "d#2 ~ a#1 d#2", AB: "f2 ~ a#1 ~", AC: "d#2@6 ~@4 d#2 ~ b1@6 a#1@6", AD: "d#2@7 ~@5 a#1@8 ~@4",
  AE: "d#2@5 ~ d#2@5 ~ f2@4 ~@2 g2@4 ~@2", AF: "g#2@6 ~@4 g#2 ~ d#2@6 ~@4 d#2@2",
  AG: "g#2@6 ~@4 g#2@2 a#2@4 a2@2 g#2@2 ~@2 g#2 ~", AH: "d#2@6 ~@4 d#2@2 a#1@7 ~@3 d2@2",
  AI: "d#2@6 ~@4 d#2@2 a#1@5 ~ d#2@3 ~ e2 ~", AJ: "f2@3 ~@2 f2 c2@3 ~@2 e2", AK: "f2@6 ~@4 f2 ~ f2@3 ~@3 a2@4 ~@2",
  AL: "a#2@6 ~@4 a#2 ~ f2@6 ~@4 f2@2", AM: "f#1 ~", AN: "e2 ~ b1 ~", AO: "a1 ~ e2 a2", AP: "e2@6 ~@7 b1@5 e2@6",
  AQ: "f#2 ~ b1 ~", AR: "[e2@9 ~@9 a2@15 ~@2 e2@38 ~@23]/4",
})).s("gm_acoustic_bass").gain(0.46)

// other · clarinet
const clarinet = note(`<
  ~@4 A B C D@2 E F G H B C D@2 E F G I J K L M N O P@2 B C D@2 E F G ~ E F G Q B C D@2 E F G H B C D@2 E F G I R S T M
  N U P@2 V C D@2 W X G ~@4 Y Z AA AB@2 AC AD AE AF Z AA AB@2 AC AD AE AG AH AI AJ AK AL AM AN@2 AO AP AQ@2 AR AS AT
  AU@2 ~
>`.pickRestart({
  A: "~@12 f#3@5 ~ g3@5 ~", B: "a3@12 f#3@5 ~ f#3@5 ~", C: "g3@15 ~ b3@4 a#3@3 ~",
  D: "[a3@12 f#3@18 ~@6 a3@5 ~ b3@5 ~]/2", E: "a3@11 ~ g3@5 ~ g3@6", F: "g3@12 g3@5 ~ g3@6", G: "f#3@13 ~@11",
  H: "~@12 b3@5 ~ a#3@5 ~", I: "~@18 d3@5 ~", J: "b3@11 ~ b3@5 ~ c#4@5 ~", K: "a#3@14 ~@4 d4@5 ~",
  L: "b3@6 ~@3 a3@3 f#3@5 ~ g3@5 ~", M: "a3@14 ~@4 a3@5 ~", N: "g#3@12 a3@5 ~ g#3@6", O: "f#3@6 e3@5 ~ e3@5 ~ f#3@6",
  P: "[g3@28 ~@2 b3@5 ~ b3@5 ~ a#3@5 ~]/2", Q: "~@6 b3@5 ~ b3@5 ~ a#3@5 ~", R: "b3@11 ~@4 b3@3 ~@3 d4@3",
  S: "a#3@7 ~@4 d4", T: "a#3@2 a3@4 f#3 g3", U: "f#3@9 e3@3 e3@5 ~ f#3@6", V: "a3@7 ~ f#3@2 f#3@2", W: "a3@5 ~ g3!2",
  X: "g3@12 g3@5 ~@4 g3@3", Y: "~@6 d#3@5 ~ d#3@5 ~ f3@5 ~", Z: "a#3@12 g3@5 ~ g3@5 ~", AA: "g#3@15 ~ c4@4 b3@3 ~",
  AB: "[a#3@12 g3@18 ~@6 a#3@5 ~ c4@5 ~]/2", AC: "a#3@11 ~ g#3@5 ~ g#3@6", AD: "g#3@12 g#3@5 ~ g#3@6", AE: "g3@13 ~@11",
  AF: "~@12 c4@5 ~ b3@5 ~", AG: "~@18 d#3@5 ~", AH: "c4@11 ~@4 c4@3 ~@3 d#4@3", AI: "b3@7 ~@4 d#4",
  AJ: "b3@2 a#3@4 g3 g#3", AK: "a#3@14 ~@4 a#3@5 ~", AL: "a3@12 a#3@5 ~ a3@6", AM: "g3@9 f3@3 f3@5 ~ g3@6",
  AN: "[g#3@28 ~@2 c#4@5 ~ c#4@5 ~ c4@5 ~]/2", AO: "b3@12 g#3@5 ~ g#3@5 ~", AP: "a3@15 ~ c#4@4 c4@3 ~",
  AQ: "[b3@12 g#3@18 ~@6 b3@5 ~ c#4@5 ~]/2", AR: "b3@11 ~ a3@5 ~ a3@6", AS: "a3@12 a3@5 ~ a3@6", AT: "g#3@19 ~@5",
  AU: "[~@11 g#3@19 ~@18]/2",
})).s("gm_clarinet").gain(0.2).pan(0.4)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note("<~@36 A B C D@2 ~@23 E F G H@2 I J K A B C L ~@35>".pickRestart({
  A: "~@13 f#5@4 ~ g5@6", B: "f#5@12 e5@9 ~ f#5@2", C: "g5@5 ~ g5@6 f#5@9 ~ e5@2", D: "[d5@29 ~@19]/2",
  E: "~ [d5,f#5]!2 [e5,g5]", F: "[f#5,a5]@15 [d5,f#5]@5 a4@2 c5@2, ~@20 d5 ~@3", G: "b4@4 [d5,g5] [g5,b5], d5 ~@23",
  H: "[[f#5,a5]@2 [d5,f#5]@4 [f#5,a5] [g5,b5]]/2", I: "[f#5,a5]@6 [e5,g5] [f#5,a5]", J: "[g5,b5]@4 [f#5,a5]@3 [e5,g5]",
  K: "[d5,f#5]", L: "d5@23 ~",
})).s("gm_string_ensemble_1").gain(0.26).pan(0.6)

// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
  ~@13 A@4 B@2 C@2 D@4 E@4 A@4 B@2 F@2 B@2 F@2 A@4 B@2 C@2 G H I@2 B@2 C@2 D@4 E@4 A@4 B@2 F@2 B@2 J@2 K@4 L@2 M@2 N O
  P@2 L@2 M@2 Q@4 R@2 S T U@4 V@2 W@4
>`.pickRestart({
  A: "[[f#3,a3]@22 ~@2 [g3,b3]@21 ~@3 [f#3,a3]@48, [d3,d4]]/4", B: "[e3,a3,c#4]/2", C: "[~@25 c3@23, [d3,f#3,a3,d4]]/2",
  D: "[b3@23 ~ a#3@23 ~@37 d4@12, d3, g3@47 ~ [f#3,a3]@47 ~, d4 ~@95]/4", // F#m
  E: "[e4@24 d4@23 ~@2 c#4@28 ~@19, e3@25 ~@7, [g#3,b3]@47 ~ a3@27 ~@21]/4", // G#m
  F: "[[f#3,a3] [g3,b3] [f#3,a3]@2, [d3,d4]]/2", G: "[d3,f#3,a3,d4] ~@23", H: "[g3,b3]@7 ~", I: "[f#3,a3]/2",
  J: "[[d3,f#3,a3] [a#2,f3,a#3], d4]/2", K: "[[g3,a#3]@22 ~@2 [g#3,c4]@21 ~@3 [g3,a#3]@48, [d#3,d#4]]/4",
  L: "[f3,a#3,d4]/2", M: "[~@25 c#3@23, [d#3,g3,a#3,d#4]]/2", N: "[d#3,g3,a#3,d#4] ~@23", O: "[g#3,c4]@7 ~",
  P: "[g3,a#3]/2", Q: "[c4@23 ~ b3@23 ~@37 d#4@12, d#3, g#3@47 ~ [g3,a#3]@47 ~, d#4 ~@95]/4",
  R: "[f4@24 d#4@23 ~, [f3,a3,c4]]/2", S: "~ d4@23, [f3,a#3,f4]", T: "[f#3,a#3,e4,f#4]",
  U: "[[g#3,b3]@22 ~@2 [a3,c#4]@21 ~@3 [g#3,b3]@48, [e3,e4]]/4", V: "[f#3,b3,d#4]/2",
  W: "[[g#3,b3]@18 [a3,c#4]@17 [e3,g#3,b3,e4]@38 ~@23, [e3,e4]@35 ~@61]/4", // G#m A E
})).s("gm_string_ensemble_2").gain(0.24)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  A B C D@3 E D@2 F@2 D@3 E D@2 F@2 D G H I D@2 J@2 K@2 D E D@2 F@2 L D F@2 L D@2 E D@2 F@2 D@3 E D@2 F@2 D G H I D@2
  J@2 K@2 D E D@2 F@2 L D F@2 D M N O N@2 P@2 N@3 O N@2 P@2 N Q R S N@2 T@2 U V W X W@2 Y Z@4 ~
>`.pickRestart({
  A: "~@8 f#2 g2@2 g#2",
  B: "~@4 [a3,c#4,e4]@2 [a3,c#4,e4]@4 [a3,c#4,e4] ~@5 [a3,c#4,e4]@2 [a3,c#4,e4]@4 [a3,c#4,e4] ~, a2@5 ~ [e2,a2]@5 ~, e3@6 e3 ~@11 e3@6", // A A5
  C: "~@4 [a3,c#4,e4]@2 [a3,c#4,e4]@4 [a3,c#4,e4] ~@5 [a3,c#4,e4,g4]@2 [a3,c#4,e4,g4]@4 [a3,c#4,e4,g4] ~, a2@5 ~ [e2,a2]@5 ~, e3!2 ~ e3", // A A7 A5
  D: "~@4 [a3,d4,f#4]@2 [a3,d4,f#4]@4 [a3,d4,f#4] ~@5 [a3,d4,f#4]@2 [a3,d4,f#4]@4 [a3,d4,f#4] ~, a2@5 ~ [f#2,a2]@5 ~, d3 f#3 ~ f#3", // D F#m
  E: "~@4 [g3,d4,g4]@2 [g3,d4,g4]@4 [g3,d4,g4] ~@5 [g3,d4,g4]@2 [g3,d4,g4]@4 [g3,d4,g4] ~, g2@5 ~ g2@5 ~, b2 d3!3", // G5
  F: "~@4 [a3,c#4,e4,g4]@2 [a3,c#4,e4,g4]@4 [a3,c#4,e4,g4] ~@5 [a3,c#4,e4,g4]@2 [a3,c#4,e4,g4]@4 [a3,c#4,e4,g4] ~, a2@5 ~ [e2,a2]@5 ~, e3!2 ~ e3", // A7 A5
  G: "~@4 [a3,c4,f#4]@2 [a3,c4,f#4]@4 [a3,c4,f#4] ~@5 [a3,c4,f#4]@2 [a3,c4,f#4]@4 [a3,c4,f#4] ~, a2@5 ~ [f#2,a2]@5 ~, d3 f#3 ~ f#3", // F#dim F#m
  H: "~@4 [b3,d4,g4]@2 [b3,d4,g4]@4 [b3,d4,g4] ~@5 [b3,d4,g4]@2 [b3,d4,g4]@4 [b3,d4,g4] ~, g2@5 ~ g3@3 g3@3, d3@3 g3@3 d3@5 ~", // G
  I: "~@4 [a#3,d4,g4]@2 [a#3,d4,g4]@4 [a#3,d4,g4] ~@5 [a#3,d4,g4]@2 [a#3,d4,g4]@4 [a#3,d4,g4] ~, g2@5 ~ g3@3 g3@3, d3@3 g3@3 d3@5 ~", // Gm
  J: "~@4 [g#3,d4,e4]@2 [g#3,d4,e4]@4 [g#3,d4,e4] ~@5 [g#3,d4,e4]@2 [g#3,d4,e4]@4 [g#3,d4,e4] ~, e2@5 ~ e3@3 e3@3, b2@3 e3@3 b2@5 ~", // E7
  K: "~@4 [a3,c#4,e4]@2 [a3,c#4,e4]@4 [a3,c#4,e4] ~@5 [a3,c#4,e4]@2 [a3,c#4,e4]@4 [a3,c#4,e4] ~, a2@5 ~@7, e3@3 e3@3 e3@5 ~", // A
  L: "~@4 [a3,d4,f#4]@2 [a3,d4,f#4]@4 [a3,d4,f#4] ~@5 [b3,d4,g4]@2 [b3,d4,g4]@4 [b3,d4,g4] ~, a2@5 ~ [g2,b2]@5 ~, d3 f#3 ~ g3", // D G
  M: "[f2,a#2,f3,a#3,f4]@3 ~, d4 ~@11", // A#5
  N: "~@4 [a#3,d#4,g4]@2 [a#3,d#4,g4]@4 [a#3,d#4,g4] ~@5 [a#3,d#4,g4]@2 [a#3,d#4,g4]@4 [a#3,d#4,g4] ~, a#2@5 ~ [g2,a#2]@5 ~, d#3 g3 ~ g3", // D# Gm
  O: "~@4 [g#3,d#4,g#4]@2 [g#3,d#4,g#4]@4 [g#3,d#4,g#4] ~@5 [g#3,d#4,g#4]@2 [g#3,d#4,g#4]@4 [g#3,d#4,g#4] ~, g#2@5 ~ g#2@5 ~, c3 d#3!3", // G#5
  P: "~@4 [a#3,d4,f4,g#4]@2 [a#3,d4,f4,g#4]@4 [a#3,d4,f4,g#4] ~@5 [a#3,d4,f4,g#4]@2 [a#3,d4,f4,g#4]@4 [a#3,d4,f4,g#4] ~, a#2@5 ~ [f2,a#2]@5 ~, f3!2 ~ f3", // A#7 A#5
  Q: "~@4 [a#3,c#4,g4]@2 [a#3,c#4,g4]@4 [a#3,c#4,g4] ~@5 [a#3,c#4,g4]@2 [a#3,c#4,g4]@4 [a#3,c#4,g4] ~, a#2@5 ~ [g2,a#2]@5 ~, d#3 g3 ~ g3", // Gdim Gm
  R: "~@4 [c4,d#4,g#4]@2 [c4,d#4,g#4]@4 [c4,d#4,g#4] ~@5 [c4,d#4,g#4]@2 [c4,d#4,g#4]@4 [c4,d#4,g#4] ~, g#2@5 ~ g#3@3 g#3@3, d#3@3 g#3@3 d#3@5 ~", // G#
  S: "~@4 [b3,d#4,g#4]@2 [b3,d#4,g#4]@4 [b3,d#4,g#4] ~@5 [b3,d#4,g#4]@2 [b3,d#4,g#4]@4 [b3,d#4,g#4] ~, g#2@5 ~ g#3@3 g#3@3, d#3@3 g#3@3 d#3@5 ~", // G#m
  T: "~@4 [a3,d#4,f4]@2 [a3,d#4,f4]@4 [a3,d#4,f4] ~@5 [a3,d#4,f4]@2 [a3,d#4,f4]@4 [a3,d#4,f4] ~, f2@5 ~ f3@3 f3@3, c3@3 f3@3 c3@5 ~", // F7
  U: "~@4 [a#3,d4,f4]@2 [a#3,d4,f4]@4 [a#3,d4,f4] ~@5 [a#3,d4,f4]@2 [a#3,d4,f4]@4 [a#3,d4,f4] ~, a#2@5 ~@7, f3@3 f3@3 f3@5 ~", // A#
  V: "[f#2,c#3,c#4,e4,f#4]@3 ~", // F#7
  W: "~@4 [b3,e4,g#4]@2 [b3,e4,g#4]@4 [b3,e4,g#4] ~@5 [b3,e4,g#4]@2 [b3,e4,g#4]@4 [b3,e4,g#4] ~, b2@5 ~ [g#2,b2]@5 ~, e3 g#3 ~ g#3", // E G#m
  X: "~@4 [a3,e4,a4]@2 [a3,e4,a4]@4 [a3,e4,a4] ~@5 [a3,e4,a4]@2 [a3,e4,a4]@4 [a3,e4,a4] ~, a2@5 ~ a2@5 ~, c#3 e3!3", // A5
  Y: "~@4 [b3,d#4,f#4,a4]@2 [b3,d#4,f#4,a4]@4 [b3,d#4,f#4,a4] ~@5 [b3,d#4,f#4,a4]@2 [b3,d#4,f#4,a4]@4 [b3,d#4,f#4,a4] ~, b2@5 ~ [f#2,b2]@5 ~, f#3!2 ~ f#3", // B7 B5
  Z: "[~@4 [b3,d#4,f#4,a4]@2 [b3,d#4,f#4,a4]@4 [b3,d#4,f#4,a4] ~@5 [b3,d#4,f#4,a4]@2 [b3,d#4,f#4,a4]@4 [b3,d#4,f#4,a4] ~ e4@15 ~@3 [c#4,e4]@14 ~@3 [g#3,b3,e4]@18 ~@19, b2@10 ~@2 [f#2,b2]@10 [e2,b2]@17 [a2,c#3]@18 b2@20 ~@19, f#3@6 f#3@6 ~@6 f#3@5 [e3,g#3]@16 ~ e3@16 e2@20 ~@20, ~@24 b3@3 ~@14 a3@15 ~@2 e3@20 ~@18]/4", // B7 C#m E B5 E5 A E
})).s("gm_acoustic_guitar_steel").gain(0.08).pan(0.2)

// chords · acoustic guitar steel · "+12STR GTR"
const acoustic_guitar_steel_2 = note("<A@5 ~@106>".pickRestart({
  A: "[~@12 [c#4,e4]@11 ~ [c#4,g4]@11 ~ [d4,f#4]@9 [d4,f#4]@2 ~ [d4,f#4]@12, ~@11 [a2,c#3]@7 ~@5 [a2,c#3]@7 ~@5 [a2,d3]@7 ~@5 [a2,d3]@7 ~@6, ~@23 [e3,a3]@13 ~@11 [e3,a3]@13 ~@11 [f#3,a3]@13 ~@6 [d3,a3]@3 ~@2 [f#3,a3]@13 ~@12]/5", // C#m C#dim D A D5 A5 F#m D5 …
})).s("gm_acoustic_guitar_steel").gain(0.08).pan(0.8)

// other · vibraphone
const vibraphone = note(`<
  ~@5 A B C ~@2 D C ~ A B C ~@2 D C ~@9 A B C ~@2 D C ~@5 A B C ~@2 D C ~ A B C ~@2 D C ~@9 A B C ~@2 D C ~@2 D C ~ B E
  F ~@2 G B ~ B E F ~@2 G B ~@9 E H I ~@2 J K L ~@2
>`.pickRestart({
  A: "f#4 ~@23", B: "g4 ~@23", C: "~ f#4 ~@22", D: "g4 ~@11", E: "g#4 ~@23", F: "~ g4 ~@22", G: "g#4 ~@11",
  H: "a4 ~@23", I: "~ g#4 ~@22", J: "a4 ~@11", K: "~ g#4@2 ~@21", L: "~@6 g#4 ~@5",
})).s("gm_vibraphone").gain(0.1).pan(0.6)

stack(bass, clarinet, string_ensemble_1, string_ensemble_2, acoustic_guitar_steel, acoustic_guitar_steel_2, vibraphone)