Topic: Help Controlling ADI-2 DAC FS Volume with keyboard volume wheel.

Hi Everyone, I've been trying to setup so that my keyboard's volume wheel adjusts the ADI-@ DAC's volume in real time. The wheel currently controls the system volume by default and I'd like to bypass that so it adjusts the ADI-2 DAC's volume level instead. Has anyone successfully done this? Do you have recommended settings, scripts, or a specific workflow? I'm currently on a Mac and tried a Better Touch Tool/MIDI but can't seem to figure out what works well with the ADI-2 Remote.

Any guidance or tips would be great appreciated. Thanks!

2 (edited by maggie33 2025-02-24 07:17:16)

Re: Help Controlling ADI-2 DAC FS Volume with keyboard volume wheel.

Has anyone successfully done this? Do you have recommended settings, scripts, or a specific workflow?

No, as I do not own an ADI. But afaik, it should not be too complicated at all.


Did you look into the ADI2 remote manual?
https://rme-audio.de/downloads/adi2remote_e.pdf

If you read carefully, you will find a link to "The MIDI protocol used by the ADI-2 Remote is available for downloaded as an Excel document:..."

Ok, its an .ods file. But anyhow, after conversion to xls - there is everything you need, good documented how the ADI-2 Remote App communicates with the unit. Probably it would be even possible to build "your own" ADI Remote App with this information. wink

Putting this together, according your use case - it should not be too complicated to write a script, which listens to your keyboard's volume wheel inputs and translates/sends the values to midi sysex commands which are sent to your unit.

Thats just an idea...

“Do It For Her”
My Gear: Bontempi Magic light Keyboard

Re: Help Controlling ADI-2 DAC FS Volume with keyboard volume wheel.

Yes, I've tried this MIDI protocol but I can't get a simple muting/unmuting command to work with sendmidi

sendmidi dev "ADI-2 DAC (59651073) Port 1" syx "F0 00 20 0D 71 02 0F 00 01 F7"

Won't trigger anything to output

maggie33 wrote:

Has anyone successfully done this? Do you have recommended settings, scripts, or a specific workflow?

No, as I do not own an ADI. But afaik, it should not be too complicated at all.


Did you look into the ADI2 remote manual?
https://rme-audio.de/downloads/adi2remote_e.pdf

If you read carefully, you will find a link to "The MIDI protocol used by the ADI-2 Remote is available for downloaded as an Excel document:..."

Ok, its an .ods file. But anyhow, after conversion to xls - there is everything you need, good documented how the ADI-2 Remote App communicates with the unit. Probably it would be even possible to build "your own" ADI Remote App with this information. wink

Putting this together, according your use case - it should not be too complicated to write a script, which listens to your keyboard's volume wheel inputs and translates/sends the values to midi sysex commands which are sent to your unit.

Thats just an idea...

4 (edited by maggie33 2025-02-24 09:07:35)

Re: Help Controlling ADI-2 DAC FS Volume with keyboard volume wheel.

Cool! You seem to know what we are talking about smile

Thus its hard as i dont own a DAC, I'll do my best to help out. But I probobly need some time time to dig in deeper into this.

But first of all, it would be helpful to know which exact model you own?

Just to be sure you are trying to communicate with the correct DeviceID -  according the doc:
0x71    ADI-2 DAC
0x72    ADI-2 Pro
0x73    ADI-2/4 Pro SE

Additionally, maybe you have to send a valid command first (see examples tab)?
sth like F0 00 20 0D 71 03 09 F7 (if yours is a "ADI-2 DAC") ?
Where
71 = your device ID
03 = Request to device
09 = all Settings (without EQ Presets and Setup-Names)

Then you should see a Continously received status...


Do you see sth coming from the unit (f.ex via a proper receivemidi in second terminal)?
Maybe https://www.snoize.com/MIDIMonitor/ is easier for monitoring MIDI traffic, too...

“Do It For Her”
My Gear: Bontempi Magic light Keyboard

Re: Help Controlling ADI-2 DAC FS Volume with keyboard volume wheel.

Thanks, I own the ADI-2 DAC. I've tried the command and downlooaded MIDI Monitor and doesn't seem like DAC is actually set up to accept incoming MIDI. The only thing I found researching through the forums is with Roon (https://community.roonlabs.com/t/rooadi … acs/258291) which I don't use.

Re: Help Controlling ADI-2 DAC FS Volume with keyboard volume wheel.

pbj wrote:

Thanks, I own the ADI-2 DAC. I've tried the command and downlooaded MIDI Monitor and doesn't seem like DAC is actually set up to accept incoming MIDI. ...

What firmware version is installed in your ADI-2 DAC? (FPGA 81, DSP 62 ?)
Does the ADI-2 Series Remote for macOS connect and work?

Ralf
(ADI-2 Pro FS with ThinkPad Yoga L13, Dynaudio Focus 600 XD or Focal Clear — and a lot of Jazz)

Re: Help Controlling ADI-2 DAC FS Volume with keyboard volume wheel.

rawac wrote:
pbj wrote:

Thanks, I own the ADI-2 DAC. I've tried the command and downlooaded MIDI Monitor and doesn't seem like DAC is actually set up to accept incoming MIDI. ...

What firmware version is installed in your ADI-2 DAC? (FPGA 81, DSP 62 ?)
Does the ADI-2 Series Remote for macOS connect and work?

Yes I have 81/62, the ADI-2 Remote App connects and works. However, it is all controlled via mouse controls, it doesn't support keyboard shortcuts. Therefore I'm trying to rely on MIDI but I think it's somehow disabled or unsupported for volume control.

Re: Help Controlling ADI-2 DAC FS Volume with keyboard volume wheel.

Make sure Sysex is not disabled in the Midi send app

M1-Tahoe, Madiface Pro, Digiface USB, Babyface silver and blue

Re: Help Controlling ADI-2 DAC FS Volume with keyboard volume wheel.

waedi wrote:

Make sure Sysex is not disabled in the Midi send app

It's sending SysEx messages but not reacting to incoming SysEx commands. I don't see a SysEx on/off toggle in the ADI-2 Remote app nor the DAC itself

Re: Help Controlling ADI-2 DAC FS Volume with keyboard volume wheel.

I mean the app you use to send midi commands to the ADI-2 remote.

M1-Tahoe, Madiface Pro, Digiface USB, Babyface silver and blue

11 (edited by maggie33 2025-02-25 08:26:47)

Re: Help Controlling ADI-2 DAC FS Volume with keyboard volume wheel.

@waedi

waedi wrote:

Make sure Sysex is not disabled in the Midi send app

pbj uses sendmidi (with the syx parameter in his command, see his Post #3 or details below)...

waedi wrote:

I mean the app you use to send midi commands to the ADI-2 remote.

We do not want to send midi sysex messages to the Remote App. It is not involved in our scenario.
We want to communicate with the ADI-2 DAC directly...

(correct me if I'm misunderstood sth)

-----


@pbj

i just saw you try to send sth like this:

sendmidi dev "ADI-2 DAC (59651073) Port 1" syx "F0 00 20 0D 71 02 0F 00 01 F7"

this will not work as  intended.
In fact, you send F0 00 F7 (I verified this via MIDI Monitor).

a "sendmidi -h" tells me this:

...
dec                  Interpret the next numbers as decimals by default
hex                  Interpret the next numbers as hexadecimals by default
Commands:
...
  syx   bytes          Send SysEx from a series of bytes (no F0/F7 delimiters)
...

By default, numbers are interpreted in the decimal system, this can be changed
to hexadecimal by sending the "hex" command.


So, try this instead your command above (no surrounding „“, no F0/F7 status bytes but add the hex parameter to inform sendmidi that the following bytes should be interpreted as hex bytes):

sendmidi dev "ADI-2 DAC (59651073) Port 1" syx hex 00 20 0D 71 02 0F 00 01


Additionally, looking into the sheet, and putting things together regarding your unit, make a test:

1) sendmidi dev "ADI-2 DAC (59651073) Port 1" syx hex 00 20 0D 71 03 09 (=Request all settings from ADI-2/4 Pro - or sayin "Hello!" to the unit)

2) then you should receive a big bunch of messages (all settings)

3) then you should continuously receive the status from ADI-2/4 Pro (after first valid command) which looks like this: F0 00 20 0D 71 07 11 30 7E 08 00 00 00 02 04 01 11 00 F7

4) Now, try to set Volume of Phones 3/4 to -10dB (address 9, parameter index 12, value -100) via:
sendmidi dev "ADI-2 DAC (59651073) Port 1" syx hex 00 20 0D 71 02 4B 1F 1C

5) Or try to set Input-Range to 13dBu (address 0, parameter index 1, value 2) via
sendmidi dev "ADI-2 DAC (59651073) Port 1" syx hex 00 20 0D 71 02 00 20 02


I am pretty sure this should work now (according to Ralf's really good documentation).

PS: I did not verify if ADI-2 DAC really has Phones3/4 and the Input Ranges till now. But I would bet sth that this should work...

“Do It For Her”
My Gear: Bontempi Magic light Keyboard

12

Re: Help Controlling ADI-2 DAC FS Volume with keyboard volume wheel.

Thanks for the help, I feel like we're close!

sendmidi dev "ADI-2 DAC (59651073) Port 1" syx hex 00 20 0D 71 02 0F 00 01

^ This isn't giving me any messages in MIDI Monitor however the following does:

sendmidi dev "ADI-2 DAC (59651073) Port 1" syx hex 00 20 0D 71 03 09

It gives me bunch of responses starting with F0 00 20 0D 71 01 ...

I tried the below commands but not changing levels nor giving any messages through MIDI

sendmidi dev "ADI-2 DAC (59651073) Port 1" syx hex 00 20 0D 71 02 4B 1F 1C
sendmidi dev "ADI-2 DAC (59651073) Port 1" syx hex 00 20 0D 71 02 00 20 02

maggie33 wrote:

@waedi

waedi wrote:

Make sure Sysex is not disabled in the Midi send app

pbj uses sendmidi (with the syx parameter in his command, see his Post #3 or details below)...

waedi wrote:

I mean the app you use to send midi commands to the ADI-2 remote.

We do not want to send midi sysex messages to the Remote App. It is not involved in our scenario.
We want to communicate with the ADI-2 DAC directly...

(correct me if I'm misunderstood sth)

-----


@pbj

i just saw you try to send sth like this:

sendmidi dev "ADI-2 DAC (59651073) Port 1" syx "F0 00 20 0D 71 02 0F 00 01 F7"

this will not work as  intended.
In fact, you send F0 00 F7 (I verified this via MIDI Monitor).

a "sendmidi -h" tells me this:

...
dec                  Interpret the next numbers as decimals by default
hex                  Interpret the next numbers as hexadecimals by default
Commands:
...
  syx   bytes          Send SysEx from a series of bytes (no F0/F7 delimiters)
...

By default, numbers are interpreted in the decimal system, this can be changed
to hexadecimal by sending the "hex" command.


So, try this instead your command above (no surrounding „“, no F0/F7 status bytes but add the hex parameter to inform sendmidi that the following bytes should be interpreted as hex bytes):

sendmidi dev "ADI-2 DAC (59651073) Port 1" syx hex 00 20 0D 71 02 0F 00 01


Additionally, looking into the sheet, and putting things together regarding your unit, make a test:

1) sendmidi dev "ADI-2 DAC (59651073) Port 1" syx hex 00 20 0D 71 03 09 (=Request all settings from ADI-2/4 Pro - or sayin "Hello!" to the unit)

2) then you should receive a big bunch of messages (all settings)

3) then you should continuously receive the status from ADI-2/4 Pro (after first valid command) which looks like this: F0 00 20 0D 71 07 11 30 7E 08 00 00 00 02 04 01 11 00 F7

4) Now, try to set Volume of Phones 3/4 to -10dB (address 9, parameter index 12, value -100) via:
sendmidi dev "ADI-2 DAC (59651073) Port 1" syx hex 00 20 0D 71 02 4B 1F 1C

5) Or try to set Input-Range to 13dBu (address 0, parameter index 1, value 2) via
sendmidi dev "ADI-2 DAC (59651073) Port 1" syx hex 00 20 0D 71 02 00 20 02


I am pretty sure this should work now (according to Ralf's really good documentation).

PS: I did not verify if ADI-2 DAC really has Phones3/4 and the Input Ranges till now. But I would bet sth that this should work...

13 (edited by maggie33 2025-02-26 07:47:45)

Re: Help Controlling ADI-2 DAC FS Volume with keyboard volume wheel.

00 20 0D 71 02 0F 00 01

i didnt look what this exactly does...

sendmidi dev "ADI-2 DAC (59651073) Port 1" syx hex 00 20 0D 71 03 09
It gives me bunch of responses starting with F0 00 20 0D 71 01 ...
I tried the below commands but not changing levels nor giving any messages through MIDI
sendmidi dev "ADI-2 DAC (59651073) Port 1" syx hex 00 20 0D 71 02 4B 1F 1C
sendmidi dev "ADI-2 DAC (59651073) Port 1" syx hex 00 20 0D 71 02 00 20 02

Is the ADI-2 Remote app running while you do this? (should probably not)

A midi monitor screenshot or detailed midi log what you send and what you receive would help to understand what happens...

Edit: Verify you have set midi monitor like this:
https://i.ibb.co/Rk2vnSHf/midimonitor-settings.gif

“Do It For Her”
My Gear: Bontempi Magic light Keyboard

Re: Help Controlling ADI-2 DAC FS Volume with keyboard volume wheel.

did anyone figure this out?
im also looking to control adi-2 dac volume level with macOS volume keys...

Re: Help Controlling ADI-2 DAC FS Volume with keyboard volume wheel.

Ok, thanks to this other thread: https://forum.rme-audio.de/viewtopic.php?id=38970
– I finally got it working. macOS media keys on F10/F11/F12 are controlling mute/volume down/volume up on my adi-2 dac now.
Next to some adaptation to the script using sendmidi on macOS it needed the Hammerspoon app to get access to the keys.
It is perfectly in sync with the hardware now and the keys maintain their original function when used with other Audio interfaces.
just the the adi-2 remote app does not update its volume dial when I change it through the my keyboard and the big dB overlay is not displayed.

Re: Help Controlling ADI-2 DAC FS Volume with keyboard volume wheel.

Hi,I made a small Python app to control the ADI-2 hardware volume directly from Windows volume keys/wheels via SysEx.

You can find it here:
https://codeberg.org/Epocha/rme-volume-controller

This is how the OSD looks:
https://codeberg.org/Epocha/rme-volume-controller/media/branch/main/osd_preview.png

Quick features:

  • Direct SysEx: Volume control for Line/Phones/IEM.

  • Win32 Hotkeys: Works with standard keyboard volume keys.

  • Sync: Reads current volume from DAC on startup.

  • Toggles: Double-click Mute to switch Line Out - Phones.

  • GUI: Simple settings for dB steps, colors, and hotkeys.

You'll just need Python and the libs from requirements.txt. Hope it helps someone.

Re: Help Controlling ADI-2 DAC FS Volume with keyboard volume wheel.

Epocha wrote:

Hi,I made a small Python app to control the ADI-2 hardware volume directly from Windows volume keys/wheels via SysEx.

Great effort and potentially a very useful tool.

However, while using it with my ADI-2 Pro (of course, I have selected the correct device model in the app's settings), I encountered a couple of broken functions.

1) The "Sync from DAC" command does not sync the active output and the current volume level. The "reconnect" command, however, does re-read the current volume.

2) The Line/Phone output switch does not work (regardless of how I configure the "Toggle Ph./Line", "Mute Line vs. Phones", "Dual Phones", and "Balanced Ph. Mode" settings).

Also, it's worth noting that the ADI-2 Pro has two independent headphone outputs and also has quite a few toggle settings combinations. I think that the toggle function in your app should work identical to the corresponding "Toggle" control of the RME's ADI-2 Remote app, and specific toggle behavior should be set by the user using the device settings. This way, I think, we can avoid overloading your app with settings in the UI and with their handling in the code.

Might be of help to look at this post: https://forum.rme-audio.de/viewtopic.ph … 72#p212972

I hope my feedback is useful. Thank you!

Fireface UCX II + ARC USB > ADI-2 Pro FS R BE > Neumann KH 750 DSP + MA 1 > KH 120 A

Re: Help Controlling ADI-2 DAC FS Volume with keyboard volume wheel.

Thanks for the feedback and for the link, it was very helpful. I’m developing this on an ADI-2 DAC FS, so I didn't account for the Pro model's dual phone outputs and different toggle logic.

I’ve just released Version 1.1.0 which addresses the points you mentioned. Using SysEx Index 63 for the toggle command.

Summary of changes in v1.1.0:

  • Universal Toggle (Index 63): Replaced my previous logic with the native toggle command. It should now follow your device settings.

  • Fixed Sync: Improved the polling to fetch the correct active output and volume levels on startup.

  • Pro Profiles: Added separate configuration profiles for Phones 1/2 and 3/4.

  • Real-Time Detection: The app now polls the status stream (0x07), so it detects output changes made via the physical remote.

  • Instance Lock: Added a Windows Mutex to prevent MIDI port conflicts from multiple instances.

  • Extended Debugging: I’ve expanded the debug mode to track raw SysEx data.

Since I don't have a Pro model to test on, if you still encounter any issues, please run it in Debug Mode and send me the log. It would be a great help for debugging the Pro-specific behavior.

19 (edited by unpluggged 2026-04-02 19:57:21)

Re: Help Controlling ADI-2 DAC FS Volume with keyboard volume wheel.

Epocha wrote:

Thanks for the feedback and for the link, it was very helpful. I’m developing this on an ADI-2 DAC FS, so I didn't account for the Pro model's dual phone outputs and different toggle logic.

I’ve just released Version 1.1.0 which addresses the points you mentioned. Using SysEx Index 63 for the toggle command.

<...>

Since I don't have a Pro model to test on, if you still encounter any issues, please run it in Debug Mode and send me the log. It would be a great help for debugging the Pro-specific behavior.

Thank you! I tried this out quickly. The feedback when I adjust the volume using other means works (albeit with a slight delay when I do it via the RME's Remote app). But there still are some rough edges.

1) The output toggle command works as intended, by switching the active output in accordance with the unit's settings. But your app assumes that the output switches in a fixed sequence "Line Out → Ph 1/2 → Ph 3/4", which is not how most of us have this set up. I have it toggle between Line and Ph 3/4, and this is the most common arrangement. I suggest to relabel the menu entry to "Toggle output" and each time when it's activated to poll the device to determine the currently active output. Otherwise it's a mess: every time I toggle the active output, the app assumes that a different output is active, and controls one that is actually inactive. Also, when I toggle the output manually, the app does not detect this.

1a) When either of the "Sync from DAC" or "Reconnect" functions are invoked, the app does not get the currently active output, at least not until I change the volume on the unit itself.

2) The app sometimes does not capture the media keys events, and Windows (I use Windows 10 Pro 22H2) shows the system volume control OSD, though I have not yet figured out the pattern here.

Anyway, I appreciate the amount work you've put into this piece of software and hope it won't be too time consuming for you to polish it up wink

Fireface UCX II + ARC USB > ADI-2 Pro FS R BE > Neumann KH 750 DSP + MA 1 > KH 120 A

20 (edited by Epocha 2026-04-03 02:59:09)

Re: Help Controlling ADI-2 DAC FS Volume with keyboard volume wheel.

Thanks for the testing and feedback.

1) Toggle logic & manual output switching
You are right. The hardcoded sequence was a bad approach. I have renamed the menu item to simply "Toggle Output". It now sends a universal Remap Trigger (Index 63) to the DAC, letting the unit switch outputs based on your personal hardware settings.
Furthermore, the app now passively listens to the DAC's continuous Mute states (0x01). This means if you switch the output manually on the device or via the physical remote, the app detects the new active output instantly and reroutes the OSD/controls without needing you to touch the volume knob.

1a) Sync and Reconnect functions
Fixed. Both functions now perform a proper blocking read during startup or manual sync. The app actively fetches not just the volume arrays, but also reads the current Mute states and continuous stream to precisely determine the active output before updating the UI.

2) Media keys periodically unhooking (Windows OSD appearing)
Great catch. This was actually a symptom of how the older version of the app polled the DAC. The aggressive background USB polling was occasionally choking the Python thread. Windows has a strict timeout for keyboard hooks. If the app takes too long to respond because it's busy reading a heavy USB buffer, Windows bypasses the app and triggers the default system volume OSD.
I completely removed the active background polling and switched to a zero-CPU passive listening thread. This eliminates the thread starvation, so media keys should be highly reliable now.

Summary of the other major changes in this update:

  • Zero-CPU Architecture: Replaced the heavy polling loop with a passive listening thread. The app now consumes 0% CPU while idle and only reacts when the DAC actively sends data.

  • Audio Stutter (DPC Latency) Fix: Stopped flooding the USB bus with continuous REQ_ALL requests, completely preventing audio pops/stutters during playback.

  • Reload Hotkeys: Added a tray menu button to instantly force reclaim media keys from apps that sometimes aggressively steal them (like Tidal or Chrome) without restarting the app.

  • Safe UI Threading: Decoupled the Tray Icon image generation from the critical MIDI reading thread so rapid volume changes no longer cause lag.

Re: Help Controlling ADI-2 DAC FS Volume with keyboard volume wheel.

Hi, another updates. This one focuses on connection reliability and a new feature for those with a Flirc USB.

USB Device Detection (event-driven)
The app no longer relies solely on MIDI port polling to detect when the DAC is plugged/unplugged. It now uses Win32 RegisterDeviceNotification to receive instant USB events. You can optionally set your DAC's VID/PID in Settings (USB Device Detection section) so the app only reacts to your specific device not every random USB stick. If the Win32 registration fails for any reason, it falls back to the old polling method automatically.

MIDI Port Monitoring (standby detection)
Separate from USB detection, a lightweight background thread now watches whether the MIDI port is still present in the system. This catches the case where you power off the DAC via its front button or remote the USB device stays on the bus but the MIDI port disappears. When it reappears (DAC wakes up), the app reconnects and re-syncs automatically.

Reconnect stability
Previous versions occasionally detected the wrong output after reconnect. Root cause: the DAC sends a burst of Setup Name packets (0x05) right after boot, and the app was trying to sync before the firmware was fully ready. Fixed by adding proper init delays after connect and increasing the SysEx response timeout. Also fixed a race condition where both the USB watcher and MIDI monitor could trigger a reconnect simultaneously they now share a lock so only one runs.

Flirc IR Power-On
If you have a Flirc USB IR blaster, you can now power on the DAC by holding the Mute key. The app uses a low-level keyboard hook (WH_KEYBOARD_LL) to detect the hold gesture, so it works even when the DAC is offline and the volume keys are released back to Windows. Setup is simple capture the IR timing from your RME remote in Flirc's Device Log, paste it into Settings, done.

One limitation: Flirc's sendir command can only transmit short IR bursts (buffer limit of ~8 NEC frames). This is enough to power ON the DAC (short press), but not enough for power OFF (which requires a continuous long-press signal). So this is power-on only use the remote or front button to turn it off.

The app also saves and restores the Windows mute state during the hold gesture. Since the Mute key passes through to Windows while the DAC is offline, holding it would normally mute your system audio. The app snapshots the mute state on key-down and restores it after the IR signal fires, so your speakers/headphones stay unaffected.

Other fixes
- Shutdown no longer hangs force exit with 3s timeout if pystray blocks
- OSD no longer crashes on shutdown (Tk thread safety) 
- 64-bit Python compatibility: fixed ctypes overflows in CallNextHookEx, CreateWindowExW, DefWindowProcW
- Settings scroll wheel no longer leaks to other windows
- "Sync from DAC" menu item actually works now (was broken by an extra lambda wrapper)

Re: Help Controlling ADI-2 DAC FS Volume with keyboard volume wheel.

Epocha wrote:

Hi, another updates.

Great!

That being said, the applet still does not correctly detect the active output on the ADI-2 Pro. Also, when I toggle the output with the hotkey, it also activates the Auto Dark mode for some reason.

Fireface UCX II + ARC USB > ADI-2 Pro FS R BE > Neumann KH 750 DSP + MA 1 > KH 120 A

Re: Help Controlling ADI-2 DAC FS Volume with keyboard volume wheel.

Thanks for the report. I've pushed v1.2.2 with a reworked output detection that should fix the ADI-2 Pro issue.

What changed

The previous version was comparing the raw 0x07 status byte as a whole value (0x04 = Line Out, 0x05 = Phones). This happened to work on the ADI-2 DAC rev 1 by coincidence, but it's actually a bitfield:

- Bit 0-1: active output (0 = Line Out, 1 = Phones 1/2)
- Bit 2-3: device revision
- Bit 4-5: active line output 
- Bit 6: Phones 3/4 active

The app now properly masks the individual bits, so it should work across all hardware revisions and all three models (DAC, Pro, Pro SE).

I also fixed the sync timing — the app now waits for the 0x07 status packet before deciding which output is active, instead of guessing from mute states (which are both UNMUTED in Toggle mode).

What I need from you

1. Update to the latest version from the repo
2. Enable Debug logging in Settings
3. Start the app, do a few output toggles
4. Send me the rme_volume.log file

In the log, the key lines to look at are:

status 0x07: raw=0x?? [active=? rev=? line=? ph34=?] full_packet=...
0x07 resolve: model=ADI-2 Pro active_bits=? ph34=? -> ???

This tells me exactly what status byte your Pro sends and how the app interprets it. If the output is detected wrong, I can see from these lines which bit combination your ADI uses.

Also look for lines like:

Pro output param: Toggle Phones/Line (idx=10) val=?
Pro output param: Mute Line vs PH12 (idx=11) val=?
Pro output param: Mute Line vs PH34 (idx=12) val=?
sync mute: Line Out = MUTED/UNMUTED
sync mute: Phones 1/2 = MUTED/UNMUTED
sync mute: Phones 3/4 = MUTED/UNMUTED

These show your Pro's toggle mode and mute crossover configuration, which helps me understand the full picture.

About the AutoDark issue

"Wake display on output toggle" briefly disables AutoDark to wake the DAC screen when you switch outputs. If you don't want this behavior, go to Settings and uncheck Wake display on output toggle.

Re: Help Controlling ADI-2 DAC FS Volume with keyboard volume wheel.

Epocha wrote:

Thanks for the report. I've pushed v1.2.2 with a reworked output detection that should fix the ADI-2 Pro issue.

What changed

The previous version was comparing the raw 0x07 status byte as a whole value (0x04 = Line Out, 0x05 = Phones). This happened to work on the ADI-2 DAC rev 1 by coincidence, but it's actually a bitfield:

- Bit 0-1: active output (0 = Line Out, 1 = Phones 1/2)
- Bit 2-3: device revision
- Bit 4-5: active line output 
- Bit 6: Phones 3/4 active

The app now properly masks the individual bits, so it should work across all hardware revisions and all three models (DAC, Pro, Pro SE).

I also fixed the sync timing — the app now waits for the 0x07 status packet before deciding which output is active, instead of guessing from mute states (which are both UNMUTED in Toggle mode).

What I need from you

1. Update to the latest version from the repo
2. Enable Debug logging in Settings
3. Start the app, do a few output toggles
4. Send me the rme_volume.log file

In the log, the key lines to look at are:

status 0x07: raw=0x?? [active=? rev=? line=? ph34=?] full_packet=...
0x07 resolve: model=ADI-2 Pro active_bits=? ph34=? -> ???

This tells me exactly what status byte your Pro sends and how the app interprets it. If the output is detected wrong, I can see from these lines which bit combination your ADI uses.

Also look for lines like:

Pro output param: Toggle Phones/Line (idx=10) val=?
Pro output param: Mute Line vs PH12 (idx=11) val=?
Pro output param: Mute Line vs PH34 (idx=12) val=?
sync mute: Line Out = MUTED/UNMUTED
sync mute: Phones 1/2 = MUTED/UNMUTED
sync mute: Phones 3/4 = MUTED/UNMUTED

These show your Pro's toggle mode and mute crossover configuration, which helps me understand the full picture.

It looks like the mask format for the status byte 0x07 is a bit off. As far as I see, on output toggle the unit alternates between 0x15 and 0x05 status, but the app in both cases interprets this as Ph. 1/2 being activated, which is false. Also the app does not correctly detect the active output on startup nor on "Sync from DAC" command (which it did before), instead showing the same Ph. 1/2 output as active. I think it has something to do with bit 0 being set in both cases, so it might be not the correct value/format for the ADI-2 Pro...

Here is the log: https://pastebin.com/65sJtsWq

About the AutoDark issue

"Wake display on output toggle" briefly disables AutoDark to wake the DAC screen when you switch outputs. If you don't want this behavior, go to Settings and uncheck Wake display on output toggle.

No, I do not use Auto Dark at all, but when I toggle the output via the app, it gets activated. I have to reset it via the remote or the RME's ADI-2 Remote app.

Fireface UCX II + ARC USB > ADI-2 Pro FS R BE > Neumann KH 750 DSP + MA 1 > KH 120 A

25 (edited by stfn 2026-04-10 00:24:22)

Re: Help Controlling ADI-2 DAC FS Volume with keyboard volume wheel.

Thanks for your effort. I look forward to trying it out

My only volume knob is on my Stream Deck, would I be able to map this to it?

Re: Help Controlling ADI-2 DAC FS Volume with keyboard volume wheel.

unpluggged wrote:

It looks like the mask format for the status byte 0x07 is a bit off. As far as I see, on output toggle the unit alternates between 0x15 and 0x05 status, but the app in both cases interprets this as Ph. 1/2 being activated, which is false. Also the app does not correctly detect the active output on startup nor on "Sync from DAC" command (which it did before), instead showing the same Ph. 1/2 output as active. I think it has something to do with bit 0 being set in both cases, so it might be not the correct value/format for the ADI-2 Pro...

Thanks for the log.It was exactly what I needed.

Root cause found

Your Pro sends 0x15 (Line Out) and 0x05 (Phones) on toggle. The difference is in bit 4 (line_active), which I now use for Pro/SE models instead of bit 0-1.

But there was a second problem: when line=0, I was defaulting to "Phones 1/2". Your toggle config is idx=10 val=2 (Toggle Ph 3/4), so it should be "Phones 3/4". The 0x07 bit 6 (ph34) that should indicate this is always 0 on your unit in toggle mode so the bitfield alone isn't enough.

Fix
The app now reads your toggle configuration (idx=10) during sync and uses it to determine which phones output is the toggle partner:
- line=1 → Line Out
- line=0 + toggle=1 → Phones 1/2
- line=0 + toggle=2 → Phones 3/4

AutoDark
Also fixed. The app was always turning AutoDark ON after the wake pulse. Now it reads your AutoDark state during sync (idx=35 val=0 = OFF in your log) and skips the wake display entirely your display is always on, nothing to wake.

Please test

1. Update from the repo
2. Keep Debug logging ON
3. Try these scenarios:
   - Start the app → check if correct output is shown
   - Toggle via hotkey a few times → check if it alternates correctly
   - Toggle via physical remote/device → check if the app detects it
   - Check that AutoDark is no longer activated on toggle
4. Send me the log if anything is off

The key log line to verify is:

0x07 resolve: model=ADI-2 Pro active_bits=? line=? ph34=? toggle_cfg=2 -> Phones 3/4

If you have time, I'd also appreciate one extra test: physically switch to each of your three outputs (Line Out, Phones 1/2, Phones 3/4) one by one and note the status 0x07: raw=0x?? value for each. This would give me the complete mapping and help verify the detection for all possible states.

Re: Help Controlling ADI-2 DAC FS Volume with keyboard volume wheel.

stfn wrote:

Thanks for your effort. I look forward to trying it out

My only volume knob is on my Stream Deck, would I be able to map this to it?

It should work out of the box if your Stream Deck sends standard volume key events (VK_VOLUME_UP/DOWN/MUTE).That's the default behavior for volume controls. The app intercepts those via Win32 RegisterHotKey.
If your Stream Deck sends different key codes, you can remap them in Settings - Hotkeys (just set the Windows VK codes to match whatever keys your Stream Deck sends).
The only case where it wouldn't work is if your Stream Deck plugin controls volume through the Windows audio API directly rather than emulating keypresses. In that case, you'd need to reconfigure the Stream Deck to send keyboard events instead.

28 (edited by unpluggged 2026-04-10 20:17:38)

Re: Help Controlling ADI-2 DAC FS Volume with keyboard volume wheel.

Epocha wrote:

Root cause found

Your Pro sends 0x15 (Line Out) and 0x05 (Phones) on toggle. The difference is in bit 4 (line_active), which I now use for Pro/SE models instead of bit 0-1.

But there was a second problem: when line=0, I was defaulting to "Phones 1/2". Your toggle config is idx=10 val=2 (Toggle Ph 3/4), so it should be "Phones 3/4". The 0x07 bit 6 (ph34) that should indicate this is always 0 on your unit in toggle mode so the bitfield alone isn't enough.

Fix
The app now reads your toggle configuration (idx=10) during sync and uses it to determine which phones output is the toggle partner:
- line=1 → Line Out
- line=0 + toggle=1 → Phones 1/2
- line=0 + toggle=2 → Phones 3/4

Looks it's more complicated than that; see below.

AutoDark
Also fixed. The app was always turning AutoDark ON after the wake pulse. Now it reads your AutoDark state during sync (idx=35 val=0 = OFF in your log) and skips the wake display entirely your display is always on, nothing to wake.

Confirmed.

Please test

1. Update from the repo
2. Keep Debug logging ON
3. Try these scenarios:
   - Start the app → check if correct output is shown
   - Toggle via hotkey a few times → check if it alternates correctly
   - Toggle via physical remote/device → check if the app detects it
   - Check that AutoDark is no longer activated on toggle
4. Send me the log if anything is off

The key log line to verify is:

0x07 resolve: model=ADI-2 Pro active_bits=? line=? ph34=? toggle_cfg=2 -> Phones 3/4

If you have time, I'd also appreciate one extra test: physically switch to each of your three outputs (Line Out, Phones 1/2, Phones 3/4) one by one and note the status 0x07: raw=0x?? value for each. This would give me the complete mapping and help verify the detection for all possible states.

Now it detects correctly when Line Out 1/2 is activated, but does not detect the Ph. 3/4 as the active output if I have Toggle Ph/Line option set to "3/4" or "1/2+3/4" — it shows that the active output is Ph 1/2 then.

Now if I set the Toggle Ph/Line option to "All Plugged", then the app detects Ph 3/4 as the active output. If I then plug another headphone to Ph 1/2, and the "Dual Phone Mode" is enabled, the unit then cycles between all three outputs and the app detects this correctly. What is weird enough, is that when I plug headphones in both outputs and have the Toggle Ph/Line option set to "1/2+3/4", it then shows strictly the output 3/4 as active (when actually both phone outputs are active at the same time, each with its own volume setting).

Here is the log, hope you'd be able to figure it out smile

Fireface UCX II + ARC USB > ADI-2 Pro FS R BE > Neumann KH 750 DSP + MA 1 > KH 120 A

Re: Help Controlling ADI-2 DAC FS Volume with keyboard volume wheel.

Epocha wrote:
stfn wrote:

Thanks for your effort. I look forward to trying it out

My only volume knob is on my Stream Deck, would I be able to map this to it?

It should work out of the box if your Stream Deck sends standard volume key events (VK_VOLUME_UP/DOWN/MUTE).That's the default behavior for volume controls. The app intercepts those via Win32 RegisterHotKey.
If your Stream Deck sends different key codes, you can remap them in Settings - Hotkeys (just set the Windows VK codes to match whatever keys your Stream Deck sends).
The only case where it wouldn't work is if your Stream Deck plugin controls volume through the Windows audio API directly rather than emulating keypresses. In that case, you'd need to reconfigure the Stream Deck to send keyboard events instead.

Thanks. Found a plugin that hooks into the volume keys like you mentioned (not all of them did properly apparently) but now it works and its great. It's no longer an absolute pain to volume change in Roon too. Really appreciate ur effort.

Re: Help Controlling ADI-2 DAC FS Volume with keyboard volume wheel.

unpluggged wrote:

Now it detects correctly when Line Out 1/2 is activated, but does not detect the Ph. 3/4 as the active output if I have Toggle Ph/Line option set to "3/4" or "1/2+3/4" — it shows that the active output is Ph 1/2 then.

Now if I set the Toggle Ph/Line option to "All Plugged", then the app detects Ph 3/4 as the active output. If I then plug another headphone to Ph 1/2, and the "Dual Phone Mode" is enabled, the unit then cycles between all three outputs and the app detects this correctly. What is weird enough, is that when I plug headphones in both outputs and have the Toggle Ph/Line option set to "1/2+3/4", it then shows strictly the output 3/4 as active (when actually both phone outputs are active at the same time, each with its own volume setting).

Here is the log, hope you'd be able to figure it out smile

Sorry about the previous version mix-up, I accidentally pushed an older codebase. v1.2.4 now has the actual fix with the toggle config cache.

Changes based on your logs

- The app now reads your Toggle Phones/Line setting (idx=10) during sync and caches it. After a toggle pulse, when the Pro sends the ambiguous 0x05 status, the app uses your toggle config to determine the correct output instead of guessing.
- Added dual phones mode: when toggle is set to "1/2+3/4", volume wheel adjusts both Phones 1/2 and 3/4 simultaneously (same dB step applied to both, each keeps its own level). Mute also toggles both. OSD shows "PH 1/2+3/4".

What I need from you to nail this down:

Please test each toggle mode one by one and for each one write me which output the app detected vs which output was actually active on the device. The log lines I need to see look like this:

0x07 resolve: model=ADI-2 Pro active_bits=1 line=0 ph34=0 toggle_cfg=2 -> Phones 3/4

If the app says Phones 3/4 but the actual active output on your device is something else, write that. For example: App says Phones 3/4 but actual output is Phones 1/2.

I apologize for the back and forth on this, debugging the Pro output detection remotely is quite challenging since the Pro has significantly more toggle combinations and output routing options compared to the ADI-2 DAC I develop on. Your logs and feedback are invaluable.

Re: Help Controlling ADI-2 DAC FS Volume with keyboard volume wheel.

stfn wrote:

Thanks. Found a plugin that hooks into the volume keys like you mentioned (not all of them did properly apparently) but now it works and its great. It's no longer an absolute pain to volume change in Roon too. Really appreciate ur effort.

Glad to hear it's working. Enjoy the setup, and if you run into any issues, feel free to post here.

32 (edited by PouyouxRME Yesterday 21:58:21)

Re: Help Controlling ADI-2 DAC FS Volume with keyboard volume wheel.

Hello,

I've a DAC 2 FS, a Stream Deck and Windows 25h2.

@Epocha : your script (v1.2.4) is working fine with Stream Deck default System Volume plugin (El Gato drivers 7.4.0) which is great !

I you don't know what to code you can make your script a native Stream Deck plugin smile

Thanks for your work.

Re: Help Controlling ADI-2 DAC FS Volume with keyboard volume wheel.

PouyouxRME wrote:

Hello,

I've a DAC 2 FS, a Stream Deck and Windows 25h2.

@Epocha : your script (v1.2.4) is working fine with Stream Deck default System Volume plugin (El Gato drivers 7.4.0) which is great !

I you don't know what to code you can make your script a native Stream Deck plugin smile

Thanks for your work.

Thanks for confirming it works with the default Stream Deck plugin. A native Stream Deck plugin is an interesting idea, but it would be a completely separate project since the Stream Deck SDK uses a different architecture (Node.js/HTML). I don't own a Stream Deck myself so I wouldn't be able to develop or test it, but once the project is fully polished, anyone is welcome to use it as a foundation for building one.

34 (edited by PouyouxRME Today 10:11:27)

Re: Help Controlling ADI-2 DAC FS Volume with keyboard volume wheel.

Not everybody own a Stream Deck so the Python version has to stay alive smile

There are options to dev plugins without owning a physical Stream Deck :


Do you plan to add an autoupdate feature ? or at least a check if a new version is available option ?