Strudelify

Sogno di Volare

Christopher Tin

KeyB♭ majorTempo195 bpm
0:00/0:00
// Sogno di Volare — Christopher Tin
// 195 bpm, 12/8, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (12/8 at bar 1, 6/8 at bar 6, 12/8 at bar 6) are rendered on a constant 12/8 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/6155981; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 42 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(195/6)

// 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 · flute
const flute = note("<A B@17 C@5 D B@2 E F G H I J K@2 L M N O P Q R S>".pickRestart({
  A: "~@6 bb4 a4 bb4 f5 bb4 a4", B: "bb4 a4 bb4 f5 bb4 a4 bb4 a4 bb4 f5 bb4 a4",
  C: "eb5 d5 eb5 bb5 eb5 d5 eb5 d5 eb5 bb5 eb5 d5", D: "eb5 d5 eb5 bb5 eb5 d5 eb5 d5 eb5 c6 bb5 a5", E: "bb4!9 a4!3",
  F: "bb4!6 f5!6", G: "bb5!6 c6 d6 bb5 f5 eb5 d5", H: "bb4!6 c5 d5 bb4 f4 eb4 d4", I: "d4!3 eb4!6 d4!3",
  J: "f4!6 bb4!4 ~@2", K: "c6 bb5 c6 f6 c6 bb5 c6 bb5 c6 f6 c6 bb5", L: "eb5!4 ~ eb5!4 d5!3",
  M: "eb5!4 ~ f5 bb5 a5 bb5 eb6 bb5 a5", N: "bb5 a5 bb5 eb6 bb5 a5 bb5 a5 bb5 eb6 bb5 a5",
  O: "g6 ~ f6 ~ eb6 ~ bb5 ~ g5 ~ eb5 ~", P: "eb5!3 g5 ~ g5 f5!4 ~ f5", Q: "eb5!3 d5 ~ d5 c5!4 ~@2",
  R: "bb4 a4 bb4 eb5 bb4 a4 bb4 a4 bb4 eb5 bb4 a4", S: "bb4@2 a4@2 bb4@2 eb5@2 bb4@2 a4@2 bb4@11 ~",
})).s("gm_flute").gain(0.25)

// other · trumpet · "B♭ Trumpet 1"
const trumpet = note("<~@24 A@2 B C@3 D E F@2 G H@3 I J K@2>".pickRestart({
  A: "bb3 a3 bb3 f4 bb3 a3 bb3 a3 bb3 f4 bb3 a3", B: "bb4!3 a4", C: "[bb4@5 c5 d5@27 ~@3]/3", D: "d5 eb5!2 d5",
  E: "c5@3 d5@3 bb4@5 c5", F: "[c5@7 ~]/2", G: "eb5!3 d5", H: "[eb5@5 f5 g5@27 ~@3]/3", I: "eb5 g5 f5 bb4",
  J: "eb5@3 d5@3 c5@5 bb4", K: "bb4/2",
})).s("gm_trumpet").gain(0.3)

// other · trumpet · "B♭ Trumpet 2"
const trumpet_2 = note("<~@26 A B@3 C D E@2 F G@3 H I J@2>".pickRestart({
  A: "g4!4", B: "[f4@5 a4 bb4@27 ~@3]/3", C: "bb4!4", D: "a4@3 bb4@3 g4@5 a4", E: "[a4@7 ~]/2", F: "c5!3 bb4",
  G: "[c5@5 d5 eb5@27 ~@3]/3", H: "c5 eb5 d5 bb4", I: "bb4@3 bb4@3 a4@5 f4", J: "f4/2",
})).s("gm_trumpet").gain(0.3)

// chords · trombone
const trombone = note("<~@24 A B C D E F G H I@2 J K L@2 M N O P>".pickRestart({
  A: "~@8 bb2!4", B: "bb2!12", C: "[d3,g3,d4]!4 ~ [d3,g3,d4] [bb2,g3,eb4]!4 ~ [bb2,g3,eb4]",
  D: "[f3,c4,f4]!4 ~ [f3,c4,f4] [bb2,bb3,f4]!4 ~ [bb2,bb3,f4]", E: "[bb2,bb3,f4]!12",
  F: "[bb2,bb3,f4]!4 ~ [bb2,bb3,f4]!4 [bb2,f3,bb3] ~ [bb2,f3,bb3]", // Bb5
  G: "[bb2,f3,bb3]!3 [bb2,g3,bb3] ~ [bb2,g3,bb3]!4 [bb2,f3,bb3] ~ [bb2,f3,bb3]", // Bb5 Eb Bb5
  H: "[a2,f3,a3]!3 [bb2,f3,bb3] ~ [bb2,f3,bb3] [g2,f3,d4]!3 [g2,bb3,f4] ~ [f2,c4,f4]", // Dm Bb5 G7 Gm7 F5
  I: "[f2,f3,c4]!4 ~ [f2,f3,c4]!5 ~ [f2,f3,c4]", J: "[c3,g3,eb4]!4 ~ [c3,g3,eb4]!4 [g2,g3,d4]!3",
  K: "[c3,g3,eb4]!4 ~ [d3,bb3,f4] [eb3,bb3,eb4]!4 ~ [eb3,bb3,eb4]", // Cm Bb Eb5
  L: "[eb3,bb3,eb4]!4 ~ [eb3,bb3,eb4]!5 ~ [eb3,bb3,eb4]", M: "[c3,g3,eb4]!4 ~ [c3,g3,eb4] [d3,bb3,f4]!4 ~ [d3,bb3,f4]",
  N: "[eb3,bb3,eb4]!4 ~ [eb3,bb3,eb4] [f3,c4,f4]!4 ~ [f3,c4,f4]", O: "[bb2,bb3,f4]!4 ~ [bb2,bb3,f4]!5 ~ [bb2,bb3,f4]",
  P: "[bb2,bb3,f4]!4 ~ [bb2,bb3,f4] [bb2,bb3,f4]@6", // Bb5
})).s("gm_trombone").gain(0.4)

// chords · trombone · soft notes
const trombone_soft = note("<A@6 B@8 ~@2 C@2 D@4 E F G ~@17>".pickRestart({
  A: "[~ [bb2,f3,bb3]@10 [f3,bb3]]/6", B: "[bb2,f3,bb3]/8", C: "[c3,f3,c4]/2",
  D: "[[g3,c4,eb4]@17 [bb3,d4,f4] [bb3,eb4,g4]@30]/4", E: "[g3,c4,eb4] [bb3,d4,f4]", F: "[bb3,eb4,g4] [d4,f4]",
  G: "bb2!8 ~@4",
})).s("gm_trombone").gain(0.2)

// other · trombone · "Trombone 1"
const trombone_2 = note("<~@10 A B@3 C D E@2 F G@3 H I J@2 K L@2 M N O P@2 Q R@3 S T U@2>".pickRestart({
  A: "bb3!3 a3", B: "[bb3@5 c4 d4@27 ~@3]/3", C: "d4 eb4!2 d4", D: "c4@3 d4@3 bb3@5 c4", E: "[c4@7 ~]/2", F: "eb4!3 d4",
  G: "[eb4@5 f4 g4@27 ~@3]/3", H: "eb4 g4 f4 bb3", I: "eb4@3 d4@3 c4@5 bb3", J: "[bb3@7 ~]/2", K: "d4!2 eb4!2",
  L: "[c4@5 f4 f4@18]/2", M: "f4@3 ~", N: "f4 g4!2 f4", O: "f4@3 f4@3 d4@5 f4", P: "[f4@7 ~]/2", Q: "g4!4",
  R: "[g4@5 bb4 bb4@27 ~@3]/3", S: "g4 c5 bb4 f4", T: "g4@3 g4@3 f4@5 d4", U: "d4/2",
})).s("gm_trombone").gain(0.25)

// other · trombone · "Trombone 1" · soft notes
const trombone_soft_2 = note("<~@4 A B C@4 ~@32>".pickRestart({
  A: "~@2 bb3!2", B: "bb3!2 c4@2", C: "bb3/4",
})).s("gm_trombone").gain(0.15)

// other · trombone · "Trombone 2"
const trombone_3 = note("<~@10 A B@3 C D E@2 F G@3 H I J@2 K L@3 M N O@2 P Q R@2 S T U@2>".pickRestart({
  A: "g3!4", B: "[bb3@5 a3 bb3@27 ~@3]/3", C: "bb3!4", D: "a3@3 bb3@3 g3@5 a3", E: "[a3@7 ~]/2", F: "c4!3 bb3",
  G: "[c4@5 d4 eb4@27 ~@3]/3", H: "c4 eb4 d4 bb3", I: "bb3@3 bb3@3 a3@5 f3", J: "[f3@7 ~]/2", K: "bb3!3 a3",
  L: "[bb3@5 c4 d4@27 ~@3]/3", M: "d4 eb4!2 d4", N: "c4@3 d4@3 bb3@5 c4", O: "[c4@7 ~]/2", P: "eb4!3 d4",
  Q: "eb4@3 eb4@2 f4 g4@6", R: "[g4@7 ~]/2", S: "eb4 g4 f4 bb3", T: "eb4@3 d4@3 c4@5 bb3", U: "bb3/2",
})).s("gm_trombone").gain(0.25)

// other · trombone · "Trombone 2" · soft notes
const trombone_soft_3 = note("<~@4 A B C@4 ~@32>".pickRestart({
  A: "~@2 g3!2", B: "g3!2 a3@2", C: "f3/4",
})).s("gm_trombone").gain(0.15)

// other · trombone · "Trombone 3"
const trombone_4 = note("<~@10 A B@3 C D E@2 F G@3 H I J@2 A K@3 C D E@2 F G@3 L M N@2>".pickRestart({
  A: "d3!2 eb3!2", B: "[f3@5 f3 f3@27 ~@3]/3", C: "f3 g3!2 f3", D: "f3@3 f3@3 d3@5 f3", E: "[f3@7 ~]/2", F: "g3!4",
  G: "[g3@5 bb3 bb3@27 ~@3]/3", H: "g3!2 bb3 f3", I: "g3@3 g3@3 f3@5 d3", J: "[d3@7 ~]/2",
  K: "[f3@3 [f3,bb3]@2 f3 f3@27 ~@3]/3", L: "g3 c4 bb3 d3", M: "bb3@3 bb3@3 a3@5 f3", N: "f3/2",
})).s("gm_trombone").gain(0.25)

// other · trombone · "Trombone 3" · soft notes
const trombone_soft_4 = note("<~@4 A B C@4 ~@32>".pickRestart({
  A: "~@2 d3!2", B: "bb2!2 c3@2", C: "bb2/4",
})).s("gm_trombone").gain(0.15)

// other · trombone · "Trombone 4"
const trombone_5 = note("<~@4 A B ~@4 C D@3 E F G@2 H I@3 J K L@2 M N@3 O P Q@2 R S@3 T U V@2>".pickRestart({
  A: "~ d3", B: "eb3 ~", C: "g2!2 bb2!2", D: "[c3@5 c3 bb2@27 ~@3]/3", E: "bb2!4", F: "a2@3 bb2@3 g2@5 c3",
  G: "[c3@7 ~]/2", H: "c3!3 g2", I: "[c3@5 d3 eb3@27 ~@3]/3", J: "c3!2 d3!2", K: "eb3@3 eb3@3 f2@5 bb2",
  L: "[bb2@7 ~]/2", M: "d3!2 eb3!2", N: "[f3@5 f3 f3@27 ~@3]/3", O: "f3 g3!2 f3", P: "f3@3 f3@3 d3@5 f3",
  Q: "[f3@7 ~]/2", R: "g3!4", S: "[g3@5 bb3 bb3@27 ~@3]/3", T: "g3 c4 bb3!2", U: "bb3@3 bb3@3 a3@5 f3", V: "f3/2",
})).s("gm_trombone").gain(0.25)

// bass · tuba
const bass = note("<~@10 A B@3 C D E@2 F G@3 H I J@2 K L@3 M N O@2 P Q@3 R S T@2>".pickRestart({
  A: "bb2!2 eb2!2", B: "[f2@5 g2 bb2@30]/3", C: "bb1!4", D: "a1@3 bb1@3 g1@5 f2", E: "f2/2", F: "c2!3 g1",
  G: "[c2@5 d2 eb2@30]/3", H: "c2!2 d2!2", I: "eb2@3 eb2@3 f2@5 bb1", J: "bb1/2", K: "g2!2 eb2!2",
  L: "[f2@5 f2 bb2@27 ~@3]/3", M: "bb2!4", N: "a2@3 bb2@3 g2@5 f2", O: "[f2@7 ~]/2", P: "c3!3 g2",
  Q: "[c3@5 d3 eb3@27 ~@3]/3", R: "c3!2 d3!2", S: "eb3@3 eb3@3 f3@5 bb2", T: "bb2/2",
})).s("gm_tuba").gain(0.25)

// bass · tuba · soft notes
const bass_soft = note("<~@4 A B C@4 ~@32>".pickRestart({
  A: "~@2 g2!2", B: "eb2!2 f2@2", C: "bb1/4",
})).s("gm_tuba").gain(0.15)

stack(
  flute, trumpet, trumpet_2, trombone, trombone_soft, trombone_2, trombone_soft_2, trombone_3, trombone_soft_3,
  trombone_4, trombone_soft_4, trombone_5, bass, bass_soft
)

More by Christopher Tin