Strudelify

Barcelona

Jewel

KeyA majorTempo60 bpm
0:00/0:00
// Barcelona — Jewel
// 60 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 59 bars on a 16-step grid, each part at one level. 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 · acoustic guitar steel · "Guitar 1"
const acoustic_guitar_steel = note("<A@8 B@7 C@4 D@2 E@8 F@5 G@7 H@8 I@5 J@5>".pickRestart({
  A: "[[d3,f#3,b3]@4 d3@4 d3@3 ~@5 [e3,g#3,b3]@4 e3@4 e3@3 ~ g#3@2 ~@2 [d3,f#3,b3]@4 d3@4 d3@3 ~@5 [e3,g#3,b3]@4 e3@4 e3@3 ~ g#3@2 ~@2 [d3,f#3,b3]@4 d3@4 d3@3 ~@5 [e3,g#3,b3]@4 e3@4 e3@3 ~ g#3@2 ~@2 [d3,f#3,b3]@4 d3@4 d3@3 ~@5 [e3,g#3,b3]@4 e3@4 e3@3 ~ g#3@2 ~ a3, ~@4 [f#3,b3]@7 d3@19 g#3@14 b3@2 a3@14 b3@2 g#3@14 b3@2 a3@14 b3@2 g#3@14 b3@2 a3@14 b3@2 g#3@2, ~@12 f#3@19 a3@13 f#3@19 a3@13 f#3@19 a3@13 f#3@20, ~@12 b3@4 ~@4 [g#3,b3]@7 e3@21 ~@4 [g#3,b3]@7 e3@21 ~@4 [g#3,b3]@7 e3@21 ~@4 [g#3,b3]@7 e3@5, ~@14 a3@14 b3@4 ~@4 [f#3,b3]@7 d3@21 ~@4 [f#3,b3]@7 d3@21 ~@4 [f#3,b3]@7 d3@21]/8", // Bm E Bm E Bm E Bm E …
  B: "[[d3,f#3,b3]@4 d3@4 d3@3 ~@5 [e3,g#3,b3]@4 e3@4 e3@3 ~ g#3@2 ~@2 [d3,f#3,b3]@4 d3@4 d3@3 ~@5 [e3,g#3,b3]@4 e3@4 e3@3 ~@3 e3@2 [a3,c#4]@4 [a3,c#4]@3 ~ e4@2 ~@2 e4@2 ~@2 [g#3,b3]@4 [g#3,b3]@3 ~ g#3@4 ~@8 a3@3 ~@8 b3, ~@4 [f#3,b3]@7 d3@19 g#3@14 b3@2 a3@18 e3@7 e3@17 e4@6 a3 b3@3 e3@2 b3@3 e3 [a3,c#4]@2 e3@2 [a3,b3]@2 c#4@2, ~@12 f#3@19 a3@13 f#3@28 c#4@2 e4 f#4@3 c#4@10 b3@4 g#3@20, ~@12 b3@4 ~@4 [g#3,b3]@7 e3@21 ~@4 [g#3,b3]@7 e3 [g#3,b3]@19 e4 f#4@32, ~@14 a3@14 b3@4 ~@4 [f#3,b3]@7 d3@29 a3@15 g#4@25]/7", // Bm E Bm E A G#m B5 A …
  C: "[~@4 b3@3 ~@2 c#4@2 ~@3 a3@2 e3@4 e3@3 ~ e3@4 ~@2 b3@2 e3@3 ~@2 b3!2 ~@2 a3!3 a3@4 [a3,c#4,e4]@4 e4@4 [b3,d4,e4]@4 [b3,d4,e4]@4, g#3@8 g#3@8 c#4@12 a3@4 b3@3 e3@29, b3 e4@6 e3 g#3@8, ~@2 e3@5 e3@5 c#4 b3@3 a3@7 a3 [g#3,b3]@4 f#3@32 ~@4, ~@8 b3@3 d4@25 c#4@3 b3@13 [a3,c#4]@12]/4", // A E7 G#m A
  D: "[a3@2 ~@2 [g#3,b3,e4]@2 [b3,e4] e4 [a3,c#4,e4]@2 e4@2 [b3,d4,e4]@2 [b3,d4,e4]@2, d4@5 [a3,c#4]@3, e4@2 ~ g#3@5, ~@2 [a3,c#4]@5 b3@5 ~@4, ~@7 g#4@9]/2", // E E5 A E7 A
  E: "[a3@4 ~@4 g#3@4 ~@20 [d3,f#3,b3]@4 d3@4 d3@3 ~@5 [e3,g#3,b3]@4 e3@4 e3@3 ~ g#3@2 ~@2 [d3,f#3,b3]@4 d3@4 d3@3 ~@5 [e3,g#3,b3]@4 e3@4 e3@3 ~ g#3@2 ~@2 [d3,f#3,b3]@4 d3@4 d3@3 ~@5 [e3,g#3,b3]@4 e3@4 e3@3 ~ g#3@2 ~ a3, [d4,e4]@32 ~@11 d3@19 g#3@14 b3@2 a3@14 b3@2 g#3@14 b3@2 a3@14 b3@2 g#3@2, ~@4 a3@11 a3@2 a3@29 a3@14 b3@3 a3@13 f#3@19 a3@13 f#3@20, ~@4 c#4@8 [e3,g#3,c#4]@32 b3@4 ~@4 [g#3,b3]@7 e3@21 ~@4 [g#3,b3]@7 e3@21 ~@4 [g#3,b3]@7 e3@5, ~@8 b3@6 b3@2 [f#3,b3]@16 ~@4 [f#3,b3]@8 f#3@20 ~@4 [f#3,b3]@7 d3@21 ~@4 [f#3,b3]@7 d3@21]/8", // Bm E Bm E Bm E Dsus2 C#m …
  F: "[[d3,f#3,b3]@4 d3@4 d3@3 ~@5 [e3,g#3,b3]@4 e3@4 e3@3 ~@3 e3@2 [a3,c#4]@4 [a3,c#4]@3 ~ e4@2 ~@2 e4@2 ~@2 [g#3,b3]@4 [g#3,b3]@3 ~ g#3@4 ~@8 a3@3 ~@8 b3, ~@4 [f#3,b3]@7 d3@29 a3@15 g#4@7 a3 b3@3 e3@2 b3@3 e3 [a3,c#4]@2 e3@2 [a3,b3]@2 c#4@2, ~@12 f#3@28 c#4@2 e4 f#4@3 c#4@10 b3@4 g#3@20, ~@12 b3@4 ~@4 [g#3,b3]@7 e3 [g#3,b3]@19 e4 f#4@32, ~@14 a3@18 e3@7 e3@17 e4@24]/5", // Bm E A G#m B5 A Asus2 G#m
  G: "[~@4 b3@3 ~@2 c#4@2 ~@3 a3@2 e3@4 e3@3 ~ e3@4 ~@2 b3@2 e3@3 ~@2 b3!2 ~@2 a3!3 a3@4 [a3,c#4,e4]@4 e4@4 [b3,d4,e4]@4 [d4,e4]@4 a3@4 ~@4 [g#3,b3,e4]@4 [b3,e4]@2 e4@2 [a3,c#4,e4]@4 e4@4 [b3,d4,e4]@4 [b3,d4,e4]@4 d4@4 a3@4 c#4@4 c#4@2 c#4@2, g#3@8 g#3@8 c#4@12 a3@4 b3@3 e3@29 e4@8 ~@6 g#4@32 ~@2, b3 e4@6 e3 g#3@7 b3@3 ~ g#3@7 a3@2, ~@2 e3@5 e3@5 c#4 b3@3 a3@7 a3 [g#3,b3]@4 f#3@24 a3@12 d4@20 c#4@16 d4@12, ~@8 b3@3 d4@25 c#4@3 b3@13 c#4@16 [a3,c#4]@10 b3@6 a3@12 [b3,e4]@16]/7", // A E7 Dsus2 E E5 A E7 G#m …
  H: "[~@14 e4@2 ~@48 [d3,f#3,b3]@4 d3@4 d3@3 ~@5 [e3,g#3,b3]@4 e3@4 e3@3 ~@5 [d3,f#3,b3]@4 d3@4 d3@3 ~@5 [e3,g#3,b3]@4 e3@4 e3@3 ~@2 a3@3, e4@8 a3@2 d3@18 e4@2 a3 b3@3 g3@18 g#3 a3@15 [f#3,b3]@7 d3@17 b3 a3@15 f#3@20, b3@6 b3@18 g#3@2 e3@14 a3@2 c#4@14 g#3@20 f#3@20 ~@4 [f#3,b3]@7 d3@21, ~@2 d4@10 a3@10 c#4@14 [b3,d4]@2 e4@6 b3 a3@3 g#3@2 e3@26 b3@2 a3@14 g#3@16 b3@2 a3@14 [g#3,b3]@4, ~@4 c#4@12 [g#3,e4]@3 d4@9 g#3@12 d4@14 b3@2 e4@28 [g#3,b3]@7 e3@21 ~@4 [g#3,b3]@7 e3@5]/8", // Bm E Bm E B5 Bm G#m C#m …
  I: "[e3@4 e3@3 ~ e3@4 ~@2 b3@2 e3@3 ~@2 b3!2 ~@2 g#3@3 [b3,e4]@2 e4@2 [a3,c#4,e4]@4 e4@4 [b3,d4,e4]@4 [d4,e4]@4 a3@4 ~@4 [g#3,b3]@4 [b3,e4]@2 e4@2 [a3,c#4,e4]@4 e4@4 [b3,d4,e4]@4 [b3,d4,e4]@4, c#4@16 b3@3 e3@17 a3@8 b3@4 e4@12 g#3@20, a3@7 a3@5 f#3@18 b3@6 c#4@12 d4@20 [a3,c#4]@12, ~@8 g#3@4 e3@4 g#3@4 c#4@3 b3@5 g#3@24 [a3,c#4]@10 b3@10 ~@8, ~@4 b3@2 a3@9 g#4@16 g#4@9]/5", // E5 A E7 Dsus2 G#m E5 A E7 …
  J: "[a3@2 ~@2 [g#3,b3]@2 [b3,e4] e4 [a3,c#4,e4]@2 e4@2 [b3,d4,e4]@2 [d4,e4]@2 [a3,e4]@2 e4@2 [e4,g#4,b4,e5]@16 ~@4, d4@5 c#4@3 d4@8 ~@4, e4@3 g#3@8 ~@9, ~@2 [a3,c#4]@5 b3@3 a3@4 b3@16 ~@10, ~@7 g#4@11 [a3,c#4]@16 ~@6]/5", // G#m E5 A E7 Dsus2 A5 E A
})).s("gm_acoustic_guitar_steel").gain(0.72)

// bass · acoustic bass · "Bass 1"
const bass = note(`<
  A B A B A B A B A B A B C B C B D E F G F G A@2 B A B A B A B C B C B D E F G F G H B H B A B A B D B F G F G F G ~@2
>`.pickRestart({
  A: "[d1,d2]@15 ~", B: "[e1,e2]@15 ~", C: "[a1,a2]@15 ~", D: "[f#1,f#2]@15 ~", E: "[e1,e2]@7 e2",
  F: "[a1,a2]@7 ~ [g1,g2]@7 ~", G: "[f#1,f#2]@7 ~ [e1,e2]@7 ~", H: "[g1,g2]@7 ~ [f#1,f#2]@7 ~",
})).s("gm_acoustic_bass").gain(0.72)

// drums · snare
const snare = s("sd").struct("<~@16 A@6 ~ A@13 B A@7 C A@7 B A B A D ~@2>".pickRestart({
  A: "~ x ~ x", B: "~@6 x!2 ~ x!5 ~ x", C: "~ x ~@2", D: "~ x!3",
})).gain(0.72)

// drums · crash
const crash = s("cr").struct("<~@22 A ~@14 A ~@3 A ~@6 B ~@7 C ~@2>".pickRestart({
  A: "x", B: "~@5 x ~@2", C: "~ x",
})).gain(0.72)

// drums · ride
const ride = s("rd").struct("<~@18 A@4 ~@15 A@4 ~@4 B@3 C B@2 A@5 D ~@2>".pickRestart({
  A: "x!16", B: "x!8", C: "x!6 ~@2", D: "x!8 ~@8",
})).gain(0.72)

stack(acoustic_guitar_steel, bass, snare, crash, ride)

More by Jewel