public void SetConnector(EOBSConnectorType type) { if (type == EOBSConnectorType.SLOBS) { Obs = new CSLOBSConnector(); } else if (type == EOBSConnectorType.OBS) { Obs = new COBSConnector(); } Obs.ConnectionStatus += Obs_ConnectionStatus; Obs.AudioSourceChanged += Obs_AudioSourceChanged; Obs.SceneChanged += Obs_SceneChanged; Obs.SceneItemChanged += Obs_SceneItemChanged; Obs.SceneListChanged += Obs_SceneListChanged; Obs.SourceChanged += Obs_SourceChanged; Obs.StreamingStatusChanged += Obs_StreamingStatusChanged; Obs.TransitionChanged += Obs_TransitionChanged; Obs.ModeChanged += Obs_ModeChanged; Midi = new CMidiObserver(Obs); Midi.OnMidiOutput += Midi_OnMidiOutput; ConnectorType = type; }
private void Obs_TransitionChanged(IOBSConnector sender, EOBSEvent eventtype) { if (eventtype == EOBSEvent.TransitionListChanged) { Midi.Display(EMidiOBSItemType.Transition, EMidiOBSOutputType.Off, -1); } int tr_i = 0; if (Obs.Transitions.Count > 0) { foreach (var tr in Obs.Transitions) { if (Obs.ActiveTransition.Id == tr.Id) { Midi.Display(EMidiOBSItemType.Transition, EMidiOBSOutputType.Active, tr_i); } else { Midi.Display(EMidiOBSItemType.Transition, EMidiOBSOutputType.On, tr_i); } tr_i++; } } }
public CMidiObserver(IOBSConnector refobs) { obs = refobs; midiActions = new List <SMidiOBSAction>(); midiQueue = new Dictionary <string, SMidiAction>(); midiOutputStatus = new Dictionary <string, SMidiAction>(); midiQueueTimer = new System.Timers.Timer(1); midiQueueTimer.Elapsed += OnMidiQueueTimer; midiQueueTimer.AutoReset = true; midiQueueTimer.Enabled = false; }
private void Obs_ModeChanged(IOBSConnector sender, EOBSMode mode) { if (mode == EOBSMode.Normal) { Midi.Display(EMidiOBSItemType.Pscene, EMidiOBSOutputType.Off, -1, -1); Midi.Display(EMidiOBSItemType.PsceneItem, EMidiOBSOutputType.Off, -1, -1); Midi.Display(EMidiOBSItemType.Scene, EMidiOBSOutputType.Off, -1, -1); Midi.Display(EMidiOBSItemType.SceneItem, EMidiOBSOutputType.Off, -1, -1); } Midi.Display(EMidiOBSItemType.Mode, (int)Obs.Mode == 2 ? EMidiOBSOutputType.Active : EMidiOBSOutputType.On, -1); _renderScenes(); _renderSceneItems(); Midi.FlushQueue(); }
private void Obs_AudioSourceChanged(IOBSConnector sender, EOBSEvent eventtype) { Midi.Display(EMidiOBSItemType.AudioItem, EMidiOBSOutputType.Off, -1, -1, true); for (int i = 0; i < Obs.AudioSources.Count; i++) { if (!Obs.AudioSources[i].Hidden) { if (Obs.AudioSources[i].Muted) { Midi.Display(EMidiOBSItemType.AudioItem, EMidiOBSOutputType.Muted, i, -1); } else { Midi.Display(EMidiOBSItemType.AudioItem, EMidiOBSOutputType.On, i, -1); } } } }
private void Obs_SceneChanged(IOBSConnector sender, EOBSEvent eventtype, SOBSScene scene) { // throw new NotImplementedException(); if (eventtype == EOBSEvent.SceneAdded || eventtype == EOBSEvent.SceneRemoved) { if (EOBSEvent.SceneRemoved == eventtype) { Midi.Display(EMidiOBSItemType.Scene, EMidiOBSOutputType.Off, -1); } _renderScenes(); } else if (eventtype == EOBSEvent.SceneSwitched || eventtype == EOBSEvent.SceneUpdated) { _renderScenes(); _renderSceneItems(); } Midi.FlushQueue(); }
private async void Obs_ConnectionStatus(IOBSConnector sender, EOBSCStatus eventdata) { if (eventdata == EOBSCStatus.Connected) { Connected = true; Connecting = false; Midi.Display(EMidiOBSItemType.ReloadObsData, EMidiOBSOutputType.Off, -1, -1, true); //await Obs.Reload(); Midi.Display(EMidiOBSItemType.ReloadObsData, EMidiOBSOutputType.On, -1, -1, true); Midi.RenderSurface(); } else if (eventdata == EOBSCStatus.Disconnected) { Midi.ResetSurface(); } if (StatusChanged != null) { StatusChanged(this, eventdata); } }
private void Obs_SceneItemChanged(IOBSConnector sender, EOBSEvent eventtype, SOBSSceneItem eventdata) { _renderSceneItems(); }
private void Obs_SceneListChanged(IOBSConnector sender, EOBSEvent eventtype, List <SOBSScene> scenes) { _renderScenes(); _renderSceneItems(); Midi.FlushQueue(); }
private void Obs_SourceChanged(IOBSConnector sender, EOBSEvent eventtype, SOBSSource eventdata) { }
private void Obs_StreamingStatusChanged(IOBSConnector sender, SOBSStreamingState state) { //streaming if (state.Stream == EOBSStreamingState.Starting || state.Stream == EOBSStreamingState.Reconnecting) { Midi.Display(EMidiOBSItemType.Stream, EMidiOBSOutputType.Starting, -1); } else if (state.Stream == EOBSStreamingState.Stopping) { Midi.Display(EMidiOBSItemType.Stream, EMidiOBSOutputType.Stopping, -1); } else if (state.Stream == EOBSStreamingState.Started) { Midi.Display(EMidiOBSItemType.Stream, EMidiOBSOutputType.Active, -1); } else if (state.Stream == EOBSStreamingState.Stopped) { Midi.Display(EMidiOBSItemType.Stream, EMidiOBSOutputType.On, -1); } //recording if (state.Record == EOBSStreamingState.Starting) { Midi.Display(EMidiOBSItemType.Record, EMidiOBSOutputType.Starting, -1); } else if (state.Record == EOBSStreamingState.Stopping) { Midi.Display(EMidiOBSItemType.Record, EMidiOBSOutputType.Stopping, -1); } else if (state.Record == EOBSStreamingState.Started) { Midi.Display(EMidiOBSItemType.Record, EMidiOBSOutputType.Active, -1); } else if (state.Record == EOBSStreamingState.Stopped) { Midi.Display(EMidiOBSItemType.Record, EMidiOBSOutputType.On, -1); } //replaybuffer if (state.Replay == EOBSStreamingState.Starting || state.Replay == EOBSStreamingState.Saving) { Midi.Display(EMidiOBSItemType.ReplayBuffer, EMidiOBSOutputType.Starting, -1); } else if (state.Replay == EOBSStreamingState.Stopping) { Midi.Display(EMidiOBSItemType.ReplayBuffer, EMidiOBSOutputType.Stopping, -1); } else if (state.Replay == EOBSStreamingState.Started) { Midi.Display(EMidiOBSItemType.ReplayBuffer, EMidiOBSOutputType.Active, -1); } else if (state.Replay == EOBSStreamingState.Stopped) { Midi.Display(EMidiOBSItemType.ReplayBuffer, EMidiOBSOutputType.On, -1); } if (state.Replay == EOBSStreamingState.Saving) { Midi.Display(EMidiOBSItemType.ReplayBufferSave, EMidiOBSOutputType.Active, -1); } else { Midi.Display(EMidiOBSItemType.ReplayBufferSave, EMidiOBSOutputType.On, -1); } }