Strudelify

Cabeswater: Marimba Trio

Sophie Chisholm

KeyF majorTempo75 bpm
0:00/0:00
// Cabeswater: Marimba Trio — Sophie Chisholm
// 75 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 3/8 at bar 23, 4/4 at bar 36) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/3301121; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 55 bars on a 48-step grid, each part at one level. Source detail keeps the original performance.
setcpm(75/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 · marimba
const marimba = note(`<
  A B C D A B C D E@2 F G H I J K L M N O P Q ~ R@2 S T@2 U V W X Y W Z AA@7 AB AC@2 AD AE@2 AF@2 AG AH@2 AI@2
>`.pickRestart({
  A: "a4 d5 f5 ~", B: "g4 c5 e5 ~", C: "f4 bb4 d5 ~", D: "a4 db5 e5 ~", E: "a4 d5 f5 a5 bb5 a5 f5 d5",
  F: "a4 f4 a4 d5 f5 d5 f5 a5", G: "g4 e4 g4 c5 e5 c5 e5 g5", H: "f4 d4 f4 bb4 d5 bb4 d5 f5", I: "e4 db4 e4 a4 db5@4",
  J: "[f4,a4]@4 d5@4 ~@4 bb4 a4 f4 bb4", K: "[e4,g4]@4 c5@4 ~@4 a4 e4 c4 e4", L: "[d5,f5]@2 bb4@2 a4 g4 f4 g4",
  M: "[e5,a5] f5 e5 db5", N: "~@3 d4", O: "~@6 d4!2", P: "d4@2 d4@2 d4@2 d4@2 d4!8", Q: "a4 e5",
  R: "[~@4 d4@3 a3@3 a3@3 b3@3]/2", S: "~@2 b3 b3@3 b3 a3",
  T: "[b3@2 d4@4 gb4 e4 a3@4 e4@2 gb4@4 gb4 e4 d4@4 gb4 e4 [b3,d4]@4 ~@2]/2", U: "~@2 b3 [b3,d4]@3 b3 a3",
  V: "b3@2 a3@4 d4!2 a3@4 e4!2 d4 e4", W: "gb4@4 g4@4 a4 g4 gb4@2 e4@2 d4@2", X: "g4 gb4 e4 b3@2 d4 e4 d4",
  Y: "e4@2 a3@4 d4!2 a3@4 e4!2 d4 e4", Z: "g4 gb4 e4 d4@3 ~@2",
  AA: "[~@6 gb4@5 db5@5 gb5@31 d4@5 ~ a4@5 d5@31 e4@5 b4@5 e5@21 d5@10 [a4,db5]@41 ~ gb4@5 db5@5 gb5@31 d4@5 a4@5 d5@31 e4@5 b4@5 ~ e5@20 d5@10 ~ db4@5 b4@5 db5@10 db5@10 ~ db4@5 db4@4]/7", // A
  AB: "~ gb4@5 db5@5 [a4,gb5]@31 d4@5 ~", // D
  AC: "[a4@5 [gb4,d5]@31 e4@5 b4@5 [ab4,e5]@21 d5@10 [db4,a4]@10 ~ [db4,a4]@8]/2", // D Dbm Gbm
  AD: "~@2 [db4,ab4]@10 [db4,ab4]@10 ~ gb4@2 ab4@3 gb4@5 ~@10 gb4@3 f4@2", // Db5
  AE: "[gb4@3 ab4@3 a4@2 ab4@3 a4@2 b4@3 d5@3 e5@2 d5@5 ~@11 d5@2 gb5@3 d5@2 db5@3 b4@3 a4@2 gb4@3 a4@2 b4@3 db5@2 b4@5 ~@11 b4@3 a4@2 ab4@3 gb4@2 ab4@3 a4@3 b4@2]/2",
  AF: "[db5@3 [a4,db5]@41 gb4@3 ab4@2 gb4@5 ~@11 gb4@2 f4@3 gb4@3 ab4@2 a4@3 ab4@2 a4@3 b4@2 d5@3 e5@3 d5@5]/2", // A
  AG: "~@10 d5@3 gb5@2 d5@3 db5@2 b4@3 a4@3 gb4@2 a4@3 b4@2 db5@3 b4@5 ~@7",
  AH: "[~@4 b4@2 a4@3 ab4@2 gb4@3 ab4@2 a4@3 db5@3 d5@2 gb4@10 ~ gb4@10 gb4@10 gb4@10 ~@6 a4@5 ~@5 a4@5 ~@5 a4@5]/2",
  AI: "[~@6 a4@5 gb6@41 ~@44]/2",
})).s("gm_marimba").gain(0.3)

// other · marimba
const marimba_2 = note(`<
  A B C D E F G H I@2 J K L M N O P Q R S T U ~ V@2 ~ W@2 X Y@2 Z@3 AA AB@3 AC AD@3 AE AF@3 AG@4 AH@3 AI@2
>`.pickRestart({
  A: "f4 d4 bb3 d4", B: "g4 f4 e4 g4", C: "a4 f4 d4 g4", D: "f4 e4 a4 ~", E: "d4 e4 f4 d4 a3 d4 f4 d4",
  F: "e4 f4 g4 e4 a3 e4 g4 e4", G: "d4!2 f4 g4 a4 g4 f4 e4", H: "f4 e4 f4 g4 a4@2 ~@2", I: "[a3,d4]/2",
  J: "d4!2 a4!2 d5!2 f5!2", K: "g5!2 e5!2 c5!2 g4!2", L: "f4!2 d4!2 bb3!2 f4 d4", M: "e4@2 a4@2 e5@2 ~ d5",
  N: "d5@2 a4!2 bb4 a4 g4 f4", O: "e4 bb4 c4 bb4 a4 g4 f4 e4", P: "bb3 g4 bb3 g4 f4 e4 d4 e4",
  Q: "d4 db4 d4 db4 bb3 a3 g3 a3", R: "~@2 a3 ~", S: "bb3@3 e4 f4@3 e4 d4@4 ~@4",
  T: "bb3@3 e4 f4@3 g4 a4@2 a4@2 a4@2 a4@2", U: "a4 db5 e5 a5 ~@4", V: "[~@4 gb5@2 gb5 gb5@2 d5 db5 b4 a4 b4@3]/2",
  W: "[~@2 d5@4 d5@2 e5@4 d5 e5 gb5@4 gb5@2 d5@4 db5@2 b4@6]/2", X: "~@2 d5 d5@3 ~@2",
  Y: "[~@2 d5@4 d5@2 e5@4 e5@2 gb5@4 gb5@2 g5@4 a5 g5 gb5@2 e5@2 d5@2]/2",
  Z: "[e5@2 d5@2 db5@2 d5@6 e5@6 d5@4 d5@2 e5@4 e5@2 gb5@4 gb5@2 g5@4 a5 g5 gb5@2 e5@2 d5@2]/3",
  AA: "e5 d5 e5 d5@3 ~@2", AB: "[~@6 gb5@15 ~ [db5,a5]@21 ~@4 d5@15 ~ [a4,gb5]@21 ~@5 e5@15 [b4,ab5]@21 ~@19]/3",
  AC: "~@7 db5@5 b4@5 a4@5 ab4@5 ~ gb4@20",
  AD: "[gb4@5 gb4@5 ~ ab4@5 a4@5 d5@5 e5@5 a4@21 db5@10 b4@5 e5@5 ~ ab4@20 ab4@10 ~ db5@20 db5@10 ~ f5@9]/3",
  AE: "~ gb5@21 gb5@5 ab5@5 gb5@5 ab5@5 a5@5 ~",
  AF: "[b5@5 a5@20 ab5@10 ~ e5@5 gb5@5 e5@21 b4@10 db5@31 f5@10 ~ gb5@5 db5@5 a4@5 gb4@5 a4@5]/3",
  AG: "[db5@5 ~ gb5@5 e5@5 d5@5 a4@5 gb4@5 d4@5 ~ gb4@5 a4@5 d5@5 db5@5 b4@5 ab4@5 ~ e4@5 ab4@5 b4@5 e5@5 db5@5 ~ d5@5 db5@5 ab5@5 f5@5 d5@5 db5@5 ~ b4@5 a4@5 ab4@5 gb5@21 gb5@5 ab5@5 gb5@5 ab5@5 a5@5 ~ b5@5]/4",
  AH: "[a5@20 ab5@10 ~ e5@5 gb5@5 e5@21 [db5,e5]@5 [a4,f5]@5 [a4,gb5]@5 [a4,gb5]@5 ~ [a4,gb5]@5 [a4,gb5]@5 gb5@5 a5@5 db6@5 a5@5 ~ gb5@5 ~@5 gb5@5 ~@5 gb5@5 ~@5]/3", // Dbm Dm D
  AI: "[~ gb5@5 ~@5 gb5@41 ~@44]/2",
})).s("gm_marimba").gain(0.3)

stack(marimba, marimba_2)