Strudelify
Raspberry Beret cover art

1985 · Around the World in a Day

Raspberry Beret

Prince

KeyD majorTempo120 bpm
0:00/0:00
// Raspberry Beret — Prince
// 120 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 104 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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.

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~@4 A B C D A B E F A B C D A B E F A B E F A B G@2 A B E F A B H I A B J K A B C D A B E F A B E F A B G@2 A B E F A
  B H I A B J K L M N@2 L M N@2 O P N@2 Q R S@2 A B H I A B J K A B E F A B E F A B E F
>`.pickRestart({
  A: "a1@3 ~ g1@3 ~", B: "f#1@5 ~ f#1 ~ f#1@7 ~", C: "g1@7 ~ g1@5 ~@3", D: "g1@2 f#1 ~ g1@2 a1@4 e1@2 f#1@2 e1@2",
  E: "g1@7 ~ g1@4 ~@4", F: "g1@2 f#1 ~ g1 ~ a1@9 ~", G: "g1/2", H: "g1@5 ~ g1 ~ g1@7 ~", I: "g1@3 ~ f#1@3 ~ a1@6 ~@2",
  J: "e1@5 ~ e1 ~ e1@8", K: "a1@5 ~ a1 ~ a1@4 ~@4", L: "d2@5 ~ b1@2 c#2 ~ c#2@2 ~@4", M: "d2@3 b1 c#2!2 ~@2",
  N: "d2@2 e2@2 a2@2 g#2@4 f#2@2 e2@2 d#2 ~", O: "g1@3 e1 f#1!2 ~@2", P: "e1@5 ~ e1@2 e1 ~ e1@2 ~@4",
  Q: "g1@5 ~ g1@2 g1@2 g1@2 ~@4", R: "f#1@6 f#1 ~ f#1 ~ f#1@2 ~@4", S: "[e1@31 ~]/2",
})).s("gm_electric_bass_finger").gain(0.35)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@4 A@2 B C A@2 B C D@2 E F D@2 E F D@2 E F D@2 G H D@2 E F D@2 I J D@2 K L D@2 E F D@2 E F D@2 E F D@2 G H D@2 E F
  D@2 I J D@2 K L M@2 N@2 M@2 N@2 O P N@2 Q R S@2 D@2 I J D@2 K L D@2 E F D@2 E F D@2 E F
>`.pickRestart({
  A: "[[a4,c#5]@3 ~ [a4,c#5] ~ [g4,b4]@4 [a4,c#5] ~ [g4,b4] ~ d5@3 ~ e5 ~ c#5 ~ b4@4 c#5 ~ a4@2 f#4 ~, ~@7 f#4@3 ~ f#4@3 ~@2]/2", // A G A G
  B: "f#4@2 [g4,b4] ~ [f#4,a4] ~ [g4,b4] ~ f#4@2 [g4,b4] ~ [g4,b4] ~ [f#4,a4] ~, a4 ~@7 a4 ~@7", // G F#m G F#m
  C: "b4@2 [f#4,a4] ~ [g4,b4] ~ [a4,c#5]@7 ~@3, g4 ~@15", // F#m G A
  D: "[[a3,c#4]@3 ~ [a3,c#4] ~ [f#3,a3] ~ g3@4 a3 ~ f#3@4 e4 ~ c#4 ~ b3@4 c#4 ~ a3@3 ~, ~@8 b3@3 ~@3 d4@3 ~@5 f#3@6 ~@4]/2", // A F#m
  E: "~@4 [g3,b3] ~ [f#3,a3] ~ [g3,b3] ~ [f#3,a3] ~ [g3,b3]@3 ~", F: "[g3,b3] ~ [f#3,a3] ~ [g3,b3] ~ [a3,c#4]@7 ~@3",
  G: "[g3,b3]", H: "[a3,c#4]@4 [g3,b3]@4 [a3,c#4]@4 [g3,b3]@3 ~", I: "[g3,b3]@5 ~ [g3,b3]@7 ~ [g3,b3] ~",
  J: "[g3,b3]@3 ~ [f#3,a3]@3 ~ [a3,c#4]@5 ~@3", K: "b4@5 c#5 b4@2, [e4,g#4]",
  L: "b3@2 c#4 ~ c#4 ~ b3 ~ c#4@4 ~@4, a4@13 ~@3", M: "[f#3,a3,d4]@6 b3 ~ [e3,a3,c#4] ~ [e3,a3,c#4] ~@5",
  N: "[d3,d4]@2 [e3,e4] ~ [a3,a4] ~ [g#3,g#4]@4 [f#3,f#4] ~ [e3,e4]@2 [d#3,d#4] ~", // D E A G# F# E D#
  O: "[g3,b3,d4]@6 b3 ~ [f#3,a3,c#4] ~ [f#3,a3,c#4] ~@5", // G F#m
  P: "[e3,g#3,b3,e4] ~@3 [e3,g#3,b3] ~@3 [e3,g#3,b3] ~@3 [e3,g#3,b3] ~@3, ~@2 e4 ~ e4 ~ e4 ~", // E
  Q: "b4@2 c#5@2 f#5@2 c#5 b4, [g3,b3,d4]", R: "g#5@4 e5@4 b4@7 ~, [f#3,a3,c#4]@15 ~",
  S: "[[e3,g#3,b3] ~ [e3,g#3,b3] ~ [e3,g#3,b3] ~ [e3,g#3,b3] ~ [g#3,b3,d4] ~ [g#3,b3,e4]@3 ~ [g#3,b3,e4]@10 ~@8]/2", // E G#dim E
})).s("gm_string_ensemble_1").gain(0.46)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~@4 A B C D A B C D A B C D A B C D A B C D A B E@2 A B C D A B F G A B H I A B C D A B C D A B C D A B E@2 A B C D A
  B F G A B H I J K L M J K L M N O P M Q R S T A B F G A B H I A B C D A B C D A B C D
>`.pickRestart({
  A: "[a3,c#4,e4]@2 [c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [g3,b3,d4]@2 [b3,d4]@2 [g3,b3,d4] ~ [g3,b3,d4] ~", // A C#m A G Bm G
  B: "[f#3,a3,d4] ~ f#3 ~ [f#3,a3,d4] ~ [f#3,a3,d4] ~ [f#3,a3,d4] ~ [f#3,d4] ~ [f#3,a3,d4] ~ d4 ~", // D
  C: "[g3,b3,d4] ~@3 [g3,b3,d4] ~ [g3,b3] ~ [g3,b3,d4] ~ [g3,b3] ~ [g3,b3,d4] ~ [g3,b3,d4] ~", // G
  D: "[g3,b3,d4] ~ [f#3,a3,d4] ~ [g3,b3,d4]@2 [a3,c#4,e4]@4 [c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~", // G D G A C#m A
  E: "[[d3,g3,b3,d4,g4]@7 ~]/2", // G
  F: "[g3,b3,d4] ~ [b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4] ~ [g3,b3] ~", // G Bm G
  G: "[g3,b3,d4]@3 ~ [f#3,a3,d4]@3 ~ [a3,c#4,e4]@7 ~", H: "[g#3,b3,e4]@7 ~",
  I: "b3@2 c#4 ~ c#4@2 b3@2 c#4@4 ~@4, [a3,e4]@3 ~", // A5
  J: "[f#3,a3,d4]@2 [f#3,a3,d4] ~ [f#3,a3,d4]@2 [f#3,a3,d4]@2 [e3,a3,c#4]@2 [e3,a3,c#4] ~ [e3,a3,c#4] ~ [e3,a3,c#4] ~", // D A
  K: "[f#3,a3,d4] ~ [f#3,d4] ~ [f#3,a3,d4] ~ [f#3,a3,d4] ~ [e3,a3,c#4] ~ [e3,a3,c#4] ~ [e3,a3,c#4] ~ [e3,a3,c#4] ~", // D A
  L: "d3@2 e3@2 a3@2 g#3@4 f#3@2 e3@3 ~", M: "d3@2 e3@2 a3 ~ g#3@4 f#3@2 e3@3 ~",
  N: "[g3,b3,d4]@2 [g3,b3,d4] ~ [g3,b3,d4]@2 [g3,b3,d4] ~ [f#3,a3,c#4]@2 [f#3,a3]@2 [f#3,a3,c#4] ~ [f#3,a3,c#4] ~", // G F#m
  O: "[e3,g#3,b3,e4]@2 [e3,g#3,b3,e4] ~ [e3,g#3,b3,e4] ~ [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4] ~ [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4] ~ [e3,g#3,b3,e4] ~", // E
  P: "~@2 e3@2 a3@2 g#3@4 f#3@2 e3@3 ~",
  Q: "[g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4] ~ [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4] ~", // G
  R: "[f#3,a3,c#4]@2 [f#3,a3,c#4] ~ [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 [f#3,a3,c#4] ~ [f#3,a3,c#4]@2 [f#3,a3,c#4] ~", // F#m
  S: "[e3,g#3,b3,e4]@2 [e3,g#3,b3,e4] ~ [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4] ~ [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4] ~ [e3,g#3,b3,e4] ~ [e3,g#3,b3,e4]@2", // E
  T: "[e3,g#3,b3,e4] ~ [e3,g#3,b3,e4] ~ [e3,g#3,e4] ~ [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4] ~ [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4] ~", // E
})).s("gm_electric_guitar_clean").gain(0.27).pan(0.7)

// chords · electric guitar clean · "CLEAN GTR" · soft notes
const electric_guitar_clean_2 = note(`<
  ~@4 A B C D A B C D A B C D A B C D A B C D A B ~@2 A B C D A B E ~ A B ~@2 A B C D A B C D A B C D A B ~@2 A B C D A
  B E ~ A B ~@3 F ~@3 F ~@2 G ~@6 H A B E ~ A B ~@2 A B C D A B C D A B C D
>`.pickRestart({
  A: "~@2 a3 ~@7 g3@2 ~@4", B: "~@2 [a3,d4] ~@7 a3 ~@3 [f#3,a3] ~", C: "~@2 [g3,b3,d4] ~@3 d4 ~@3 d4 ~@5",
  D: "~@10 a3 ~@5", E: "~@2 g3 ~@11 d4 ~", F: "~@2 a3 ~@13", G: "~@5 c#4 ~@2", H: "~@4 b3 ~@11",
})).s("gm_electric_guitar_clean").gain(0.16).pan(0.7)

// drums · kick
const kick = s("bd").struct(`<
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B
>`.pickRestart({
  A: "x ~@3 x!2 ~@2", B: "x!2",
})).gain(0.54)

// drums · clap
const clap = s("cp").struct(`<
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
>`.pickRestart({
  A: "~@3 x",
})).gain(0.6)

// drums · snare
const snare = s("sd").struct(`<
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B
>`.pickRestart({
  A: "~@2 x!2 ~@2 x ~", B: "~ x ~ x",
})).gain(0.54)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
>`.pickRestart({
  A: "~@3 x",
})).gain(0.6)

// drums · cabasa
const cabasa = s("cabasa:4").struct(`<
  ~@4 A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A
  B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D
>`.pickRestart({
  A: "x ~ x ~ x!3 ~", B: "x!4", C: "x ~ x!3 ~ x ~", D: "x!5 ~ x!2",
})).gain(2.13)

// drums · cabasa · soft notes
const cabasa_soft = s("cabasa:4").struct(`<
  ~@4 A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A
  B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D
>`.pickRestart({
  A: "~ x ~ x ~@3 x", B: "~ x ~ x ~ x ~ x", C: "~ x ~@3 x ~ x", D: "~@5 x ~@2",
})).gain(1.22)

stack(
  bass, string_ensemble_1, electric_guitar_clean, electric_guitar_clean_2, kick, clap, snare, tambourine, cabasa,
  cabasa_soft
)

More by Prince