66 lines
1.8 KiB
JavaScript
66 lines
1.8 KiB
JavaScript
// 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,
|
|
loopStartTime: 0,
|
|
loopEndTime: 8,
|
|
|
|
// --- ADICIONADO PARA O MODO DE REDIMENSIONAMENTO ---
|
|
resizeMode: 'trim', // Pode ser 'trim' (Modo 2) ou 'stretch' (Modo 1)
|
|
selectedClipId: null,
|
|
|
|
// --- RECORDING ---
|
|
isRecording: false,
|
|
};
|
|
|
|
// 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,
|
|
resizeMode: 'trim', // Reseta para o modo 'trim'
|
|
selectedClipId: null,
|
|
|
|
// --- RECORDING ---
|
|
isRecording: false,
|
|
});
|
|
} |