diff options
Diffstat (limited to 'muse2/muse/audio.h')
-rw-r--r-- | muse2/muse/audio.h | 67 |
1 files changed, 18 insertions, 49 deletions
diff --git a/muse2/muse/audio.h b/muse2/muse/audio.h index a403e5bf..e1a90485 100644 --- a/muse2/muse/audio.h +++ b/muse2/muse/audio.h @@ -52,6 +52,7 @@ class Part; class PluginI; class SynthI; class Track; +class Undo; //--------------------------------------------------------- // AudioMsgId @@ -60,37 +61,22 @@ class Track; //--------------------------------------------------------- enum { - SEQM_ADD_TRACK, SEQM_REMOVE_TRACK, //SEQM_CHANGE_TRACK, DELETETHIS - SEQM_MOVE_TRACK, - SEQM_ADD_PART, SEQM_REMOVE_PART, SEQM_CHANGE_PART, - SEQM_ADD_EVENT, SEQM_REMOVE_EVENT, SEQM_CHANGE_EVENT, SEQM_ADD_TEMPO, SEQM_SET_TEMPO, SEQM_REMOVE_TEMPO, SEQM_ADD_SIG, SEQM_REMOVE_SIG, SEQM_ADD_KEY, SEQM_REMOVE_KEY, SEQM_SET_GLOBAL_TEMPO, - SEQM_UNDO, SEQM_REDO, + SEQM_REVERT_OPERATION_GROUP, SEQM_EXECUTE_OPERATION_GROUP, SEQM_RESET_DEVICES, SEQM_INIT_DEVICES, SEQM_PANIC, SEQM_MIDI_LOCAL_OFF, - SEQM_SET_MIDI_DEVICE, SEQM_PLAY_MIDI_EVENT, SEQM_SET_HW_CTRL_STATE, SEQM_SET_HW_CTRL_STATES, - SEQM_SET_TRACK_OUT_PORT, - SEQM_SET_TRACK_OUT_CHAN, SEQM_SET_TRACK_AUTO_TYPE, - SEQM_REMAP_PORT_DRUM_CTL_EVS, - SEQM_CHANGE_ALL_PORT_DRUM_CTL_EVS, - SEQM_SCAN_ALSA_MIDI_PORTS, SEQM_SET_AUX, SEQM_UPDATE_SOLO_STATES, - //MIDI_SHOW_INSTR_GUI, DELETETHIS - //MIDI_SHOW_INSTR_NATIVE_GUI, DELETETHIS AUDIO_RECORD, AUDIO_ROUTEADD, AUDIO_ROUTEREMOVE, AUDIO_REMOVEROUTES, - //AUDIO_VOL, AUDIO_PAN, DELETETHIS AUDIO_ADDPLUGIN, - AUDIO_SET_SEG_SIZE, AUDIO_SET_PREFADER, AUDIO_SET_CHANNELS, - //AUDIO_SET_PLUGIN_CTRL_VAL, DELETETHIS AUDIO_SWAP_CONTROLLER_IDX, AUDIO_CLEAR_CONTROLLER_EVENTS, AUDIO_SEEK_PREV_AC_EVENT, @@ -132,6 +118,7 @@ struct AudioMsg : public ThreadMsg { // this should be an union char port, channel, ctrl; int a, b, c; Pos pos; + Undo* operations; }; class AudioOutput; @@ -232,29 +219,27 @@ class Audio { void msgSeek(const Pos&); void msgPlay(bool val); - void msgRemoveTrack(Track*, bool u = true); + void msgExecuteOperationGroup(Undo&); // calls exe1, then calls exe2 in audio context, then calls exe3 + void msgRevertOperationGroup(Undo&); // similar. + void msgRemoveTracks(); - //void msgChangeTrack(Track* oldTrack, Track* newTrack, bool u = true); DELETETHIS - void msgMoveTrack(int idx1, int dx2, bool u = true); - void msgAddPart(Part*, bool u = true); - void msgRemovePart(Part*, bool u = true); - void msgChangePart(Part* oldPart, Part* newPart, bool u = true, bool doCtrls = true, bool doClones = false); - void msgAddEvent(Event&, Part*, bool u = true, bool doCtrls = true, bool doClones = false); - void msgDeleteEvent(Event&, Part*, bool u = true, bool doCtrls = true, bool doClones = false); - void msgChangeEvent(Event&, Event&, Part*, bool u = true, bool doCtrls = true, bool doClones = false); - void msgScanAlsaMidiPorts(); - void msgAddTempo(int tick, int tempo, bool doUndoFlag = true); - void msgSetTempo(int tick, int tempo, bool doUndoFlag = true); - void msgUpdateSoloStates(); + void msgRemoveTrack(Track*, bool u = true); // only does applyOperation + void msgMoveTrack(int idx1, int dx2, bool u = true); // only does applyOperation + void msgAddPart(Part*, bool u = true); // only does applyOperation + void msgRemovePart(Part*, bool u = true); // only does applyOperation + void msgAddEvent(Event&, Part*, bool u = true, bool doCtrls = true, bool doClones = false); // only does applyOperation + void msgDeleteEvent(Event&, Part*, bool u = true, bool doCtrls = true, bool doClones = false); // only does applyOperation + void msgChangeEvent(Event&, Event&, Part*, bool u = true, bool doCtrls = true, bool doClones = false); // only does applyOperation + void msgAddTempo(int tick, int tempo, bool doUndoFlag = true); // only does applyOperation + void msgSetTempo(int tick, int tempo, bool doUndoFlag = true); // FIXME FINDMICHJETZT TODO! + void msgDeleteTempo(int tick, int tempo, bool doUndoFlag = true); // only does applyOperation + void msgUpdateSoloStates(); // TODO and below void msgSetAux(AudioTrack*, int, double); void msgSetGlobalTempo(int val); - void msgDeleteTempo(int tick, int tempo, bool doUndoFlag = true); void msgAddSig(int tick, int z, int n, bool doUndoFlag = true); void msgRemoveSig(int tick, int z, int n, bool doUndoFlag = true); void msgAddKey(int tick, int key, bool doUndoFlag = true); void msgRemoveKey(int tick, int key, bool doUndoFlag = true); - //void msgShowInstrumentGui(MidiInstrument*, bool); DELETETHIS - //void msgShowInstrumentNativeGui(MidiInstrument*, bool); DELETETHIS void msgPanic(); void sendMsg(AudioMsg*); bool sendMessage(AudioMsg* m, bool doUndo); @@ -265,24 +250,14 @@ class Audio { void msgAddRoute(Route, Route); void msgAddRoute1(Route, Route); void msgAddPlugin(AudioTrack*, int idx, PluginI* plugin); - void msgSetMute(AudioTrack*, bool val); - //void msgSetVolume(AudioTrack*, double val); DELETETHIS - //void msgSetPan(AudioTrack*, double val); DELETETHIS - void msgAddSynthI(SynthI* synth); - void msgRemoveSynthI(SynthI* synth); - void msgSetSegSize(int, int); void msgSetPrefader(AudioTrack*, int); void msgSetChannels(AudioTrack*, int); - void msgSetOff(AudioTrack*, bool); void msgSetRecord(AudioTrack*, bool); - void msgUndo(); - void msgRedo(); void msgLocalOff(); void msgInitMidiDevices(bool force = true); void msgResetMidiDevices(); void msgIdle(bool); void msgBounce(); - //void msgSetPluginCtrlVal(AudioTrack*, int /*param*/, double /*val*/); DELETETHIS void msgSwapControllerIDX(AudioTrack*, int, int); void msgClearControllerEvents(AudioTrack*, int); void msgSeekPrevACEvent(AudioTrack*, int); @@ -294,17 +269,11 @@ class Audio { void msgSetSolo(Track*, bool); void msgSetHwCtrlState(MidiPort*, int, int, int); void msgSetHwCtrlStates(MidiPort*, int, int, int, int); - void msgSetTrackOutChannel(MidiTrack*, int); - void msgSetTrackOutPort(MidiTrack*, int); void msgSetTrackAutomationType(Track*, int); - void msgRemapPortDrumCtlEvents(int, int, int, int); - void msgChangeAllPortDrumCtrlEvents(bool, bool); void msgSetSendMetronome(AudioTrack*, bool); void msgStartMidiLearn(); - void msgPlayMidiEvent(const MidiPlayEvent* event); - void rescanAlsaPorts(); - + void midiPortsChanged(); const Pos& pos() const { return _pos; } |