Canción codificada en R

Primera parte

jbells_pitch <- paste(
  "E E E",
  "E E E",
  "E G C D",
  "E",
  "F F F F",
  "F E E E",
  "E D D E",
  "D G",
  "E E E",
  "E E E",
  "E G C D",
  "E",
  "F F F F",
  "F E E E E",
  "G G F D",
  "C",
  "G3 E D C",
  "G3",
  "G3 G3 G3 E D C",
  "A3",
  "A3 F E D",
  "B3",
  "G G F D",
  "E",
  "G3 E D C",
  "G3",
  "G3 E D C",
  "A3 A3", 
  "A3 F E D",
  "G G G G A G F D",
  "C C5 B A G F G",
  "E E E G C D",
  "E E E G C D",
  "E F G A C E D F",
  "E C D E F G A G",
  "F F F F F F",
  "F E E E E E",
  "E D D D D E",
  "D D E F G F E D",
  "E E E G C D",
  "E E E G C D",
  "E F G A C E D F",
  "E C D E F G A G",
  "F F F F F F",
  "F E E E E E",
  "G C5 B A G F E D",
  "C C E G C5"
)

Segunda parte

jbells_pitch <- strsplit(jbells_pitch, " ")[[1]]

jbells_duration <- c(
  1, 1, 2, 
  1, 1, 2, 
  1, 1, 1.5, 0.5, 
  4, 
  1, 1, 1, 1, 
  1, 1, 1, 1, 
  1, 1, 1, 1,
  2, 2,
  1, 1, 2, 
  1, 1, 2, 
  1, 1, 1.5, 0.5, 
  4, 
  1, 1, 1, 1, 
  1, 1, 1, 0.5, 0.5, 
  1, 1, 1, 1,
  4,
  1, 1, 1, 1, 
  3, .5, .5, 
  1, 1, 1, 1, 
  4,
  1, 1, 1, 1, 
  4,
  1, 1, 1, 1, 
  4,
  1, 1, 1, 1, 
  4,
  1, 1, 1, 1, 
  3, 1,
  1, 1, 1, 1,
  1, 1, 1, 1, 
  1, 1, 1, 1, 
  1, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5,
  1, 1, 0.5, 0.5, 0.5, 0.5, 
  1, 1, 0.5, 0.5, 0.5, 0.5,
  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5,
  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5,
  1, 0.5, 0.5, 1, 0.5, 0.5, 
  1, 0.5, 0.5, 1, 0.5, 0.5, 
  1, 0.5, 0.5, 0.5, 0.5, 1,
  1, 0.33, 0.33, 0.33, 1, 0.33, 0.33, 0.33,
  1, 1, 0.5, 0.5, 0.5, 0.5, 
  1, 1, 0.5, 0.5, 0.5, 0.5,
  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5,
  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5,
  1, 0.5, 0.5, 1, 0.5, 0.5, 
  1, 0.5, 0.5, 1, 0.5, 0.5, 
  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5,
  1, 0.33, 0.33, 0.33, 2
)


Rmusic::play_music(jbells_pitch, jbells_duration)
## Warning: `data_frame()` was deprecated in tibble 1.1.0.
## Please use `tibble()` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was generated.
Rmusic::save_music(jbells_pitch, jbells_duration, output_file = "jbells.wav")

Conclusiones

Así como muchas otras canciones musicales, Jingle Bells es una de las muchas melodías que pueden ser codificadas en R, para esto hay que establecer las teclas como sonido y en seguida asignarles una duración, la herramienta utilizada es Rmusic::play y Rmusic::save.

LS0tCnRpdGxlOiA8c3BhbiBzdHlsZT0iY29sb3I6cmVkIj5KaW5nbGUgQmVsbHM8L3NwYW4+CmF1dGhvcjogIkpvc8OpIFJhbcOzbiBBMDE2MjUyMDMiCmRhdGU6ICIyMC0yMi0wNyIKb3V0cHV0OiAKICBodG1sX2RvY3VtZW50OgogICB0b2M6IHRydWUKICAgdG9jX2Zsb2F0OiB0cnVlIAogICBjb2RlX2Rvd25sb2FkOiB0cnVlCi0tLQoKCjxpbWcgc3JjPSAiL1VzZXJzL2pvc2VyYW1vbnZhenF1ZXpndXptYW4vRGVza3RvcC9qaW5nbGViZWxsc19fMDQ3MzIuanBlZyI+CgojICoqQ2FuY2nDs24gY29kaWZpY2FkYSBlbiBSKioKCiMjIFByaW1lcmEgcGFydGUgCmBgYHtyfQpqYmVsbHNfcGl0Y2ggPC0gcGFzdGUoCiAgIkUgRSBFIiwKICAiRSBFIEUiLAogICJFIEcgQyBEIiwKICAiRSIsCiAgIkYgRiBGIEYiLAogICJGIEUgRSBFIiwKICAiRSBEIEQgRSIsCiAgIkQgRyIsCiAgIkUgRSBFIiwKICAiRSBFIEUiLAogICJFIEcgQyBEIiwKICAiRSIsCiAgIkYgRiBGIEYiLAogICJGIEUgRSBFIEUiLAogICJHIEcgRiBEIiwKICAiQyIsCiAgIkczIEUgRCBDIiwKICAiRzMiLAogICJHMyBHMyBHMyBFIEQgQyIsCiAgIkEzIiwKICAiQTMgRiBFIEQiLAogICJCMyIsCiAgIkcgRyBGIEQiLAogICJFIiwKICAiRzMgRSBEIEMiLAogICJHMyIsCiAgIkczIEUgRCBDIiwKICAiQTMgQTMiLCAKICAiQTMgRiBFIEQiLAogICJHIEcgRyBHIEEgRyBGIEQiLAogICJDIEM1IEIgQSBHIEYgRyIsCiAgIkUgRSBFIEcgQyBEIiwKICAiRSBFIEUgRyBDIEQiLAogICJFIEYgRyBBIEMgRSBEIEYiLAogICJFIEMgRCBFIEYgRyBBIEciLAogICJGIEYgRiBGIEYgRiIsCiAgIkYgRSBFIEUgRSBFIiwKICAiRSBEIEQgRCBEIEUiLAogICJEIEQgRSBGIEcgRiBFIEQiLAogICJFIEUgRSBHIEMgRCIsCiAgIkUgRSBFIEcgQyBEIiwKICAiRSBGIEcgQSBDIEUgRCBGIiwKICAiRSBDIEQgRSBGIEcgQSBHIiwKICAiRiBGIEYgRiBGIEYiLAogICJGIEUgRSBFIEUgRSIsCiAgIkcgQzUgQiBBIEcgRiBFIEQiLAogICJDIEMgRSBHIEM1IgopCmBgYAoKIyMgU2VndW5kYSBwYXJ0ZSAKYGBge3J9CmpiZWxsc19waXRjaCA8LSBzdHJzcGxpdChqYmVsbHNfcGl0Y2gsICIgIilbWzFdXQoKamJlbGxzX2R1cmF0aW9uIDwtIGMoCiAgMSwgMSwgMiwgCiAgMSwgMSwgMiwgCiAgMSwgMSwgMS41LCAwLjUsIAogIDQsIAogIDEsIDEsIDEsIDEsIAogIDEsIDEsIDEsIDEsIAogIDEsIDEsIDEsIDEsCiAgMiwgMiwKICAxLCAxLCAyLCAKICAxLCAxLCAyLCAKICAxLCAxLCAxLjUsIDAuNSwgCiAgNCwgCiAgMSwgMSwgMSwgMSwgCiAgMSwgMSwgMSwgMC41LCAwLjUsIAogIDEsIDEsIDEsIDEsCiAgNCwKICAxLCAxLCAxLCAxLCAKICAzLCAuNSwgLjUsIAogIDEsIDEsIDEsIDEsIAogIDQsCiAgMSwgMSwgMSwgMSwgCiAgNCwKICAxLCAxLCAxLCAxLCAKICA0LAogIDEsIDEsIDEsIDEsIAogIDQsCiAgMSwgMSwgMSwgMSwgCiAgMywgMSwKICAxLCAxLCAxLCAxLAogIDEsIDEsIDEsIDEsIAogIDEsIDEsIDEsIDEsIAogIDEsIDAuNSwgMC41LCAwLjUsIDAuNSwgMC41LCAwLjUsCiAgMSwgMSwgMC41LCAwLjUsIDAuNSwgMC41LCAKICAxLCAxLCAwLjUsIDAuNSwgMC41LCAwLjUsCiAgMC41LCAwLjUsIDAuNSwgMC41LCAwLjUsIDAuNSwgMC41LCAwLjUsCiAgMC41LCAwLjUsIDAuNSwgMC41LCAwLjUsIDAuNSwgMC41LCAwLjUsCiAgMSwgMC41LCAwLjUsIDEsIDAuNSwgMC41LCAKICAxLCAwLjUsIDAuNSwgMSwgMC41LCAwLjUsIAogIDEsIDAuNSwgMC41LCAwLjUsIDAuNSwgMSwKICAxLCAwLjMzLCAwLjMzLCAwLjMzLCAxLCAwLjMzLCAwLjMzLCAwLjMzLAogIDEsIDEsIDAuNSwgMC41LCAwLjUsIDAuNSwgCiAgMSwgMSwgMC41LCAwLjUsIDAuNSwgMC41LAogIDAuNSwgMC41LCAwLjUsIDAuNSwgMC41LCAwLjUsIDAuNSwgMC41LAogIDAuNSwgMC41LCAwLjUsIDAuNSwgMC41LCAwLjUsIDAuNSwgMC41LAogIDEsIDAuNSwgMC41LCAxLCAwLjUsIDAuNSwgCiAgMSwgMC41LCAwLjUsIDEsIDAuNSwgMC41LCAKICAwLjUsIDAuNSwgMC41LCAwLjUsIDAuNSwgMC41LCAwLjUsIDAuNSwKICAxLCAwLjMzLCAwLjMzLCAwLjMzLCAyCikKCgpSbXVzaWM6OnBsYXlfbXVzaWMoamJlbGxzX3BpdGNoLCBqYmVsbHNfZHVyYXRpb24pCgpSbXVzaWM6OnNhdmVfbXVzaWMoamJlbGxzX3BpdGNoLCBqYmVsbHNfZHVyYXRpb24sIG91dHB1dF9maWxlID0gImpiZWxscy53YXYiKQpgYGAKCiMgKkNvbmNsdXNpb25lcyoKCkFzw60gY29tbyBtdWNoYXMgb3RyYXMgY2FuY2lvbmVzIG11c2ljYWxlcywgSmluZ2xlIEJlbGxzIGVzIHVuYSBkZSBsYXMgbXVjaGFzIG1lbG9kw61hcyBxdWUgcHVlZGVuIHNlciBjb2RpZmljYWRhcyBlbiBSLCBwYXJhIGVzdG8gaGF5IHF1ZSBlc3RhYmxlY2VyIGxhcyB0ZWNsYXMgY29tbyBzb25pZG8geSBlbiBzZWd1aWRhIGFzaWduYXJsZXMgdW5hIGR1cmFjacOzbiwgbGEgaGVycmFtaWVudGEgdXRpbGl6YWRhIGVzIFJtdXNpYzo6cGxheSB5IFJtdXNpYzo6c2F2ZS4KCgo=