{"id":1287,"date":"2022-10-27T12:05:08","date_gmt":"2022-10-27T18:05:08","guid":{"rendered":"https:\/\/ofeliayorquesta.com\/blog\/?p=1287"},"modified":"2024-08-28T20:09:45","modified_gmt":"2024-08-29T02:09:45","slug":"ritmos-euclidianos-y-divisibilidad-en-la-musica-algoritmica","status":"publish","type":"post","link":"https:\/\/ofeliayorquesta.com\/blog\/2022\/10\/27\/ritmos-euclidianos-y-divisibilidad-en-la-musica-algoritmica\/","title":{"rendered":"Ritmos euclidianos y divisibilidad en la m\u00fasica algor\u00edtmica"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Introducci\u00f3n<\/h2>\n\n\n\n<p>A la fecha existe una vasta literatura acerca de m\u00fasica-matem\u00e1ticas y m\u00fasica algor\u00edtmica. <em>Patterns of intuition<\/em> (ver 1.), por ejemplo, es un compendio de ensayos de diversos autores, entre los que destacan David Cope, Guerino Mazzola o Peter Lackner. El primero se ha centrado en estudiar por medio de la inteligencia artificial, la recreaci\u00f3n del estilo musical. El segundo, pianista y matem\u00e1tico, ha desarrollado modelos topol\u00f3gicos para el contrapunto de Bach o el serialismo de Pierre Boulez. El tercero, Lackner, fue un compositor quien junto al matem\u00e1tico Harald Fripertinger estudi\u00f3 la teor\u00eda de grupos aplicada a la m\u00fasica para luego desarrollar composiciones atonales, entre las que destaca <em>Kanon f\u00fcr Klavierautomat<\/em>, pieza original ejecutada por un piano mec\u00e1nico.<\/p>\n\n\n\n<p>En otra vertiente, la historia de los lenguajes de programaci\u00f3n musicales data desde 1957, cuando apareci\u00f3 <em>MUSIC I <\/em>de Max Matthews. Le siguieron <em>MUSIC II-MUSIC IV<\/em>, <em>MUSIC 360<\/em> y <em>MUSIC11<\/em> (ver 2.). Desde <em>MUSIC III<\/em>, <em>Csound <\/em>comparte caracter\u00edsticas con estos programas antecesores, si bien <em>Csound<\/em> es uno entre muchos lenguajes de programaci\u00f3n musicales que actualmente existen para computadora personal, entre ellos <em>SuperCollider<\/em>, <em>PureData<\/em>, <em>Max\/Msp<\/em>, etc.<\/p>\n\n\n\n<p>La primera composici\u00f3n musical hecha en su totalidad por una computadora fue Illiac Suite (Hiller, Isaacson, 1957), que hac\u00eda uso de cadenas de Markov. <\/p>\n\n\n\n<p>Otras personas argumentar\u00edan que en m\u00fasica algor\u00edtmica tambi\u00e9n es importante considerar al algoritmo de Guido D\u2019Arezzo (hacia el a\u00f1o 1026),<sup class='footnote'><a href='#marker-1287-1' id='markerref-1287-1' onclick='return footnotation_show(1287)'>1<\/a><\/sup> al Telarmonio de 1906 (primer instrumento electr\u00f3nico), o al sintetizador <em>MARK II <\/em>(del a\u00f1o 1950);<sup class='footnote'><a href='#marker-1287-2' id='markerref-1287-2' onclick='return footnotation_show(1287)'>2<\/a><\/sup> y que desde la antigua Grecia, pasando por Bach, Ligeti, o Xenakis, reconocidos compositores, se ha relacionado a la m\u00fasica con las matem\u00e1ticas, inherentemente a la conceptualizaci\u00f3n de sus obras o como la metodolog\u00eda en sus composiciones.<sup class='footnote'><a href='#marker-1287-3' id='markerref-1287-3' onclick='return footnotation_show(1287)'>3<\/a><\/sup> Actualmente, el estado del arte en computaci\u00f3n musical en el 2022 se orienta hacia la optimizaci\u00f3n de audio en tiempo real, el live coding, la m\u00fasica en red, el <em>machine learning <\/em>musical, la m\u00fasica en web, la generaci\u00f3n de material audiovisual o el hardware siendo controlado desde la programaci\u00f3n musical.<sup class='footnote'><a href='#marker-1287-4' id='markerref-1287-4' onclick='return footnotation_show(1287)'>4<\/a><\/sup> Es dif\u00edcil que la persona interesada en m\u00fasica algor\u00edtmica quede exenta de alguno de estos temas, pues ellos est\u00e1n interrelacionados.<\/p>\n\n\n\n<p>Godfried Tussaint (1944-2019), comput\u00f3logo especializado en geometr\u00eda computacional pero tambi\u00e9n percusionista, en el art\u00edculo <em>The distance geometry of music<\/em> demostr\u00f3 la relaci\u00f3n manifiesta entre el algoritmo euclidiano con varios ritmos tradicionales del mundo (africanos, cubanos, hind\u00faes, entre otros).<sup class='footnote'><a href='#marker-1287-5' id='markerref-1287-5' onclick='return footnotation_show(1287)'>5<\/a><\/sup> En resumen, este algoritmo es capaz de generar una colecci\u00f3n de ritmos equitativamente distribuidos y que, seg\u00fan Tussaint, esta propiedad es caracter\u00edstica de aqu\u00e9llos ritmos muy agradables para el com\u00fan denominador de la gente.<sup class='footnote'><a href='#marker-1287-6' id='markerref-1287-6' onclick='return footnotation_show(1287)'>6<\/a><\/sup> Un ritmo euclidiano puede ser generado para cualquier pareja de n\u00fameros enteros, pudiendo \u00e9stos ser o no primos relativos.<\/p>\n\n\n\n<p>Alex McLean realiz\u00f3 la programaci\u00f3n exacta del algoritmo de Tussaint en <em>Tidalcycles <\/em>(lenguage de<em> live coding<\/em>),<sup class='footnote'><a href='#marker-1287-7' id='markerref-1287-7' onclick='return footnotation_show(1287)'>7<\/a><\/sup>, hecho que permite corroborar el poder musical que tiene este algoritmo en el <em>live coding<\/em>, primeramente porque pueden realizarse improvisaciones de m\u00fasica algor\u00edtmica que hagan uso de estos ritmos, encaden\u00e1ndolos, sobrelap\u00e1ndolos e intercambi\u00e1ndolos a grandes velocidades, lo que podr\u00eda ser dif\u00edcil y hasta imposible para algunos percusionistas.<\/p>\n\n\n\n<p>A continuaci\u00f3n explicar\u00e9 qu\u00e9 es el algoritmo de Euclides y el algoritmo de Tussaint, mostrar\u00e9 ejemplos sonoros de ritmos euclidianos, y explicar\u00e9 c\u00f3mo emplearlos en composiciones musicales, us\u00e1ndolos como <em>timelines<\/em> y\/o como m\u00e9todo de orquestaci\u00f3n.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">El algoritmo de Euclides<\/h2>\n\n\n\n<p>El algoritmo de Euclides permite calcular el M\u00e1ximo Com\u00fan Divisor de dos n\u00fameros, as\u00ed como determinar si dos n\u00fameros son primos relativos. Para hablar de algoritmo de Euclides, primero hay que conocer el algoritmo de la divisi\u00f3n. El algoritmo de la divisi\u00f3n dice que, dados dos enteros $a$ y $b$, siempre existen enteros $q$, $r$ tales que $a = bq + r$, con $0  \\leq r &lt; b\\text{.}$ Por ejemplo, para $a = 14$ y $b = 8\\text{,}$ <\/p>\n\n\n\n<p>$$ 14 = 8(1) + 6 \\text{.}$$<\/p>\n\n\n\n<p>Geom\u00e9tricamente, el algoritmo de la divisi\u00f3n nos dice qu\u00e9 tan lejos est\u00e1 un n\u00famero de dividir exactamente a otro n\u00famero. <\/p>\n\n\n\n<p>Ya con esto entendimos el algoritmo de la divisi\u00f3n. Recordemos ahora que el m\u00e1ximo com\u00fan divisor de dos n\u00fameros $a$ y $b$, es el mayor entero $d$ que es divisor com\u00fan de $a$ y $b\\text{.}$<\/p>\n\n\n\n<p><em>Ejemplo.<\/em> Ya que los divisores comunes de $14$ y $8$ son $\\{1,2\\},$ El $MCD(14,8) = 2.$<\/p>\n\n\n\n<p>Cuando los n\u00fameros $a$ y $b$ son peque\u00f1os es posible enlistar todos los divisores y encontrar el divisor com\u00fan. Alternativamente, se usa el algoritmo de Euclides para encontrar el MCD de 2 n\u00fameros. El algoritmo de Euclides consiste en calcular varios algoritmos de la divisi\u00f3n, (reduci\u00e9ndose el par de n\u00fameros con cada iteraci\u00f3n) y despu\u00e9s de una cadena finita de operaciones se obtendr\u00e1 un residuo igual a cero que termina el procedimiento. El \u00faltimo residuo no cero en la cadena de divisiones es el m\u00e1ximo com\u00fan divisor.<\/p>\n\n\n\n<p><em>Ejemplo.<\/em> Usando el algoritmo de Euclides calcula el $MCD(14,8),$<\/p>\n\n\n\n<p>$$14 = 8(1) + 6$$<\/p>\n\n\n\n<p>$$8 = 6(1) + 2$$<\/p>\n\n\n\n<p>$$6 = 6(1) + 0.$$<\/p>\n\n\n\n<p>Como el \u00faltimo residuo distinto de cero es $2,$ $MCD(14,8) = 2.$<sup class='footnote'><a href='#marker-1287-8' id='markerref-1287-8' onclick='return footnotation_show(1287)'>8<\/a><\/sup><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Versi\u00f3n musical de Tussaint del algoritmo de Euclides<\/h2>\n\n\n\n<p>Para el caso de la generaci\u00f3n de ritmos, el algoritmo de Euclides servir\u00e1 para empaquetar cadenas binarias de n\u00fameros, y tras una serie de pasos, podr\u00e1 encontrarse el ritmo euclidiano correspondiente. Veamos un ejemplo m\u00e1s espec\u00edfico.<\/p>\n\n\n\n<p>Dados dos n\u00fameros $a$ y $b,$ el n\u00famero $a$ representar\u00e1 \u201cn\u00famero de pulsos por unidad de tiempo\u201d, y el n\u00famero $b$ significar\u00e1 \u201cn\u00famero de golpes (u <em>onsets<\/em>) por unidad de tiempo.\u201d<\/p>\n\n\n\n<p>Para $a = 14$ y $b = 8,$ de todas las posibles maneras de distribuir $8$ golpes en $14$ pulsos, s\u00f3lo hay una que resulta de emplear el algoritmo euclidiano.<\/p>\n\n\n\n<p>Ejemplos de ritmos no euclidianos son:<\/p>\n\n\n\n<p>$$00110110110011$$<br>$$10011001011101$$<br>$$10101010101101$$<\/p>\n\n\n\n<p><em>Encuentra el ritmo euclidiano E(8,14).<\/em><\/p>\n\n\n\n<p>Como #$p = 14,$ #$o = 8,$ habr\u00e1n $14 \\enspace &#8211; \\enspace 8 = 6$ ceros y $8$ unos. Al iniciar el algoritmo, comenzamos por colocar los unos y despu\u00e9s los ceros:<\/p>\n\n\n\n<p>$$[[1][1][1][1][1][1][1][1][0][0][0][0][0][0]]$$<\/p>\n\n\n\n<p>Luego se distribuyen los ceros en los paquetes que ya ten\u00edan uno:<\/p>\n\n\n\n<p>$$[[10][10][10][10][10][10][1][1]]$$<\/p>\n\n\n\n<p>Esto se corresponde con que $8\/6$ es $8 = 6(1) + 2;$ se obtuvieron $6$ paquetes de $2$ bits, y sobraron $2$ paquetes de $1$ bit.<\/p>\n\n\n\n<p>Esto termina el algoritmo de Euclides. Como en este caso los n\u00fameros no son primos relativos, contin\u00faa otro procedimiento adicional para encontrar el ritmo euclidiano correspondiente.<\/p>\n\n\n\n<p>Ya que $8 = 2(4),$ se distribuir\u00e1n los paquetes en cuatro cajas:<\/p>\n\n\n\n<p>$$[[101][101][1010][1010]]$$<\/p>\n\n\n\n<p>Luego se reordenar\u00e1n para que queden alternados:<\/p>\n\n\n\n<p>$$[[101][1010][101][1010]]$$<\/p>\n\n\n\n<p>Por \u00faltimo se formar\u00e1 el patr\u00f3n resultante al sacar los bits de sus cajas:<\/p>\n\n\n\n<p>$$10110101011010$$<\/p>\n\n\n\n<p>Escuchar el resultado en <em>TidalCycles<\/em>:<\/p>\n\n\n\n<p><code>d1 $ s \"bd:4(8,14)\"<br>d2 $ s \"hh*14\"<br>d3 $ s \"ht\"<\/code><\/p>\n\n\n\n<p>Y con variaci\u00f3n de tempo:<\/p>\n\n\n\n<p><code>p \"cpsfun\" $ stack [ s \"bd:4(8,14)\" # gain \"0.9\",s \"hh*14\",<br>s \"ht\"] # cps (slow 8 $ 0.5 + saw)<\/code><\/p>\n\n\n\n<p>Un ejemplo donde se puede ver qu\u00e9 ocurre cuando el par de n\u00fameros elegidos son primos relativos se puede consultar en <em>\u201cReal World Algorithms. A begginer\u2019s guide\u201d.<\/em><sup class='footnote'><a href='#marker-1287-9' id='markerref-1287-9' onclick='return footnotation_show(1287)'>9<\/a><\/sup> Musicalmente, contar 14 tiempos por unidad ya es extra\u00f1o, porque la cantidad de pulsos es grande. Es m\u00e1s com\u00fan contar 7 tiempos y hacer subdivisiones. Lo que podr\u00eda equivaler a un comp\u00e1s de 7\/8; ya que en 7\/8 se pueden agrupar hasta 14 dieciseisavos (o en 7\/4 se pueden agrupar hasta 14 octavos por comp\u00e1s). La elecci\u00f3n de comp\u00e1s realmente depende de c\u00f3mo piensa la m\u00fasica un m\u00fasico, de sus habilidades y del contexto. 7\/8 sigue siendo una m\u00e9trica poco com\u00fan para un comp\u00e1s, que se puede encontrar en piezas de rock progresivo (<em>\u201cFrame by Frame\u201d <\/em>\u2013 King Crimson), m\u00fasica celta (<em>\u201cThe fruit and the snoot\u201d<\/em> \u2013 Liz Caroll), Stravinsky (\u201cLa consagraci\u00f3n de la primavera\u201d), talas hind\u00fas, entre otros.<\/p>\n\n\n\n<p>En el sentido de que es muy f\u00e1cil automatizar ritmos euclidianos, esto presenta una ventaja para la m\u00fasica algor\u00edtmica, ya que los resultados producidos ser\u00e1n dif\u00edcilmente emulables en las percusiones an\u00e1logas.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Timelines<\/h2>\n\n\n\n<p>El <em>timeline<\/em> es la pauta r\u00edtmica a la que se atiene una agrupaci\u00f3n de m\u00fasicos; suena durante toda o casi toda una pieza sin realmente desaparecer. Se diferencia del pulso en que acent\u00faa \u00fanicamente ciertos golpes, pero la elecci\u00f3n de estos determina la base r\u00edtmica de una pieza o inclusive la de todo un g\u00e9nero musical. En el clave-son, es el instrumento de la clave (dos percusiones de madera que se golpean entre s\u00ed para producir sonido) el que marca el <em>timeline<\/em> (ver 9.).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Bibliograf\u00eda<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Nierhaus, G. (Ed.). (2015). <em>Patterns of intuition: Musical creativity in the light of algorithmic composition. <\/em>Springer.<\/li>\n\n\n\n<li>Lazzarini, V., Yi, S., Heintz, J., Brandtsegg, \u00d8., &amp; McCurdy, I. (2016). <em>Csound: A sound and music computing system. <\/em>Springer. <\/li>\n\n\n\n<li>Loy, G. (2011). <em>Musimathics, Volume 1: The Mathematical Foundations of Music (Vol. 1).<\/em> MIT press. <\/li>\n\n\n\n<li>Nierhaus, G. (2009). <em>Algorithmic composition: paradigms of automated music generation. <\/em>Springer Science &amp; Business Media. <\/li>\n\n\n\n<li>Chadabe, J. (1997), <em>Electric Sound: The Past and Promise of Electronic Music. <\/em>Prentice-Hall.<\/li>\n\n\n\n<li>Edwards, M. (2011). Algorithmic composition: computational thinking in music. <em>Communications of the ACM, 54(7), <\/em>58-67.<\/li>\n\n\n\n<li>Demaine, E. D., Gomez-Martin, F., Meijer, H., Rappaport, D., Taslakian, P., Toussaint, G.T., \u2026 &amp; Wood, D. R. (2009). The distance geometry of music. <em>Computational geometry, 42(5),<\/em> 429-454.<\/li>\n\n\n\n<li>McLean, A. (2014, September). Making programming languages to dance to: live coding with tidal. In <em>Proceedings of the 2nd ACM SIGPLAN international workshop on Functional art, music, modeling &amp; design<\/em> (pp. 63-70).<\/li>\n\n\n\n<li>Toussaint, G. T. (2019). <em>The geometry of musical rhythm: what makes a&#8221; good&#8221; rhythm good?.<\/em> CRC Press.<\/li>\n\n\n\n<li>Dean, R. T. (2018). <em>The Oxford handbook of algorithmic music.<\/em> Oxford University Press.<\/li>\n\n\n\n<li>Johnston, B. L., &amp; Richman, F. (2020). <em>Numbers and symmetry: an introduction to algebra. <\/em>CRC Press.<\/li>\n<\/ol>\n\n\n<div class='footnotes' id='footnotes-1287'><div class='footnotedivider'><\/div><ol><li id='marker-1287-1'> Ver 3. y 4. <span class='returnkey'><a href='#markerref-1287-1'>&#8629;<\/a><\/span><\/li><li id='marker-1287-2'> Ver 5. <span class='returnkey'><a href='#markerref-1287-2'>&#8629;<\/a><\/span><\/li><li id='marker-1287-3'> Consultar 6. <span class='returnkey'><a href='#markerref-1287-3'>&#8629;<\/a><\/span><\/li><li id='marker-1287-4'> Ver 10. <span class='returnkey'><a href='#markerref-1287-4'>&#8629;<\/a><\/span><\/li><li id='marker-1287-5'> Ver 7. <span class='returnkey'><a href='#markerref-1287-5'>&#8629;<\/a><\/span><\/li><li id='marker-1287-6'> Ver 9. <span class='returnkey'><a href='#markerref-1287-6'>&#8629;<\/a><\/span><\/li><li id='marker-1287-7'> Consultar 8. <span class='returnkey'><a href='#markerref-1287-7'>&#8629;<\/a><\/span><\/li><li id='marker-1287-8'> En 11 se puede consultar una demostraci\u00f3n de los algoritmos de la divisi\u00f3n y de Euclides. <span class='returnkey'><a href='#markerref-1287-8'>&#8629;<\/a><\/span><\/li><li id='marker-1287-9'> En https:\/\/louridas.github.io\/rwa\/assignments\/musical-rhythms\/ . <span class='returnkey'><a href='#markerref-1287-9'>&#8629;<\/a><\/span><\/li><\/ol><\/div>","protected":false},"excerpt":{"rendered":"<p>Introducci\u00f3n A la fecha existe una vasta literatura acerca de m\u00fasica-matem\u00e1ticas y m\u00fasica algor\u00edtmica. Patterns of intuition (ver 1.), por ejemplo, es un compendio de ensayos de diversos autores, entre los que destacan David Cope, Guerino Mazzola o Peter Lackner. El primero se ha centrado en estudiar por medio de la inteligencia artificial, la recreaci\u00f3n<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","footnotes":""},"categories":[26,4,34,20,73,1],"tags":[100,79,84,102,23],"class_list":["post-1287","post","type-post","status-publish","format-standard","hentry","category-livecoding","category-matematicas","category-musica","category-musica-por-computadora","category-programacion","category-sin-categoria","tag-algoritmo-de-euclides","tag-algoritmo-de-la-division","tag-divisibilidad","tag-ritmos-euclidianos","tag-tidalcycles","no-featured-content"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false,"coup-single-post":false,"coup-archive-sticky":false,"coup-archive":false},"uagb_author_info":{"display_name":"Ofelia Negrete","author_link":"https:\/\/ofeliayorquesta.com\/blog\/author\/ofelia-negrete\/"},"uagb_comment_info":9,"uagb_excerpt":"Introducci\u00f3n A la fecha existe una vasta literatura acerca de m\u00fasica-matem\u00e1ticas y m\u00fasica algor\u00edtmica. Patterns of intuition (ver 1.), por ejemplo, es un compendio de ensayos de diversos autores, entre los que destacan David Cope, Guerino Mazzola o Peter Lackner. El primero se ha centrado en estudiar por medio de la inteligencia artificial, la recreaci\u00f3n","_links":{"self":[{"href":"https:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/posts\/1287","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/comments?post=1287"}],"version-history":[{"count":35,"href":"https:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/posts\/1287\/revisions"}],"predecessor-version":[{"id":1344,"href":"https:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/posts\/1287\/revisions\/1344"}],"wp:attachment":[{"href":"https:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/media?parent=1287"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/categories?post=1287"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/tags?post=1287"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}