Strudelify

Tighten Up

Bell

KeyF♯ majorTempo124 bpm
0:00/0:00
// Tighten Up — Bell
// 124 bpm, 4/4, key F# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 103 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(124/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.

// chords · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note(`<
  ~@4 A B C D E F G H I J K L M N O P Q R S ~@7 G H I J K L M N O P Q R S ~ A B C D E F G H I J K L M N O P K L Q R S
  ~@7 I J K L M N O P Q R S ~ A B C D E F G H I J K L M N O P ~@3
>`.pickRestart({
  A: "~@5 f4 ~ [c#4,f4] ~ [a#3,c#4,f4] ~ [c#4,f4] [a#3,c#4,f4]@2 f4 ~, ~@2 [a#3,c#4,f4] ~@5", // C# A#m C# A#m
  B: "~@5 a#4 ~ [f#4,a#4] ~ [f#4,a#4] ~ [f#4,a#4] [f#4,a#4]@2 a#4 ~, ~@2 [f#4,a#4] ~@5", // F#
  C: "~@2 f4 ~@2 f4 ~ [c#4,f4] ~ [c#4,f4] ~ [c#4,f4] [c#4,f4]@2 f4 ~, ~@2 [c#4,f4] ~@5", // C#
  D: "~@2 [f#4,a#4] ~ [d#4,f#4,a#4] [f#4,a#4] ~ a#4 ~ [f#4,a#4] ~ [f#4,a#4] [f#4,a#4]@2 [f#4,a#4] ~", // F# D#m F#
  E: "~@2 [c#4,f4] ~ [a#3,c#4,f4] [c#4,f4] ~ [c#4,f4] ~ [c#4,f4] ~ [c#4,f4] [c#4,f4]@2 [c#4,f4] ~", // C# A#m C#
  F: "~@2 [f#4,a#4] ~ [f#4,a#4]!2 ~ [f#4,a#4] ~ [f#4,a#4] ~ [f#4,a#4] [f#4,a#4]@2 [f#4,a#4] ~", // F#
  G: "~@2 [c#4,f4] ~@2 f4 ~ c#4 ~ [c#4,f4] ~ [c#4,f4] [c#4,f4]@2 [c#4,f4] ~, ~@2 [a#3,c#4,f4] ~@5", // C# A#m
  H: "~@2 [d#4,f#4,a#4]!2 [f#4,a#4]!2 ~ [f#4,a#4] ~ [f#4,a#4] ~ [f#4,a#4] [f#4,a#4]@2 [f#4,a#4] ~", // D#m F#
  I: "~@2 [c#4,f4] ~ [a#3,c#4,f4] [c#4,f4] ~ [c#4,f4] ~ [c#4,f4] ~ [c#4,f4] [a#3,c#4,f4]@2 [c#4,f4] ~", // C# A#m C# A#m C#
  J: "~@2 [f#4,a#4] ~ [d#4,f#4,a#4] [f#4,a#4] ~ [f#4,a#4] ~ [f#4,a#4] ~@2 a#4@2 [f#4,a#4] ~, ~@11 f#4@3 ~@2", // F# D#m F#
  K: "~@2 [c#4,f4] ~@2 f4 ~ [c#4,f4] ~ [c#4,f4] ~ [c#4,f4] [c#4,f4]@2 [a#3,c#4,f4] ~, ~@2 [a#3,c#4,f4] ~@5", // C# A#m
  L: "~@2 [f#4,a#4] ~ [f#4,a#4]!4 ~ [f#4,a#4] ~ [f#4,a#4] [f#4,a#4]@2 [f#4,a#4] ~, ~ d#4 ~@2", // F#
  M: "~@2 [c#4,f4] ~@2 f4 ~ [c#4,f4] ~ [c#4,f4] ~ f4 [c#4,f4]@2 [c#4,f4] ~, ~@2 [c#4,f4] ~@5", // C#
  N: "~@2 [f#4,a#4] ~ [f#4,a#4] ~ a#4 [f#4,a#4] ~ [f#4,a#4] ~ [f#4,a#4] [d#4,f#4,a#4]@2 [f#4,a#4] ~, ~ d#4 ~@2, ~@5 [f#4,a#4]@2 ~@9", // F# D#m F#
  O: "~@2 [c#4,f4] ~ [a#3,c#4,f4] [c#4,f4] ~ [c#4,f4] ~ [a#3,c#4,f4] ~ [c#4,f4] [c#4,f4]@2 [c#4,f4] ~", // C# A#m C# A#m C#
  P: "~@2 [f#4,a#4] ~ [f#4,a#4] ~ a#4 [f#4,a#4] ~ [f#4,a#4] ~ [f#4,a#4] [d#4,f#4,a#4]@2 [f#4,a#4] ~, ~@5 [f#4,a#4]@2 ~@9", // F# D#m F#
  Q: "~@2 [c#4,f4] ~@2 f4 ~ [c#4,f4] ~ [c#4,f4] ~ [c#4,f4] [c#4,f4]@2 [c#4,f4] ~, ~@2 [c#4,f4] ~@5", // C#
  R: "~@2 [f#4,a#4] ~ [f#4,a#4]!4 ~ [f#4,a#4] ~ [f#4,a#4] [d#4,f#4,a#4]@2 [f#4,a#4] ~", S: "[c#4,f4] ~@15",
})).s("gm_electric_guitar_jazz").gain(0.2).pan(0.7)

// chords · electric guitar jazz · "JAZZ GTR" · soft notes
const electric_guitar_jazz_2 = note(`<
  ~@5 A B C D E F G H I J K L M N O P Q ~@8 F R H I J S L M N O P Q ~@3 A B C D E F R H I J K L M N O J S P Q ~@8 H I J
  T L M N O P Q ~@3 A B C D E F R H I J K L M N O ~@3
>`.pickRestart({
  A: "~@4 d#4@2 ~@3 d#4 ~ d#4 d#4@3 ~", B: "~@2 c#4 ~ a#3@2 ~@5 a#3 ~@4", C: "~@7 f#4 ~@4 d#4@2 ~@2",
  D: "~@7 a#3 ~ a#3 ~ a#3 a#3@2 ~@2", E: "~@5 d#4 ~@3 d#4 ~ d#4 d#4@2 d#4 ~", F: "~@7 f4 ~@3 a#3 ~@4",
  G: "~@7 d#4 ~@2 d#4 ~ d#4@2 d#4 ~", H: "~@2 a#3 ~@4 a#3 ~ a#3 ~ a#3 ~@4",
  I: "~@7 d#4 ~ d#4 ~ d#4@2 ~@3, ~@11 a#4 ~@4", J: "~@7 a#3 ~ a#3 ~@2 a#3@2 ~@2", K: "~@9 d#4 ~ d#4 d#4@2 d#4 ~",
  L: "~@6 f4 a#3 ~@3 c#4 ~@2 a#3 ~", M: "~@9 d#4 ~ d#4 ~@2 d#4 ~", N: "~@7 a#3 ~@3 a#3 ~@2 a#3 ~",
  O: "~@4 d#4@3 d#4 ~ d#4 ~ d#4 ~@2 d#4 ~", P: "~@2 a#3 ~ a#3@2 ~ a#3 ~ a#3 ~ a#3 ~@4",
  Q: "~@2 d#4 ~@2 d#4 ~ d#4 ~ d#4 ~ d#4 ~@4", R: "~@4 a3 ~@2 d#4 ~@2 d#4 ~ d#4@2 d#4 ~", S: "~@9 d#4 ~@2 d#4@2 d#4 ~",
  T: "~@9 d#4 ~@2 d#4@2 d4 ~",
})).s("gm_electric_guitar_jazz").gain(0.08).pan(0.7)

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  A B C D E F E F C B G B H I C F C B C F E F J ~@2 K L M L N C F A B C O E F E F C B J ~ H I C F C B C F E F C F E O C
  F C B C F J ~@2 K L M L N C B G B H I C F C B J ~ E F C F E O C F C B C F E F C F J ~ P
>`.pickRestart({
  A: "f#1@3 f#1 ~ f#1 a#1 c#2 d#2 c#2 d#2@2 c#2@2 d#2 ~", B: "c#2@3 c#2 ~ c#2 d#2 ~@2 c#2 d#2 ~ f#2@2 d#2 ~",
  C: "f#1@3 f#1 ~ f#1 a#1 c#2 d#2 c#2 d#2!2 c#2@2 d#2 ~", D: "c#2@2 ~ c#2 ~ c#2 d#2 ~@2 c#2 d#2 ~ f#2@2 d#2 ~",
  E: "f#1@3 f#1 ~ f#1 a#1 c#2 d#2 c#2 d#2!2 c#2 ~ d#2 ~", F: "c#2@3 c#2 ~ c#2 d#2 c#2 ~ c#2 d#2 ~ f#2@2 d#2 ~",
  G: "f#1@2 ~ f#1 ~ f#1 a#1 c#2 d#2 c#2 d#2!2 c#2@2 d#2 ~", H: "f#1@3 f#1 ~ f#1 a#1 c#2 d#2 c#2 ~ d#2 c#2 ~ d#2 ~",
  I: "c#2@3 c#2!3 d#2 c#2 ~ c#2 d#2 ~ f#2@2 d#2 ~", J: "f#1 ~@7", K: "~@7 d#3",
  L: "f#2@3 f#2 ~ f#2 a#2 c#3 d#3 c#3 d#3!2 c#3@2 d#3 ~", M: "c#3@3 c#3 ~ c#3 d#3 ~@2 c#3 d#3 ~ f#3@2 d#3 ~",
  N: "c#3@3 c#3 ~ c#3 d#3 ~@2 c#3 d#3 ~ f#3@3 ~", O: "c#2@2 ~ c#2 ~ c#2 d#2 c#2 ~ c#2 d#2 ~ f#2@2 d#2 ~",
  P: "f#1@3 f#1 ~ f#1@3 ~@8",
})).s("gm_fretless_bass").gain(0.49)

// bass · fretless bass · "FRETLESS" · soft notes
const bass_soft = note(`<
  ~@5 A ~ A ~ B ~ B ~ A ~ A ~ B ~ A ~ A ~@5 C ~ C ~ A ~ B ~ A ~ A ~ A ~ B ~@3 A ~ A ~ B ~ A ~ A ~ A ~ A ~ A ~ B ~ A ~@5
  C ~ C ~ B ~ B ~ A ~ A ~ B ~@3 A ~ A ~ A ~ A ~ B ~ A ~ A ~ A ~@3
>`.pickRestart({
  A: "~@11 c#2 ~@4", B: "~@7 c#2 ~@3 c#2 ~@4", C: "~@7 c#3 ~@3 c#3 ~@4",
})).s("gm_fretless_bass").gain(0.27)

// chords · percussive organ · "ORGAN 2"
const percussive_organ = note(`<
  ~@8 A B A B C B A B A B A B A B D ~@11 A B A B A B A B E F A B A B A G A B A B A B A B A B A B A B D ~@11 A B A B A H
  I F A B A B A B A B A B A B A B A B J F ~
>`.pickRestart({
  A: "~@4 [a#4,c#5,f5]!2 ~ [a#4,c#5,f5] ~ [a#4,c#5,f5] ~ [a#4,c#5,f5]!2 ~ [a#4,c#5,f5] ~", // A#m
  B: "~@4 [d#5,f#5,a#5]!2 ~ [d#5,f#5,a#5] ~ [d#5,f#5,a#5] ~ [d#5,f#5,a#5]!2 ~ [d#5,f#5,a#5] ~", // D#m
  C: "~@4 [a#4,c#5,f5]!2 ~ [a#4,c#5,f5] ~ [a#4,c#5,f5] ~ [a#4,c#5,f5] [a#4,c#5,d#5,f5] ~ [a#4,c#5,f5] ~", // A#m
  D: "[a#4,c#5,f5] ~@15", E: "[a#4,c#5,f5] ~@3 c#5@4 a#4@4 f#4@3 ~", F: "a4@6 g#4@4 f#4@2 d#4@3 ~",
  G: "~@4 [d#5,f#5,a#5] [d#5,f#5] a#5 [d#5,f#5,a#5] ~ [d#5,f#5,a#5] ~ [d#5,f#5,a#5]!2 ~ [d#5,f#5,a#5] ~", // D#m
  H: "~@4 [d#5,f#5,a#5] [d#5,f#5] ~ [d#5,f#5,a#5] ~ [d#5,f#5,a#5] ~ [d#5,f#5,a#5]!2 ~ [d#5,f#5,a#5] ~", // D#m
  I: "[a#4,c#5] ~ c#5@2 a#4@2 f#4@2, f5 ~@15", J: "~ c#5 a#4 f#4",
})).s("gm_percussive_organ").gain(0.17).pan(0.4)

// chords · tenor sax
const tenor_sax = note(`<
  ~@42 A B C D C D C D C D C D C D C D C D C D C D ~@18 A B C D C D C D C D C D C D C D C D A B ~
>`.pickRestart({
  A: "~ f#4 d#4 c#4", B: "e4@6 d#4@4 c#4@2 a#3@3 ~", C: "~@4 f4!2 ~ f4 ~ f4 ~@6",
  D: "~@4 [d#4,f#4]!2 ~ [d#4,f#4] ~ [d#4,f#4] ~@6", // D#m
})).s("gm_tenor_sax").gain(0.38).pan(0.7)

// other · trumpet
const trumpet = note(`<
  ~@42 A B C D C D C D C D C D C D C D C D C D C D ~@18 A B C D C D C D C D C D C D C D C D A B ~
>`.pickRestart({
  A: "~ c#5 a#4 f#4", B: "a4@6 g#4@4 f#4@2 d#4@3 ~", C: "~@4 c#5!2 ~ c#5 ~ c#5 ~@6", D: "~@4 a#4!2 ~ a#4 ~ a#4 ~@6",
})).s("gm_trumpet").gain(0.49).pan(0.3)

// drums · kick
const kick = s("bd").struct("<~@4 A@18 B@4 C A@15 ~@2 A@20 B@4 C A@13 ~@2 A@16 ~@2 D>".pickRestart({
  A: "x!4", B: "x!8", C: "x", D: "x ~@4 x ~@10",
})).gain(0.49)

// drums · snare
const snare = s("sd").struct(`<
  ~@3 A B C B C B C B C B C B C B C B@2 C B D E F G C B C B C B C B@2 C B C B C B H I J B C B C B C B@2 C B C B C B C B
  C B C B D E F G C B@2 C B C B K B C B C B L I J C B C B C B C B C B C B C B@2 H I J M
>`.pickRestart({
  A: "~@8 x!4 ~ x!2 ~", B: "~@4 x ~@2 x ~ x ~@2 x ~@2 x", C: "~@4 x ~@4 x ~@2 x ~@2 x",
  D: "~ x!2 ~ x ~@4 x ~@2 x!2 ~@2", E: "~ x!2 ~ x!2 ~@3 x ~@2 x!2 ~@2", F: "~@2 x ~ x ~@4 x!2 ~ x ~@3",
  G: "~ x!2 ~ x ~@4 x!2 ~ x ~@3", H: "~@4 x ~@4 x ~@2 x ~ x!2", I: "x", J: "~@8 x!2 ~ x ~ x!2 ~", K: "~@4 x ~ x!10",
  L: "~@4 x ~@2 x ~ x ~@2 x ~ x!2", M: "x!2 ~ x ~ x ~@10",
})).gain(0.33)

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@5 A ~ A ~ A ~ A ~ A ~ A ~ A ~@2 A ~ B C D E A ~ A ~ A ~ A ~@2 A ~ A ~ A ~ A ~@3 A ~ A ~ A ~@2 A ~ A ~ A ~ A ~ A ~ A
  ~ B C D E A ~@2 A ~ A ~@3 A ~ A ~@4 A ~ A ~ A ~ A ~ A ~ A ~ A ~@2 A ~@3
>`.pickRestart({
  A: "~@7 x ~@8", B: "~@5 x ~@4 x ~@5", C: "~@5 x ~@2", D: "~ x ~@3 x ~@7 x ~@2", E: "~@5 x ~@7 x ~@2",
})).gain(0.22)

// drums · clap
const clap = s("cp").struct("<~@44 [x!8]!20 x ~@19 [x!8]!16 x ~ [~ x!2 ~@5]>").gain(0.27)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@4 A@5 B A@11 B C ~@3 D A@6 B A@8 ~@2 A@3 B A@11 B A@4 ~@4 D A@2 B A@10 ~@2 A B A@11 B A@2 ~@2 E
>`.pickRestart({
  A: "x!2 ~@2 x ~ x!4 ~@2 x ~ x!2", B: "x ~@3 x ~ x!4 ~@2 x ~ x!2", C: "x", D: "~ x ~@2 x ~ x!4 ~@2 x ~ x!2",
  E: "~ x ~ x ~@12",
})).gain(0.33)

// drums · open hat
const open_hat = s("oh").struct("<~@4 A@18 ~@4 A@16 ~@2 A@20 ~@4 A@14 ~@2 A@16 ~@2 B>".pickRestart({
  A: "~ x ~@3 x ~@2", B: "~@2 x ~ x!2 ~@10",
})).gain(0.27)

// drums · high tom
const high_tom = s("ht").struct("<~@22 [~@7 x ~@7 x]!4 ~@38 [~@7 x ~@7 x]!4 ~@35>").gain(0.38)

// drums · crash
const crash = s("cr").struct("<~@26 x ~@41 x ~@34>").gain(0.38)

// drums · ride
const ride = s("rd").struct("<~@22 A B C D ~@38 A B C D ~@35>".pickRestart({
  A: "~@2 x ~ x!4 ~@2 x ~ x!4", B: "~@2 x ~ x!4 ~ x ~@2 x!4", C: "~ x ~@2 x!4 ~ x ~@2 x!4",
  D: "~ x ~@2 x!4 ~ x ~@2 x!3 ~",
})).gain(0.38)

stack(
  electric_guitar_jazz, electric_guitar_jazz_2, bass, bass_soft, percussive_organ, tenor_sax, trumpet, kick, snare,
  snare_soft, clap, hihat, open_hat, high_tom, crash, ride
)

More by Bell