Strudelify

a house is not a home

Matthew Rosario

KeyB♭ majorTempo120 bpm
0:00/0:00
// a house is not a home — Matthew Rosario
// 120 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5955843; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 33 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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 · trumpet · "B♭ Trumpet"
const trumpet = note("<A B C D E F G H I@8 ~@2 J K J L M N O M P@2 Q R S T U>".pickRestart({
  A: "bb3", B: "a4", C: "[bb4,d5]", D: "[c5,eb5]", E: "[db5,f5]", F: "[ab4,eb5,ab5]", G: "[bb4,gb5,bb5]",
  H: "[ab4,c5,ab5,c6]", I: "[bb4@7 bb4, [e4,ab4]]/8", J: "bb5@2 g5@4 ab5 bb5", K: "ab5@6 g5!2", L: "ab5@2 g5 bb5",
  M: "g5 eb5 eb5@2", N: "~ eb5 g5 ab5", O: "g5@3 f5", P: "[ab5@3 g5@3 eb5@4 ~@2 c5@2 eb5@2]/2", Q: "[g5,bb5]",
  R: "[f5,g5]", S: "bb5", T: "d6@2 d6 eb6 f6@4", U: "[bb5,d6,f6]",
})).s("gm_trumpet").gain(0.4)

// chords · trumpet · "B♭ Trumpet"
const trumpet_2 = note("<A B C D E F G F H@8 ~@2 I J I K L M N L O@2 P Q R@3>".pickRestart({
  A: "bb3", B: "f4", C: "[f4,bb4]", D: "[ab4,bb4]", E: "[gb4,bb4]", F: "[c5,eb5]", G: "[db5,f5]",
  H: "[[f4,a4]@5 [f4,a4]@3, b4, ~@5 c5 ~@2]/8", I: "[bb4,g5]@2 [g4,eb5]@4 [ab4,f5] [bb4,g5]",
  J: "[ab4,f5]@6 [g4,eb5]!2", K: "[ab4,f5]@2 g4 bb4", L: "g4 eb4 eb4@2", M: "~ eb4 g4 ab4", N: "g4@3 f4",
  O: "[ab4@3 g4@3 eb4@4 ~@2 c4@2 eb4@2]/2", P: "[g4,bb4]", Q: "[bb4,d5]", R: "[d5,f5]",
})).s("gm_trumpet").gain(0.4)

// other · trumpet · "B♭ Trumpet"
const trumpet_3 = note("<A B C D E D F D G@8 ~@2 H I H J K L M K N@2 O A P@3>".pickRestart({
  A: "bb3", B: "[d4,f4]", C: "[eb4,g4]", D: "[eb4,ab4]", E: "[eb4,f4]", F: "[f4,c5]", G: "[d4,f4,ab4]/8",
  H: "bb4@2 g4@4 ab4 bb4", I: "ab4@6 g4!2", J: "ab4@2 g4 bb4", K: "g4 eb4 eb4@2", L: "~ eb4 g4 ab4", M: "g4@3 f4",
  N: "[ab4@3 g4@3 eb4@4 ~@2 c4@2 eb4@2]/2", O: "g4", P: "f4",
})).s("gm_trumpet").gain(0.4)

// other · french horn · "Mellophone"
const french_horn = note("<A B C D E F B F G@8 ~@2 H I H J K L M N O D C@2 P Q R>".pickRestart({
  A: "bb3", B: "f4", C: "bb4", D: "ab4", E: "gb4", F: "eb4", G: "[db4,e4,g4]/8", H: "bb4@2 g4@4 ab4 bb4",
  I: "ab4@6 g4!2", J: "ab4 ~", K: "g4@6 eb4 f4", L: "g4", M: "~@2 eb4 f4 g4@2 ab4@2", N: "bb4 ab4", O: "c5",
  P: "[g4,bb4,g5]", Q: "[eb4,g4,d5]", R: "[g4,bb4,f5]",
})).s("gm_french_horn").gain(0.3)

// other · french horn · "Mellophone"
const french_horn_2 = note("<A B@2 A@2 C D C E@8 ~@2 F G F H I J K L M N O B@4>".pickRestart({
  A: "bb3", B: "f4", C: "c4", D: "db4", E: "[bb3,d4,e4]/8", F: "g4@2 eb4@4 f4 g4", G: "f4@6 eb4!2", H: "f4 ~",
  I: "eb4@6 c4 d4", J: "eb4", K: "~@2 c4 d4 eb4@2 f4@2", L: "g4 eb4", M: "ab4", N: "[eb4,f4]", O: "g4",
})).s("gm_french_horn").gain(0.3)

// other · french horn · "Baritone Horn"
const french_horn_3 = note("<A B A B A C D E F@8 ~@2 G H G I J@2 K@2 G K G L M@3>".pickRestart({
  A: "bb2", B: "c3", C: "ab2", D: "f3", E: "eb3", F: "[bb2,e3,g3]/8", G: "eb4", H: "eb4 d4", I: "db4", J: "[c4,eb4]",
  K: "c4", L: "d4", M: "f4",
})).s("gm_french_horn").gain(0.3)

// other · tuba · "Euphonium"
const tuba = note("<A B A B A C D E F@8 ~@2 G H I J@7 I@5>".pickRestart({
  A: "bb2", B: "c3", C: "ab2", D: "f3", E: "eb3", F: "[b2,d3,f3]/8", G: "c4", H: "b3", I: "bb3", J: "ab3",
})).s("gm_tuba").gain(0.3)

// other · tuba · "Euphonium"
const tuba_2 = note("<A B@2 C D E F E G@8 ~@2 B H B I J@6 K@5>".pickRestart({
  A: "bb2", B: "g3", C: "f3", D: "gb3", E: "ab3", F: "bb3", G: "[g2,b2,db3]/8", H: "g3 f3", I: "f3 e3", J: "eb3",
  K: "[eb3,g3]", // Eb
})).s("gm_tuba").gain(0.3)

// chords · tuba
const tuba_3 = note("<A B A B A C D E F@7 G F ~ C H B A C@2 I@2 J@2 K@5>".pickRestart({
  A: "bb2", B: "c3", C: "ab2", D: "f3", E: "eb3", F: "[d2,f2,g2]", G: "[f2,g2]", H: "g2", I: "f2", J: "bb1", K: "eb2",
})).s("gm_tuba").gain(0.3)

stack(trumpet, trumpet_2, trumpet_3, french_horn, french_horn_2, french_horn_3, tuba, tuba_2, tuba_3)