/// <inheritdoc /> public void Read(int inputDeviceId, int outputDeviceId) { // Reset dump count counter _dumpCount = 0; // Initialize input device _device = new InputDevice(inputDeviceId); // Setup event handler for receiving SysEx messages _device.SysExMessageReceived += OnSysExMessageReceived; // Start recording input from device _device.StartRecording(); // Start timer before running task, so we have timer on the same thread // as the callbacks for timer and input device _timer.Start(); // Request data dump from device on separate thread Task.Run(() => { // Need to make 50ms delay between requests to ensure // that device will not hung up using (var output = new OutputDevice(outputDeviceId)) { _logger.Send("Request Patch.Common"); output.Send(SysExUtils.GetRequestDumpMessage(CommonAddressOffset, _commonDumpRequest)); Thread.Sleep(50); _logger.Send("Request Patch.PartialOne"); output.Send(SysExUtils.GetRequestDumpMessage(PartialAddressOffset(DigitalPartial.First), _partialDumpRequest)); Thread.Sleep(50); _logger.Send("Request Patch.PartialTwo"); output.Send(SysExUtils.GetRequestDumpMessage(PartialAddressOffset(DigitalPartial.Second), _partialDumpRequest)); Thread.Sleep(50); _logger.Send("Request Patch.PartialThree"); output.Send(SysExUtils.GetRequestDumpMessage(PartialAddressOffset(DigitalPartial.Third), _partialDumpRequest)); Thread.Sleep(50); _logger.Send("Request Patch.Modifiers"); output.Send(SysExUtils.GetRequestDumpMessage(ModifiersAddressOffset, _modifiersDumpRequest)); Thread.Sleep(50); } }); }
/// <inheritdoc /> public void Read(int inputDeviceId, int outputDeviceId) { // Reset dump count counter _dumpCount = 0; // Initialize input device _device = new InputDevice(inputDeviceId); // Clear previous sysex dumps _commonDump = null; _partialsDump.Clear(); // Setup event handler for receiving SysEx messages _device.SysExMessageReceived += OnSysExMessageReceived; // Start recording input from device _device.StartRecording(); // Start timer before running task, so we have timer on the same thread // as the callbacks for timer and input device _timer.Start(); // Request data dump from device on separate thread Task.Run(() => { // Need to make 50ms delay between requests to ensure // that device will not hung up using (var output = new OutputDevice(outputDeviceId)) { _logger.Send("Request Patch.Common"); output.Send(SysExUtils.GetRequestDumpMessage(_commonAddressOffset, _commonDumpRequest)); Thread.Sleep(50); foreach (var vdPair in EnumHelper.GetAllValuesAndDescriptions(typeof(DrumKey))) { var key = (DrumKey)vdPair.Value; _logger.Send($"Request Patch.Partial[{key}]"); output.Send(SysExUtils.GetRequestDumpMessage(PartialAddressOffset(key), _partialDumpRequest)); Thread.Sleep(50); } } }); }
/// <inheritdoc /> public void Read(int inputDeviceId, int outputDeviceId) { // Reset dump count counter and dumps container _dumpCount = 0; _dataDumps.Clear(); // Initialize input device _device = new InputDevice(inputDeviceId); // Setup event handler for receiving SysEx messages _device.SysExMessageReceived += OnSysExMessageReceived; // Start recording input from device _device.StartRecording(); // Start timer before running task, so we have timer on the same thread // as the callbacks for timer and input device _timer.Start(); // Request data dump from device on separate thread Task.Run(() => { // Need to make 50ms delay between requests to ensure // that device will not hung up using (var output = new OutputDevice(outputDeviceId)) { _logger.Send("Request Effect 1"); output.Send(SysExUtils.GetRequestDumpMessage(EffectOffset(Effect.Effect1), EffectDumpRequest(Effect.Effect1))); Thread.Sleep(50); _logger.Send("Request Effect 2"); output.Send(SysExUtils.GetRequestDumpMessage(EffectOffset(Effect.Effect2), EffectDumpRequest(Effect.Effect2))); Thread.Sleep(50); _logger.Send("Request Delay"); output.Send(SysExUtils.GetRequestDumpMessage(EffectOffset(Effect.Delay), EffectDumpRequest(Effect.Delay))); Thread.Sleep(50); _logger.Send("Request Reverb"); output.Send(SysExUtils.GetRequestDumpMessage(EffectOffset(Effect.Reverb), EffectDumpRequest(Effect.Reverb))); Thread.Sleep(50); } }); }
/// <inheritdoc /> public void Read(int inputDeviceId, int outputDeviceId) { _device = new InputDevice(inputDeviceId); // Setup event handler for receiving SysEx messages _device.SysExMessageReceived += OnSysExMessageReceived; // Start recording input from device _device.StartRecording(); // Start timer before running task, so we have timer on the same thread // as the callbacks for timer and input device _timer.Start(); // Request data dump from device on separate thread Task.Run(() => { using (var output = new OutputDevice(outputDeviceId)) { _logger.Send("Request Patch"); output.Send(SysExUtils.GetRequestDumpMessage(_addressOffset, _dumpRequest)); } }); }