summaryrefslogtreecommitdiff
path: root/muse2/muse/audio.h
diff options
context:
space:
mode:
Diffstat (limited to 'muse2/muse/audio.h')
-rw-r--r--muse2/muse/audio.h67
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; }