Strudelify
KeyF majorTempo80 bpm
0:00/0:00
// nadias theme — Barry De Vorzon - Perry Botkin Jr.
// 80 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/1660571; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 51 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(80/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.

// chords · piano · "ピアノ"
const piano = note("<A@2 B C D E F G H@2 A@2 I@2 J@2 K@2 ~@8 A@2 I@2 J@2 L K ~@8 A@2 I@2 J@2 L@2 M>".pickRestart({
  A: "[a4,bb4,d5]!2 [g4,bb4,d5]!2", B: "[a4,bb4,d5]!2 [g4,bb4,d5]!2, d7@23 ~",
  C: "[a4,bb4,d5]@6 [a4,bb4,d5]@6 ~@3 d6@3 ~ g6@2 ~ d7@2, ~@2 [g4,bb4,d5]!2", D: "[g4,a4,c5]!2 [f4,a4,c5]!2, c7@23 ~",
  E: "[g4,a4,c5]@6 [a4,c5]@3 g4@3 c6@4 ~@4 c7@4, ~@2 [f4,a4,c5]!2, ~@4 f6 ~", // Am7 Am F
  F: "[f4,g4,bb4]@2 [f4,g4,bb4]@2 [eb4,g4,bb4]@2 ~ c7, bb6@11 ~@7 [eb4,g4,bb4]@6", // Gm7 Eb
  G: "[f4,g4,bb4]@2 [f4,g4,bb4]@2 [eb4,g4,bb4]@2 ~ bb6, d7@11 ~@7 [eb4,g4,bb4]@6", // Gm7 Eb
  H: "[[e4,f4,a4]@6 [e4,f4,a4]@6 [d4,f4,a4]@6 [d4,f4,a4]@6 [e4,f4,a4]@6 [e4,f4,a4]@6 ~@2 d6 e6 ~ f6 g6 ~ a6 bb6 ~ c7, a6@17 ~ [d4,f4,a4]@3 [d4,f4,a4]@3]/2", // Fmaj7 Dm Fmaj7 Dm
  I: "[g4,a4,c5]!2 [f4,a4,c5]!2", J: "[f4,g4,bb4]!2 [eb4,g4,bb4]!2", K: "[e4,f4,a4]!2 [d4,f4,a4]!2", L: "[e4,f4,a4]!4",
  M: "[d4,f4,a4]@23 ~", // Dm
})).s("gm_piano").gain(0.3)

// other · violin · "ヴァイオリン"
const violin = note("<~@10 A@2 B@2 C D E@2 F G H@2 I J K L ~@7 M N@2 H@2 I J K L ~@9>".pickRestart({
  A: "[d6@13 d5 g5 d6]/2", B: "[c6@37 ~@2 c5@3 f5@3 c6@3]/2", C: "bb5@3 c6", D: "d6@3 bb5", E: "[a5@13 a5 c6 f5]/2",
  F: "g5", G: "g5@6 c6 g5", H: "[a5@13 c6 f6 c6]/2", I: "d6 c6!2 bb5 bb5@4", J: "e6 d6!2 c6!2 a5 c6 a5",
  K: "d6 c6 bb5!3 a5!2 f5", L: "d5", M: "~@5 a5 c6 f5", N: "[g5@13 g5 c6 g5]/2",
})).s("gm_violin").gain(0.35)

// chords · viola · "ヴィオラ"
const viola = note("<~@18 A@2 B@2 C D C@2 ~@6 E@2 A@2 B@2 C D C@2 ~@6 F@3>".pickRestart({
  A: "[c4,e4,g4]", B: "[c4,f4,a4]", C: "[bb3,d4,f4]", D: "[a3,c4,e4]", E: "[~@9 g4@3 f4@4 ~ g4@4 a4@15 ~@12]/2",
  F: "[~@9 g4@3 f4@4 ~ g4@4 a4@15 ~@6 f4@5 ~@4 a4@21, ~@39 g4@6 ~@2 g4@4 ~@21, ~@2 [d3,f3,a3]]/3", // Dm
})).s("gm_viola").gain(0.3)

// other · flute · "フルート"
const flute = note("<~@26 A@2 B@2 C@2 D E ~@8 A@2 B@2 F G D H@2>".pickRestart({
  A: "[d6@37 ~@2 d5@3 ~@2 g5 d6@3]/2", B: "[c6@17 ~ c5@2 f5@2 c6@2]/2", C: "[bb5@37 ~@2 c6@3 d6@3 bb5@3]/2",
  D: "a5@23 ~", E: "a5@11 ~@13", F: "bb5@23 ~", G: "bb5@11 ~@4 c6@3 d6@3 bb5@3", H: "[a5@23 ~]/2",
})).s("gm_flute").gain(0.35)

// bass · synth bass 1 · "ベース+リード シンセサイザー"
const bass = note("<~@18 A@2 B@2 C D C E F@2 G@2 H@2 F I A@2 B@2 C D C E F@2 G@2 H@2 F I J>".pickRestart({
  A: "c2@2 ~ c2 c3@2 g2@2", B: "f2@2 ~ f2 f3@2 c3@2", C: "bb2@2 ~ bb2 f3@2 bb2@2", D: "a2@2 ~ a2 e3@2 a2@2",
  E: "bb2@2 ~ bb2 bb2@4", F: "d3!4", G: "c3!4", H: "bb2!4", I: "d3!3 a2", J: "[d2,d3]",
})).s("gm_synth_bass_1").gain(0.4)

stack(piano, violin, viola, flute, bass)