ation = parseInt(document.getElementById('chordLength').value);
        }
        return projectData;
    }

    // Function to initialize audio after user gesture
    function initAudio() {
        if (!audioContext) {
            audioContext = new (window.AudioContext || window.webkitAudioContext)();
            tm = new TimeManipulator();
            loadInstruments();
        }
    }

    // Add loading indicator
    function showLoading(show) {
        document.querySelectorAll('button').forEach(butto