Strudelify

Adoration - Florence B Price

Florence B Price

KeyD majorTempo84 bpm
0:00/0:00
// Adoration - Florence B Price — Florence B Price
// 84 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Transcription provider: pdmx. https://musescore.com/score/5838006; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 61 bars on a 48-step grid, each part at one level. Source detail keeps the original performance.
setcpm(84/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 · synth strings 1
const synth_strings_1 = note("<~@24 A B@5 C D E@5 F@4 ~@20>".pickRestart({
  A: "[g4,b4]@13 [b4,d5]@25 [g4,b4]@10", // G Bm G
  B: "[~@2 f#4@13 ~@13 [e4,g4]@12 [f#4,a4]@13 [g4,b4]@12 [b4,d5]@25 ~ [a4,f5]@12 [b4,e5]@25 e4@25 ~ b4@12 e4@25 g4@13 g#4@13 a4@12 c5@11, ~@2 a4@25 ~@213, ~@15 d4@38 ~@187]/5", // Em F#m G Bm Dm E5
  C: "~@2 e5@12 a5@25 ~ g5@8", D: "~@4 f#5@13 e5@12 d5@13 g#4@6",
  E: "[~@7 a4@12 [g4,b4]@13 [b4,d5]@25 [g4,b4]@13 a4@25 g4@12 a4@13 b4@13 d5@25 c5@12 [d#4,b4]@50 ~ [e4,g4]@12 [f#4,a4]@7, ~@7 f4@5 e4@5 ~@7]/5", // G Bm G G#m Em F#m
  F: "[~@6 b4@13 g5@12 f#5@13 e5@12 b4@25 ~ e4@12 g4@13 e4@12 [d#4,a#4]@13 [d4,b4]@50 ~@10, ~@6 g4@76 c#4@25 ~@85, ~@31 b4@25 ~@38 b4@25 ~@73]/4", // D#5 G
})).s("gm_synth_strings_1").gain(0.45)

// other · french horn
const french_horn = note("<~@53 A B@2 C D@4>".pickRestart({
  A: "~@19 f#4@5", B: "[~ e4@6 f#4@6 g4@6 b4@12 a4@17]/2", C: "~ a4@6 b4@6 c5@6 d5@5",
  D: "[~ b4@6 g4@6 e4@6 g4@12 f#4@6 c#4@6 d4@42 ~@11]/4",
})).s("gm_french_horn").gain(0.45)

// chords · recorder
const recorder = note("<A@2 B@2 C D E F G@2 H@2 I J K ~ L@2 M@2 N@2 O@2 ~@16 P@2 Q@2 R@8 S@2 ~@7>".pickRestart({
  A: "[[d4,f#4]!4 [d4,f#4] [f#3,b3,d4] [g3,b3,d4] [a3,b3,d4], a3@2 b3@3 ~@3]/2", // D Bm G Bm7
  B: "[[g3,b3]!4 [g3,b3] [f#3,b3] [g3,b3] [b3,d4], f#3@2 e3@3 ~@3]/2", C: "[e4,g4]!2 [c#4,e4,g4] ~, d4 ~",
  D: "[c#4,e4]!2 [a3,c#4,f#4] ~, b3 ~", E: "[g3,b3,d4]", F: "[e3,a#3,d4] [a3,c#4]", G: "[[a3,d4]!4 [a3,d4]!4, f#3]/2",
  H: "[[g3,b3]!4 [g3,b3] ~@3, d3@5 ~@3]/2", I: "[g3,b3]!2 [g3,a3] [g3,b3], e3 ~", J: "[g3,c#4]@3 ~", K: "[f#3,d4] ~",
  L: "[~ g4 a4 a#4 d5 ~@3, ~ e4@4 ~@3]/2", M: "[~ a4 b4 ~ d5 ~@3, ~ f#4@4 ~@3, ~@3 a4@2 ~@3]/2",
  N: "[~ g4 a4 a#4 d5@2 c5@2, ~ d#4@7]/2", O: "[~ [g3,d#4] [f#3,d4]@2, ~ [c4,a4]@3]/2",
  P: "[~@19 [d4,f#4]@6 [d4,f#4]@6 [d4,f#4]@6 [d4,f#4]@6 [d4,f#4]@5, ~@19 a3@12 b3@17]/2", // D
  Q: "[~ [f#3,b3,d4]@6 [g3,b3,d4]@6 [a3,b3,d4]@6 [g3,b3]@6 [g3,b3]@6 [g3,b3]@6 [g3,b3]@6 [g3,b3]@5, ~@19 f#3@12 e3@17]/2", // Bm G Bm7 G
  R: "[~ [f#3,b3]@6 [g3,b3]@6 [b3,d4]@6 [e4,g4]@6 [e4,g4]@6 [c#4,e4,g4]@6 ~@6 [c#4,e4]@6 [c#4,e4]@6 [a3,c#4,f#4]@6 ~@6 [g3,b3,d4]@24 [e3,a#3,d4]@12 [a3,c#4]@12 [a3,d4]@6 [a3,d4]@6 [a3,d4]@6 [a3,d4]@6 [a3,d4]@6 [a3,d4]@6 [a3,d4]@6 [a3,d4]@6 [g3,b3]@6 [g3,b3]@6 [g3,b3]@6 [g3,b3]@6 [g3,b3]@5, ~@19 d4@12 ~@12 b3@12 ~@60 f#3@48 d3@29]/8", // B5 G Bm Em C#dim C#m F#m G …
  S: "[~@19 [g3,b3]@6 [g3,b3]@6 [g3,a3]@6 [g3,b3]@6 ~@5, ~@19 e3@12 ~@17]/2", // G Gsus2 G
})).s("gm_recorder").gain(0.45)

// chords · synth strings 1
const synth_strings_1_2 = note("<~@24 A B C D E@6 F@7 ~@20>".pickRestart({
  A: "d3@25 ~@13 b3@10, b3@19 ~@5, ~@25 d3@23", B: "~ [d3,c4]@23", C: "~@5 [d3,b3]@25 [g3,d4]@18", D: "~@7 [g#3,d4]@41",
  E: "[~@10 [g3,c#4]@50 f#3@25 [e3,g3]@25 f#3@25 ~ e3@12 f#3@13 g3@12 f#3@38 b3@38 b3@13 c4@12 b3@14, ~@60 c4@151 d3@77]/6", // Gdim Em
  F: "[~@11 [g3,a3]@13 c3@25 a2@25 ~@26 f#3@12 ~@25 c4@13 c#4@25 [d3,d4]@50 ~ b3@12 e3@13 [d3,f#3,c4]@25 [g3,b3]@50 ~@10, ~@24 g3@76 ~@12 b3@25 ~@199, ~@74 b2@50 ~ e3@50 ~@161]/7", // Gsus2 D D7 G
})).s("gm_synth_strings_1").gain(0.45)

// chords · recorder
const recorder_2 = note("<~@53 A B@7>".pickRestart({
  A: "~@19 [g3,c#4]@5", // Gdim
  B: "[~@19 [c4,e4]@6 [c4,e4]@6 [c4,e4]@6 [c4,e4]@6 [c4,d4]@6 ~@18 [g3,b3,d4]@12 ~@12 [a#3,d4]@12 [a3,c#4]@12 [d3,f#3,a3]@12 [g3,b3]@12 [f#3,a3,d4]@18 ~@11, ~@19 f#3@30 ~@42 g3@24 ~@53]/7", // C Csus2 G A# A D G D
})).s("gm_recorder").gain(0.45)

// other · cello · "Pedal"
const cello = note("<A@6 B C D@2 E@2 F@2 G ~@9 B H I J@8 K@4 L@7 M@6 N@4 O@5>".pickRestart({
  A: "[d3@23 ~]/6", B: "g2", C: "e2 a2", D: "d2/2", E: "[g2@5 ~@3]/2", F: "[a2@7 ~]/2", G: "d2 ~", H: "~ d2@23",
  I: "~@5 g2@43", J: "[~@7 e2@50 ~ a2@50 d3@50 d2@101 g2@101 c3@24]/8", K: "[~ a2@25 b2@50 ~ e3@50 d3@50 ~ a2@14]/4",
  L: "[~@11 d2@25 g2@50 d3@250]/7", M: "[~@19 g2@24 e2@12 a2@12 d2@48 g2@29]/6", N: "[~@19 a2@24 a2@18 ~@6 d3@29]/4",
  O: "[~@19 g2@12 ~@12 a2@24 d2@42 ~@11]/5",
})).s("gm_cello").gain(0.72)

stack(synth_strings_1, french_horn, recorder, synth_strings_1_2, recorder_2, cello)