// js/state.js import { patternState, initializePatternState } from './pattern/pattern_state.js'; import { audioState, initializeAudioState } from './audio/audio_state.js'; import { DEFAULT_VOLUME, DEFAULT_PAN } from "./config.js"; // Estado global da aplicação const globalState = { sliceToolActive: false, isPlaying: false, isAudioEditorPlaying: false, playbackIntervalId: null, currentStep: 0, metronomeEnabled: false, originalXmlDoc: null, currentBeatBasslineName: 'Novo Projeto', masterVolume: DEFAULT_VOLUME, masterPan: DEFAULT_PAN, zoomLevelIndex: 2, // --- ADICIONADO PARA A ÁREA DE LOOP --- isLoopActive: false, // O botão de loop principal agora controla este estado loopStartTime: 0, // Início do loop em segundos loopEndTime: 8, // Fim do loop em segundos (padrão de 4 compassos a 120BPM) }; // Combina todos os estados em um único objeto namespaced export let appState = { global: globalState, pattern: patternState, audio: audioState, }; // Função para resetar o projeto para o estado inicial export function resetProjectState() { initializePatternState(); initializeAudioState(); Object.assign(globalState, { sliceToolActive: false, isPlaying: false, isAudioEditorPlaying: false, playbackIntervalId: null, currentStep: 0, metronomeEnabled: false, originalXmlDoc: null, currentBeatBasslineName: 'Novo Projeto', masterVolume: DEFAULT_VOLUME, masterPan: DEFAULT_PAN, zoomLevelIndex: 2, isLoopActive: false, loopStartTime: 0, loopEndTime: 8, }); }