Strudelify

beyond the sea

Bobby Darin

KeyF majorTempo120 bpm
0:00/0:00
// beyond the sea — Bobby Darin
// 120 bpm, 2/2, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/2 at bar 5) are rendered on a constant 2/2 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/1353571; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 100 bars on a 16-step grid, each part at one level. 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.

// other · trumpet · "Bb Trumpet"
const trumpet = note(`<
  A B C D ~@11 E F@2 G H I@2 J K@2 L M N O@2 P Q R@2 S@2 T U V@2 F@2 G H I@2 J K@2 L M W ~@11 E F@2 G H I@2 J K@2 L M N
  O@2 P Q R@2 S@2 T U V@2 F@2 G H I@2 J K@2 L M X
>`.pickRestart({
  A: "a4 f4!2 d4", B: "f4 d4!2 bb3", C: "d4 bb3!2 g3", D: "bb3@3 ~", E: "~@3 c4", F: "[f4@24 e4@3 f4@2 g4@3]/2",
  G: "a4@3 f4", H: "g4@8 e4@3 d4@2 c4@3", I: "[a4@24 g4@3 a4@2 bb4@3]/2", J: "c5@3 f4 f4@3 f4",
  K: "[d5@20 d5@4 c5@3 a4@2 g4@3]/2", L: "f4@2 d4 f4", M: "g4", N: "f4@2 ~ e4", O: "[a4@24 ab4@3 a4@2 b4@3]/2",
  P: "db5@3 a4", Q: "b4@8 ab4@3 gb4@2 e4@3", R: "[e4@6 ~ g4]/2", S: "[c5@24 b4@3 c5@2 d5@3]/2", T: "e5@3 c5",
  U: "d5@6 b4@2 b4@3 a4@2 g4@3", V: "[c5@6 ~ c4]/2", W: "f4 ~", X: "f4@3 ~",
})).s("gm_trumpet").gain(0.3)

// other · alto sax · "Alto Saxophone"
const alto_sax = note(`<
  A B C D E@2 F G H@2 I J@2 K L M ~@11 N O@2 P Q R@2 S@2 T U V@2 E@2 F G H@2 I J@2 K L W E@2 F G H@2 I J@2 K L M ~@11 N
  O@2 P Q R@2 S@2 T U V@2 E@2 F G H@2 I J@2 K L X
>`.pickRestart({
  A: "a4 f4!2 d4", B: "f4 d4!2 bb3", C: "d4 bb3!2 g3", D: "c4@3 c4", E: "[f4@24 e4@3 f4@2 g4@3]/2", F: "a4@3 f4",
  G: "g4@8 e4@3 d4@2 c4@3", H: "[a4@24 g4@3 a4@2 bb4@3]/2", I: "c5@3 f4 f4@3 f4", J: "[d5@20 d5@4 c5@3 a4@2 g4@3]/2",
  K: "f4@2 d4 f4", L: "g4", M: "c4 ~", N: "~@3 e4", O: "[gb4@24 e4@3 gb4@2 ab4@3]/2", P: "a4@3 a4",
  Q: "gb4@8 ab4@3 gb4@2 e4@3", R: "[db4@6 ~ g4]/2", S: "[e4@24 d4@3 e4@2 f4@3]/2", T: "g4@3 e4",
  U: "f4@6 d4@2 d4@3 c4@2 b3@3", V: "[e4@6 ~ c4]/2", W: "f4 ~", X: "f4@3 ~",
})).s("gm_alto_sax").gain(0.3)

// other · french horn · "Horn"
const french_horn = note(`<
  A B C D E F G H I J E K L M G N E F G H I J E K L M O P Q R S T U V W X W Y Z AA E F G H I J E K L M O AB E F G H I J
  E K L M G N E F G H I J E K L M O P Q R S T U V W X W Y Z AA E F G H I J E K L M O AC
>`.pickRestart({
  A: "f3 g3", B: "d3 g3", C: "d3!2", D: "g3@3 ~", E: "~ c4 ~ d4", F: "~ d4 bb3@2", G: "~ f4 ~ f4", H: "~ f4 bb3@2",
  I: "~ f4 ~ g4", J: "~ f4 e4@2", K: "~ f4 ~ gb4", L: "~ g4 a3@2", M: "~ d4 ~ d4", N: "~ g3@2 ~", O: "~ f4 ~ e4",
  P: "f4 d4", Q: "~ e4 ~ gb4", R: "~ gb4 e4@2", S: "~ e4@2 gb4", T: "~ gb4 d4@2", U: "~ db4 ~ db4", V: "~ db4 ~ d4",
  W: "~ g4 ~ a4", X: "~ a4 g4@2", Y: "~ a4 f4@2", Z: "~ g4 ~ g4", AA: "~ a4 bb4 ~", AB: "f4 a4 bb4 ~", AC: "c4@3 ~",
})).s("gm_french_horn").gain(0.3)

// chords · trombone
const trombone = note(`<
  A B C D E F E G H I J K L M N O E F E G H I J K L M P Q R S T U V W X Y Z AA AB AC E F E G H I J K L M AD AE E F E G H
  I J K L M N O E F E G H I J K L M P Q R S T U V W X Y Z AA AB AC E F E G H I J K L M AD AF
>`.pickRestart({
  A: "f3 g3", B: "d3 g3", C: "[g2,d3] g2", D: "[c3,g3]@3 ~", E: "~ [a3,c4] ~ [a3,d4]", F: "~ [bb3,d4] bb3@2",
  G: "~ [d4,f4] bb3@2", H: "~ [a3,c4] ~ [a3,db4]", I: "~ [a3,d4] [c4,e4]@2", J: "~ c4 ~ [a3,d4]",
  K: "~ [bb3,d4] ~ [c4,d4]", L: "~ [bb3,d4] a3@2", M: "~ [a3,d4] ~ [bb3,d4]", N: "~ [b3,f4] ~ [b3,f4]",
  O: "~ [e3,g3]@2 ~", P: "~ [bb3,d4] ~ [bb3,c4]", Q: "[a3,c4] [ab3,d4]", R: "~ [db4,e4] ~ [a3,db4]",
  S: "~ [b3,d4] [d4,e4]@2", T: "~ [db4,e4]@2 [b3,gb4]", U: "~ [b3,d4] [b3,d4]@2", V: "~ [a3,db4] ~ [a3,db4]",
  W: "~ [a3,db4] ~ [b3,d4]", X: "~ [a3,e4] ~ [c4,e4]", Y: "~ d4 f4@2", Z: "~ e4 ~ e4", AA: "~ d4 d4@2",
  AB: "~ e4 ~ [c4,e4]", AC: "~ [c4,e4]!2 ~", AD: "~ b3 ~ [bb3,c4]", AE: "[a3,c4] [c4,f4] [d4,f4] ~", AF: "a3@3 ~",
})).s("gm_trombone").gain(0.3)

// bass · electric bass pick · "Bass Guitar"
const bass = note(`<
  ~@4 A B A B C D E F G H I J E B A B C D E F G H K L M N M O P Q R S R T U V A B A B C D E F G H K W A B A B C D E F G
  H I J E B A B C D E F G H K L M N M O P Q R S R T U V A B A B C D E F G H K X
>`.pickRestart({
  A: "f2 d2", B: "bb1 c2", C: "f2 e2", D: "d2@2 c2 bb1", E: "a1 d2", F: "bb2 a2", G: "g2@2 c2 db2", H: "d2 bb1",
  I: "g1 d2", J: "c2 bb1", K: "g1 c2", L: "c2 b1", M: "a2 gb2", N: "d2@8 e2@3 gb2@2 ab2@3", O: "d2 e2", P: "a2 ab2",
  Q: "gb2@2 e2 f2", R: "c3 a2", S: "f2@8 g2@3 a2@2 b2@3", T: "f2 g2", U: "c3 bb2", V: "a2@2 g2 ~", W: "f1@2 g1 c2",
  X: "f1@2 c2 ~",
})).s("gm_electric_bass_pick").gain(0.3)

// chords · piano
const piano = note(`<
  A B C D E F E G H I J K L M N O P F Q G H I J K L M R S T U V W X Y Z AA AB AC AD AE E F Q G H I J K L M AF AG E F E G
  H I J K L M N O P F Q G H I J K L M R S T U V W X Y Z AA AB AC AD AE E F Q G H I J K L M AF AH
>`.pickRestart({
  A: "a5 f5!2 d5, c4 d4", B: "f5 d5!2 bb4, d4 bb3", C: "d5 bb4!2 g4, bb3 f3", D: "[e3,bb4]@3 ~",
  E: "~ [a3,c4] ~ [a3,d4], f3 d3", F: "~ [bb3,d4] [c3,bb3]@2, bb2 ~", G: "~ [d4,f4] [c3,bb3]@2, bb2 ~",
  H: "~ [a3,c4,f4] ~ [a3,db4,g4], f3 e3", I: "~ [a3,d4,f4] c3 bb2, d3 [c4,e4]", J: "~ c4 ~ [a3,d4], a2 d3",
  K: "bb3 [bb3,d4,f4] ~ [c4,d4,gb4], ~ a3", L: "~ [bb3,d4,g4] c3 db3, g3 a3", M: "~ [a3,d4] ~ [bb3,d4], d3 bb2",
  N: "~ [b3,f4] ~ [b3,f4], g2 d3", O: "~ bb2, c3 ~, ~ [e3,g3]@2 ~", P: "~ [a3,c4] ~ [a3,d4], a2 d3",
  Q: "~ [a3,c4,f4] ~ [a3,d4,f4], f3 d3", R: "~ [bb3,d4,f4] ~ [bb3,c4,e4], g2 c3", S: "[c3,a3,c4,f4] [b2,ab3,d4]",
  T: "~ [db4,e4] ~ [a3,db4,gb4], a3 gb3", U: "~@4 [b3,d4,gb4]@4 e3@3 gb3@2 ab3@3, d3 [d4,e4]",
  V: "~@3 [b3,gb4], a3 gb3, ~ [db4,e4]@2 ~", W: "~ [b3,d4,gb4] [e3,b3,d4]@2, d3 ~", X: "a3 [a3,db4] ~ [a3,db4], ~ ab3",
  Y: "~ [a3,db4] e3 [f3,b3,d4], gb3 ~", Z: "~ [a3,e4,g4] ~ [c4,e4,a4], c4 a3",
  AA: "~@4 [d4,a4]@4 g3@3 a3@2 b3@3, f3 [f4,g4]", AB: "~ [e4,g4] ~ [e4,a4], c4 a3", AC: "~ [d4,a4] [g3,d4]@2, f3 ~",
  AD: "~ [e4,g4] ~ [c4,e4,g4], c4 bb3", AE: "~ [c4,e4,a4] [g3,c4,e4,bb4] ~, a3 ~", AF: "~ [b3,f4] ~ [bb3,c4,e4], g2 c3",
  AG: "[a3,c4,f4] [c4,f4,a4] [g2,d4,f4,bb4] c3, c3 ~", AH: "[c3,a3]@2 a3 ~, [c4,f4]@3 ~",
})).s("gm_piano").gain(0.3)

// drums · kick
const kick = s("bd").struct("<~@4 A@23 B A@23 B A@23 B A@23 ~>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(0.3)

// drums · open hat
const open_hat = s("oh").struct("<~@4 A@23 B A@23 B A@23 B A@23 C>".pickRestart({
  A: "x ~@3 x ~@2 x!2 ~@3 x ~@2 x", B: "x ~@3 x ~@2 x ~@8", C: "x",
})).gain(0.3)

stack(trumpet, alto_sax, french_horn, trombone, bass, piano, kick, open_hat)

More by Bobby Darin