{"id":587,"date":"2024-06-26T15:48:44","date_gmt":"2024-06-26T15:48:44","guid":{"rendered":"http:\/\/landing.anderskisling.dk\/?page_id=587"},"modified":"2024-06-27T03:22:54","modified_gmt":"2024-06-27T03:22:54","slug":"ai","status":"publish","type":"page","link":"https:\/\/landing.anderskisling.dk\/index.php\/ai\/","title":{"rendered":"ai"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"587\" class=\"elementor elementor-587\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3c62462 e-flex e-con-boxed e-con e-parent\" data-id=\"3c62462\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-cb5623c e-con-full e-flex e-con e-child\" data-id=\"cb5623c\" data-element_type=\"container\">\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a36cdc2 e-con-full e-flex e-con e-child\" data-id=\"a36cdc2\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7f54969 elementor-widget elementor-widget-text-editor\" data-id=\"7f54969\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>BD<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ea79cdb elementor-widget elementor-widget-html\" data-id=\"ea79cdb\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;none&quot;}\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\n    .square-button {\n        width: 100px;\n        height: 100px;\n        border: none;\n        border-radius: 5px;\n        background: url('http:\/\/landing.anderskisling.dk\/wp-content\/uploads\/2024\/06\/def-state.jpg') center center no-repeat;\n        background-size: cover; \/* Skaleres for at d\u00e6kke knappens omr\u00e5de *\/\n        cursor: pointer;\n        outline: none;\n        transition: background-image 0.1s ease; \/* Overgang for baggrundsbillede *\/\n    }\n<\/style>\n\n<div style=\"text-align: center; margin: 0px;\">\n    <button id=\"playSoundFromWordPress\" class=\"square-button\"><\/button>\n<\/div>\n\n<script>\n    const button = document.getElementById('playSoundFromWordPress');\n\n    \/\/ Lyt til mousedown i stedet for click\n    button.addEventListener('mousedown', async function(event) {\n        event.preventDefault(); \/\/ For at forhindre eventuelle standard handlinger\n\n        \/\/ Skift baggrundsbillede til 'pressed.jpg'\n        this.style.backgroundImage = \"url('http:\/\/landing.anderskisling.dk\/wp-content\/uploads\/2024\/06\/pressed.jpg')\";\n\n        \/\/ Afspil lyden\n        playSoundFromWordPress();\n    });\n\n    \/\/ Lyt til mouseup for at skifte tilbage til standard baggrund\n    button.addEventListener('mouseup', function() {\n        this.style.backgroundImage = \"url('http:\/\/landing.anderskisling.dk\/wp-content\/uploads\/2024\/06\/def-state.jpg')\";\n    });\n\n    async function playSoundFromWordPress() {\n        const audioContext = new (window.AudioContext || window.webkitAudioContext)();\n        const audioUrl = 'http:\/\/landing.anderskisling.dk\/wp-content\/uploads\/2024\/06\/balloon-pop1.mp3';\n\n        try {\n            const response = await fetch(audioUrl);\n            const arrayBuffer = await response.arrayBuffer();\n            const audioBuffer = await audioContext.decodeAudioData(arrayBuffer);\n\n            \/\/ Skab en buffer source node\n            const bufferSource = audioContext.createBufferSource();\n            bufferSource.buffer = audioBuffer;\n\n            \/\/ Forbind og afspil\n            bufferSource.connect(audioContext.destination);\n            bufferSource.start();\n        } catch (error) {\n            console.error('Fejl ved indl\u00e6sning og afspilning af lydfil:', error);\n        }\n    }\n<\/script>\n\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-8228fd8 e-con-full e-flex e-con e-child\" data-id=\"8228fd8\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a415e47 elementor-widget elementor-widget-text-editor\" data-id=\"a415e47\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>SD<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-02e0600 elementor-widget elementor-widget-html\" data-id=\"02e0600\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\n    .square-button-custom {\n        width: 100px;\n        height: 100px;\n        border: none;\n        border-radius: 5px;\n        background: url('http:\/\/landing.anderskisling.dk\/wp-content\/uploads\/2024\/06\/def-state.jpg') center center no-repeat;\n        background-size: cover; \/* Skaleres for at d\u00e6kke knappens omr\u00e5de *\/\n        cursor: pointer;\n        outline: none;\n        transition: background-image 0.1s ease; \/* Overgang for baggrundsbillede *\/\n    }\n<\/style>\n\n<div style=\"text-align: center; margin: 0px;\">\n    <!-- Knappen med unikt ID 'customButton' -->\n    <button id=\"customButton\" class=\"square-button-custom\"><\/button>\n<\/div>\n\n<script>\n    const customButton = document.getElementById('customButton');\n\n    \/\/ Lyt til mousedown i stedet for click\n    customButton.addEventListener('mousedown', async function(event) {\n        event.preventDefault(); \/\/ For at forhindre eventuelle standard handlinger\n\n        \/\/ Skift baggrundsbillede til 'pressed.jpg'\n        this.style.backgroundImage = \"url('http:\/\/landing.anderskisling.dk\/wp-content\/uploads\/2024\/06\/pressed.jpg')\";\n\n        \/\/ Afspil lyden fra den brugerdefinerede sti\n        const audioUrl = 'http:\/\/landing.anderskisling.dk\/wp-content\/uploads\/2024\/06\/swurrp.mp3'; \/\/ Den angivne lydsti\n        playSoundFromCustomURL(audioUrl);\n    });\n\n    \/\/ Lyt til mouseup for at skifte tilbage til standard baggrund\n    customButton.addEventListener('mouseup', function() {\n        this.style.backgroundImage = \"url('http:\/\/landing.anderskisling.dk\/wp-content\/uploads\/2024\/06\/def-state.jpg')\";\n    });\n\n    async function playSoundFromCustomURL(audioUrl) {\n        const audioContext = new (window.AudioContext || window.webkitAudioContext)();\n\n        try {\n            const response = await fetch(audioUrl);\n            const arrayBuffer = await response.arrayBuffer();\n            const audioBuffer = await audioContext.decodeAudioData(arrayBuffer);\n\n            \/\/ Skab en buffer source node\n            const bufferSource = audioContext.createBufferSource();\n            bufferSource.buffer = audioBuffer;\n\n            \/\/ Forbind og afspil\n            bufferSource.connect(audioContext.destination);\n            bufferSource.start();\n        } catch (error) {\n            console.error('Fejl ved indl\u00e6sning og afspilning af lydfil:', error);\n        }\n    }\n<\/script>\n\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-be139cb e-con-full e-flex e-con e-child\" data-id=\"be139cb\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-08a9eb7 elementor-widget elementor-widget-text-editor\" data-id=\"08a9eb7\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>SD<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-eb2c9a9 elementor-widget elementor-widget-html\" data-id=\"eb2c9a9\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\n    .square-button-custom {\n        width: 100px;\n        height: 100px;\n        border: none;\n        border-radius: 5px;\n        background: url('http:\/\/landing.anderskisling.dk\/wp-content\/uploads\/2024\/06\/def-state.jpg') center center no-repeat;\n        background-size: cover; \/* Skaleres for at d\u00e6kke knappens omr\u00e5de *\/\n        cursor: pointer;\n        outline: none;\n        transition: background-image 0.1s ease; \/* Overgang for baggrundsbillede *\/\n    }\n<\/style>\n\n<div style=\"text-align: center; margin: 0px;\">\n    <!-- Knappen med unikt ID 'customButton' -->\n    <button id=\"customButton\" class=\"square-button-custom\"><\/button>\n<\/div>\n\n<script>\n    const customButton = document.getElementById('customButton');\n\n    \/\/ Lyt til mousedown i stedet for click\n    customButton.addEventListener('mousedown', async function(event) {\n        event.preventDefault(); \/\/ For at forhindre eventuelle standard handlinger\n\n        \/\/ Skift baggrundsbillede til 'pressed.jpg'\n        this.style.backgroundImage = \"url('http:\/\/landing.anderskisling.dk\/wp-content\/uploads\/2024\/06\/pressed.jpg')\";\n\n        \/\/ Afspil lyden fra den brugerdefinerede sti\n        const audioUrl = 'http:\/\/landing.anderskisling.dk\/wp-content\/uploads\/2024\/06\/swurrp.mp3'; \/\/ Den angivne lydsti\n        playSoundFromCustomURL(audioUrl);\n    });\n\n    \/\/ Lyt til mouseup for at skifte tilbage til standard baggrund\n    customButton.addEventListener('mouseup', function() {\n        this.style.backgroundImage = \"url('http:\/\/landing.anderskisling.dk\/wp-content\/uploads\/2024\/06\/def-state.jpg')\";\n    });\n\n    async function playSoundFromCustomURL(audioUrl) {\n        const audioContext = new (window.AudioContext || window.webkitAudioContext)();\n\n        try {\n            const response = await fetch(audioUrl);\n            const arrayBuffer = await response.arrayBuffer();\n            const audioBuffer = await audioContext.decodeAudioData(arrayBuffer);\n\n            \/\/ Skab en buffer source node\n            const bufferSource = audioContext.createBufferSource();\n            bufferSource.buffer = audioBuffer;\n\n            \/\/ Forbind og afspil\n            bufferSource.connect(audioContext.destination);\n            bufferSource.start();\n        } catch (error) {\n            console.error('Fejl ved indl\u00e6sning og afspilning af lydfil:', error);\n        }\n    }\n<\/script>\n\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-67d937a e-con-full e-flex e-con e-child\" data-id=\"67d937a\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-fa84e2d elementor-widget elementor-widget-text-editor\" data-id=\"fa84e2d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>SD<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5939d90 elementor-widget elementor-widget-html\" data-id=\"5939d90\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\n    .square-button-custom {\n        width: 100px;\n        height: 100px;\n        border: none;\n        border-radius: 5px;\n        background: url('http:\/\/landing.anderskisling.dk\/wp-content\/uploads\/2024\/06\/def-state.jpg') center center no-repeat;\n        background-size: cover; \/* Skaleres for at d\u00e6kke knappens omr\u00e5de *\/\n        cursor: pointer;\n        outline: none;\n        transition: background-image 0.1s ease; \/* Overgang for baggrundsbillede *\/\n    }\n<\/style>\n\n<div style=\"text-align: center; margin: 0px;\">\n    <!-- Knappen med unikt ID 'customButton' -->\n    <button id=\"customButton\" class=\"square-button-custom\"><\/button>\n<\/div>\n\n<script>\n    const customButton = document.getElementById('customButton');\n\n    \/\/ Lyt til mousedown i stedet for click\n    customButton.addEventListener('mousedown', async function(event) {\n        event.preventDefault(); \/\/ For at forhindre eventuelle standard handlinger\n\n        \/\/ Skift baggrundsbillede til 'pressed.jpg'\n        this.style.backgroundImage = \"url('http:\/\/landing.anderskisling.dk\/wp-content\/uploads\/2024\/06\/pressed.jpg')\";\n\n        \/\/ Afspil lyden fra den brugerdefinerede sti\n        const audioUrl = 'http:\/\/landing.anderskisling.dk\/wp-content\/uploads\/2024\/06\/swurrp.mp3'; \/\/ Den angivne lydsti\n        playSoundFromCustomURL(audioUrl);\n    });\n\n    \/\/ Lyt til mouseup for at skifte tilbage til standard baggrund\n    customButton.addEventListener('mouseup', function() {\n        this.style.backgroundImage = \"url('http:\/\/landing.anderskisling.dk\/wp-content\/uploads\/2024\/06\/def-state.jpg')\";\n    });\n\n    async function playSoundFromCustomURL(audioUrl) {\n        const audioContext = new (window.AudioContext || window.webkitAudioContext)();\n\n        try {\n            const response = await fetch(audioUrl);\n            const arrayBuffer = await response.arrayBuffer();\n            const audioBuffer = await audioContext.decodeAudioData(arrayBuffer);\n\n            \/\/ Skab en buffer source node\n            const bufferSource = audioContext.createBufferSource();\n            bufferSource.buffer = audioBuffer;\n\n            \/\/ Forbind og afspil\n            bufferSource.connect(audioContext.destination);\n            bufferSource.start();\n        } catch (error) {\n            console.error('Fejl ved indl\u00e6sning og afspilning af lydfil:', error);\n        }\n    }\n<\/script>\n\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-90a6a7e e-con-full e-flex e-con e-child\" data-id=\"90a6a7e\" data-element_type=\"container\">\n\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-3b0ff0b e-flex e-con-boxed e-con e-parent\" data-id=\"3b0ff0b\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-fa87d9c e-con-full e-flex e-con e-child\" data-id=\"fa87d9c\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3fc3a06 elementor-widget elementor-widget-text-editor\" data-id=\"3fc3a06\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>BD<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a8d9589 elementor-widget elementor-widget-html\" data-id=\"a8d9589\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\n    .square-button {\n        width: 100px;\n        height: 100px;\n        border: none;\n        border-radius: 5px;\n        background: url('http:\/\/landing.anderskisling.dk\/wp-content\/uploads\/2024\/06\/def-state.jpg') center center no-repeat;\n        background-size: cover; \/* Skaleres for at d\u00e6kke knappens omr\u00e5de *\/\n        cursor: pointer;\n        outline: none;\n        transition: background-image 0.1s ease; \/* Overgang for baggrundsbillede *\/\n    }\n<\/style>\n\n<div style=\"text-align: center; margin: 0px;\">\n    <button id=\"playSoundFromWordPress\" class=\"square-button\"><\/button>\n<\/div>\n\n<script>\n    const button = document.getElementById('playSoundFromWordPress');\n\n    \/\/ Lyt til mousedown i stedet for click\n    button.addEventListener('mousedown', async function(event) {\n        event.preventDefault(); \/\/ For at forhindre eventuelle standard handlinger\n\n        \/\/ Skift baggrundsbillede til 'pressed.jpg'\n        this.style.backgroundImage = \"url('http:\/\/landing.anderskisling.dk\/wp-content\/uploads\/2024\/06\/pressed.jpg')\";\n\n        \/\/ Afspil lyden\n        playSoundFromWordPress();\n    });\n\n    \/\/ Lyt til mouseup for at skifte tilbage til standard baggrund\n    button.addEventListener('mouseup', function() {\n        this.style.backgroundImage = \"url('http:\/\/landing.anderskisling.dk\/wp-content\/uploads\/2024\/06\/def-state.jpg')\";\n    });\n\n    async function playSoundFromWordPress() {\n        const audioContext = new (window.AudioContext || window.webkitAudioContext)();\n        const audioUrl = 'http:\/\/landing.anderskisling.dk\/wp-content\/uploads\/2024\/06\/balloon-pop1.mp3';\n\n        try {\n            const response = await fetch(audioUrl);\n            const arrayBuffer = await response.arrayBuffer();\n            const audioBuffer = await audioContext.decodeAudioData(arrayBuffer);\n\n            \/\/ Skab en buffer source node\n            const bufferSource = audioContext.createBufferSource();\n            bufferSource.buffer = audioBuffer;\n\n            \/\/ Forbind og afspil\n            bufferSource.connect(audioContext.destination);\n            bufferSource.start();\n        } catch (error) {\n            console.error('Fejl ved indl\u00e6sning og afspilning af lydfil:', error);\n        }\n    }\n<\/script>\n\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-3aaba57 e-con-full e-flex e-con e-child\" data-id=\"3aaba57\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5e7d158 elementor-widget elementor-widget-text-editor\" data-id=\"5e7d158\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>SD<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e44dab6 elementor-widget elementor-widget-html\" data-id=\"e44dab6\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\n    .square-button-custom {\n        width: 100px;\n        height: 100px;\n        border: none;\n        border-radius: 5px;\n        background: url('http:\/\/landing.anderskisling.dk\/wp-content\/uploads\/2024\/06\/def-state.jpg') center center no-repeat;\n        background-size: cover; \/* Skaleres for at d\u00e6kke knappens omr\u00e5de *\/\n        cursor: pointer;\n        outline: none;\n        transition: background-image 0.1s ease; \/* Overgang for baggrundsbillede *\/\n    }\n<\/style>\n\n<div style=\"text-align: center; margin: 0px;\">\n    <!-- Knappen med unikt ID 'customButton' -->\n    <button id=\"customButton\" class=\"square-button-custom\"><\/button>\n<\/div>\n\n<script>\n    const customButton = document.getElementById('customButton');\n\n    \/\/ Lyt til mousedown i stedet for click\n    customButton.addEventListener('mousedown', async function(event) {\n        event.preventDefault(); \/\/ For at forhindre eventuelle standard handlinger\n\n        \/\/ Skift baggrundsbillede til 'pressed.jpg'\n        this.style.backgroundImage = \"url('http:\/\/landing.anderskisling.dk\/wp-content\/uploads\/2024\/06\/pressed.jpg')\";\n\n        \/\/ Afspil lyden fra den brugerdefinerede sti\n        const audioUrl = 'http:\/\/landing.anderskisling.dk\/wp-content\/uploads\/2024\/06\/swurrp.mp3'; \/\/ Den angivne lydsti\n        playSoundFromCustomURL(audioUrl);\n    });\n\n    \/\/ Lyt til mouseup for at skifte tilbage til standard baggrund\n    customButton.addEventListener('mouseup', function() {\n        this.style.backgroundImage = \"url('http:\/\/landing.anderskisling.dk\/wp-content\/uploads\/2024\/06\/def-state.jpg')\";\n    });\n\n    async function playSoundFromCustomURL(audioUrl) {\n        const audioContext = new (window.AudioContext || window.webkitAudioContext)();\n\n        try {\n            const response = await fetch(audioUrl);\n            const arrayBuffer = await response.arrayBuffer();\n            const audioBuffer = await audioContext.decodeAudioData(arrayBuffer);\n\n            \/\/ Skab en buffer source node\n            const bufferSource = audioContext.createBufferSource();\n            bufferSource.buffer = audioBuffer;\n\n            \/\/ Forbind og afspil\n            bufferSource.connect(audioContext.destination);\n            bufferSource.start();\n        } catch (error) {\n            console.error('Fejl ved indl\u00e6sning og afspilning af lydfil:', error);\n        }\n    }\n<\/script>\n\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-48fd042 e-con-full e-flex e-con e-child\" data-id=\"48fd042\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-abd9b44 elementor-widget elementor-widget-text-editor\" data-id=\"abd9b44\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>SD<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2f26ae0 elementor-widget elementor-widget-html\" data-id=\"2f26ae0\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\n    .square-button-custom {\n        width: 100px;\n        height: 100px;\n        border: none;\n        border-radius: 5px;\n        background: url('http:\/\/landing.anderskisling.dk\/wp-content\/uploads\/2024\/06\/def-state.jpg') center center no-repeat;\n        background-size: cover; \/* Skaleres for at d\u00e6kke knappens omr\u00e5de *\/\n        cursor: pointer;\n        outline: none;\n        transition: background-image 0.1s ease; \/* Overgang for baggrundsbillede *\/\n    }\n<\/style>\n\n<div style=\"text-align: center; margin: 0px;\">\n    <!-- Knappen med unikt ID 'customButton' -->\n    <button id=\"customButton\" class=\"square-button-custom\"><\/button>\n<\/div>\n\n<script>\n    const customButton = document.getElementById('customButton');\n\n    \/\/ Lyt til mousedown i stedet for click\n    customButton.addEventListener('mousedown', async function(event) {\n        event.preventDefault(); \/\/ For at forhindre eventuelle standard handlinger\n\n        \/\/ Skift baggrundsbillede til 'pressed.jpg'\n        this.style.backgroundImage = \"url('http:\/\/landing.anderskisling.dk\/wp-content\/uploads\/2024\/06\/pressed.jpg')\";\n\n        \/\/ Afspil lyden fra den brugerdefinerede sti\n        const audioUrl = 'http:\/\/landing.anderskisling.dk\/wp-content\/uploads\/2024\/06\/swurrp.mp3'; \/\/ Den angivne lydsti\n        playSoundFromCustomURL(audioUrl);\n    });\n\n    \/\/ Lyt til mouseup for at skifte tilbage til standard baggrund\n    customButton.addEventListener('mouseup', function() {\n        this.style.backgroundImage = \"url('http:\/\/landing.anderskisling.dk\/wp-content\/uploads\/2024\/06\/def-state.jpg')\";\n    });\n\n    async function playSoundFromCustomURL(audioUrl) {\n        const audioContext = new (window.AudioContext || window.webkitAudioContext)();\n\n        try {\n            const response = await fetch(audioUrl);\n            const arrayBuffer = await response.arrayBuffer();\n            const audioBuffer = await audioContext.decodeAudioData(arrayBuffer);\n\n            \/\/ Skab en buffer source node\n            const bufferSource = audioContext.createBufferSource();\n            bufferSource.buffer = audioBuffer;\n\n            \/\/ Forbind og afspil\n            bufferSource.connect(audioContext.destination);\n            bufferSource.start();\n        } catch (error) {\n            console.error('Fejl ved indl\u00e6sning og afspilning af lydfil:', error);\n        }\n    }\n<\/script>\n\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-a85bd3a e-con-full e-flex e-con e-child\" data-id=\"a85bd3a\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6f35441 elementor-widget elementor-widget-text-editor\" data-id=\"6f35441\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>SD<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7672071 elementor-widget elementor-widget-html\" data-id=\"7672071\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\n    .square-button-custom {\n        width: 100px;\n        height: 100px;\n        border: none;\n        border-radius: 5px;\n        background: url('http:\/\/landing.anderskisling.dk\/wp-content\/uploads\/2024\/06\/def-state.jpg') center center no-repeat;\n        background-size: cover; \/* Skaleres for at d\u00e6kke knappens omr\u00e5de *\/\n        cursor: pointer;\n        outline: none;\n        transition: background-image 0.1s ease; \/* Overgang for baggrundsbillede *\/\n    }\n<\/style>\n\n<div style=\"text-align: center; margin: 0px;\">\n    <!-- Knappen med unikt ID 'customButton' -->\n    <button id=\"customButton\" class=\"square-button-custom\"><\/button>\n<\/div>\n\n<script>\n    const customButton = document.getElementById('customButton');\n\n    \/\/ Lyt til mousedown i stedet for click\n    customButton.addEventListener('mousedown', async function(event) {\n        event.preventDefault(); \/\/ For at forhindre eventuelle standard handlinger\n\n        \/\/ Skift baggrundsbillede til 'pressed.jpg'\n        this.style.backgroundImage = \"url('http:\/\/landing.anderskisling.dk\/wp-content\/uploads\/2024\/06\/pressed.jpg')\";\n\n        \/\/ Afspil lyden fra den brugerdefinerede sti\n        const audioUrl = 'http:\/\/landing.anderskisling.dk\/wp-content\/uploads\/2024\/06\/swurrp.mp3'; \/\/ Den angivne lydsti\n        playSoundFromCustomURL(audioUrl);\n    });\n\n    \/\/ Lyt til mouseup for at skifte tilbage til standard baggrund\n    customButton.addEventListener('mouseup', function() {\n        this.style.backgroundImage = \"url('http:\/\/landing.anderskisling.dk\/wp-content\/uploads\/2024\/06\/def-state.jpg')\";\n    });\n\n    async function playSoundFromCustomURL(audioUrl) {\n        const audioContext = new (window.AudioContext || window.webkitAudioContext)();\n\n        try {\n            const response = await fetch(audioUrl);\n            const arrayBuffer = await response.arrayBuffer();\n            const audioBuffer = await audioContext.decodeAudioData(arrayBuffer);\n\n            \/\/ Skab en buffer source node\n            const bufferSource = audioContext.createBufferSource();\n            bufferSource.buffer = audioBuffer;\n\n            \/\/ Forbind og afspil\n            bufferSource.connect(audioContext.destination);\n            bufferSource.start();\n        } catch (error) {\n            console.error('Fejl ved indl\u00e6sning og afspilning af lydfil:', error);\n        }\n    }\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\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-97b5137 e-flex e-con-boxed e-con e-parent\" data-id=\"97b5137\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-58ad26c elementor-widget elementor-widget-html\" data-id=\"58ad26c\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Chord Progression Player with Effects and Audio File<\/title>\n    <style>\n        .play-btn {\n            padding: 10px 20px;\n            font-size: 16px;\n            cursor: pointer;\n        }\n    <\/style>\n    <!-- Indl\u00e6s Tone.js bibliotek -->\n    <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/tone\/14.8.26\/Tone.js\"><\/script>\n<\/head>\n<body>\n    <h2>Chord Progression Player with Effects and Audio File<\/h2>\n\n    <!-- Play Sound knap -->\n    <button class=\"play-btn\" onclick=\"playChordProgression()\">Play Chord Progression with Effects and Audio File<\/button>\n\n    <script>\n        \/\/ Opret en polyfonisk synth med Tone.js\n        const synth = new Tone.PolySynth().toDestination();\n\n        \/\/ Akkordprogression: Cmaj, Gmaj, Amin, Fmaj\n        const chords = [\n            ['C4', 'E4', 'G4'], \/\/ Cmaj\n            ['G3', 'B3', 'D4'], \/\/ Gmaj\n            ['A3', 'C4', 'E4'], \/\/ Amin\n            ['F3', 'A3', 'C4']  \/\/ Fmaj\n        ];\n\n        \/\/ Opret et resonansfilter og et cutoff-filter (sweeper)\n        const filter = new Tone.Filter({\n            frequency: 2000, \/\/ Startfrekvens for filteret (2000 Hz)\n            type: 'lowpass', \/\/ Filtertype (her lowpass for mere sang)\n            rolloff: -12, \/\/ Stejlhed (dB pr. oktav), -12 dB pr. oktav er mere naturlig\n            Q: 8, \/\/ Resonans (Q-v\u00e6rdi), h\u00f8jere Q-v\u00e6rdi g\u00f8r resonansen mere fremtr\u00e6dende\n        }).toDestination();\n\n        \/\/ Opret en Phaser effekt\n        const phaser = new Tone.Phaser({\n            frequency: 0.5, \/\/ Frekvensen af phasen\n            octaves: 3, \/\/ Antal oktaver af spredning af fase\n            baseFrequency: 2000 \/\/ Startfrekvens for phasen\n        }).toDestination(); \/\/ Tilknyt phaser til hovedudgangen\n\n        \/\/ Opret en panoreringseffekt\n        const panner = new Tone.Panner(1); \/\/ Start i h\u00f8jre kanal (1)\n\n        \/\/ Opret en delay effekt med mange bounces (feedback)\n        const delay = new Tone.FeedbackDelay({\n            delayTime: 0.3, \/\/ Tid mellem hver bounce (i sekunder)\n            feedback: 0.9, \/\/ Feedback-niveau (0 til 1, hvor meget lyd der sendes tilbage til delayet)\n        }).toDestination(); \/\/ Tilknyt delay til hovedudgangen\n\n        \/\/ Tilknyt filteret, phaser, panner og delay effekt til synthesizeren\n        synth.connect(filter).connect(phaser).connect(panner).connect(delay);\n\n        \/\/ Indl\u00e6s lydfilen\n        const player = new Tone.Player(\"http:\/\/landing.anderskisling.dk\/wp-content\/uploads\/2024\/06\/balloon-pop1.mp3\").toDestination();\n\n        \/\/ Funktion til at afspille akkordprogressionen med effekter og lydfil\n        function playChordProgression() {\n            \/\/ Varighed af hver akkord i sekunder\n            const chordDuration = 2;\n\n            \/\/ Afspil akkordprogressionen\n            chords.forEach((chord, index) => {\n                synth.triggerAttackRelease(chord, chordDuration, Tone.now() + index * chordDuration);\n            });\n\n            \/\/ Start stutter effekt (rytmisk stutter)\n            const stutterTime = 0.15; \/\/ Tid mellem hvert stutter (i sekunder)\n            const stutterDuration = 0.03; \/\/ Varighed af hvert stutter (i sekunder)\n            const steps = 50; \/\/ Antal stutters (\u00f8get for at \u00f8ge intensiteten)\n\n            \/\/ Lav en loop for at udl\u00f8se stutters rytmisk\n            for (let i = 0; i < steps; i++) {\n                const startTime = i * stutterTime;\n                const stutterFreq = Math.random() * 3000 + 500; \/\/ Tilf\u00e6ldig frekvens mellem 500 Hz og 3500 Hz\n\n                \/\/ Ramping af cutoff-frekvensen for hvert stutter\n                filter.frequency.setValueAtTime(stutterFreq, startTime);\n                filter.frequency.setValueAtTime(2000, startTime + stutterDuration);\n            }\n\n            \/\/ Panorering fra h\u00f8jre til venstre kanal over 8 sekunder (samlet varighed af progression)\n            panner.pan.setValueAtTime(1, Tone.now()); \/\/ Start i h\u00f8jre kanal\n            panner.pan.linearRampToValueAtTime(-1, Tone.now() + 8); \/\/ Flyt til venstre kanal over 8 sekunder\n\n            \/\/ Afspil lydfilen en gang i sekundet\n            const repeatId = Tone.Transport.scheduleRepeat(() => {\n                player.start();\n            }, 1); \/\/ Gentag hver 1 sekund\n\n            \/\/ Start transporten\n            Tone.Transport.start();\n\n            \/\/ Stop transporten efter akkordprogressionens varighed (8 sekunder)\n            Tone.Transport.schedule(() => {\n                Tone.Transport.stop();\n                Tone.Transport.clear(repeatId); \/\/ Fjern det gentagne event\n            }, 8); \/\/ 8 sekunder er varigheden af progressionen\n        }\n    <\/script>\n<\/body>\n<\/html>\n\t\t\t\t<\/div>\n\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-4abdfbf e-flex e-con-boxed e-con e-parent\" data-id=\"4abdfbf\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3d39956 elementor-widget elementor-widget-spacer\" data-id=\"3d39956\" data-element_type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\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<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7b6912b elementor-widget elementor-widget-html\" data-id=\"7b6912b\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<audio id=\"audioA\">\n  <source src=\"http:\/\/landing.anderskisling.dk\/wp-content\/uploads\/2024\/06\/masterx1.mp3\" type=\"audio\/mpeg\">\n  Din browser underst\u00f8tter ikke lydafspilleren.\n<\/audio>\n<audio id=\"audioB\">\n  <source src=\"http:\/\/landing.anderskisling.dk\/wp-content\/uploads\/2024\/06\/masterx2.mp3\" type=\"audio\/mpeg\">\n  Din browser underst\u00f8tter ikke lydafspilleren.\n<\/audio>\n<button id=\"playButton\" onclick=\"togglePlay()\">Afspil lyd<\/button>\n<button id=\"buttonA\" onclick=\"playAudio('audioA')\">A<\/button>\n<button id=\"buttonB\" onclick=\"playAudio('audioB')\">B<\/button>\n\n<script>\n  var audioA = document.getElementById('audioA');\n  var audioB = document.getElementById('audioB');\n  var playButton = document.getElementById('playButton');\n  var currentAudio = null; \/\/ Holder styr p\u00e5 den aktuelle lydfil\n  var fadeDuration = 50; \/\/ Crossfade varighed i millisekunder (maksimalt 50 ms)\n\n  function togglePlay() {\n    if (audioA.paused && audioB.paused) {\n      playAudio('audioA');\n      playButton.textContent = 'Stop lyd';\n    } else {\n      audioA.pause();\n      audioB.pause();\n      playButton.textContent = 'Afspil lyd';\n    }\n  }\n\n  function playAudio(audioElementId) {\n    var newAudio = document.getElementById(audioElementId);\n\n    \/\/ Gem den aktuelle afspilningsposition for den aktuelle lydfil\n    if (currentAudio) {\n      currentAudio.currentTime = currentAudio.currentTime;\n    }\n\n    \/\/ Hvis der allerede afspilles en lydfil og det ikke er den samme som den nye\n    if (currentAudio && currentAudio !== newAudio) {\n      crossfade(currentAudio, newAudio);\n      currentAudio.pause();\n    } else if (!currentAudio) { \/\/ Hvis der ikke afspilles nogen lyd\n      newAudio.volume = 1.0;\n      newAudio.play();\n    }\n\n    currentAudio = newAudio;\n    playButton.textContent = 'Stop lyd';\n  }\n\n  function crossfade(outgoing, incoming) {\n    var fadeOutInterval = setInterval(function() {\n      var volume = outgoing.volume - 0.05;\n      if (volume <= 0.05) {\n        clearInterval(fadeOutInterval);\n        outgoing.pause();\n        outgoing.volume = 1.0;\n      } else {\n        outgoing.volume = volume;\n      }\n    }, fadeDuration \/ 10);\n\n    incoming.volume = 0.0;\n    incoming.currentTime = outgoing.currentTime;\n    incoming.play();\n\n    var fadeInInterval = setInterval(function() {\n      var volume = incoming.volume + 0.05;\n      if (volume >= 1.0) {\n        clearInterval(fadeInInterval);\n        incoming.volume = 1.0;\n      } else {\n        incoming.volume = volume;\n      }\n    }, fadeDuration \/ 10);\n  }\n<\/script>\n\t\t\t\t<\/div>\n\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>BD SD SD SD BD SD SD SD Chord Progression Player with Effects and Audio File Chord Progression Player with Effects and Audio File Play Chord Progression with Effects and Audio File Din browser underst\u00f8tter ikke lydafspilleren. Din browser underst\u00f8tter ikke lydafspilleren. Afspil lyd A B<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"inline_featured_image":false,"_kad_post_transparent":"","_kad_post_title":"hide","_kad_post_layout":"fullwidth","_kad_post_sidebar_id":"","_kad_post_content_style":"unboxed","_kad_post_vertical_padding":"hide","_kad_post_feature":"hide","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"footnotes":""},"class_list":["post-587","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/landing.anderskisling.dk\/index.php\/wp-json\/wp\/v2\/pages\/587","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/landing.anderskisling.dk\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/landing.anderskisling.dk\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/landing.anderskisling.dk\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/landing.anderskisling.dk\/index.php\/wp-json\/wp\/v2\/comments?post=587"}],"version-history":[{"count":15,"href":"https:\/\/landing.anderskisling.dk\/index.php\/wp-json\/wp\/v2\/pages\/587\/revisions"}],"predecessor-version":[{"id":1164,"href":"https:\/\/landing.anderskisling.dk\/index.php\/wp-json\/wp\/v2\/pages\/587\/revisions\/1164"}],"wp:attachment":[{"href":"https:\/\/landing.anderskisling.dk\/index.php\/wp-json\/wp\/v2\/media?parent=587"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}