Strudelify

You Don't Bring Me Flowers

Barbra Streisand

KeyC majorTempo60 bpm
0:00/0:00
// You Don't Bring Me Flowers — Barbra Streisand
// 60 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 49 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(60/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@3 B C@7 D@7 E F G H I J K L M N O P Q R@7 S@8 T@3>".pickRestart({
  A: "[~@17 g3@4 ~@3 g3@3 ~@10 g4@8 f3@3 ~@5 f4@4 e4@3 ~ [c4,e4]@5 d4@4 c4@5 a3@5 [c2,e3,g3]@16, ~@12 [c3,c4,d4]@15 ~ [c3,b3]@16 ~@5 f3@11 ~ [g2,f3]@8 ~ [g2,f3]@10 ~@16, ~@13 e4@15 ~ d4@16 ~@51, ~@21 g4@7 ~@4 g3@12 ~ [g3,a3]@15 ~@36]/3", // C Csus2 Cmaj7 G7 Gsus2
  B: "~@11 g4@8 [c2,f3,a3,c4]@13, ~@3 [c2,g3,b3,d4]@16 ~@13, ~@7 d3@12 ~@13", // F G
  C: "[~@3 g3@4 ~@8 g4@4 [f2,c3,a3,c4,f4,a4]@16 ~@12 g4@4 [d2,c4,f4,c5]@17 ~ [c3,e4,a4,c5]@11 ~@12 g6@40 ~@21 g3@4 g3@3 ~ g3@4 g3@4 ~@16 g3@4 ~@4 g3@3 ~@5 g3@4 c4@4 c4@3 ~ g4@7 ~ g4@3, ~@3 [c2,e3]@16 ~@16 [c2,d4]@16 ~@145 c2@16 f2@12, ~@7 g2@12 ~@20 g2@12 ~@17 f2@11 ~ [g2,d4,g4]@51 ~ c3@16 c3@16 ~ c3@15 c3@16 ~ g2@16 [c3,c4,e4]@11, ~@10 [g3,c4]@9 ~@17 g4@6 ~ [c4,e4]@8 ~@30 b4@51 ~@5 g3@7 ~ g3@7 ~@13 [a3,c4,f4,g4]@8 [a3,c4,f4,g4]@8 [c4,e4,g4]@8 [c4,e4,g4]@8 [c4,e4,g4]@8 [e4,g4]@8 ~@11, ~@11 e4@8 ~@16 [c4,e4]@6 ~ g3@8 ~@41 [g3,g5]@42 [c4,d4,e4,g4]@8 [c4,d4,e4,g4]@8 [b3,d4,g4]@7 ~ [b3,d4,g4]@8 ~@4 g3@7 ~ g3@7 ~@40]/7", // F Dm7 Am C Csus2 G5 C C5 …
  D: "[~@3 c4@2 ~@8 c4@4 c4@2 b3@2 ~@8 [b3,d4,g4]@8 [c4,e4]@8 ~@4 d4@3 ~ e4@7 ~@5 c4@4 [c4,a4]@8 ~@4 f4@4 ~@4 d3@4 a4@4 [d3,b4]@4 ~@4 g2@12 ~@11 e3@9 [a2,e3,e4,a4,c5]@20 ~@6 d#3@5 a#4@5 g#4@5 [g2,c4,e4,g4]@20 ~@12 b3@13 ~, ~ e4@4 g2@15 ~ g2@16 [c2,g2,g3,g4]@16 [f2,c3,a3]@16 [g2,d3,c5]@15 ~ [g2,d4,f4,g4]@16 [c2,e4,g4,c5,e5]@17 [e2,e4,g4,b4]@20 ~@30 [f3,d4,f4]@10 ~@21 c4@11 ~@14, ~@5 [a3,c4,f4]@8 [a3,f4]@8 [b3,d4,g4]@8 ~@16 c4@7 ~ c4@11 ~@13 [c4,a4]@7 ~@9 g3@8 ~@22 b2@15 ~@20 g#2@20 ~@21 [g2,d4,g4]@24 ~, ~@9 d3@12 ~@4 d3@12 ~@24 [e4,c5]@8 f4@12 ~@4 b4@11 ~@23 d5@19 ~@20 [g#4,c5]@10 ~@36 d3@19 ~]/7", // G C F G Am C C5 F …
  E: "~@3 g4, [c2,c4,d4,e4] [c2,b3,d4], ~ g3@2 g3@2 g3@3, ~@8 g4@7 ~@17", // C G
  F: "f3@3 ~@5 f4@4 e4@4 e4@4 d4@4 c4@4 b3@4, [c2,g3,a3]@2 [g2,f3,c4] [g2,f3], ~@4 f3@11 ~@17", // Am7 Csus4 G7
  G: "[c2,e3,g3]@2 ~ g4, ~ [c2,g3,b3,d4], ~@5 d3@3", // C G
  H: "[c2,f3,a3,c4]@4 g3 ~@2 g4, ~ [c2,e3], ~@5 g2@3, ~@23 [g3,c4]@9, ~@3 e4", // F C C5
  I: "[f2,c3,a3,c4,f4,a4]@4 ~@3 g4, ~ [c2,d4], ~@4 [c4,e4] g2@3, ~@17 g4@6 ~ [g3,c4,e4]@8", // F Csus2 C
  J: "[d2,c4,f4,c5]@16 ~ c5@7 ~ b4@7, ~@16 [f2,c3,e4,a4]@8 [g2,d4,g4]@7 ~", // Dm7 Fmaj7 G5
  K: "~@20 g3@4 g3@3 ~ g3@4, c3@15 ~ c3@16, [c4,d4,e4,g4]@8 [c4,d4,e4,g4]@8 [b3,d4,g4]@7 ~ [b3,d4,g4]@8, ~@4 g3@7 ~ g3@7 ~@13", // C G
  L: "g3 ~@4 g3 ~ g3, c3!2, [a3,c4,f4,g4]!2 [c4,e4,g4]!2, ~@4 g3@7 ~ g3@7 ~@13", // F C
  M: "~@8 c4@4 c4@4 g4@7 ~@7 c4@2, [c2,g2] [f2,c3], [c4,e4,g4]@2 [e4,g4]@2 [c4,e4]@3 e4, ~ g3@3 ~@2 g4@2", // C5 F5 C Em C
  N: "~@4 c4@2 c4 b3 ~@4 [b3,d4,g4]@4, g2@15 ~ g2@16, [a3,c4,f4] [a3,f4] [b3,d4,g4] ~, ~ d3@3 ~ d3@3", // G F Dm G
  O: "[c4,e4]@8 ~@4 d4@4 e4@7 ~@5 c4@4, [c2,g2,g3,g4] [f2,c3,a3], ~@8 c4@8 c4@11 ~@5, ~@3 [e4,c5]", // C C5 F C
  P: "[c4,a4]@2 ~ f4 ~ d3 a4 [d3,b4], [g2,d3,c5] [g2,d4,f4,g4], f4@12 ~@4 b4@11 ~@5, ~@8 [c4,a4]@7 ~@9 g3@8", // F G Gsus4 G7 F
  Q: "~@4 g2@11 ~@10 e3@7, [c2,e4,g4,c5,e5] [e2,e4,g4,b4], ~@17 d5@15, ~@21 b2@11", // C Em
  R: "[~@2 [a2,e4,a4,c5]@18 [g2,e4,g4,c5]@18 [f2,c4,e4,a4]@18 ~@5 d#3@5 a#4@4 g#4@5 [g2,c4,e4,g4]@20 ~@12 b3@12 ~@12 e4@3 ~ a3@3 ~@8 e4@3 ~ [c4,e4,g4]@7 ~@4 g3@3 ~@8 g#2@8 ~@22 [e4,a4,c5,e5]@7 ~@4 f3@4 ~@4 f3@3, ~@56 g#2@19 ~@20 g2@22 ~@2 a2@15 ~ [g2,a4]@15 d2@24 ~@6 g2@30 g2@14, ~@56 [g#4,c5]@9 ~ [f3,d4,f4]@10 ~@20 [d4,g4]@23 ~ a4@15 ~@3 a3@11 ~ g3@11 ~@4 [f#3,e4,f#4]@15 g3@15 a3@15 ~@14, ~@96 c4@12 ~@11 a3 c4@3 a3@11 ~ c4@7 c4@7 ~@8 [c4,e4,g4]@7 ~ c4@18 c4@7 ~ c4@7 c4@11 ~ [c4,f4,a4]@7 [c4,f4,a4]@7, ~@101 d3@18 ~ e4@7 c4@7 ~ e4@11 ~@34 e4@7 [e4,g4,c5]@7 ~ [e4,a4]@7 ~@22]/7", // Am C Fmaj7 C Am Gsus2 G# Dm …
  S: "[~@4 f3@4 ~@4 f3@4 ~@26 e3@9 [a2,e3,e4,a4,c5]@21 ~@6 d#3@5 a#4@5 g#4@5 ~ [g2,c4,e4,g4]@20 ~@11 b3@10 ~@11 [c6,e6]@10 ~@11 [b5,d6]@11 [c3,g3,c4,e4]@12 ~ [g3,b3,d4]@11 ~@7 g4@7 [g2,g3,b3,d4,g4]@15 [e4,g4,c5]@8 ~ [d4,g4,b4]@8 [c3,c4,f4,a4]@8, ~ g2@16 ~@3 g2@11 ~@2 [e2,e4,g4,b4]@19 ~@68 d3@15 ~@10 g5@10 ~@2 d5@21 ~@78, ~ [b3,d4,g4]@7 [b3,d4,g4]@8 [c2,e4,g4,c5,e5]@17 ~ d5@18 ~@21 [g#4,c5]@10 ~@32 g4@20 ~ [c5,e5]@20 [g4,c5]@21 ~@26 g3@13 ~@40, ~@25 e3@17 ~@41 [f3,d4,f4]@11 ~@20 c4@11 ~@16 c4@15 ~@10 g5@11 ~@79, ~@37 b2@14 ~@22 g#2@21 ~@20 [g2,d4]@20 ~ [g2,g4]@21 d3@5 ~ d3@17 ~@11 b2@11 ~ [a2,c4,d4]@13 ~@16 c3@17 ~@8]/8", // Am C Bm C G C G F …
  T: "[~@6 g2@7 ~ [e4,g4]@51 ~@31, ~ [b3,d4,g4]@12 [c2,c4,d4]@52 ~@31]/3", // Em G Csus2
})).s("gm_piano").gain(0.42).pan(0.4)

// bass · fretless bass · "BASS"
const bass = note("<~@8 A@6 B@4 C@2 D@2 E F G@3 H I J K L@8 M@4 ~@2 N O@3>".pickRestart({
  A: "[~@5 c2@80 f2@16 g2@32 c2@16 f2@16 g2@27]/6", B: "[~@5 c2@17 e2@19 a2@20 g#2@21 g2@46]/4", C: "[c2@3 g2]/2",
  D: "[c2@63 ~]/2", E: "f2 c2", F: "d2@2 f2 g2", G: "[c2@5 f2]/3", H: "g2", I: "c2 f2", J: "d2 g2", K: "c2 b1",
  L: "[~@2 a1@18 g1@18 f1@18 g#1@19 g2@45 a2@15 g2@15 d2@22 g#2@8 g2@60 c2@16]/8",
  M: "[~ e2@18 a1@21 g#1@21 ~ g2@42 ~@24]/4", N: "~@7 c2@25", O: "[~ g1@12 c1@55 ~@28]/3",
})).s("gm_fretless_bass").gain(0.25)

// chords · string ensemble 2 · "STRINGS"
const string_ensemble_2 = note("<A@4 ~@4 B@4 C@6 D E F@4 G H I J K@2 L M@7 N O@7 P@2 ~>".pickRestart({
  A: "[~@16 g3@4 e4@4 c4@4 d4@17 ~@3 a3@5 f4@3 e4@4 ~ e4@5 d4@4 c4@5 a3@5 g3@34 ~@14]/4",
  B: "[~@5 [c5,e5]@16 [b4,d5]@16 [a4,f5]@16 ~ e5@15 [c4,c5]@47 [d4,b4]@12, ~@5 g5@32 c5@32 ~@59]/4", // C Bm Dm C G
  C: "[~@5 [c4,c5]@12 [d4,d5]@3 [e4,e5]@17 [f4,f5]@16 g5@27 ~@11 [e4,e5]@14 [c4,c5]@19 ~ [d#4,g#4]@10 ~ d4@10 ~@26 a3@7 b3@13, ~@73 g4@23, ~@73 c4@13 ~@10, ~@167 d4@24 ~]/6", // C D E F E C G#5
  D: "~@7 e4@4 c4@4 ~ d4@16, ~@3 g3@29", E: "~@2 f4 e4!2 d4 e4 f4, f3@3 g3, ~@4 a3@21 ~@7",
  F: "[c4@16 b3@15 [f3,a3]@16 e3@16 [f3,a3]@17 [e3,g3]@15 ~ f3@15 ~ [f3,a3]@8 ~@4 g3@4, g3@31 ~@64 d3@16 ~@9 b3@8]/4", // F Em F
  G: "e5@15 b4@17", H: "[f4,a4] ~", I: "[g4,g5]@2 [a4,a5] [g4,g5]", J: "[a4,a5] [b4,b5]",
  K: "[c6@12 [b4,b5]@2 [c5,c6] d6]/2", L: "e6",
  M: "[~@38 c4@23 c5@5 a#4@5 g#4@4 e5@20 ~@12 b4@13 ~@7 c4@4 d4@3 d4@4 [a3,c4]@4 [b3,d4]@3 [c4,e4]@4 ~ e3@3 d3@4 ~@3 d4@4 ~ d4@3 ~@4 d5@4 d#5@4 e5@3 g5@4 c6@4 b5@3 ~@8 c5@4 b4@4 a3@3 c4@3 ~ f4@4 e4@3, ~@2 c6@64 a#5@9 [g4,c5]@32 ~@13 e3@19 ~@18 g3@8 f#3@15 g3@15 ~@3 g4@8 ~@4 [a4,a5]@14, ~@95 d5@24 ~@4 a3@12 ~@15 c4@11 ~@7 c4@12 ~@14 [a3,a5]@16 ~@14]/7", // Am Bm C C5 A
  N: "~ b5@7 [c5,c6]@4 [d5,d6]@4 e6@16, d4 ~, b4@7 ~@25", // C D
  O: "[~ a6@8 ~ b6@10 ~@20 [d#3,g#3,c4]@10 ~ [a#5,a#6]@5 [g#5,g#6]@5 ~@22 f4@10 [b3,d4]@10 e5@20 ~@12 b4@11 c4@13 b3@12 a3@13 g3@15 c4@4 g3@4 b3@4 ~ g3@4 a3@5 e3@3, ~@20 [c6,c7]@31 [f3,a#3,d4]@10 ~ [g3,g5,g6]@41 c5@30 ~@66 e4@8 d4@9 c4@8, ~@62 c4@30 ~@11 g5@43 ~@78, ~@62 d5@11 ~@39]/7", // G# A# G# Bm C A# G
  P: "[~ g3@5 d3@7 g3@48 ~@3, ~ d4@12 ~@51]/2",
})).s("gm_string_ensemble_2").gain(0.16).pan(0.7)

// chords · string ensemble 2 · "STRINGS" · soft notes
const string_ensemble_2_soft = note(`<
  ~@9 A@2 B@2 C@2 D@3 ~@3 E ~@2 F G ~@2 H@2 I J@2 ~@5 K L M@2 ~@4 N@2 ~
>`.pickRestart({
  A: "[~@21 g4@16 ~@27]/2", B: "[~ [f4,a4]@4 g4@4 ~@7]/2", C: "[~@21 g4@27 ~@16]/2",
  D: "[~@29 c4@11 [f4,a#4]@10 e4@21 ~@25]/3", E: "~ g3", F: "c5@15 d5@17, g4@31 ~", G: "~ [e4,g4], c5",
  H: "[c5@12 ~@3 d5]/2", I: "e5", J: "[~@2 e4@35 ~@27]/2", K: "~ e5", L: "~ a5@9 b5@10 ~@12", M: "[~@15 e4@10 ~@7]/2",
  N: "[~@13 [e3,c6,c7]@49 ~@2]/2", // C
})).s("gm_string_ensemble_2").gain(0.12).pan(0.7)

stack(piano, bass, string_ensemble_2, string_ensemble_2_soft)

More by Barbra Streisand