Strudelify
KeyB majorTempo125 bpm
0:00/0:00
// You Baby — The Mamas & The Papas
// 125 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 75 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(125/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// bass · fretless bass
const bass = note(`<
  A B A C D E D F D E D G H I J K L M L N L M L N A B A C D E D F D E D O H I J K L M L N L M L N A B P C A B Q R S L M
  L N L M L N L M L N L M L T ~@2
>`.pickRestart({
  A: "b1 ~ b1@2 ~@2 g#1 ~ b1 ~ b1 ~@3 g#1 ~", B: "b1 ~ b1 ~@3 g#1 ~ b1 ~ b1 ~ g#1@2 f#1 ~",
  C: "b1 ~ b1 ~ g#1 ~ f#1 ~ b1 ~ b1@2 g#1@2 f#1 ~", D: "b1 ~ b1@2 ~@2 g#1 ~ d#2 ~ d#2 ~@3 c#2 ~",
  E: "e2 ~ e2 ~@3 c#2 ~ f#2 ~ f#2 ~ d#2@2 c#2 ~", F: "e2 ~ e2 ~ c#2 ~ b1 ~ f#2 ~ f#2@2 d#2@2 c#2 ~",
  G: "e2 ~@3 b1 ~ b1@3 ~ c#2@2 ~@4", H: "d#2 ~ d#2 ~ c#2 ~ a#1 ~ d#2 ~ c#2 ~@3 d#2@2",
  I: "c#2 ~ c#2 ~ b1 ~ g#1 ~ c#2 ~ c#2 ~ b1 ~ c#2@2", J: "e2 ~ e2 ~ c#2 ~ b1 ~ e2 ~ c#2 ~@3 e2@2",
  K: "f#2 ~@3 c#2 ~ d#2 ~ f#2 ~ g#2@2 ~@4", L: "b1 ~ b1 ~ g#1 ~ f#1 ~ e2 ~ c#2 ~@3 e2@2",
  M: "f#2 ~ f#2 ~ d#2 ~ c#2 ~ e2 ~ e2 ~ c#2 ~ e2@2", N: "f#2 ~ f#2 ~ e2 ~ b1@3 ~ b1 ~ g#1 ~ f#1 ~",
  O: "e2@3 ~@3 e2 ~@3 b1 ~ b1@2 ~@2", P: "e2 ~ e2@2 ~@2 c#2 ~ e2 ~ e2 ~@3 c#2 ~",
  Q: "c#2 ~@3 g#1 ~ b1 ~ d#2 ~ f2@2 ~@4", R: "e2 ~@3 b1 ~ c#2 ~ f#2 ~ g#2@2 ~@4",
  S: "f#2 ~ f#2@2 ~@2 d#2 ~ f#2 ~ f#2 ~@3 d#2 ~", T: "f#2 ~ f#2 ~ e2 ~ b1@3 ~@7",
})).s("gm_fretless_bass").gain(0.5)

// chords · electric guitar clean
const electric_guitar_clean = note("<A B C D ~@8 E ~@11 A B C F ~@7 G H I J ~@9 K L M N K L ~@21>".pickRestart({
  A: "[b3,b4] ~ [b3,b4] ~@3 g#4 ~ [b3,b4] ~ [b3,b4] ~@3 g#4 ~", // B
  B: "[b3,b4] ~ [b3,b4] ~@3 g#4 ~ [b3,b4] ~ [b3,b4] ~ g#4 ~ f#4 ~", // B
  C: "[b3,b4,d#5] ~ [b3,f#4,d#5] ~@3 g#4 ~ [b3,b4,d#5] ~ [b3,d#5] ~@3 g#4 ~", // B
  D: "[b3,b4,d#5] ~ [b3,d#5]@2 [b5,d#6] ~ f#4 ~ [b3,b4,d#5] ~ [b3,d#5] ~ [b5,d#6] ~@3", // B
  E: "[d#4,f#4]@2 f#4 ~ [d#5,f#5] ~@11", F: "[b3,b4,d#5] ~ [b3,d#5]@2 ~@12",
  G: "[e3,g#3,e4] ~ [e3,g#3,e4] ~@3 [b3,f#4,b4]@3 ~@3 [d#4,b4] ~@3", H: "[d#4,f#4]@2 f#4 ~@13",
  I: "~@12 [c#5,e5] ~ g#3 ~", J: "[e4,g#4]@2 g#4 ~ [e5,g#5] ~ b3 ~ [e4,g#4]@2 [e3,g#4] ~ [e4,g#5] ~ b3 ~",
  K: "[f#5,b5]@2 [b3,b4] ~ [f#5,b5,d#6] ~ [b2,b3] ~ [b3,b4,d#5]@2 [b3,d#5]@2 [b2,b3]@2 [b2,b3]@2", // B5 B
  L: "[f#5,b5]@2 [b3,b4] ~ [b5,d#6] ~ [b2,b3] ~ [b3,b4,d#5]@2 ~@2 [b2,d#5]@2 [f#3,d#5]@2", // B5 B D#m
  M: "[b4,e5]@2 [e3,e4] ~ [e5,g#5] ~ [e2,e3] ~ [e3,e4,g#4]@2 [e3,g#4]@2 [e2,e3]@2 [e2,e3]@2", // E5 E
  N: "[f#5,b5]@2 [b3,b4] ~ [b5,d#6] ~ [f#3,f#4] ~ [b3,b4,d#5]@2 ~@2 [b2,d#5]@2 [f#3,d#5]@2", // B5 B F# B D#m
})).s("gm_electric_guitar_clean").gain(0.3)

// other · piano
const piano = note("<~@3 [~@14 f#4 ~] ~@71>").s("gm_piano").gain(0.36)

// chords · percussive organ
const percussive_organ = note(`<
  ~@4 A ~@3 A ~@2 B ~@3 C D ~@3 D ~@7 A ~@3 A ~@6 E D ~@3 D ~@9 F G H D ~@3 D ~@3 D ~@3 D ~@5
>`.pickRestart({
  A: "[b3,b4]@3 ~ b4@2 b3@2 ~@8", B: "[e3,b3,e4]@2 [e3,b3,e4]@2 ~@2 [f#4,b4]@3 ~ [d#4,f#4,d#5]@2 ~@4",
  C: "[f#3,c#4,f#4]@2 [f#3,c#4,f#4]@2 ~@2 [f#3,c#4] ~ [c#4,f#4] ~ [a#3,a#4]@2 ~@4", D: "[b2,b3]@2 b2 ~@13",
  E: "[f#3,c#4,f#4]@2 [f#3,c#4,f#4]@2 ~@2 f#3 ~ [c#4,f#4] ~ [a#3,a#4]@2 ~@4", // F#5 A#
  F: "[c#3,g#3,c#4]@2 [c#3,g#3,c#4]@2 ~@2 c#3 ~ [a#3,d#4] ~ [f#3,f#4]@2 ~@4", // C#5 D#5 F#
  G: "[e3,b3,e4]@2 [e3,b3,e4]@2 ~@2 e3 ~ [c#4,f#4] ~ [a#3,a#4]@2 ~@4", H: "[f#3,f#4]@3 ~ f#4@2 f#3@2 ~@8",
})).s("gm_percussive_organ").gain(0.4)

// chords · electric guitar clean
const electric_guitar_clean_2 = note(`<
  ~@4 A B C D A B C E ~@3 F G H I J G H I J ~@4 A B C D A B C ~@4 K G H I J G H I J ~@6 L M N G H I J G H I J G H I J G
  H I O ~@2
>`.pickRestart({
  A: "[f#5,b5]@2 [b3,b4] ~ [f#5,b5,d#6] ~ [b2,b3] ~ [d#4,d#5]@2 [d#3,d#4] ~ [d#4,f#5] ~ [d#2,d#3] ~", // B5 B D# D#m D#
  B: "[b4,e5]@2 [e3,e4] ~ [e5,g#5] ~ [e2,e3] ~ [f#4,f#5]@2 [f#3,f#4] ~ [f#4,a#5] ~ [c#3,c#4] ~", // E5 E F# C#
  C: "[f#5,b5]@2 [b3,b4] ~ [b5,d#6] ~ [b2,b3] ~ [d#4,d#5]@2 [d#3,d#4] ~ [d#4,f#5] ~ [d#2,d#3] ~", // B5 B D# D#m D#
  D: "[b4,e5]@2 [e3,e4] ~ [e5,g#5] ~ [b2,b3] ~ [f#4,f#5]@2 [f#3,f#4] ~ [f#4,a#5] ~ [c#3,c#4] ~", // E5 E B F# C#
  E: "[e3,b3,e4]@2 [e3,b3,e4]@2 ~@2 [b3,f#4,b4]@3 ~ d#5@2 ~@4", // E5 B5
  F: "[f#3,c#4,f#4]@2 [f#3,c#4,f#4]@2 ~@2 [f#3,c#4] ~ [f#3,c#4,f#4] ~ a#4@2 ~@4", // F#5
  G: "[b4,d#5]@2 d#5 ~ [b5,d#6] ~ f#4 ~ [e4,g#4]@2 g#4 ~ [e4,g#5] ~ b3 ~", // B E
  H: "[f#4,f#5]@2 [f#4,a#4] ~ [f#4,a#5] ~ f#3 ~ [b4,e5]@2 [e4,g#4] ~ [e5,g#5] ~ b3 ~", // F# E5 E
  I: "[b4,d#5]@2 d#5 ~ [b5,d#6] ~ f#4 ~ [e4,g#4]@2 [e3,g#4] ~ [e4,g#5] ~ b3 ~", // B E
  J: "[f#4,f#5]@2 [f#4,a#4] ~ [e4,g#5] ~ [f#5,b5]@4 [b4,d#5] ~ [b5,d#6] ~ f#4 ~", // F# E B5 B
  K: "[f#3,c#4,f#4]@2 [f#3,c#4,f#4]@2 ~@2 f#3 ~ [f#3,c#4,f#4] ~ a#4@2 ~@4", // F#5
  L: "[c#3,g#3,c#4]@2 [c#3,g#3,c#4]@2 ~@2 c#3 ~ [d#3,a#3,d#4] ~ f#4@2 ~@4", // C#5 D#5
  M: "[e3,b3,e4]@2 [e3,b3,e4]@2 ~@2 e3 ~ [f#3,c#4,f#4] ~ a#4@2 ~@4", // E5 F#5
  N: "[c#5,f#5]@2 [f#3,f#4] ~ [c#5,f#5,a#5] ~ [f#2,f#3] ~ [f#4,f#5]@2 [f#3,f#4] ~ [f#4,a#5] ~ [f#2,f#3] ~", // F#5 F#
  O: "[f#4,f#5]@2 [f#4,a#4] ~ [e4,g#5] ~ [f#5,b5]@4 ~@6", // F# E B5
})).s("gm_electric_guitar_clean").gain(0.25).pan(0.4)

// other · brass section
const brass_section = note("<~@4 A ~ B C A ~ B ~@17 A ~ B C A ~ B ~@21 D ~@18>".pickRestart({
  A: "~ d#2, ~@8 d#4@3 ~@5", B: "~@4 d#5@4 f#4@2 d#4 ~@5, [b2,b3]@3 ~@5", C: "~@2 [f#2,f#3] ~",
  D: "~ [f#2,f#3], ~@8 f#4@3 ~@5", // F#
})).s("gm_brass_section").gain(0.4)

// chords · rock organ
const rock_organ = note(`<
  ~@5 A ~@3 A ~@6 B C D E B C D E ~@5 A ~@3 A ~@8 D E B C D E ~@9 B C D E ~@2 D E B C ~@2 B C ~@4
>`.pickRestart({
  A: "~@6 f#4 c#5", B: "~@7 [g#4,g#5]", C: "[a#4,a#5]@4 [a#4,a#5]@4 g#5@2 [e4,e5] ~@5", D: "~@7 [b3,b4]",
  E: "[c#4,c#5]@2 ~ f#5@2 b3 ~@2, ~@4 [e3,e4]@4 ~@2 b4 ~@5", // C# E
})).s("gm_rock_organ").gain(0.25)

// chords · rock organ · soft notes
const rock_organ_soft = note(`<
  ~@5 A ~ B ~ A ~@6 C ~ C ~ C ~ C ~@6 A ~ B ~ A ~@6 C ~ C ~ C ~ C ~@10 C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~@3
>`.pickRestart({
  A: "[b3,g#4] [e3,g#4] [f#3,a#4] ~", B: "[b3,g#4] [e3,g#4] ~@2", C: "~@2 [f#4,d#5]@2 [e3,g#4]@3 ~",
})).s("gm_rock_organ").gain(0.15)

// other · drawbar organ
const drawbar_organ = note("<~@7 A ~@23 A ~@8 B C ~@19 B C ~@4 D E ~@2 D F ~@2>".pickRestart({
  A: "~@12 [f#2,f#4]@2 [c#3,f#4,c#5] ~", B: "~@7 [g#4,g#5]", C: "[a#4,a#5]@4 [a#4,a#5]@4 g#5@2 [e4,e5] ~@5",
  D: "~@7 [b3,b4]", E: "[c#4,c#5]@2 ~ f#5@2 b3 ~@2, ~@4 [e3,e4]@4 ~@2 b4 ~@5",
  F: "[c#4,c#5]@2 ~ f#5@2 ~@3, ~ [e3,e4] ~@2", // C# E
})).s("gm_drawbar_organ").gain(0.3)

// chords · piano · D#m C# C#m C#5 C#m E
const piano_2 = note(`<
  ~@12
  [~@6 a#3 ~ [d#4,f#4]@2 f#4 ~ [d#4,f#5] ~ a#3 ~]
  [[c#4,c#5]@2 [c#4,e4] ~ [c#4,e5] ~ c#3 ~ [g#4,c#5]@2 [c#4,e4] ~ [c#5,e5] ~ g#3 ~]
  [[e4,g#4]@2 g#4 ~ [e5,g#5] ~ b3 ~ [e4,g#4]@2 [e3,g#4] ~ [e4,g#5] ~ b3 ~]
  ~@60
>`).s("gm_piano").gain(0.3)

// other · tenor sax
const tenor_sax = note("<~@17 A B C ~ A B C ~@17 A B C ~ A B C ~@10 A B C ~ A B C ~ A B C ~ A B ~@3>".pickRestart({
  A: "~@7 b2", B: "[b2,b3]@2 b2 ~@13", C: "~@7 f#3",
})).s("gm_tenor_sax").gain(0.45)

// chords · overdriven guitar · B
const overdriven_guitar = note("<~@27 [~@4 [b5,d#6] ~ f#4 ~ [b3,b4,d#5] ~ [b3,d#5] ~ [b5,d#6] ~ f#4 ~] ~@47>")
  .s("gm_overdriven_guitar").gain(0.36)

// chords · electric guitar jazz · D#m C# C#m C#5 C#m
const electric_guitar_jazz = note(`<
  ~@36
  [~@4 [d#5,f#5] ~ a#3 ~ [d#4,f#4]@2 f#4 ~ [d#4,f#5] ~ a#3 ~]
  [[c#4,c#5]@2 [c#4,e4] ~ [c#4,e5] ~ c#3 ~ [g#4,c#5]@2 [c#4,e4] ~@5]
  ~@37
>`).s("gm_electric_guitar_jazz").gain(0.36)

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

// drums · snare
const snare = s("sd").struct(`<
  A@3 B A@7 C D@3 E D@3 F D@3 F A@3 B A@7 G D@3 E D@3 F D@3 F A@6 E@2 A D@3 F D@3 F D@3 F D@3 H ~@2
>`.pickRestart({
  A: "~ x ~ x", B: "x!5 ~ x!3 ~ x ~ x!4", C: "x ~@3 x ~ x ~@3 x ~ x ~ x!2", D: "x!4",
  E: "x ~@3 x ~ x ~ x ~ x ~ x ~ x!2", F: "x ~ x!2 ~@2 x ~", G: "~@4 x ~ x ~@5 x ~ x!2", H: "x ~ x!2 ~@4",
})).gain(0.45)

// drums · clap
const clap = s("cp").struct("<~@2 [~ x ~ x]!22 ~@2 [~ x ~ x]!9 ~ [~ x ~ x]!36 [~ x ~@2] ~@2>").gain(0.35)

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  A B C D E C@3 E C@2 F A B@2 F A B@2 G A B@2 G A B C D E C@3 E C@2 ~ A B@2 F A B@2 G A B@2 G E C@3 E C F@2 E A B@2 G A
  B@2 G A B@2 G A B@2 G ~@2
>`.pickRestart({
  A: "~ x", B: "x!2", C: "x!4", D: "x", E: "~ x!3", F: "x ~@2 x", G: "x ~@2 x ~@4",
})).gain(0.3)

// drums · open hat
const open_hat = s("oh").struct("<~@19 A ~@3 A ~@19 A ~@3 A ~@12 A ~@3 A ~@3 A ~@6>".pickRestart({
  A: "~@7 x",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct(`<
  A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@2 A@2 ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A@2 ~@3 A ~@3 A ~@3 A ~@5
>`.pickRestart({
  A: "x",
})).gain(0.4)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@4 A B@3 A B@2 ~ A B@2 ~ A B@2 C A B@2 C ~@4 A B@3 A B@2 D A B@2 ~ A B@2 C A B@2 C A B@3 A B ~@2 A@2 B@2 C A B@2 C A
  B@2 C A B@2 E ~@2
>`.pickRestart({
  A: "~@2 x!2 ~ x!3 ~ x!3 ~ x!3", B: "~ x!3 ~ x!3 ~ x!3 ~ x!3", C: "~ x!3 ~ x ~@3 x!3 ~ x ~@2",
  D: "~@2 x!2 ~ x ~@3 x!3 ~ x ~@2", E: "~ x!3 ~ x ~@10",
})).gain(0.3)

stack(
  bass, electric_guitar_clean, piano, percussive_organ, electric_guitar_clean_2, brass_section, rock_organ,
  rock_organ_soft, drawbar_organ, piano_2, tenor_sax, overdriven_guitar, electric_guitar_jazz, kick, snare, clap,
  pedal_hat, open_hat, crash, tambourine
)

More by The Mamas & The Papas