Strudelify

nantes

Beirut

KeyG♭ majorTempo132 bpm
0:00/0:00
// nantes — Beirut
// 132 bpm, 4/4, key Gb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5984830; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 128 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(132/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · trumpet · "B♭ Trumpet"
const trumpet = note(`<
  ~@32 A@2 B@2 C@2 D@2 E F G H E I J ~ E F G H E I J ~@57 K@2 L@2 K@2 L@2 K@2 L@2 M@2 N O
>`.pickRestart({
  A: "[~@8 ab4@22 ab4 bb4]/2", B: "[ab4@3 bb4@8 ~@5]/2", C: "[~@2 ab4@5 db5]/2", D: "[ab4@3 bb4@13]/2", E: "b4 bb4",
  F: "~ eb4 gb4 ab4 b4@2 bb4@2", G: "ab4 bb4", H: "~@12 b4@3 db5", I: "~ eb4 gb4 ab4 db5@2 bb4@2", J: "ab4 gb4",
  K: "eb4 gb4 ab4 bb4", L: "db5 bb4 ab4 gb4", M: "eb4 ~ gb4 ~ ab4 ~ bb4 ~", N: "db5 ~ bb4 ~ ab4 ~ gb4 ~",
  O: "db5 ~ bb4 ~ ab4 ~ gb4!2",
})).s("gm_trumpet").gain(0.4)

// other · trumpet · "B♭ Trumpet"
const trumpet_2 = note("<~@40 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 ~@56 A@2 B@2 A@2 B@2 A@2 B@2 C@2 D E>".pickRestart({
  A: "eb4 gb4 ab4 bb4", B: "db5 bb4 ab4 gb4", C: "~ eb4 ~ gb4 ~ ab4 ~ bb4", D: "~ db5 ~ bb4 ~ ab4 ~ gb4",
  E: "~ db5 ~ bb4 ~ ab4 gb4!2",
})).s("gm_trumpet").gain(0.3)

// other · trombone
const trombone = note(`<
  ~@40 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 ~@40 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 C D E F C D G H
>`.pickRestart({
  A: "eb3 gb3 ab3 bb3", B: "db4 bb3 ab3 gb3", C: "b3 bb3", D: "~ eb3 gb3 ab3 b3@2 bb3@2", E: "ab3 bb3", F: "~@3 b3",
  G: "ab3 gb3", H: "db4@2 bb3@2 ab3@2 gb3!2",
})).s("gm_trombone").gain(0.25)

// bass · electric bass finger · "Electric Bass"
const bass = note(`<
  ~@24 A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A
  B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D
>`.pickRestart({
  A: "eb2@3 bb1 ~@2 eb2@2", B: "f2@3 db2 ~ db2 f2@2", C: "gb2@3 db2 ~ db2 ab2 gb2", D: "gb2@3 db2 ~ db2 gb2@2",
})).s("gm_electric_bass_finger").gain(0.3)

// other · french horn · "Horn in F"
const french_horn = note(`<
  ~@23 A B C D E F G H A B I@2 E J K@2 ~ L@2 M@2 L@2 M@2 L@2 M@2 L@2 M@2 N O P ~ N O P ~ N O P ~ N O P ~@9 Q R H ~ Q S@2
  ~ T U H ~ Q V W ~ T X W ~ Q V W ~ T Y@2 ~ Q Z@2 ~ L@2 M@2 L@2 M@2 L@2 M@2 L@2 M AA
>`.pickRestart({
  A: "~@3 gb3!2 ab3 bb3@2", B: "bb3@4 ab3@3 ab3", C: "gb3@5 f3@3", D: "db3 ~", E: "~@4 gb3 ab3 bb3@2",
  F: "bb3@5 db4@2 bb3", G: "ab3@3 bb3", H: "bb3 ~", I: "[gb3@5 f3@5 db3@4 ~@2]/2", J: "bb3@5 db4@3",
  K: "[eb4 bb3@6 db4@5 ~@4]/2", L: "[eb3,eb4] [gb3,gb4] [ab3,ab4] [bb3,bb4]",
  M: "[db4,db5] [bb3,bb4] [ab3,ab4] [gb3,gb4]", N: "~ eb3!3", O: "f3@7 f3", P: "gb3@3 gb3@3 ~@2", Q: "eb4!2",
  R: "db4!2", S: "[db4 db4@2 ~]/2", T: "gb4 db4", U: "b3@5 bb3@3", V: "db4@3 db4", W: "db4 ~", X: "gb4@5 db4@3",
  Y: "[gb4@5 db4@5 db4@4 ~@2]/2", Z: "[db4@3 ~]/2", AA: "[db4,db5]@2 [bb3,bb4]@2 [ab3,ab4]@2 [gb3,gb4]!2",
})).s("gm_french_horn").gain(0.25)

// other · french horn · "Horn in F"
const french_horn_2 = note(`<
  ~@23 A B C D E F G H A B I@2 E J K@2 ~ L@2 M@2 L@2 M@2 L@2 M@2 L@2 M@2 N O P Q R O P Q N O P Q S O T Q ~@8 U V W ~ U X
  W ~ U Y W ~ U Z W ~ AA@2 AB@2 AA@2 AB@2 AA@2 AB@2 AA@2 AB@2 AA@2 AB@2 AA@2 AB@2 AC AD AE AF AC AD AG AH
>`.pickRestart({
  A: "~@3 gb3!2 ab3 bb3@2", B: "bb3@4 ab3@3 ab3", C: "gb3@5 f3@3", D: "db3 ~", E: "~@4 gb3 ab3 bb3@2",
  F: "bb3@5 db4@2 bb3", G: "ab3@3 bb3", H: "bb3 ~", I: "[gb3@5 f3@5 db3@4 ~@2]/2", J: "bb3@5 db4@3",
  K: "[eb4 bb3@6 db4@5 ~@4]/2", L: "[eb3,eb4] [gb3,gb4] [ab3,ab4] [bb3,bb4]",
  M: "[db4,db5] [bb3,bb4] [ab3,ab4] [gb3,gb4]", N: "~ db4!3", O: "f4@4 db4@3 db4", P: "db4@3 db4@3 ~@2",
  Q: "gb4!3 ~@3 gb4!3 ~@7", R: "~ eb4 db4!2", S: "~@2 eb4 db4 db4@2 db4@2", T: "db4@3 bb3@3 ~@2", U: "eb3!2", V: "f3!2",
  W: "gb3 ~", X: "f3", Y: "f3@5 f3@3", Z: "f3@3 f3", AA: "eb3 gb3 ab3 bb3", AB: "db4 bb3 ab3 gb3", AC: "b3 bb3",
  AD: "~ eb3 gb3 ab3 b3@2 bb3@2", AE: "ab3 bb3", AF: "~@3 b3", AG: "ab3 gb3", AH: "db4@2 bb3@2 ab3@2 gb3!2",
})).s("gm_french_horn").gain(0.25)

// other · french horn · "Horn in F"
const french_horn_3 = note(`<
  A B C@2 A B C@2 D E F@2 D E F@2 D E F@2 D E F@2 D E F@2 D E F@2 D E F@2 D E F@2 D E F@2 D E F@2 D E F@2 D E F@2 D E
  F@2 D E F@2 D E F@2 D E F@2 D E F@2 D E F@2 D E F@2 D E F@2 D E F@2 D E F@2 D E F@2 D E F@2 D E F@2 D E F@2 D E F@2 D
  E F@2 D E F@2 D E F@2
>`.pickRestart({
  A: "~ eb4 ~ eb4", B: "~ f4 ~ f4", C: "~ db4 ~ db4", D: "~@4 eb4 ~ eb4 ~@5 eb4 ~@3", E: "~@4 f4 ~ f4 ~@5 f4 ~@3",
  F: "~@4 db4 ~ db4 ~@5 db4 ~@3",
})).s("gm_french_horn").gain(0.3)

// other · french horn · "Horn in F"
const french_horn_4 = note(`<
  A B A@3 B A@2 C D C@3 D C@3 D C@3 D C@3 D C@3 D C@3 D C@3 D C@3 D C@3 D C@3 D C@3 D C@3 D C@3 D C@3 D C@3 D C@3 D C@3
  D C@3 D C@3 D C@3 D C@3 D C@3 D C@3 D C@3 D C@3 D C@3 D C@3 D C@3 D C@3 D C@2
>`.pickRestart({
  A: "~ gb4 ~ gb4", B: "~ ab4 ~ ab4", C: "~@4 gb4 ~ gb4 ~@5 gb4 ~@3", D: "~@4 ab4 ~ ab4 ~@5 ab4 ~@3",
})).s("gm_french_horn").gain(0.3)

// other · french horn · "Horn in F"
const french_horn_5 = note(`<
  A B A@3 B A@2 C D C@3 D C@3 D C@3 D C@3 D C@3 D C@3 D C@3 D C@3 D C@3 D C@3 D C@3 D C@3 D C@3 D C@3 D C@3 D C@3 D C@3
  D C@3 D C@3 D C@3 D C@3 D C@3 D C@3 D C@3 D C@3 D C@3 D C@3 D C@3 D C@3 D C@2
>`.pickRestart({
  A: "~ bb4 ~ bb4", B: "~ db5 ~ db5", C: "~@4 bb4 ~ bb4 ~@5 bb4 ~@3", D: "~@4 db5 ~ db5 ~@5 db5 ~@3",
})).s("gm_french_horn").gain(0.3)

// other · french horn · "Horn in F"
const french_horn_6 = note(`<
  A B C D A B C D A E C@2 A E C@2 A E C@2 A E C@2 A E C@2 A E C@2 A E C@2 A E C@2 A E C@2 A E C@2 A E C@2 A E C@2 A E
  C@2 A E C@2 A E C@2 A E C@2 A E C@2 A E C@2 A E C@2 A E C@2 A E C@2 A E C@2 A E C@2 A E C@2 A E C@2 A E C@2 A E C@2 A
  E C@2 A E C@2 A E C F
>`.pickRestart({
  A: "eb3@2 ~@3 eb3 ~ eb3", B: "f3 ~@3", C: "gb3@2 ~@3 gb3 ~ gb3", D: "gb3 ~@3", E: "f3@2 ~@3 f3 ~ f3",
  F: "gb3@2 ~@3 gb3 ~@2",
})).s("gm_french_horn").gain(0.3)

stack(
  trumpet, trumpet_2, trombone, bass, french_horn, french_horn_2, french_horn_3, french_horn_4, french_horn_5,
  french_horn_6
)

More by Beirut