Strudelify

bird set free

Sia

KeyA♭ majorTempo150 bpm
0:00/0:00
// bird set free — Sia
// 150 bpm, 4/4, key Ab 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/5846383; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 156 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.

// other · flute
const flute = note(`<
  ~@39 A@8 B@8 C@2 ~@6 D@2 E ~@5 D@2 E ~@23 A@8 B@8 C@2 ~@5 D@2 E ~@5 D@2 E F G H I ~ D@2 E F G H I J D@2 E ~@5 D@2 E ~
>`.pickRestart({
  A: "[~@6 c5@2 f5@3 g5@3 ab5@6 g5@2 f5@2 f5@2 f5@4 f5@6 ~@2 c5@2 f5@3 g5@3 ab5@6 g5@2 f5@2 f5@2 f5@4 f5@6 ~@2 f5@2 f5@4 g5@2 f5@8 eb5@2 eb5@4 eb5@2 eb5@6 ~@2 c5@2 eb5@2 eb5@2 f5@8 eb5@2 eb5@2 eb5@3 eb5@3 eb5@2]/8",
  B: "[~@6 c5@2 f5@3 g5@3 ab5@6 g5@2 f5@2 f5@2 f5@4 f5@6 ~@2 c5@2 f5@3 g5@3 ab5@6 g5@2 f5@2 f5@2 f5@4 f5@6 ~@2 f5@2 f5@4 c6@2 bb5@8 ab5@2 ab5@4 ab5@2 ab5@6 ~@2 ab5@2 g5@2 g5@2 bb5@8 ab5@2 g5@2 f5 g5@3 f5@4]/8",
  C: "[eb5@23 ~@9]/2", D: "[~@6 ab5@2 g5@2 g5@2 bb5@8 ab5@2 g5@2 f5 g5@3 f5@4]/2", E: "eb5 ~", F: "~@2 f5 g5",
  G: "ab5@15 ~", H: "~@2 ab5 bb5", I: "c6@15 ~", J: "~ eb6",
})).s("gm_flute").gain(0.4)

// chords · piano
const piano = note(`<
  A@2 B@2 C@2 D@2 ~@13 E@3 F@2 G@2 H@4 F@2 I@2 J@2 K@2 ~@11 L M@2 N@4 O@2 P@2 Q@2 R@2 O@2 P@2 Q@2 R@2 ~@5 E@3 F@2 G@2
  H@4 S@2 T@2 J@2 U@2 O@2 P@2 Q@2 R@2 O@2 P@2 Q@2 V@3 O@2 P@2 Q@2 R@2 O@2 P@2 Q@2 R@2 O@2 P@2 Q@2 R@2 O@2 P@2 Q@2 R@2
  W@2 X@2 Y Z AA AB ~
>`.pickRestart({
  A: "[~@11 ab3 ~@3 ab3, f2@3 c2, c4!4 c4!2 eb4!2, ~ ab3@2 ab3@2 ab3@2 ab3@2 ab3@2 ~@2 ab3@2 ~]/2",
  B: "[~@15 ab3, db2, db4!4 db4!4, ~ ab3@2 ab3@2 ab3@2 ab3@2 ab3@2 ab3@2 ab3@2 ~]/2",
  C: "[~@15 ab3, ab2, c4!4 c4!4, ~ ab3@2 ab3@2 ab3@2 ab3@4 ab3@2 ab3@2 ~, ~@9 eb3@7]/2",
  D: "[~@11 g3 ~@3 g3, eb2@3 e2, bb3!4 bb3!2 c4!2, ~ g3@2 g3@2 g3@2 g3@2 g3@2 ~@2 g3@2 ~]/2",
  E: "[~@16 [eb1,eb2]@11 ~ eb2@8 eb2@4 [e1,e2,e3,g3,c4]@8, ~@8 ab1@8 [g3,bb3]@23 ~@9, ~@4 eb3@9 ~@3]/3", // Eb C Gm
  F: "[[f3,ab3,c4]@11 ~@17 c2@4, [f1,f2]@19 ~ f2@8 ~@4, ~@12 [f3,ab3,c4]@11 ~ [ab3,c4,eb4]@8]/2", // Fm F Fm Ab
  G: "[[f3,ab3,db4]@11 ~ [f3,ab3,db4]@11 ~ [f3,ab3,db4]@8, [db1,db2]@15 ~]/2", // Db
  H: "[[ab1,ab2]@11 ~ ab2@11 ~@9 [eb1,eb2]@11 ~ eb2@8 e2@4 [e1,e2,e3,g3,c4]@8, [eb3,ab3,c4]@27 ~ eb3@27 ~@9, ~@24 ab1@8 [g3,bb3]@23 ~@9]/4", // Ab Eb C Ab Gm
  I: "[[f3,ab3,db4,f4]@11 ~@17 db2@4, db2@19 ~ db1@8 ~@4, ~@12 [f3,ab3,db4,f4]@11 ~ [f3,ab3,f4]@8]/2", // Db Fm
  J: "[[eb3,ab3,c4,eb4]@11 ~@17 ab1@4, [ab1,ab2]@19 ~ ab2@8 ~@4, ~@12 [eb3,ab3,c4,eb4]@11 ~ [eb3,ab3,c4,eb4]@8]/2", // Ab
  K: "[[g3,bb3,eb4]@2 ~ eb2 eb1 eb2 [e1,e2,g3,c4,e4]@2, [eb1,eb2]@11 ~@21, ~@8 [g3,bb3,eb4]@15 ~@9]/2", // Eb C Eb
  L: "~ db3 [db4,ab4] f4, ~ db3", // Db5
  M: "[ab3 ~@6 [ab1,ab2], [c4,eb4,ab4]!2 [c4,eb4,ab4] [ab3,c4,eb4], ~ ab2@2 ab2@2 [ab1,ab2]@2 ~]/2", // Ab
  N: "[[eb1,eb2]@4 ~@16 g3@4 [eb4,g4]@4 bb3@19 ~@9 [e1,e2]@8, [g3,bb3,eb4]@4 [g3,bb3,eb4]@3 [g3,bb3,eb4]@3 ~@22, ~@2 eb2@4 eb2@2 [eb1,eb2]@19 ~@5]/4", // Eb E Eb
  O: "[[ab4,c5] f4 ab4 f4 c5 f4 ab4 f4 c5 [f1,f2,f4] ab4 f4 [ab4,c5] f4 ab4 f4, [f1,f2]@3 f1@4 [f1,f2]@2 ~ [f1,f2]@2 [c1,c2]@4, ~@4 f2@3 ~@9]/2", // Ab F Ab F C
  P: "[[ab4,db5] f4 ab4 f4 db5 f4 ab4 f4 db5 [db1,db2,f4] ab4 f4 db5 f4 ab4 f4, [db1,db2]@3 db1@4 [db1,db2]@2 ~ [db1,db2]@2 [db1,db2]@4, ~@4 db2@3 ~@9]/2", // Db5 Db
  Q: "[c5 eb4 ab4 eb4 c5 eb4 ab4 eb4 c5 [ab1,ab2,eb4] ab4 eb4 c5 eb4 ab4 eb4, [ab1,ab2]@3 ab1@4 [ab1,ab2]@2 ~ [ab1,ab2]@2 [ab1,ab2]@4, ~@4 ab2@3 ~@9]/2", // Ab5 Ab
  R: "[bb4 eb4 g4 eb4 bb4 eb4 g4 eb4 bb4 [eb1,eb2,eb4] g4 eb4 bb4 e4 g4 e4, [eb1,eb2]@3 eb1@4 [eb1,eb2]@2 ~ [eb1,eb2]@2 [e1,e2]@4, ~@4 eb2@3 ~@9]/2", // Eb E
  S: "[[f1,f2]@2 ~@2 [f1,f2] ~@2 c2, [f3,ab3,c4]@11 ~ [f3,ab3,c4]@11 ~ [ab3,c4,eb4]@8, ~@2 [f1,f2]@2 ~ f2@2 ~]/2", // F Fm Ab F
  T: "[db2@2 ~@2 db2 ~@2 db2, [f3,ab3,db4,f4]@11 ~ [f3,ab3,db4,f4]@11 ~ [f3,ab3,f4]@8, ~@2 db2@2 ~ db1@2 ~]/2", // Db Fm
  U: "[[g3,bb3,eb4]@2 ~ eb2 eb1 eb2 e2 e1, [eb1,eb2]@11 ~@21, ~@8 [g3,bb3,eb4]@15 ~ [g3,c4,e4]@8]/2", // Eb C
  V: "[[eb1,eb2] ~@4 g3 [eb4,g4] ~@3 [e1,e2]@2, [g3,bb3,eb4]@8 [g3,bb3,eb4]@6 [g3,bb3,eb4]@6 ~@8 bb3@19 ~, ~@4 eb2@8 eb2@27 ~@9, ~@16 eb1@23 ~@9, ~@32 [eb4,g4,bb4]@15 ~]/3", // Eb E Eb
  W: "[[ab4,c5] f4 ab4 f4 c5 f4 ab4 f4 c5 f4 ab4 f4 [ab4,c5] f4 ab4 f4, [f1,f2]@11 ~ f2@11 ~ c2@8]/2", // Ab F
  X: "[[ab4,db5] f4 ab4 f4 db5 f4 ab4 f4 db5 f4 ab4 f4 db5 f4 ab4 f4, [db2,db3]@11 ~ db2@11 ~ db2@8]/2", // Db5 Db
  Y: "c5 eb4 ab4 eb4 c5 eb4 ab4 eb4, [ab1,ab2]@15 ~", Z: "c5 eb4 ab4 eb4 c5 eb4 ab4 eb4, [ab1,ab2]@3 ab1@3 ab2@2",
  AA: "bb4 eb4 g4 eb4 bb4 eb4 g4 eb4, [eb1,eb2]@3 eb2@3 eb2@2", AB: "bb4 eb4 g4 eb4 c5 e4 ~@2, [eb1,eb2]@2 e1 ~",
})).s("gm_piano").gain(0.3)

// chords · piano · soft notes
const piano_soft = note(`<
  ~@8 A@2 B@2 C@4 A@2 B@2 D@2 ~@18 E@2 F@2 G@4 H@2 I@2 ~@4 J ~@17 A@2 B@2 D@2 ~@74 K L
>`.pickRestart({
  A: "[[f1,f2,f3,ab3,c4,f4]@23 ~ [c2,ab3,c4,eb4]@8]/2", B: "[[db1,db2,f3,ab3,db4]@15 ~]/2",
  C: "[[ab1,ab2]@11 ~ ab2@11 ~@9 [eb1,eb2]@11 ~ eb2@11 ~ [e1,e2,e3,g3,c4]@8, [eb3,ab3,c4]@27 ~ eb3@27 ~@9, ~@24 ab1@8 [g3,bb3]@23 ~@9]/4", // Ab Eb C Ab Gm
  D: "[[ab1,ab2]@11 ~ ab2@11 ~@9, [eb3,ab3,c4]@27 ~@5]/2", E: "[[f3,c5,f5,ab5]@23 ~ [c4,c5,eb5,ab5]@8]/2",
  F: "[[db4,db5,f5,ab5]@15 ~]/2", // Db
  G: "[ab3@11 ~ ab3@11 ~@9 [eb2,eb3]@11 ~ eb3@11 ~ [e2,e3,e4,g4,c5]@8, [ab4,c5,eb5]@27 ~ eb4@27 ~@9, ~@24 ab2@8 [g4,bb4]@23 ~@9]/4", // Eb C Ab Gm
  H: "[[f3,c4,f4,ab4]@23 ~ [c3,c4,eb4,ab4]@8]/2", I: "[[db4,f4,ab4]@23 ~@9, db3@19 ~@13]/2", J: "[eb4,g4,bb4]@15 ~",
  K: "~@6 g4 e4, ~@3 e2", L: "~ [f2,ab4,c5]@15, [f1,f4]",
})).s("gm_piano").gain(0.2)

stack(flute, piano, piano_soft)

More by Sia