public DigitalPatchManager(DigitalSynth synthNumber) { _logger = LoggerFactory.FullSet(typeof(DigitalPatchManager)); _synthNumber = synthNumber; _timer.Elapsed += OnTimerElapsed; }
/// <inheritdoc /> /// <summary> /// Creates new instance of DigitalSynthTabViewModel /// </summary> public DigitalSynthTabViewModel(IEventAggregator eventAggregator, IDialogCoordinator dialogCoordinator, DigitalSynth synth) : base(eventAggregator, dialogCoordinator, new DigitalPatchManager(synth)) { //TODO: Take use of enum description DisplayName = synth == DigitalSynth.First ? "Digital Synth 1" : "Digital Synth 2"; InitLogger(typeof(DigitalSynthTabViewModel)); Patch = new Patch(); Editor = new DigitalPartialsEditorViewModel(Patch); Patch.PropertyChanged += (sender, args) => { if (AutoSync && SelectedOutputDeviceId != -1) { var digitalPatchManager = (IDigitalPatchManager)PatchManager; switch (args.PropertyName) { case nameof(Patch.Common): digitalPatchManager.DumpCommon(Patch.Common, SelectedOutputDeviceId); break; case nameof(Patch.Modifiers): digitalPatchManager.DumpModifiers(Patch.Modifiers, SelectedOutputDeviceId); break; case nameof(Patch.PartialOne): digitalPatchManager.DumpPartial(Patch.PartialOne, DigitalPartial.First, SelectedOutputDeviceId); break; case nameof(Patch.PartialTwo): digitalPatchManager.DumpPartial(Patch.PartialTwo, DigitalPartial.Second, SelectedOutputDeviceId); break; case nameof(Patch.PartialThree): digitalPatchManager.DumpPartial(Patch.PartialThree, DigitalPartial.Third, SelectedOutputDeviceId); break; } Logger.AutoSync($"{args.PropertyName} changed"); } if (args.PropertyName == nameof(Modifiers)) { NotifyOfPropertyChange(nameof(IsEnvelopeLoopSyncNoteEnabled)); } }; PatchManager.DataDumpReceived += (sender, args) => { if (args is DigitalPatchDumpReceivedEventArgs eventArgs) { AutoSync = false; Patch.CopyFrom(eventArgs.Patch); Logger.DataDump("Received data dump"); AutoSync = true; } }; PatchManager.OperationTimedOut += (sender, args) => { Logger.Error("Device is not responding"); ShowErrorMessage("Device is not responding, try again in a moment"); }; }