{"id":1183,"date":"2026-02-18T19:50:46","date_gmt":"2026-02-18T18:50:46","guid":{"rendered":"https:\/\/samueljuliangrace.com\/?page_id=1183"},"modified":"2026-03-07T20:08:39","modified_gmt":"2026-03-07T19:08:39","slug":"seidean-gaoithe","status":"publish","type":"page","link":"https:\/\/samueljuliangrace.com\/?page_id=1183","title":{"rendered":"S\u00e9ide\u00e1n Gaoithe"},"content":{"rendered":"\n<div class=\"wp-block-group work-page is-layout-flow wp-container-core-group-is-layout-e603688c wp-block-group-is-layout-flow\" style=\"margin-top:0;margin-bottom:0;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0\">\n<div class=\"wp-block-group work-main is-layout-flow wp-container-core-group-is-layout-e603688c wp-block-group-is-layout-flow\" style=\"margin-top:0;margin-bottom:0;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0\">\n<figure class=\"wp-block-image size-large\" style=\"margin-top:0;margin-right:0;margin-bottom:0;margin-left:0\"><img loading=\"lazy\" decoding=\"async\" width=\"679\" height=\"1024\" src=\"https:\/\/samueljuliangrace.com\/wp-content\/uploads\/2026\/02\/000564510013-679x1024.jpg\" alt=\"\" class=\"wp-image-1189\" srcset=\"https:\/\/samueljuliangrace.com\/wp-content\/uploads\/2026\/02\/000564510013-679x1024.jpg 679w, https:\/\/samueljuliangrace.com\/wp-content\/uploads\/2026\/02\/000564510013-199x300.jpg 199w, https:\/\/samueljuliangrace.com\/wp-content\/uploads\/2026\/02\/000564510013-768x1158.jpg 768w, https:\/\/samueljuliangrace.com\/wp-content\/uploads\/2026\/02\/000564510013-1018x1536.jpg 1018w, https:\/\/samueljuliangrace.com\/wp-content\/uploads\/2026\/02\/000564510013-1358x2048.jpg 1358w, https:\/\/samueljuliangrace.com\/wp-content\/uploads\/2026\/02\/000564510013-scaled.jpg 1697w\" sizes=\"auto, (max-width: 679px) 100vw, 679px\" \/><\/figure>\n\n\n\n    <div class=\"sjg-audio-player\" data-audio=\"https:\/\/samueljuliangrace.com\/wp-content\/uploads\/2026\/03\/selspeak.mp3\">\n        <div class=\"sjg-waveform\">\n            <div id=\"sjg_wave_6a00bff418479\" class=\"sjg-wave-canvas\"><\/div>\n            <div class=\"sjg-loader\"><\/div>\n           <div class=\"sjg-audio-toggle\">\n    <span class=\"sjg-label\">LISTEN<\/span>\n<\/div>\n        <\/div>\n        <script>\n        (function () {\n            const wrapper = document.currentScript.closest(\".sjg-audio-player\");\n            if (!wrapper) return;\n            const canvas = wrapper.querySelector(\".sjg-wave-canvas\");\n            const loader = wrapper.querySelector(\".sjg-loader\");\n            const button = wrapper.querySelector(\".sjg-audio-toggle\");\n            const audioUrl = wrapper.dataset.audio;\n            let wavesurfer = null;\n\n            function setPlayingState(isPlaying) {\n                button.classList.toggle(\"is-playing\", isPlaying);\n                document.body.classList.toggle(\"sjg-audio-playing\", isPlaying);\n            }\n\n            button.addEventListener(\"click\", function () {\n                if (!wavesurfer) {\n                    loader.style.width = \"0%\";\n                    wavesurfer = WaveSurfer.create({\n                        container: canvas,\n                        height: canvas.clientHeight,\n                        waveColor: \"rgba(0,0,0,0.2)\",\n                        progressColor: \"rgba(0,0,0,0.9)\",\n                        barWidth: 2,\n                        barGap: 1,\n                        normalize: true,\n                        cursorWidth: 0,\n                    });\n                    wavesurfer.load(audioUrl);\n\n                    wavesurfer.on(\"loading\", (progress) => {\n                        loader.style.opacity = \"0.5\";\n                        loader.style.width = progress + \"%\";\n                    });\n\n                    wavesurfer.on(\"ready\", () => {\n                        loader.style.width = \"100%\";\n                        setTimeout(() => loader.style.opacity = \"0\", 200);\n                        wavesurfer.drawBuffer();\n                        wavesurfer.play();\n                    });\n\n                    wavesurfer.on(\"play\", () => {\n                        document.querySelectorAll(\".sjg-wave-canvas\").forEach(el => {\n                            if (el !== canvas && el.wavesurferInstance) {\n                                el.wavesurferInstance.pause();\n                            }\n                        });\n                        window.sjgActiveWaveSurfer = wavesurfer;\n                        window.sjgActiveToggleButton = button;\n                        setPlayingState(true);\n                    });\n\n                    wavesurfer.on(\"pause\", () => {\n                        setPlayingState(false);\n                    });\n\n                    canvas.wavesurferInstance = wavesurfer;\n                    return;\n                }\n                wavesurfer.playPause();\n            });\n        })();\n        <\/script>\n    <\/div>\n    \n\n\n\n<figure class=\"wp-block-image size-large\" style=\"margin-top:0;margin-right:0;margin-bottom:0;margin-left:0\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"679\" src=\"https:\/\/samueljuliangrace.com\/wp-content\/uploads\/2026\/02\/000564510020-1024x679.jpg\" alt=\"\" class=\"wp-image-1190\" srcset=\"https:\/\/samueljuliangrace.com\/wp-content\/uploads\/2026\/02\/000564510020-1024x679.jpg 1024w, https:\/\/samueljuliangrace.com\/wp-content\/uploads\/2026\/02\/000564510020-300x199.jpg 300w, https:\/\/samueljuliangrace.com\/wp-content\/uploads\/2026\/02\/000564510020-768x509.jpg 768w, https:\/\/samueljuliangrace.com\/wp-content\/uploads\/2026\/02\/000564510020-1536x1018.jpg 1536w, https:\/\/samueljuliangrace.com\/wp-content\/uploads\/2026\/02\/000564510020-2048x1358.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n    <div class=\"sjg-audio-player\" data-audio=\"https:\/\/samueljuliangrace.com\/wp-content\/uploads\/2026\/03\/birds.mp3\">\n        <div class=\"sjg-waveform\">\n            <div id=\"sjg_wave_6a00bff418493\" class=\"sjg-wave-canvas\"><\/div>\n            <div class=\"sjg-loader\"><\/div>\n           <div class=\"sjg-audio-toggle\">\n    <span class=\"sjg-label\">LISTEN<\/span>\n<\/div>\n        <\/div>\n        <script>\n        (function () {\n            const wrapper = document.currentScript.closest(\".sjg-audio-player\");\n            if (!wrapper) return;\n            const canvas = wrapper.querySelector(\".sjg-wave-canvas\");\n            const loader = wrapper.querySelector(\".sjg-loader\");\n            const button = wrapper.querySelector(\".sjg-audio-toggle\");\n            const audioUrl = wrapper.dataset.audio;\n            let wavesurfer = null;\n\n            function setPlayingState(isPlaying) {\n                button.classList.toggle(\"is-playing\", isPlaying);\n                document.body.classList.toggle(\"sjg-audio-playing\", isPlaying);\n            }\n\n            button.addEventListener(\"click\", function () {\n                if (!wavesurfer) {\n                    loader.style.width = \"0%\";\n                    wavesurfer = WaveSurfer.create({\n                        container: canvas,\n                        height: canvas.clientHeight,\n                        waveColor: \"rgba(0,0,0,0.2)\",\n                        progressColor: \"rgba(0,0,0,0.9)\",\n                        barWidth: 2,\n                        barGap: 1,\n                        normalize: true,\n                        cursorWidth: 0,\n                    });\n                    wavesurfer.load(audioUrl);\n\n                    wavesurfer.on(\"loading\", (progress) => {\n                        loader.style.opacity = \"0.5\";\n                        loader.style.width = progress + \"%\";\n                    });\n\n                    wavesurfer.on(\"ready\", () => {\n                        loader.style.width = \"100%\";\n                        setTimeout(() => loader.style.opacity = \"0\", 200);\n                        wavesurfer.drawBuffer();\n                        wavesurfer.play();\n                    });\n\n                    wavesurfer.on(\"play\", () => {\n                        document.querySelectorAll(\".sjg-wave-canvas\").forEach(el => {\n                            if (el !== canvas && el.wavesurferInstance) {\n                                el.wavesurferInstance.pause();\n                            }\n                        });\n                        window.sjgActiveWaveSurfer = wavesurfer;\n                        window.sjgActiveToggleButton = button;\n                        setPlayingState(true);\n                    });\n\n                    wavesurfer.on(\"pause\", () => {\n                        setPlayingState(false);\n                    });\n\n                    canvas.wavesurferInstance = wavesurfer;\n                    return;\n                }\n                wavesurfer.playPause();\n            });\n        })();\n        <\/script>\n    <\/div>\n    \n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"679\" src=\"https:\/\/samueljuliangrace.com\/wp-content\/uploads\/2026\/02\/000564510010-1024x679.jpg\" alt=\"\" class=\"wp-image-1188\" srcset=\"https:\/\/samueljuliangrace.com\/wp-content\/uploads\/2026\/02\/000564510010-1024x679.jpg 1024w, https:\/\/samueljuliangrace.com\/wp-content\/uploads\/2026\/02\/000564510010-300x199.jpg 300w, https:\/\/samueljuliangrace.com\/wp-content\/uploads\/2026\/02\/000564510010-768x509.jpg 768w, https:\/\/samueljuliangrace.com\/wp-content\/uploads\/2026\/02\/000564510010-1536x1018.jpg 1536w, https:\/\/samueljuliangrace.com\/wp-content\/uploads\/2026\/02\/000564510010-2048x1358.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n    <div class=\"sjg-audio-player\" data-audio=\"https:\/\/samueljuliangrace.com\/wp-content\/uploads\/2026\/03\/NOISEPAN.mp3\">\n        <div class=\"sjg-waveform\">\n            <div id=\"sjg_wave_6a00bff41849f\" class=\"sjg-wave-canvas\"><\/div>\n            <div class=\"sjg-loader\"><\/div>\n           <div class=\"sjg-audio-toggle\">\n    <span class=\"sjg-label\">LISTEN<\/span>\n<\/div>\n        <\/div>\n        <script>\n        (function () {\n            const wrapper = document.currentScript.closest(\".sjg-audio-player\");\n            if (!wrapper) return;\n            const canvas = wrapper.querySelector(\".sjg-wave-canvas\");\n            const loader = wrapper.querySelector(\".sjg-loader\");\n            const button = wrapper.querySelector(\".sjg-audio-toggle\");\n            const audioUrl = wrapper.dataset.audio;\n            let wavesurfer = null;\n\n            function setPlayingState(isPlaying) {\n                button.classList.toggle(\"is-playing\", isPlaying);\n                document.body.classList.toggle(\"sjg-audio-playing\", isPlaying);\n            }\n\n            button.addEventListener(\"click\", function () {\n                if (!wavesurfer) {\n                    loader.style.width = \"0%\";\n                    wavesurfer = WaveSurfer.create({\n                        container: canvas,\n                        height: canvas.clientHeight,\n                        waveColor: \"rgba(0,0,0,0.2)\",\n                        progressColor: \"rgba(0,0,0,0.9)\",\n                        barWidth: 2,\n                        barGap: 1,\n                        normalize: true,\n                        cursorWidth: 0,\n                    });\n                    wavesurfer.load(audioUrl);\n\n                    wavesurfer.on(\"loading\", (progress) => {\n                        loader.style.opacity = \"0.5\";\n                        loader.style.width = progress + \"%\";\n                    });\n\n                    wavesurfer.on(\"ready\", () => {\n                        loader.style.width = \"100%\";\n                        setTimeout(() => loader.style.opacity = \"0\", 200);\n                        wavesurfer.drawBuffer();\n                        wavesurfer.play();\n                    });\n\n                    wavesurfer.on(\"play\", () => {\n                        document.querySelectorAll(\".sjg-wave-canvas\").forEach(el => {\n                            if (el !== canvas && el.wavesurferInstance) {\n                                el.wavesurferInstance.pause();\n                            }\n                        });\n                        window.sjgActiveWaveSurfer = wavesurfer;\n                        window.sjgActiveToggleButton = button;\n                        setPlayingState(true);\n                    });\n\n                    wavesurfer.on(\"pause\", () => {\n                        setPlayingState(false);\n                    });\n\n                    canvas.wavesurferInstance = wavesurfer;\n                    return;\n                }\n                wavesurfer.playPause();\n            });\n        })();\n        <\/script>\n    <\/div>\n    \n<\/div>\n\n\n\n<div class=\"wp-block-group work-meta is-layout-flow wp-container-core-group-is-layout-e603688c wp-block-group-is-layout-flow\" style=\"margin-top:0;margin-bottom:0;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0\">\n<div class=\"wp-block-group work-meta-single is-layout-flow wp-container-core-group-is-layout-e603688c wp-block-group-is-layout-flow\" style=\"margin-top:0;margin-bottom:0;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0\">\n<h2 class=\"wp-block-heading has-text-align-right\">S\u00e9ide\u00e1n Gaoithe 2024<\/h2>\n<\/div>\n\n\n\n<div class=\"wp-block-group work-description-wrap is-layout-flow wp-container-core-group-is-layout-e603688c wp-block-group-is-layout-flow\" style=\"margin-top:0;margin-bottom:0;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0\">\n<p class=\"work-description\">A Solo work made entirly by hand on Pure Data programming language using no samples.<br>Presented on an 8 Channel system in a dark room. <\/p>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>S\u00e9ide\u00e1n Gaoithe 2024 A Solo work made entirly by hand on Pure Data programming language using no samples.Presented on an 8 Channel system in a dark room.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"content-page-wide","meta":{"_uag_custom_page_level_css":"","_swt_meta_header_display":false,"_swt_meta_footer_display":false,"_swt_meta_site_title_display":false,"_swt_meta_sticky_header":false,"_swt_meta_transparent_header":false,"footnotes":""},"class_list":["post-1183","page","type-page","status-publish","hentry"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"samueljuliangrace@gmail.com","author_link":"https:\/\/samueljuliangrace.com\/?author=1"},"uagb_comment_info":0,"uagb_excerpt":"S\u00e9ide\u00e1n Gaoithe 2024 A Solo work made entirly by hand on Pure Data programming language using no samples.Presented on an 8 Channel system in a dark room.","_links":{"self":[{"href":"https:\/\/samueljuliangrace.com\/index.php?rest_route=\/wp\/v2\/pages\/1183","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/samueljuliangrace.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/samueljuliangrace.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/samueljuliangrace.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/samueljuliangrace.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1183"}],"version-history":[{"count":10,"href":"https:\/\/samueljuliangrace.com\/index.php?rest_route=\/wp\/v2\/pages\/1183\/revisions"}],"predecessor-version":[{"id":1207,"href":"https:\/\/samueljuliangrace.com\/index.php?rest_route=\/wp\/v2\/pages\/1183\/revisions\/1207"}],"wp:attachment":[{"href":"https:\/\/samueljuliangrace.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1183"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}