Strudelify

Isabella's Lullaby

Bettina

KeyE♭ majorTempo110 bpm
0:00/0:00
// Isabella's Lullaby — Bettina
// 110 bpm, 3/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Transcription provider: pdmx. https://musescore.com/score/5900028; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 109 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(110/3)

// 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 · orchestral harp · "Harpe"
const orchestral_harp = note(`<
  A B C B A B C D E F G E H I J K L K L M N O P Q E F G E H I J K L K L M N O P Q R S T U C O V W X Y Z AA AB AC AD AE
  AF AG AH AI AJ@3 AK@7 AL AM@8 AN@2 AO@2 AP@3 AQ@6 AR@2 AS AT@8 AU@6
>`.pickRestart({
  A: "~@5 d4@7, bb2, ~ f3@2, ~@3 bb3@5", B: "~@5 eb4@7, bb2, ~ f3@2, ~@3 bb3@5", C: "~@5 f4@7, bb2, ~ f3@2, ~@3 bb3@5",
  D: "~ eb4@11, [bb2,f3], ~ bb3@23", E: "~@5 bb4@7, bb2, ~ bb3@2, ~@3 d4@5", F: "~@5 bb4@7, bb2, ~ bb3@2, ~@3 f4@5",
  G: "~@5 ab4@7, bb2, ~ ab3@2, ~@3 d4@5", H: "~@5 bb4@7, bb2, ~ bb3@2, ~@3 db4@5",
  I: "~@5 ab4@7, ab2, ~ ab3@2, ~@3 c4@5", J: "~@5 gb4@7, gb2, ~ gb3@2, ~@3 db4@5", K: "~@5 f4@7, f2, ~ f3@2, ~@3 bb3@5",
  L: "~@5 f4@7, gb2, ~ gb3@2, ~@3 bb3@5", M: "~@5 eb4@7, f2, ~ f3@2, ~@3 c4@5", N: "~@5 f4@7, eb2, ~ gb3@2, ~@3 bb3@5",
  O: "~@5 f4@7, f2, ~ ab3@2, ~@3 c4@5", P: "~@5 ab4@7, gb2, ~ bb3@2, ~@3 db4@5", Q: "[bb3,f4]@2 eb4, f2",
  R: "~@5 d4@7, [bb1,bb2], ~ f3@2, ~@3 bb3@5", S: "~@5 eb4@7, [bb1,bb2], ~ gb3@2, ~@3 bb3@5",
  T: "~@5 f4@7, [bb1,bb2], ~ ab3@2, ~@3 bb3@5", U: "~@2 eb4, [bb1,bb2], ~ f3@2, ~ d4 ~, ~@3 bb3@5",
  V: "~ f4 gb4, [gb2,db3], ~ [bb3,db4]@2", W: "[bb3,db4,ab4]@2 f4, gb2", X: "~ db4@11, [eb2,eb3,gb3], ~ bb3@23",
  Y: "~@5 eb4@7, [f2,f3], ~ ab3@2, ~@3 c4@5", Z: "~@5 f4@7, [gb2,gb3], ~ bb3@2, ~@3 db4@5",
  AA: "ab4 bb4 c5, [f2,f3,f4]", AB: "~@5 ab4@7, [eb2,eb3], ~ db4@2, ~@3 eb4@5",
  AC: "~@5 c5@7, [f2,f3], ~ eb4@2, ~@3 ab4@5", AD: "~ bb5@11, [gb2,gb3,bb4], ~ db5@23",
  AE: "~@5 eb5@3 [g4,db5]@4, [g2,g3], ~ g4 ~, ~@9 bb4@7 ~@8", AF: "~@5 a4@7, [f2,f3], ~ c4@2, ~@3 f4@5",
  AG: "~ bb4@11, [f2,f3,c4], ~ f4@23", AH: "~ f6@11, f4, ~ f5@23",
  AI: "f4 gb4 g4 ab4 [a4,bb4] b4 c5 db5 d5 eb5 e5 [f5,gb5] g5 ab5@11, [f2,f3]", // Bbmaj7 Gbmaj7 F
  AJ: "[~@7 f4@4 bb4@4 ~ f5@4 bb4@4 f4@4 ~@5 ab4@4 ~ c5@4 ab5@4 c5@4 ~ ab4@4 gb2@4 ~ db3@4 f3@4 ab3@4, ~@2 [g2,g3]@26 ~ [ab2,ab3]@26 eb5@17]/3", // G Ab
  AK: "[~ [f3,db5]@4 [db3,c5]@4 ~ gb2@4 db3@4 [f3,db5]@4 ~ [bb3,bb4]@4 f3@4 ~ db3@4 ~@4 ab2@4 ~ f3@4 c3@4 ~ f3@4 c3@4 ~@5 ab2@4 db3@4 ~ f3@4 db3@4 bb2@4 ~@5 bb2@4 ~ db3@4 f3@4 db3@4 ~ bb2@4 ~@5 bb2@4 c3@4 f3@4 ~ c3@4 bb2@4 ~ gb2@4 db3@4 gb3@4 ~ bb3@4 gb3@4 ~ db3@4, ~@10 bb4@9 ~@8 f5@9 eb4@26 f4@26 ~ gb4@18 ~@8 f2@4 ~@49, ~@36 f2@4 ~@22 f2@4 ~@23 g2@4 ~@13 [f4,c5]@9 f4@26 ~@9 f5@9 bb5@9, ~@37 bb4@25 ~ c5@25 ~@2 db5@17 ~@9 c5@25 ~ bb4@9 ~@17]/7", // Db Dbmaj7 Db Bb F5
  AL: "ab2@4 eb3@4 ~ ab3@4 c4@4 ~ [ab3,c5]@4 eb3@2, ab5@3 f5@3 ~@2", // Ab
  AM: "[~@2 f2@4 ~ bb2@4 db3@4 ~ gb3@4 db3@4 bb2@4 ~ gb2@4 db3@4 ~@5 eb5@4 db5@9 gb2@4 ~ db3@4 g3@4 bb3@4 ~ g3@4 db3@4 ~ gb2@8 db3@9 [f3,ab5]@9 ~@4 db3@4 ~ eb3@4 f3@4 ~ eb3@4 db3@4 ~@5 c3@4 eb3@4 ~ f3@4 eb3@4 c3@4 ~@5 eb3@4 ~ f3@4 bb3@4 f3@4 ~ eb3@4 [gb2,d5,d6]@5, ~@2 bb4@26 ~ ab4@26 gb4@26 ~ ab4@26 bb4@26 f4@26 ~@2 db6@25 ~@5, ~@2 db5@9 eb5@9 gb5@9 f5@13 ~@13 db5@18 f5@9 eb5@18 ~@9 f5@25 ~ a4@25 ~ db5@26 ~@5, ~@38 f3@18 ~@52 gb2@4 ~@22 a2@4 ~@23 bb2@4 ~@27]/8", // Fm D
  AN: "[db3@4 eb3@4 f3@4 ~ eb3@4 db3@4 ~@5 db3@4 f3@4 ~ ab3@4 f3@4 ~ db3@4, ~@4 [c5,c6]@9 [ab4,ab5]@9 bb4@26, ~@11 ab2@2 ~@11, ~@23 bb5@25]/2", // C Ab
  AO: "[~@4 db3@4 ~ f3@4 ab3@4 ~ f3@4 db3@4 ~@5 db3@4 f3@4 ~ ab3@4 f3@4, eb4@3 [db4,db5]@3 [f4,f5]@3 bb5@7, bb2@2 ~@11 gb2@2 ~@9, ~ eb5@8 ~@17 bb4@22]/2", // Db F
  AP: "[db3@4 ~@5 c3@4 ~ eb3@4 [f3,bb4,bb5]@4 eb3@4 ~ c3@4 ~@5 db3@4 f3@4 ab3@4 ~ f3@4 db3@4 ~ ab2@4 db3@4 f3@4 ~ ab3, ~@5 ab4@13 ~@4 [f4,f5]@9 db4@26 ~ db4@14, ~@5 f2@4 ~@22 ab2@4 ~@37, ~@3 ab5@6 ~@7 db5@20]/3", // Bb5 F
  AQ: "[~@3 f3@4 ~ db3@4 ~@4 db3@4 ~ f3@4 ab3@4 ~ f3@4 db3@4 ~@5 db3@4 f3@4 ~ ab3@4 f3@4 db3@4 ~ bb2@4 eb3@4 ~ gb3@4 bb3@4 ~ db6@3 ~ [eb3,c5,c6]@4 ~@5 db3@4 f3@4 ab3@4 ~ f3@4 db3@4 ~@5 db3@4 f3@4 ~ bb3@4 f3@4 ~ db3@4, ~@3 [eb5,eb6]@9 f5@26 eb5@26 ~ [eb5,eb6]@18 ~@8 ab2@4 ~@23 bb2@4 ~@22, ~@12 bb2@4 ~@22 ab2@4 ~@40 [gb3,db5]@4 ~@5 db4@18 ~@9 db4@26, ~@13 f6@25 ~ eb6@25 ~@28 db5@17 [ab4,ab5]@9 ~ db5@25]/6", // Cm Eb Gb5 Ab
  AR: "[gb2@4 db3@4 ~@5 f3@4 ~ eb3@4 db3@4 a2@4 ~ c3@4 eb3@4 ~ f3@4 eb3@4, ~@9 bb4@9 ~@8 [c5,c6]@22, ~@9 eb3@4 ~@35, ~@10 bb5@8 [f5,f6]@9 ~@21]/2", // C F
  AS: "c3@2 ~@6 f4@3 [ab3,c4,f4], ~@5 ab2@19, ~@7 ab3@4 ~, ~@15 c4@7 ~@2", // Fm
  AT: "[~@17 d5@17 ~@9 eb5@17 ~@10 f5@16 ~@10 eb5@17 ~@10 f5@16 ~@10 gb5@17 ~@9 ab5@17, ~@7 bb1@26 ~ bb1@26 bb1@26 bb1@26 ~ bb1@26 bb1@26 ~ bb1@26, ~@8 bb2@25 ~@2 bb2@25 ~ bb2@25 ~ bb2@25 ~@2 bb2@25 ~ bb2@25 ~@2 bb2@25, ~@16 d4@18 ~@8 eb4@18 ~@9 f4@18 ~@8 eb4@18 ~@9 [d4,f4]@18 ~@8 [eb4,gb4]@18 ~@8 [f4,ab4]@18]/8", // Dm Ebm Fm
  AU: "[~@10 gb5@16 ~@12 d5@99 ~@7, bb1@13 bb1@55 ~@4, ~ bb2@25 ~ bb2@110 ~@7, ~@9 [eb4,gb4]@18 ~@10 d4@99 ~@8]/6", // Ebm
})).s("gm_orchestral_harp").gain(0.2)

stack(orchestral_harp)