sync mode on

This commit is contained in:
JotaChina committed 2025-10-26 16:43:01 -03:00
1 parent 1818932244
commit 1174b328e5
415 files changed
+44294 -1182

No files matched your search

+55 -50
View File
@@ -1,66 +1,71 @@
// js/state.js
import { patternState, initializePatternState } from './pattern/pattern_state.js';
import { 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,
  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',
  selectedClipId: null,
  isRecording: false,
  clipboard: null,
  lastRulerClickTime: 0,
};
// --- ADICIONE ESTE BLOCO ---
// Define o ESTADO INICIAL para o pattern module
const patternState = {
    tracks: [],
    activeTrackId: null,
    activePatternIndex: 0,
};
// --- FIM DA ADIÇÃO ---
// Combina todos os estados em um único objeto namespaced
export let appState = {
global: globalState,
pattern: patternState,
audio: audioState,
  global: globalState,
  pattern: patternState, // <-- AGORA 'patternState' está definido
  audio: audioState,
};
// Função para resetar o projeto para o estado inicial
export function resetProjectState() {
initializePatternState();
initializeAudioState();
    initializePatternState(); // Esta função vai MODIFICAR appState.pattern
    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,
});
    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',
        selectedClipId: null,
        isRecording: false,
        clipboard: null,
        lastRulerClickTime: 0,
    });
}