DISTRHO / Cardinal

Virtual modular synthesizer plugin
https://cardinal.kx.studio/
GNU General Public License v3.0
2.08k stars 143 forks source link

Touchscreen support #527

Open matchaxnb opened 1 year ago

matchaxnb commented 1 year ago

Hey there!

I'd love to have support for touchscreen in Cardinal. I would be very happy if 2 finger gestures would allow to scroll into the rack to quickly navigate from one part of the patch to another. I'd be available to test that feature on Windows on a Surface Pro.

Support for stylus pen would be a nice addition but that's less important to me at least.

I tried to figure how to do that myself but found Cardinal barely usable with these tools.

Thanks :)

falkTX commented 1 year ago

Realistically dont think this will ever happen. The more deep framework in use by Cardinal for OS events does not support touch, and neither does VCV Rack.

I faked the events in the online version (running at https://cardinal.kx.studio/), perhaps that event mapping is good enough? I could try to port it over to desktop if it proves to work well, but more than that is very unlikely to happen.

Audiojunkie commented 1 year ago

To be more specific, I believe the OP must have meant “multi-touch” support. Single-touch support works fine with pretty much everything. 🙂

That said, multi-touch support is unlikely. The OP could try a utility like touchegg and see if that helps, but I doubt it if the underlying multi-touch framework isn’t there. It would still only respond to a single touch at a time. 🙂

falkTX commented 1 year ago

FYI I dont have a multi-touch device myself, nor feel the need for one. As Cardinal development is mostly done by me, this reduces the chance of anything multi-touch ever happening to almost zero.

JSandusky commented 1 year ago

Context is Windows.

Due to submodules being taken whole it's a bit of mess so it's faster to just ask, of these (all of whom fuddle with WM_MOUSEWHEEL in some fashion) who is the input lord that translates into mouse-wheel and shift + mousewheel that actually manifests?

  .\carla\source\modules\dgl\src\pugl-upstream\src\win.c
  .\carla\source\modules\juce_gui_basics\native\juce_win32_Windowing.cpp
  .\carla\source\modules\ysfx\thirdparty\WDL\source\WDL\eel2\eel_lice.h
  .\carla\source\modules\ysfx\thirdparty\WDL\source\WDL\swell\swell-generic-gdk.cpp
  .\carla\source\modules\ysfx\thirdparty\WDL\source\WDL\swell\swell-menu-generic.cpp
  .\carla\source\modules\ysfx\thirdparty\WDL\source\WDL\swell\swell-types.h
  .\carla\source\modules\ysfx\thirdparty\WDL\source\WDL\swell\swell-wnd-generic.cpp
  .\dpf\dgl\src\pugl-upstream\src\win.c
  .\plugins\surgext\surge\libs\JUCE\examples\Plugins\ReaperEmbeddedViewPluginDemo.h
  .\plugins\surgext\surge\libs\JUCE\examples\Plugins\extern\reaper_plugin_fx_embed.h
  .\plugins\surgext\surge\libs\JUCE\modules\juce_audio_plugin_client\utility\juce_WindowsHooks.h
  .\plugins\surgext\surge\libs\JUCE\modules\juce_gui_basics\native\juce_win32_Windowing.cpp
  .\src\Rack\dep\glfw\src\win32_window.c

I assume it's one of the juce files as the Zoom gesture is functioning correctly, it's the other gestures that are unimplemented. Two-finger drag is correctly being recognized (in that nothing funky happens) but it's just doing nothing because there's no implementation mapping that to scrolling left-right or up-down.

dromer commented 1 year ago

You can fully ignore the carla and plugins dirs for this. It's either dgl or glfw, but @falkTX would better know which one is relevant here.

falkTX commented 1 year ago

the code to look into is .\dpf\dgl\src\pugl-upstream\src\win.c, ignore all the rest