{"id":282,"date":"2026-01-09T08:31:29","date_gmt":"2026-01-09T13:31:29","guid":{"rendered":"https:\/\/juansebastianmendez.com\/?p=282"},"modified":"2026-03-23T11:56:08","modified_gmt":"2026-03-23T16:56:08","slug":"serg","status":"publish","type":"post","link":"https:\/\/juansebastianmendez.com\/en\/serg\/","title":{"rendered":"SERG"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"282\" class=\"elementor elementor-282\">\n\t\t\t\t<div class=\"elementor-element elementor-element-28ebf104 e-con-full e-flex e-con e-parent\" data-id=\"28ebf104\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-45304fe9 elementor-widget__width-inherit elementor-widget elementor-widget-heading\" data-id=\"45304fe9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">SERG<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3990b295 elementor-widget elementor-widget-heading\" data-id=\"3990b295\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h5 class=\"elementor-heading-title elementor-size-default\">A\u00f1o : 2023<\/h5>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3b125ec2 e-flex e-con-boxed e-con e-parent\" data-id=\"3b125ec2\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1e3f01ca elementor-widget elementor-widget-spacer\" data-id=\"1e3f01ca\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3c83bfc4 e-con-full e-flex e-con e-parent\" data-id=\"3c83bfc4\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-2baf058b e-con-full e-flex e-con e-child\" data-id=\"2baf058b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-786c3c43 elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"786c3c43\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p><b>Shifting Euclidean Rhythm Generator (SERG)<\/b> es una herramienta de composici\u00f3n musical inspirada en el concepto de Steve Reich de ritmos desfasados. Esta herramienta utiliza los ritmos Euclidianos de Godfried Toussaint para crear beats musicales y polirritmos complejos que evolucionan org\u00e1nicamente con el tiempo a medida que entran y salen de fase, sincronizando s\u00edntesis de audio precisa con visualizaciones circulares en tiempo real.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7b7e8524 e-con-full e-flex e-con e-child\" data-id=\"7b7e8524\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7524967d elementor-widget elementor-widget-heading\" data-id=\"7524967d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\">Tecnolog\u00edas usadas:<\/h4>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3e5dc510 elementor-icon-list--layout-inline elementor-list-item-link-full_width elementor-widget elementor-widget-icon-list\" data-id=\"3e5dc510\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-list.default\">\n\t\t\t\t\t\t\t<ul class=\"elementor-icon-list-items elementor-inline-items\">\n\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-laptop-code\" viewBox=\"0 0 640 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M255.03 261.65c6.25 6.25 16.38 6.25 22.63 0l11.31-11.31c6.25-6.25 6.25-16.38 0-22.63L253.25 192l35.71-35.72c6.25-6.25 6.25-16.38 0-22.63l-11.31-11.31c-6.25-6.25-16.38-6.25-22.63 0l-58.34 58.34c-6.25 6.25-6.25 16.38 0 22.63l58.35 58.34zm96.01-11.3l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0l58.34-58.34c6.25-6.25 6.25-16.38 0-22.63l-58.34-58.34c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63L386.75 192l-35.71 35.72c-6.25 6.25-6.25 16.38 0 22.63zM624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z\"><\/path><\/svg>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">HTML<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-far-file-code\" viewBox=\"0 0 384 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M149.9 349.1l-.2-.2-32.8-28.9 32.8-28.9c3.6-3.2 4-8.8.8-12.4l-.2-.2-17.4-18.6c-3.4-3.6-9-3.7-12.4-.4l-57.7 54.1c-3.7 3.5-3.7 9.4 0 12.8l57.7 54.1c1.6 1.5 3.8 2.4 6 2.4 2.4 0 4.8-1 6.4-2.8l17.4-18.6c3.3-3.5 3.1-9.1-.4-12.4zm220-251.2L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM256 51.9l76.1 76.1H256zM336 464H48V48h160v104c0 13.3 10.7 24 24 24h104zM209.6 214c-4.7-1.4-9.5 1.3-10.9 6L144 408.1c-1.4 4.7 1.3 9.6 6 10.9l24.4 7.1c4.7 1.4 9.6-1.4 10.9-6L240 231.9c1.4-4.7-1.3-9.6-6-10.9zm24.5 76.9l.2.2 32.8 28.9-32.8 28.9c-3.6 3.2-4 8.8-.8 12.4l.2.2 17.4 18.6c3.3 3.5 8.9 3.7 12.4.4l57.7-54.1c3.7-3.5 3.7-9.4 0-12.8l-57.7-54.1c-3.5-3.3-9.1-3.2-12.4.4l-17.4 18.6c-3.3 3.5-3.1 9.1.4 12.4z\"><\/path><\/svg>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">CSS<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fab-js-square\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM243.8 381.4c0 43.6-25.6 63.5-62.9 63.5-33.7 0-53.2-17.4-63.2-38.5l34.3-20.7c6.6 11.7 12.6 21.6 27.1 21.6 13.8 0 22.6-5.4 22.6-26.5V237.7h42.1v143.7zm99.6 63.5c-39.1 0-64.4-18.6-76.7-43l34.3-19.8c9 14.7 20.8 25.6 41.5 25.6 17.4 0 28.6-8.7 28.6-20.8 0-14.4-11.4-19.5-30.7-28l-10.5-4.5c-30.4-12.9-50.5-29.2-50.5-63.5 0-31.6 24.1-55.6 61.6-55.6 26.8 0 46 9.3 59.8 33.7L368 290c-7.2-12.9-15-18-27.1-18-12.3 0-20.1 7.8-20.1 18 0 12.6 7.8 17.7 25.9 25.6l10.5 4.5c35.8 15.3 55.9 31 55.9 66.2 0 37.8-29.8 58.6-69.7 58.6z\"><\/path><\/svg>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">Java Script<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fab-js-square\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM243.8 381.4c0 43.6-25.6 63.5-62.9 63.5-33.7 0-53.2-17.4-63.2-38.5l34.3-20.7c6.6 11.7 12.6 21.6 27.1 21.6 13.8 0 22.6-5.4 22.6-26.5V237.7h42.1v143.7zm99.6 63.5c-39.1 0-64.4-18.6-76.7-43l34.3-19.8c9 14.7 20.8 25.6 41.5 25.6 17.4 0 28.6-8.7 28.6-20.8 0-14.4-11.4-19.5-30.7-28l-10.5-4.5c-30.4-12.9-50.5-29.2-50.5-63.5 0-31.6 24.1-55.6 61.6-55.6 26.8 0 46 9.3 59.8 33.7L368 290c-7.2-12.9-15-18-27.1-18-12.3 0-20.1 7.8-20.1 18 0 12.6 7.8 17.7 25.9 25.6l10.5 4.5c35.8 15.3 55.9 31 55.9 66.2 0 37.8-29.8 58.6-69.7 58.6z\"><\/path><\/svg>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">P5.js<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-music\" viewBox=\"0 0 512 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M470.38 1.51L150.41 96A32 32 0 0 0 128 126.51v261.41A139 139 0 0 0 96 384c-53 0-96 28.66-96 64s43 64 96 64 96-28.66 96-64V214.32l256-75v184.61a138.4 138.4 0 0 0-32-3.93c-53 0-96 28.66-96 64s43 64 96 64 96-28.65 96-64V32a32 32 0 0 0-41.62-30.49z\"><\/path><\/svg>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">MIDI<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-b34bbac e-flex e-con-boxed e-con e-parent\" data-id=\"b34bbac\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-642b617 elementor-widget elementor-widget-spacer\" data-id=\"642b617\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-28a1c98 e-con-full e-flex e-con e-parent\" data-id=\"28a1c98\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-5514f9c e-con-full e-flex e-con e-child\" data-id=\"5514f9c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d8f9168 elementor-widget elementor-widget-heading\" data-id=\"d8f9168\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Ritmos Euclidianos<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fb64583 elementor-widget elementor-widget-text-editor\" data-id=\"fb64583\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>El n\u00facleo r\u00edtmico de SERG se basa en los Ritmos Euclidianos (descubiertos por Godfried Toussaint en 2004). Utilizando el algoritmo de Euclides para el m\u00e1ximo com\u00fan divisor, el sistema distribuye una cantidad espec\u00edfica de \u00abgolpes\u00bb (onsets) de la forma m\u00e1s equidistante posible dentro de una cuadr\u00edcula de \u00abpulsos\u00bb. Sorprendentemente, este c\u00e1lculo matem\u00e1tico puro genera autom\u00e1ticamente la mayor\u00eda de los ritmos fundamentales de la m\u00fasica tradicional del mundo (como el Tresillo Cubano) y la m\u00fasica electr\u00f3nica moderna.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-242c09f e-con-full e-flex e-con e-child\" data-id=\"242c09f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4fb70e8 elementor-widget elementor-widget-image\" data-id=\"4fb70e8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"800\" height=\"419\" src=\"https:\/\/juansebastianmendez.com\/wp-content\/uploads\/2026\/01\/SERG_Trecillo.png\" class=\"attachment-large size-large wp-image-946\" alt=\"\" srcset=\"https:\/\/juansebastianmendez.com\/wp-content\/uploads\/2026\/01\/SERG_Trecillo.png 831w, https:\/\/juansebastianmendez.com\/wp-content\/uploads\/2026\/01\/SERG_Trecillo-300x157.png 300w, https:\/\/juansebastianmendez.com\/wp-content\/uploads\/2026\/01\/SERG_Trecillo-768x402.png 768w, https:\/\/juansebastianmendez.com\/wp-content\/uploads\/2026\/01\/SERG_Trecillo-18x9.png 18w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-863e3af e-flex e-con-boxed e-con e-parent\" data-id=\"863e3af\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-97fe2fa elementor-widget elementor-widget-spacer\" data-id=\"97fe2fa\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-126b8c6 e-con-full e-flex e-con e-parent\" data-id=\"126b8c6\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-07acbb4 e-con-full e-flex e-con e-child\" data-id=\"07acbb4\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-d2dd5a2 e-con-full e-flex e-con e-child\" data-id=\"d2dd5a2\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-763770b elementor-widget elementor-widget-heading\" data-id=\"763770b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Flujo del Audio<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9da61a6 elementor-widget elementor-widget-text-editor\" data-id=\"9da61a6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p data-path-to-node=\"18,1,1,0\">Desarrollado enteramente en JavaScript, el ecosistema utiliza <b data-path-to-node=\"18,1,1,0\" data-index-in-node=\"62\">Tone.js<\/b> para la s\u00edntesis web y <b data-path-to-node=\"18,1,1,0\" data-index-in-node=\"93\">Tone.js\/midi<\/b> para la estructura de datos musicales.<\/p><p data-path-to-node=\"18,1,1,0\">Cada pista de sintetizador y sampler pasa por un enrutamiento riguroso para evitar saturaci\u00f3n (<i data-path-to-node=\"18,1,1,1\" data-index-in-node=\"131\">clipping<\/i>) mediante limitadores individuales, antes de ingresar a los buses de efectos espaciales (Chorus, Delay, Reverb).<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-49da59a e-con-full e-flex e-con e-child\" data-id=\"49da59a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e18074e elementor-widget elementor-widget-image\" data-id=\"e18074e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"800\" height=\"449\" src=\"https:\/\/juansebastianmendez.com\/wp-content\/uploads\/2026\/01\/SERG_Audioflow.png\" class=\"attachment-large size-large wp-image-947\" alt=\"\" srcset=\"https:\/\/juansebastianmendez.com\/wp-content\/uploads\/2026\/01\/SERG_Audioflow.png 846w, https:\/\/juansebastianmendez.com\/wp-content\/uploads\/2026\/01\/SERG_Audioflow-300x168.png 300w, https:\/\/juansebastianmendez.com\/wp-content\/uploads\/2026\/01\/SERG_Audioflow-768x431.png 768w, https:\/\/juansebastianmendez.com\/wp-content\/uploads\/2026\/01\/SERG_Audioflow-18x10.png 18w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7fb55dc e-flex e-con-boxed e-con e-parent\" data-id=\"7fb55dc\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-716df81 elementor-widget elementor-widget-spacer\" data-id=\"716df81\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-97b7075 e-con-full e-flex e-con e-parent\" data-id=\"97b7075\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-4090b3e e-con-full e-flex e-con e-child\" data-id=\"4090b3e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e4c9c04 elementor-widget elementor-widget-heading\" data-id=\"e4c9c04\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Visualizaci\u00f3n y Desplazamiento de Fase<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-006f9dd elementor-widget elementor-widget-text-editor\" data-id=\"006f9dd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p data-path-to-node=\"25,2,1,0\">La interfaz, construida con <b data-path-to-node=\"25,2,1,0\" data-index-in-node=\"28\">p5.js<\/b>, funciona como un reloj r\u00edtmico. Los anillos exteriores representan la pista base est\u00e1tica. Los anillos interiores\u00a0experimentan el \u00abDesplazamiento de Fase\u00bb.<\/p><p data-path-to-node=\"25,2,1,1\"><b data-path-to-node=\"25,2,1,1\" data-index-in-node=\"0\">El Desaf\u00edo de Sincronizaci\u00f3n:<\/b> Operar procesos de dibujo (UI) y procesos de audio (Web Audio API) en el mismo hilo de JavaScript introduce latencia. Esto se solucion\u00f3 pre-programando los eventos MIDI de Tone.js en el buffer con un <i data-path-to-node=\"25,2,1,1\" data-index-in-node=\"230\">offset<\/i> calculado, asegurando que el barrido visual de p5.js coincida exactamente con los transitorios del audio a nivel de milisegundo (compensaci\u00f3n de retardo).<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-fbbdc3c e-con-full e-flex e-con e-child\" data-id=\"fbbdc3c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e3d121d elementor-widget__width-initial elementor-widget elementor-widget-video\" data-id=\"e3d121d\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;video_type&quot;:&quot;hosted&quot;,&quot;autoplay&quot;:&quot;yes&quot;,&quot;mute&quot;:&quot;yes&quot;,&quot;loop&quot;:&quot;yes&quot;}\" data-widget_type=\"video.default\">\n\t\t\t\t\t\t\t<div class=\"e-hosted-video elementor-wrapper elementor-open-inline\">\n\t\t\t\t\t<video class=\"elementor-video\" src=\"https:\/\/juansebastianmendez.com\/wp-content\/uploads\/2026\/01\/Grabacion-de-pantalla-2026-03-17-a-las-16.47.12.mov\" autoplay=\"\" loop=\"\" muted=\"muted\" controlsList=\"nodownload\"><\/video>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a81c42f e-flex e-con-boxed e-con e-parent\" data-id=\"a81c42f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-21b9bc5 elementor-widget elementor-widget-spacer\" data-id=\"21b9bc5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-90da4a0 e-flex e-con-boxed e-con e-parent\" data-id=\"90da4a0\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2a7fcba elementor-widget elementor-widget-button\" data-id=\"2a7fcba\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/hfoley03.github.io\/SERG-Shifting-Euclidean-Rhythm-Generator\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Jugar<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d339f32 elementor-widget elementor-widget-button\" data-id=\"d339f32\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/github.com\/hfoley03\/SERG-Shifting-Euclidean-Rhythm-Generator\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Repositorio<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-26d6fba e-flex e-con-boxed e-con e-parent\" data-id=\"26d6fba\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-84bacd5 elementor-widget elementor-widget-html\" data-id=\"84bacd5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/p5.js\/1.4.0\/p5.min.js\"><\/script>\n\n<style>\n  #aurora-final-canvas {\n    position: fixed;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    z-index: -1;\n    pointer-events: none;\n  }\n  \n.fixed-card {\n    background: rgba(15, 20, 35, 0) !important; \n    backdrop-filter: blur(2px) !important; \n    -webkit-backdrop-filter: blur(12px); \n    border: 1px solid rgba(255, 255, 255, 0.1) !important; \n    border-radius: 12px !important; \n    transition: transform 0.3s ease, border-color 0.3s ease !important;\n}\n\n\n<\/style>\n\n<script>\n\/\/ --- VARIABLES GLOBALES ---\nlet t = 0; \nlet stars = []; \nlet shootingStars = [];\n\nfunction setup() {\n  let canvas = createCanvas(windowWidth, windowHeight);\n  canvas.id('aurora-final-canvas');\n  \n  \/\/ Inicializar estrellas est\u00e1ticas\n  for (let i = 0; i < 200; i++) {\n    stars.push({\n      x: random(width),\n      y: random(height),\n      size: random(0.5, 3), \n      baseAlpha: random(50, 200) \n    });\n  }\n}\n\nfunction draw() {\n  \/\/ 1. LIMPIEZA DEL FONDO (Modo BLEND para que limpie bien el frame anterior)\n  blendMode(BLEND); \n  background(11, 12, 21); \n\n  \/\/ 2. ACTIVAR MODO NE\u00d3N (Para que las luces brillen)\n  blendMode(ADD);\n\n  \/\/ ==========================================\n  \/\/ CAPA 1: ESTRELLAS\n  \/\/ ==========================================\n  noStroke(); \n  \n  for (let s of stars) {\n    let flicker = noise(s.x * 0.01, t * 2) * 50; \n    fill(255, 255, 255, s.baseAlpha - flicker);\n    ellipse(s.x, s.y, s.size);\n  }\n\n  \/\/ Estrellas Fugaces\n  if (random(1) < 0.01) { \n    shootingStars.push(createShootingStar());\n  }\n\n  for (let i = shootingStars.length - 1; i >= 0; i--) {\n    let ss = shootingStars[i];\n    ss.x += ss.vx;\n    ss.y += ss.vy;\n    ss.life -= 4; \n\n    if (ss.life > 0) {\n      let tailLength = 60;\n      \n      strokeWeight(2);\n      stroke(255); \n      \n      let gradient = drawingContext.createLinearGradient(ss.x, ss.y, ss.x - ss.vx*tailLength, ss.y - ss.vy*tailLength);\n      gradient.addColorStop(0, `rgba(255, 255, 255, ${ss.life\/255})`);\n      gradient.addColorStop(1, 'rgba(255, 255, 255, 0)');\n      \n      drawingContext.strokeStyle = gradient;\n      line(ss.x, ss.y, ss.x - ss.vx*tailLength, ss.y - ss.vy*tailLength);\n      \n      noStroke(); \n      \n    } else {\n      shootingStars.splice(i, 1); \n    }\n  }\n}\n\nfunction createShootingStar() {\n  return {\n    x: random(width),\n    y: random(-50, height\/3),\n    vx: random(10, 25),\n    vy: random(5, 10),\n    life: 150\n  };\n}\n\nfunction windowResized() {\n  resizeCanvas(windowWidth, windowHeight);\n  stars = [];\n  setup();\n}\n\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>SERG A\u00f1o : 2023 Shifting Euclidean Rhythm Generator (SERG) es una herramienta de composici\u00f3n musical inspirada en el concepto de Steve Reich de ritmos desfasados. Esta herramienta utiliza los ritmos Euclidianos de Godfried Toussaint para crear beats musicales y polirritmos complejos que evolucionan org\u00e1nicamente con el tiempo a medida que entran y salen de fase, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"elementor_header_footer","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-282","post","type-post","status-publish","format-standard","hentry","category-sin-categoria"],"_links":{"self":[{"href":"https:\/\/juansebastianmendez.com\/en\/wp-json\/wp\/v2\/posts\/282","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/juansebastianmendez.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/juansebastianmendez.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/juansebastianmendez.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/juansebastianmendez.com\/en\/wp-json\/wp\/v2\/comments?post=282"}],"version-history":[{"count":70,"href":"https:\/\/juansebastianmendez.com\/en\/wp-json\/wp\/v2\/posts\/282\/revisions"}],"predecessor-version":[{"id":1145,"href":"https:\/\/juansebastianmendez.com\/en\/wp-json\/wp\/v2\/posts\/282\/revisions\/1145"}],"wp:attachment":[{"href":"https:\/\/juansebastianmendez.com\/en\/wp-json\/wp\/v2\/media?parent=282"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/juansebastianmendez.com\/en\/wp-json\/wp\/v2\/categories?post=282"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/juansebastianmendez.com\/en\/wp-json\/wp\/v2\/tags?post=282"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}