juce::Slider mouse wheel works in Standalone but not in VST3 inside Ableton Live

Title: juce::Slider mouse wheel works in Standalone but not in VST3 inside Ableton Live

Hi everyone,

I’m developing an audio plugin with JUCE and I have a problem with mouse wheel interaction on a custom knob.

I have a custom NeonKnob component containing a juce::Slider. The slider is configured as:

slider.setSliderStyle(
    juce::Slider::RotaryHorizontalVerticalDrag);

slider.setScrollWheelEnabled(true);

The mouse wheel works correctly when I run the plugin as a Standalone application, but when I load the same plugin as a VST3 in Ableton Live, the mouse wheel does nothing.

I also tried:

slider.setSliderStyle(juce::Slider::Rotary);

but the result is exactly the same.

I tried overriding:

void mouseWheelMove(
    const juce::MouseEvent& event,
    const juce::MouseWheelDetails& wheel) override;

in my custom component and logging the event with:

DBG("MOUSE WHEEL: " + juce::String(wheel.deltaY));

However, when the plugin is running inside Ableton Live, the callback is not triggered.

The interesting part is that the exact same plugin works correctly in Standalone mode.

I’m currently using JUCE with a VST3 plugin loaded in Ableton Live.

Could this be related to how the VST3 wrapper or the host handles MouseWheelEvents?

Is there anything specific I need to implement or configure in JUCE so that juce::Slider receives mouse wheel events correctly when running as a VST3 inside Ableton Live?

Any advice on where the mouse wheel event might be getting intercepted would be greatly appreciated.

Thanks!

A few more details would be helpful:

  • What JUCE version are you using? Have you tried the develop branch, and is the issue still present there?
  • What’s your Live version?
  • What platform are you running on, macOS/Windows?
  • If Windows, what display scaling factor are you using?
  • Do you have “Auto-scale plugin window” enabled? You can find this option in the right-click menu for the plugin/insert.
  • Have you tried any of the JUCE example plugins, e.g. the DSPModulePluginDemo? For me, the dials in that plugin respond to the mouse wheel in Live 12 on Windows 11.

Thanks. Here are some additional details that may help clarify the issue.

  • JUCE version: JUCE 9
  • Ableton Live: Live 12.3 Standard
  • Platform: Windows
  • Windows display scaling: 100%
  • Ableton Live “Auto-Scale Plugin Window”: I tested it both enabled and disabled, but it did not change the behaviour.
  • JUCE example plugins: I have not tested any of the JUCE example plugins yet.

The important detail is that the problem seems to be specific to my custom-drawn knob.

I created a custom knob component using JUCE. When I run my plugin as Standalone, the mouse wheel works correctly on my custom knob.

However, when I load the same plugin as a VST3 inside Ableton Live, the mouse wheel does not work on my custom knob.

I then tested the standard JUCE “Slider”/knob implementation as a comparison. Interestingly, the standard JUCE knob responds to the mouse wheel correctly both in Standalone and in Ableton Live.

So the behaviour is:

Custom knob: Standalone :white_check_mark: | Ableton :cross_mark:
JUCE Slider: Standalone :white_check_mark: | Ableton :white_check_mark:

This makes me think the issue may be related to something in my custom component implementation rather than a general problem with mouse wheel events in JUCE or Ableton Live.

I have also tried:

slider.setScrollWheelEnabled(true);

but it did not change the behaviour.

I have not tested the JUCE “develop” branch yet.

Could there be something specific about a custom “juce::Component” containing a “juce::Slider” that could prevent or intercept mouse wheel events when running as a VST3 inside Ableton Live?

I would appreciate any suggestions about what I should check in my custom component.