Strudelify

Eine Insel mit zwei Bergen

Dolls United

KeyA majorTempo150 bpm
0:00/0:00
// Eine Insel mit zwei Bergen — Dolls United
// 150 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 141 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(150/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 · synth bass 1
const bass = note(`<
  ~@11 A B C B C B C D E F G H I F G H J K L H M K L H N B C B C B C B C B C B C B C B H F G H I F G H J K L H M K L H O
  ~@15 E F G H I F G H J K L H M K L H N B C B C B C B C B C B C B C B H F G H I F G H J K L H M K L H O ~@9
>`.pickRestart({
  A: "a2@2 ~ g#2 ~@2 e2 ~ f#1 ~ f#2 ~ f#1 ~ f#2 ~", B: "f#1 ~ f#2 ~ f#1 ~ f#2 ~ d1 ~ d2 ~ d1 ~ d2 ~",
  C: "e1 ~ e2 ~ e1 ~ e2 ~ f#1 ~ f#2 ~ f#1 ~ f#2 ~", D: "f#1 ~ f#2 ~ f#1 ~ f#2 ~@9", E: "~@8 a1 ~ a2 ~ a1 ~ a2 ~",
  F: "a1 ~ a2 ~ a1 ~ b2 ~ e1 ~ e2 ~ e1 ~ e2 ~", G: "e1 ~ e2 ~ e1 ~ d2 ~ e1 ~ e2 ~ e1 ~ e2 ~",
  H: "e1 ~ e2 ~ e1 ~ e2 ~ a1 ~ a2 ~ a1 ~ a2 ~", I: "a1 ~ a2 ~ a1 ~ g2 ~ a1 ~ a2 ~ a1 ~ a2 ~",
  J: "a1 ~ a2 ~ a1 ~ g2 ~ b1 ~ b2 ~ b1 ~ b2 ~", K: "b1 ~ b2 ~ b1 ~ b2 ~ a1 ~ a2 ~ a1 ~ a2 ~",
  L: "a1 ~ a2 ~ a1 ~ a2 ~ e1 ~ e2 ~ e1 ~ e2 ~", M: "a1 ~ a2 ~ a1 ~ a2 ~ b1 ~ b2 ~ b1 ~ b2 ~",
  N: "a1 ~@7 f#1 ~ f#2 ~ f#1 ~ f#2 ~", O: "a1 ~@15",
})).s("gm_synth_bass_1").gain(0.56)

// bass · lead 2 sawtooth
const bass_2 = note(`<
  ~@11 A B@4 C@3 D E F G H E F G I J K L M J K L N O P O P O P O P O P O P O P O Q E F G H E F G I J K L M J K L R ~@7 S
  T U V W X@2 Y D E F G H E F G I J K L M J K L N O P O P O P O P O P O P O P O Q E F G H E F G I J K L M J K L R ~@9
>`.pickRestart({
  A: "a3@2 ~ g#3@2 ~ e3 ~ c#4 ~ a4 ~ g#4 ~ a4 c#4",
  B: "[~ c#4 a4 ~ g#4 ~ a4 ~ c#4 ~ a4 ~ g#4 ~ a4 b4@2 ~ a4 ~ g#4 ~ f#4 ~ f#2 ~ f#2 ~ f#2 ~ f#2 f#2@2 ~ f#2 f#2@2 ~ f#2 ~ d2 ~ d2 ~ d2 ~ d2 e2@2 ~ e2 e2@2 ~ e2 ~ c#4 ~ a4 ~ g#4 ~ a4 c#4]/4",
  C: "[~ c#4 a4 ~ g#4 ~ a4 ~ c#4 ~ a4 ~ g#4 ~ a4 b4@2 ~ a4 ~ g#4 ~ f#4 ~ f#2 ~ f#2 ~ f#2 ~ f#2 f#2@2 ~ f#2 f#2@2 ~ f#2 ~@9]/3",
  D: "~@8 a2@2 ~ a2@2 ~ a2 ~", E: "a2@2 ~ a2@2 ~ b2 ~ e2@2 ~ e2@2 ~ e2 ~", F: "e2@2 ~ e2@2 ~ d2 ~ e2@2 ~ e2@2 ~ e2 ~",
  G: "e2@2 ~ e2@2 ~ e2 ~ a2@2 ~ a2@2 ~ a2 ~", H: "a2@2 ~ a2@2 ~ g2 ~ a2@2 ~ a2@2 ~ a2 ~",
  I: "a2@2 ~ a2@2 ~ g2 ~ b1@2 ~ b1@2 ~ b1 ~", J: "b1@2 ~ b1@2 ~ b1 ~ a1@2 ~ a1@2 ~ a1 ~",
  K: "a1@2 ~ a1@2 ~ a1 ~ e1@2 ~ e1@2 ~ e1 ~", L: "e1@2 ~ e1@2 ~ e1 ~ a1@2 ~ a1@2 ~ a1 ~",
  M: "a1@2 ~ a1@2 ~ a1 ~ b1@2 ~ b1@2 ~ b1 ~", N: "a1@2 ~@6 f#1@2 ~ f#1@2 ~ f#1 ~",
  O: "f#1@2 ~ f#1@2 ~ f#1 ~ d1@2 ~ d1@2 ~ d1 ~", P: "e1@2 ~ e1@2 ~ e1 ~ f#1@2 ~ f#1@2 ~ f#1 ~",
  Q: "e1@2 ~ e1@2 ~ e1 ~ a2@2 ~ a2@2 ~ a2 ~", R: "a1 ~@7", S: "~@8 [f#1,f#2]@2 ~ [f#1,f#2] ~@2 [f#1,f#2] ~",
  T: "~ [f#1,f#2] ~@2 [f#1,f#2] ~ [f#1,f#2] ~ [f#1,f#2]@2 ~ [f#1,f#2] ~@2 [f#1,f#2] ~", // F#
  U: "~ [f#1,f#2] ~@2 [f#1,f#2] ~ [f#1,f#2] ~ [d1,d2]@2 ~ [d1,d2] ~@2 [d1,d2] ~", // F# D
  V: "~ [d1,d2] ~@2 [d1,d2] ~ [d1,d2] ~ [d1,d2]@2 ~ [d1,d2] ~@2 [d1,d2] ~", // D
  W: "~ [d1,d2] ~@2 [d1,d2] ~ [d1,d2] ~ [e1,e2]@2 ~ [e1,e2] ~@2 [e1,e2] ~", // D E
  X: "~ [e1,e2] ~@2 [e1,e2] ~ [e1,e2] ~ [e1,e2]@2 ~ [e1,e2] ~@2 [e1,e2] ~", Y: "~ [e1,e2] ~@2 [e1,e2] ~ [e1,e2] ~@9",
})).s("gm_lead_2_sawtooth").gain(0.31).pan(0.4)

// other · synth brass 1
const synth_brass_1 = note(`<
  ~@11 A ~ B C D ~ B E ~@16 F G H G I G H G I G H G I G H G J ~@47 F G H G I G H G I G H G I G H G J ~@25
>`.pickRestart({
  A: "a4@2 ~ g#4@2 ~ e4 ~ f#4@2 ~@6", B: "~@10 [f#4,f#5] ~ [g#4,g#5] ~ [f#4,f#5] ~",
  C: "[a4,a5] ~@2 [g#4,g#5] ~@2 [f#4,f#5] ~@3 [f#4,f#5] ~ [g#4,g#5] ~ [f#4,f#5] ~", // A G# F# G# F#
  D: "[b4,b5] ~@2 [a4,a5] ~@2 [f#4,f#5] ~@9", E: "[a4,a5] ~@2 [g#4,g#5] ~@2 [f#4,f#5] ~@9",
  F: "~@8 f#4 e4 f#4 ~ f#4 ~ f#4 e4", G: "f#4 ~ f#4 ~ f#4 ~ f#4 ~ f#4 ~ f#4 ~ f#4 ~ f#4 e4",
  H: "f#4 ~ f#4 ~ f#4 ~ f#4 ~ f#4 e4 f#4 ~ f#4 ~ f#4 e4", I: "a4 ~ g#4 ~ e4 ~ f#4 ~ f#4 e4 f#4 ~ f#4 ~ f#4 e4",
  J: "a4 ~ g#4 ~ e4 ~ f#4 ~@9",
})).s("gm_synth_brass_1").gain(0.32).pan(0.6)

// chords · pad sweep
const pad_sweep = note("<~@43 A@8 ~@16 B@16 ~@24 A@8 ~@26>".pickRestart({
  A: "[~@4 c#3@16 a2@13 g#2@11 b2@8 c#3@12, ~ f#2@15]/8", B: "[~ f#3@4 d3@4 [e3,g#3,b3]@7, ~ [a3,c#4]@8 ~@7]/8",
})).s("gm_pad_sweep").gain(0.35)

// other · flute
const flute = note(`<
  ~@7 A B C D ~@8 E F G H I F G H J K L M N O P Q R ~@15 E F G H I F G H J K L M N O P Q R ~@15 E F G H I F G H J K L M
  N O P Q R ~@15 E F G H I F G H J K L M N O P Q J K L M N O P Q R ~
>`.pickRestart({
  A: "~@9 e6 c#7 ~ b6 ~ a6 b6", B: "a6 e6 ~ e6 ~@2 e6 ~ e6 ~@2 e6 b6 ~ a6 ~",
  C: "[g#6,a6] g#6 e6 ~ e6 ~ e6 ~ e6 ~@3 b6 ~ a6 ~", D: "[g#6,a6] g#6 e6 ~ e6 ~ e6 ~ e6 ~@2 e6 f#6 ~ g#6 ~",
  E: "~@10 e6 ~ e6 ~@3", F: "~@4 b6 ~@4 g#6 e6 ~ e6 ~@3", G: "e6 ~@3 b6 ~@4 g#6 e6 ~ e6 ~@3",
  H: "e6 ~@3 f#6 ~@4 a6 e6 ~ a6 ~@3", I: "~@4 c#7 ~ b6 ~@2 a6 e6 ~ e6 ~@3",
  J: "a6 ~@3 d7 ~ c#7 ~ [b6,c#7] b6 f#6!2 d7 ~ c#7 ~", K: "b6 ~ f#6!2 c#7 ~ b6 ~ [a6,b6] a6 e6 ~ c#7 ~ b6 ~",
  L: "[a6,b6] a6 e6!2 b6 ~ a6 ~ e6!5 ~@3", M: "e6!5 ~@3 e6!7 ~",
  N: "e6 ~ c#7 ~ d7 ~ c#7 ~ [b6,c#7] b6 f#6!2 d7 ~ c#7 ~", O: "b6 ~@2 f#6 c#7 ~ b6 ~ a6@2 e6 ~ c#7 ~ b6 ~",
  P: "a6 ~ e6 ~ b6 ~ a6 ~ g#6 ~ e6!3 ~ f#6 ~", Q: "g#6 ~ a6 ~ b6 ~ g#6 ~ a6 ~ a6 ~ a6 ~ a6 ~", R: "a6 ~@15",
})).s("gm_flute").gain(0.27)

// other · flute · soft notes
const flute_soft = note(`<
  ~@19 A B C D E B C D ~@24 A B C D E B C D ~@24 A B C D E B C D ~@24 A B C D E B C D ~@18
>`.pickRestart({
  A: "~@8 a6@2 ~@4 e6 ~", B: "e6 ~@2 e6 ~@2 a6 ~ [g#6,a6] ~@5 e6 ~", C: "~@6 a6 ~ [g#6,a6] ~@5 e6 ~",
  D: "~@3 e6 ~@2 g#6 ~ [a6,b6] ~@5 c#7 ~", E: "e7 ~@7 [a6,b6] ~@5 e6 ~",
})).s("gm_flute").gain(0.16)

// other · clarinet
const clarinet = note(`<
  A B C D E@2 F G@2 H I ~@8 J K L M N O L M P ~ Q R S ~ T U V ~@15 J K L M N O L M P ~ Q R S ~ T U V ~@15 J K L M N O L
  M P ~ Q R S ~ T U V ~@15 J K L M N O L M P ~ Q R S ~ T U V ~ Q R S ~ T U V ~
>`.pickRestart({
  A: "~ c4", B: "~@2 b3@9 a3@4 ~", C: "e3 ~ e3 ~ e3 ~ e3 ~", D: "e3@2 ~@2 b3@2 ~@2 a3@2 ~ g#3@3 e3 ~",
  E: "[~@2 e3@2 ~ e3 ~@3 e3@3 ~@3 b3@2 ~ a3 ~@2 g#3@3 e3 ~@2 e3 ~@2 e3 ~]/2",
  F: "~ e3 ~@2 e3 ~ e4@2 ~ d4 ~@2 c#4@2 c4 ~",
  G: "[~ c#4 ~@3 a4@2 ~@3 e4 ~@2 d4 ~ e4@2 c#4 ~ c#4 ~@2 c#4 ~ c#4 ~@3 e4 ~ e4 ~]/2",
  H: "d4@2 d4 ~ d4 ~@3 d4 ~@3 e4 ~ e4 ~", I: "e4@2 d4 ~ d4 ~@3 d4 ~@3 e4 ~ e4 ~", J: "~@7 d#4 e4@2 c#4 ~ c#4 ~ c#4 ~",
  K: "c#4 ~ c#4 ~ e4 ~ e4 ~ d4@2 b3 ~ b3 ~ d4 ~", L: "d4 ~@3 e4 ~ e4 ~ e4@2 d4 ~ d4 ~ d4 ~",
  M: "b3@2 d4 ~ e4 ~ e4 ~ e4@2 a3 ~ a3 ~ a3 ~", N: "a3@2 ~@2 e4 ~ e4 ~ e4@2 c#4 ~ c#4 ~ c#4 ~",
  O: "a3@2 c#4 ~ e4 ~ e4 ~ d4@2 b3 ~ b3 ~ d4 ~", P: "a3 ~@7", Q: "~@8 e5!2 ~@2 e5!2 ~@2",
  R: "e5!3 ~ e5!3 ~ e5!2 ~@2 e5 ~ f#5 ~", S: "e5@3 ~@13", T: "~@8 e5!3 ~ e5!2 ~@2",
  U: "e5!2 ~@2 e5!3 ~ a4 ~ a4 ~ a4 ~ a4 ~", V: "a4 ~@7",
})).s("gm_clarinet").gain(0.37)

// other · clarinet · soft notes
const clarinet_soft = note(`<
  ~@7 A B C D ~@18 E F ~@2 G H ~@26 E F ~@2 G H ~@26 E F ~@2 G H ~@26 E F ~@2 G H ~@2 E F ~@2 G H ~@2
>`.pickRestart({
  A: "~@3 e4 ~@12", B: "~@10 c#4 ~@5", C: "~@6 d4 ~@9", D: "~@6 d4 ~@3 d4 ~@5", E: "~@10 e5 ~@3 e5 ~", F: "~@10 e5 ~@5",
  G: "~@14 e5 ~", H: "~@2 e5 ~@13",
})).s("gm_clarinet").gain(0.19)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@27 A B C D E B C F G ~@23 A B C D E B C F G ~@23 A B C D E B C F G ~@23 A B C D E B C F G ~@9
>`.pickRestart({
  A: "~@4 d5 ~ c#5 ~ b4 ~ f#4 ~ d5 ~ c#5 ~", B: "b4 ~ f#4@2 c#5 ~ b4 ~ a4 ~ e4 ~ c#5 ~ b4 ~",
  C: "a4 ~ e4 ~ b4 ~ a4 ~ g#4@2 e4 ~ e4 ~ f#4 ~", D: "g#4 ~ a4 ~ b4 ~ c5 ~ c#5 ~ b4 ~ c#5 ~ d5 ~",
  E: "c#5@2 ~@2 d5 ~ c#5 ~ b4 ~ f#4 ~ d5 ~ c#5 ~", F: "g#4 ~ a4 ~ b4 ~ g#4 ~ a4 ~ a4 ~ a4 ~ a4 ~", G: "a4 ~@7",
})).s("gm_string_ensemble_1").gain(0.31)

// other · pad new age
const pad_new_age = note("<~@67 A B@2 C D E F G A B@2 C D E F G ~@58>".pickRestart({
  A: "~@2 a5 g#5", B: "f#5 c#5 a5 g#5", C: "f#5 d5 a5 g#5", D: "f#5 d5 b5 a5", E: "g#5 f#5 e5 f#5", F: "g#5 e5 g#5 f#5",
  G: "e5 f#5 g#5 ~",
})).s("gm_pad_new_age").gain(0.18).pan(0.4)

// other · tuba
const tuba = note("<~@4 A@2 B C@2 D E ~@16 F G H I J G H K L ~@23 F G M ~@79>".pickRestart({
  A: "[~@15 b4@3 a4 ~@2 [e3,g#4]@3 e4@2 ~ [g#3,e4]@3 e4 ~]/2", // E C#m
  B: "~ [b3,e4]@3 e4 ~ g#3@3 g#4 ~@2 a4@2 g#4 ~, ~@6 f#4 ~@4 a3@3 ~@2", // E5
  C: "[~ a4 ~ c#5 ~ [a3,e5]@3 ~@2 c#5 ~ b4 ~@2 [a3,a4]@2 e4 ~ e3@2 e4 ~@2 a2@2 e4 ~ b4 ~ a4 ~, c#4@3 ~@16 e4 ~@4 e4 ~@7]/2", // A5 A
  D: "[b2,g#4]@2 e4 ~ e3@2 e4 ~ [g#3,e4]@2 e4 ~ b4 ~ a4 ~, ~@4 e4 ~@11", // E C#m
  E: "[b2,g#4]@2 e4 ~ e3@2 e4 ~ g#3@2 e4 ~ f#4@2 g#4 ~, ~@4 e4 ~@3 e4 ~@7", F: "~@5 b4 ~ b4", G: "~ b4 ~ b4 ~ a4 ~ a4",
  H: "~@2 a4@2 b4 ~ a4 ~ g#4@2 f#4 ~ e4@2 f#4 ~", I: "g#4 ~ a4 ~ b4 ~ c5 ~ c#5@2 b4 ~ c#5 ~ d5 ~",
  J: "c#5@3 ~@7 b4@2 ~@2 b4@2", K: "g#4 ~ a4 ~ b4 ~ g#4 ~ a4 ~ a4 ~ a4 ~ a4 ~", L: "a4 ~@15",
  M: "~@2 a4@2 b4 ~ a4 ~ g#4@2 f#4 ~@5",
})).s("gm_tuba").gain(0.31)

// drums · kick
const kick = s("bd").struct(`<
  ~ A B A C D E F G H@2 I J K J I J K J L J K J I J K J M J K J I J K J M J K J K J K J K J K J K J K J L J K J I J K J
  M J K J I J K J H ~@7 N J K J K J K J L J K J I J K J M J K J I J K J M J K J K J K J K J K J K J K J L J K J I J K J
  M J K J I J K J M J K J I J K O P ~
>`.pickRestart({
  A: "~@11 x ~@4", B: "~@3 x", C: "~@9 x ~@6", D: "~@5 x ~@10", E: "~ x ~@9 x ~@4", F: "~@5 x ~@9 x", G: "~ x",
  H: "x!2", I: "x ~@2 x!2 ~ x ~ x ~@3 x ~@3", J: "x!4", K: "x ~ x!3 ~ x ~", L: "x!5 ~ x ~", M: "x ~ x!2", N: "~@2 x!2",
  O: "x ~ x ~ x!4", P: "x",
})).gain(0.71)

// drums · clap
const clap = s("cp").struct("<~@11 A B@23 C ~@15 A B@15 C ~@15 A B@15 C ~@15 A B@19 C ~@5>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~ x ~@2",
})).gain(0.43)

// drums · snare
const snare = s("sd").struct("<~@27 A ~@22 B C ~@7 A ~@22 B C ~@7 A ~@22 B C ~@7 A ~@17>".pickRestart({
  A: "~@2 x!6 ~@8", B: "~@8 x!8", C: "x!8 ~@8",
})).gain(0.29)

// drums · hihat
const hihat = s("hh").struct("<~@11 A B@55 C ~@7 A B@3 D@2 E F A B@55 G ~>".pickRestart({
  A: "~@2 x!2", B: "x!4", C: "x!2 ~@2", D: "x ~@3 x ~@3 x!2 ~@2 x ~@3", E: "x ~@3 x ~@3 x!2 ~@2 x!2 ~@2",
  F: "x!2 ~@2 x!2 ~@2 x ~@7", G: "x",
})).gain(0.21)

// drums · open hat
const open_hat = s("oh").struct("<~@11 A B@55 C ~@7 A B@6 C A B@55 ~@2>".pickRestart({
  A: "~@5 x ~ x", B: "~ x ~ x ~ x ~ x", C: "~ x ~ x ~@4",
})).gain(0.36)

// drums · crash
const crash = s("cr").struct(`<
  ~@11 A ~@6 B C ~@6 B D ~@7 E ~@14 B C ~@6 B D ~@7 E ~@14 B C ~@6 B D ~@7 E ~@14 B C ~@6 B D ~@7 E ~@9
>`.pickRestart({
  A: "x ~@2 x ~@2 x ~ x ~@7", B: "~@2 x!2", C: "x!5 ~@3", D: "x!2", E: "~ x",
})).gain(0.36)

// drums · tambourine
const tambourine = s("tb").struct("<~@11 A B@23 C ~@15 A B@15 C ~@15 A B@15 C ~@15 A B@15 C ~@9>".pickRestart({
  A: "~@8 x!8", B: "x!16", C: "x",
})).gain(0.36)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~ A B A C D E F G H@2 ~@24 I ~@31 I ~@31 I ~@31 I ~@9>".pickRestart({
  A: "~@11 x ~@4", B: "~@3 x", C: "~@9 x ~@6", D: "~@5 x ~@10", E: "~ x ~@9 x ~@4", F: "~@5 x ~@9 x", G: "~ x",
  H: "x!2", I: "~ x ~@2",
})).gain(2.17)

// drums · shaker
const shaker = s("sh").struct("<~@2 A@2 B C D E F G@2 ~@130>".pickRestart({
  A: "~ x ~@2", B: "~@2 x ~@12 x", C: "~@11 x ~@4", D: "~@3 x ~@4", E: "~ x ~@8 x ~@5", F: "~@3 x ~@8 x ~@3",
  G: "~ x ~ x",
})).gain(0.43)

stack(
  bass, bass_2, synth_brass_1, pad_sweep, flute, flute_soft, clarinet, clarinet_soft, string_ensemble_1, pad_new_age,
  tuba, kick, clap, snare, hihat, open_hat, crash, tambourine, cabasa, shaker
)

More by Dolls United