Strudelify

Bachianas brasileiras No.4 W264 424

Villa-Lobos

KeyD majorTempo44 bpm
0:00/0:00
// Bachianas brasileiras No.4 W264 424 — Villa-Lobos
// 44 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/4667566; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 44 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(44/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 · string ensemble 1 · "Violin"
const string_ensemble_1 = note("<A@8 B@6 ~@4 C D E F G H I J K L M N O@4 ~ P Q R S T U V@3>".pickRestart({
  A: "[~@20 b1@12 e2@12 a2@12 d2@12 g2@12 b2@12 f#2@15 e2@3 d2@3 c#2@3 b1@15 d2@3 f#2@3 a#2@3 b4@3 d5@3 f#5@3 a#5@3 b5@6 f#5@6 b4@3 d5@3 f#5@2 a#5@2 b5@2 b5@6 f#5@6 b4@2 d5@2]/8",
  B: "[f#5@2 a#5 b5 ~ c#6 d6 ~ d6@6 b5@6 b5@3 d6@3 c#6@4 b5 ~ b5@6 a#5@6 b5@6 d6@6 d6@6 c#6@3 b5@3 [g1,f#6]@12 d6@6 c#6@3 b5@3 b6@6 a#6@6 [d1,b6]@12 b6@3 d7@3 c#7@4 b6 ~ b6@6 a#6@10, ~@2 d2@3 c#2@3 f#2@3 b1@3 a1@3 ~@3 f#1@3 e1@3 ~@3 c#1@3 f#1@4]/6", // Gmaj7 G
  C: "~@12 b1 ~ c2 d#2 ~ f#2 a2 ~ b2 c3 ~ d#3", D: "e3 d#3", E: "d3 c#3", F: "f#3 e3", G: "d#3 d3", H: "c#3 c3",
  I: "b2 [a#2,a#3]", J: "[a2,a3] [g#2,g#3]", K: "[g2,g3] [f#2,f#3]", L: "[e2,e3] [d2,d3]", M: "[c#2,c#3] [d#2,d#3]",
  N: "[e2,e3] [f2,f3]", O: "[[f#2,f#3]@11 [g2,g3]@11 [g1,g2]@27 e1@15 f#1@20 ~@12]/4", P: "f#2 e2", Q: "d2 c#2",
  R: "c2@4 b1 d2 f#2 g2", S: "a1@6 f#2@6 g1@3 b1@3 c#2@2 d2@2 e2@2", T: "f#1@2 d2@2 e1 g1 b1 c#2",
  U: "d1@2 b1@2 c#2 e1 g1 a#1", V: "[c1@3 b1@8 ~]/3",
})).s("gm_string_ensemble_1").gain(0.31)

// other · string ensemble 1 · "Violin" · soft notes
const string_ensemble_1_soft = note("<~@5 A@4 ~@5 B C D E F ~@14 G H ~@9>".pickRestart({
  A: "[~@5 b2@3 a2@3 g2@3 f#2@3 e2@3 ~@4]/4", B: "b1 e2", C: "a2 d2", D: "g2 b2", E: "f#2@5 e2 d2 c#2", F: "b1 ~",
  G: "~ b2", H: "a2 g2",
})).s("gm_string_ensemble_1").gain(0.21)

// chords · string ensemble 1 · "Violin II"
const string_ensemble_1_2 = note("<~@4 A@2 ~@2 B@6 ~@4 C D E F G H I J K L M N O@2 P@2 ~ Q R S T U V W@3>".pickRestart({
  A: "[~@4 [e4,g4]@6 [d4,f#4]@6 a4@3 a#4@3 ~@2, ~@8 d5@3 ~]/2", // Em D
  B: "[~@8 g5@3 g5@3 f#5@3 f#5@3 f5@12 e5@12 b4@12 [d5,f#5]@12 b4@12 [d5,f#5]@12 b4@12 g5@3 g5@3 f#5@3 f#5@3 f5@12 e5@16]/6", // D
  C: "~ [b4,d#5]", D: "e5 f#5", E: "e5 f5", F: "f#5 g5", G: "g#5 a5", H: "a#5@4 a#5@2 ~ d#6, ~@4 d#6@3 ~, ~@3 g#5",
  I: "g#5@2 g#5!2 g#5@2 ~ c#6, ~@2 c#6@2 c#6@3 ~, ~@3 f#5", J: "f#5@2 f#5!2 f#5@2 ~ b5, ~@2 b5@2 b5@3 ~, ~@3 e5",
  K: "e5@2 e5!2 e5@2 ~ a5, ~@2 a5@2 a5@3 ~, ~@3 d5", L: "c#5@2 c#5!2 c#5@2 ~ f#5, ~@2 f#5@2 f#5@3 ~, ~@3 b4",
  M: "a4 a4@2 a4 a4@2 a4 a4@2 ~@6 c#4@3 a4@2 f#4@2 d#4@2", N: "c#4@12 ~@3 c#4@3 a4 ~ g#4 f4 ~ d4",
  O: "[c#4@11 [b4,f#5]@11 [b3,f#4]@15 ~@11]/2", P: "[~ b3@15 a#3@20 ~@12]/2", Q: "[g4,b4] [b4,d5] [d5,f#5] [b4,e5]@3",
  R: "[b4,e5] [d5,f#5] [e5,f#5]@2", S: "[d#5,f#5]@6 [d#5,f#5]@4 ~ [d5,f#5] [d5,f#5]@12", T: "[a4,e5,a5] [g5,b5]",
  U: "[g5,b5] [a5,d6] [d6,f#6] [b5,e6]@3", V: "[b5,e6] [d6,f#6] [e6,f#6]@2",
  W: "[[d#6,f#6]@5 [a4,d5,f#5,b5] [a4,d5,f#5,b5]@16 ~@2]/3", // D#m Bm7
})).s("gm_string_ensemble_1").gain(0.35)

// chords · string ensemble 1 · "Violin II" · soft notes
const string_ensemble_1_soft_2 = note("<~@5 A@4 ~@8 B C ~@14 D E ~@9>".pickRestart({
  A: "[~@5 b4@3 [d5,f#5]@3 b4@3 [d5,f#5]@3 b4@3 ~@4]/4", B: "~ [e4,g4]", C: "[d4,f#4] ~", D: "~ [b3,d4,f#4]",
  E: "[e4,a4] [g4,b4]", // A5 G
})).s("gm_string_ensemble_1").gain(0.23)

// other · string ensemble 1 · "Violas"
const string_ensemble_1_3 = note("<A@6 ~@2 B@6 ~@4 C D E F G H I J K L M N O@2 P@2 ~@3 Q R S T U@3>".pickRestart({
  A: "[~@10 b4@6 a4@6 g4@6 f#4@6 e4@6 d4@6 c#4@6 c#4@6 b3@9 ~@5]/6",
  B: "[~@8 d5@12 b4@3 d5@3 c#5@4 b4 ~ b4@6 a#4@6 b4@12 b4@12 b4@12 b4@12 b4@12 d5@6 b4@6 b4@3 d5@3 c#5@4 b4 ~ b4@6 a#4@10]/6",
  C: "~ [a4,c5]", D: "b4@3 c5 c5@2 b4@2, g4 ~", E: "b4!2", F: "c#5@3 d5 d5@2 c#5@2, a4 ~",
  G: "[c5,f#5]@4 f#5@2 ~ b4, ~@4 c5@3 ~, ~@3 f5", H: "a#4@4 ~ d#4 f#4 d#5", I: "d#5@2 d5@2 ~ c#4 e4 c#5",
  J: "c#5@2 c5@2 ~ b3 d4 b4", K: "b4@2 a#4@2 ~ a3 c4 a4", L: "a4@2 g4@2 ~ f#3 b3 f#4", M: "[a3,f#4]!2 [a3,f#4]@2",
  N: "[a3,f#4] [a3,a4]", O: "[[a3,a4]@11 [a4,d5]@11 [a3,d4]@15 ~@11]/2", P: "[~ g3@15 f#3@20 ~@12]/2",
  Q: "~@6 [f#3,f#4]@4 ~ [b3,d4] [b3,d4]@12", R: "[c#4,f#4] [g4,b4]",
  S: "[e4,g4]@2 [f#4,a4]@2 [b4,d5]@2 d5@3 c#5@3, ~ g4", T: "[d4,g4] [d4,f#4,a4] [f#4,a#4] [e4,f#4]",
  U: "[[d#4,f#4]@5 [a3,d4,f#4,b4] [a3,d4,f#4,b4]@16 ~@2]/3", // D#m Bm7
})).s("gm_string_ensemble_1").gain(0.4)

// other · string ensemble 1 · "Violas" · soft notes
const string_ensemble_1_soft_3 = note("<~@5 A@4 ~@5 B C D E F ~@14 G ~@10>".pickRestart({
  A: "[~@7 a#3@3 b3@6 b4@6 b4@6 b4@6 b4@6 ~@8]/4", B: "b4 a4", C: "g4 f#4", D: "e4 d4", E: "c#4!2", F: "b3 ~",
  G: "~ b3",
})).s("gm_string_ensemble_1").gain(0.2)

// other · string ensemble 1 · "Violoncellos"
const string_ensemble_1_4 = note("<A@6 ~@2 B@6 ~@4 C D E F G H I J K L M N O@2 P@5 Q R S T U@3>".pickRestart({
  A: "[~@20 b2@12 e3@12 a3@12 d3@12 g3@12 b3@12 f#3@15 e3@3 d3@3 c#3@3 b2@15 d3@3 f#3@3 ~@7]/6",
  B: "[~@2 d3@3 c#3@3 f#3@3 b2@3 a2@3 g2@3 f#2@3 e2@3 d2@3 c#2@3 f#2@4]/6",
  C: "~@12 b2 ~ c3 d#3 ~ f#3 a3 ~ b3 c4 ~ d#4", D: "e4 d#4", E: "d4 c#4", F: "f#4 e4", G: "d#4 d4",
  H: "c#4@4 c4 d#3 f#3 d#4", I: "d#4@2 d4@2 ~ c#3 e3 c#4", J: "c#4@2 c4@2 ~ b2 d3 b3", K: "b3@2 a#3@2 ~ a2 c3 a3",
  L: "a3@2 g3@2 ~ f#2 b2 f#3", M: "[a3,d4]!2 [a3,c#4] [d#3,d#4]", N: "~ [e3,e4] ~ [f3,f4]",
  O: "[~@6 [f#3,f#4]@5 ~@6 [g3,g4]@5 g2@12 [d3,b3]@14]/2", // F# G
  P: "[~ e2@15 f#2@20 b2@3 d3@3 f#3@3 g3@9 f#3@6 g2@3 b2@3 d3@3 e3@9 d3@6 e2@3 g2@3 b2@3 c#3@9 b2@6 c#2@3 e2@3 g2@3 a#2@3]/5",
  Q: "a#2@4 b2 d3 f#3 g3", R: "a2@6 f#3@6 g2@3 b2@3 c#3@2 d3@2 e3@2, ~ e4",
  S: "b3@4 ~@4 f#4@4 e2@3 g2@3 b2@3 c#3@3, f#2 d3 ~@2, ~ d4 ~ e4@3",
  T: "[d2,b3]@2 [b2,b3]@2 c#2 e2 g2 a#2, ~@2 [c#4,e4] [a#3,c#4]", // G B C#m A#m
  U: "[[a#3,c4] [d#3,d#4]@2 [d3,d4]@2 [d3,d4]@6 ~, c2@3 b2@8 ~]/3", // A#sus2 D# D
})).s("gm_string_ensemble_1").gain(0.46)

// other · string ensemble 1 · "Violoncellos" · soft notes
const string_ensemble_1_soft_4 = note("<~@5 A@4 ~@5 B C D E F ~@25>".pickRestart({
  A: "[~@17 a#3@3 b3@12 a3@12 g3@12 f#3@12 e3@12 ~@16]/4", B: "b2 e3", C: "a3 d3", D: "g3 b3", E: "f#3@5 e3 d3 c#3",
  F: "b2 ~",
})).s("gm_string_ensemble_1").gain(0.23)

stack(
  string_ensemble_1, string_ensemble_1_soft, string_ensemble_1_2, string_ensemble_1_soft_2, string_ensemble_1_3,
  string_ensemble_1_soft_3, string_ensemble_1_4, string_ensemble_1_soft_4
)