eclab / edisyn

Synthesizer Patch Editor
Apache License 2.0
547 stars 51 forks source link

Support for remote control via TouchOSC #9

Closed dbogdanov closed 5 years ago

dbogdanov commented 5 years ago

It would be great to have support for remote control on tablets, for example via TouchOSC, or similar mobile apps. Is that technically feasible?

eclab commented 5 years ago

Edisyn is written in Java using Swing. It could only run on tablets that support this: for example perhaps windows tablets.

Sean

On Dec 6, 2018, at 10:12 PM, Dmitry Bogdanov notifications@github.com wrote:

It would be great to have support for remote control on tablets, for example via TouchOSC, or similar mobile apps. Is that technically feasible?

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or mute the thread.

dbogdanov commented 5 years ago

I guess what I meant was if there is a way one could interface with a PC running Edisyn. I guess that's what Midiquest does. The TouchOSC app on a tablet serves to control the main application on the PC, that in turn controls a synth.

eclab commented 5 years ago

Ah, I got it. Actually, Edisyn is already set up to do this, but you'll have to do some work first. Under the Map menu, you can do absolute CC, absolute NRPN, and relative CC mapping for any of the widgets. So hook up TouchOSC, set it up as Edisyn's controller via MIDI->ChangeMidi, and start mapping CC or NRPN on TouchOSC to widgets in your desired Edisyn patch editor. Then you should be able to control Edisyn from TouchOSC.

Edisyn doesn't support OSC right now. I'm not sure it ever will given that MIDI 2.0 is coming out and will probably moot it.

Sean

On Dec 7, 2018, at 9:09 AM, Dmitry Bogdanov notifications@github.com wrote:

I guess what I meant was if there is a way one could interface with a PC running Edisyn. I guess that's what Midiquest does. The TouchOSC app on a tablet serves to control the main application on the PC, that in turn controls a synth.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

dbogdanov commented 5 years ago

Got it, thank you for this explanation! I am now doing some test mappings for Kawai K1. It appears there is a very large latency (few seconds) with which mapped Edisyn widgets follow controls on TouchOSC. Other applications (Ableton Live) react instantaneously.

eclab commented 5 years ago

On Dec 12, 2018, at 8:35 PM, Dmitry Bogdanov notifications@github.com wrote:

Got it, thank you for this explanation! I am now doing some test mappings for Kawai K1. It appears there is a very large latency (few seconds) with which mapped Edisyn widgets follow controls on TouchOSC. Other applications (Ableton Live) react instantaneously.

I just double-checked and Edisyn is responding immediately and cleanly to incoming CC messages mapped to its widgets (using the K1 patch editor) -- using a Novation Zero Mk II over USB. This tells me that there is likely something else going on in your arrangent. Some kind of routing problem? I'm running OS X.

dbogdanov commented 5 years ago

I was using TouchOSC over WiFi. I've tested with another controller over USB (Arturia Keystep) and I get exactly the same issue. Both controllers work without any lag in Ableton. MacOS High Sierra. I have no idea how to debug this. Could it be that the lag is due to Java?

eclab commented 5 years ago

On Dec 13, 2018, at 8:11 PM, Dmitry Bogdanov notifications@github.com wrote:

I was using TouchOSC over WiFi. I've tested with another controller over USB (Arturia Keystep) and I get exactly the same issue. Both controllers work without any lag in Ableton. MacOS High Sierra. I have no idea how to debug this. Could it be that the lag is due to Java?

It's very unlikely java.

In order to get started, you should begin by giving an annotated process of exactly what you're doing. For example, here's what I'm testing with that works just fine:

  1. OS X High Sierra 10.13.2
  2. Novation Zero Mk II connected directly to Mac via USB.
  3. NO MIDI applications running (no DAWs, etc.)
  4. Fire up Edisyn.app [version 16 in this example]
  5. Select [say] Kawai K1/K1r/K1m
  6. Choose Zero Port 2 for Controller
  7. Receive From and Send To should be different from each other, and ideally neither should be the Controller device.
  8. Controller Channel is Any
  9. Map -> Map CC/NRPN
  10. Change the Pitch Bend Range widget
  11. Turn a CC dial on the Zero. Now it's connected to the Pitch Bend Range widget [note that in this mode, if the dial doesn't have the same range as the knob, turning it won't affect the range until it's in-range. So I set the relevant CC dial on the Zero to have the range 0...12 and everything works fine].
  12. Changing the dial on the Zero changes the pitch bend instantaneously.

So I'm looking for a similar minimal setup for failure, with as few variables as possible -- no other MIDI apps, no other plugged-in devices, in fact you don't even have your USB MIDI device plugged in to control the K1, just whatever you're using to turn Edisyn's knob. Strip it down to as few possible things involved. You could create two loopback ports (see the manual) and set the input to one port and the output to the other (do NOT set them to the same port or you'll have all manner of issues). Mine are called IAC Driver IAC Bus 1 and Bus 2 respectively.

Sean

dbogdanov commented 5 years ago

Thank you for your suggestions!! I've been able to locate the issue. The controls react instantly when disabling MIDI -> Send Real Time Changes. I thought that I should have also worked when enabled. Any related problem there?

My setup:

eclab commented 5 years ago

At first I thought the issue was that the K1 has very, very slow sysex and Edisyn is forced to put a significant delay between real-time changes. But now I don't think that's the issue -- when I have Send Real Time Changes turned on, it's pretty responsive. I'd guess you've got a loop. When you do MIDI -> Change MIDI, what are the devices chosen for "Receive From", "Send To", and "Controller"?

dbogdanov commented 5 years ago

I've set up "Receive From" and "Send To" to IAC Driver IAC Bus 1 and 2, and "Controller" to Arturia KeyStep 32. It lags to the point of getting a spinning wheel from time to time.

dbogdanov commented 5 years ago

Any idea how to narrow down the problem?

eclab commented 5 years ago

Let's simplify things for the moment.

With this configuration I can change any widget in real time with no delay whatsoever. I'm running OS X 10.3.6 on a Macbook Pro. Java 1.8.

If you're having a spinning wheel in this configuation: (1) what steps will reliably reproduce it? (2) Are you getting any error messages -- java exceptions for example -- produced at the end of /var/log/system.log ?

On Dec 16, 2018, at 1:18 PM, Dmitry Bogdanov notifications@github.com wrote:

I've set up "Receive From" and "Send To" to IAC Driver IAC Bus 1 and 2, and "Controller" to Arturia KeyStep 32. It lags to the point of getting a spinning wheel from time to time.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

dbogdanov commented 5 years ago
- Set the Controller to None. 
- Receive From IAC Bus 1 
- Send To IAC Bus 2 
- Nothing at all the other end of IAC Bus 1 or 2 (no DAW, no controller or program). 
- Kawai K1 patch editor 
- Sends Real Time Changes -> TRUE

This configuration without controller works fine. The delays occur only when using a controller.

eclab commented 5 years ago

Okay, next step. Download MidiKeys (http://www.manyetas.com/creed/midikeys.html). Launch it and set it to be the Controller in Edisyn. Does the problem manifest itself?

On Dec 26, 2018, at 6:44 PM, Dmitry Bogdanov notifications@github.com wrote:

  • Set the Controller to None.
  • Receive From IAC Bus 1
  • Send To IAC Bus 2
  • Nothing at all the other end of IAC Bus 1 or 2 (no DAW, no controller or program).
  • Kawai K1 patch editor
  • Sends Real Time Changes -> TRUE

This configuration without controller works fine. The delays occur only when using a controller.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

SeanLuke commented 5 years ago

Lacking further response, I'm going to close this for now.