Volume sync


#1

I just noticed VOX isn't playing nicely with volume when I play audio over AirPlay (system selection) and tell VOX to play over "Same as System". Further testing shows that the problem also occurs using Internal Speakers output.

When using AirPlay, if I change the volume using my receiver's remote or using my Mac's volume keys, VOX synchronises its volume slider along with it. Using my Mac's volume keys does adjust the volume of the receiver too. If I use VOX's volume slider, the receiver's volume remains fixed (as well as that shown in the system). If I move the slider all the way to 100% in VOX, then music plays at the expected volume. I then adjust the volume a bit using the receiver's remote, and then it all gets screwed up because VOX lowers its own volume too. In other words, VOX should be playing music at 100% volume while I adjust the receiver's volume independently. What I get instead is VOX lowering its own audio output.

I can also verify this issue by playing the same song with VOX and then with Finder's preview. VOX's volume output is way lower.

I suppose the idea was to have VOX control the system's output volume when moving its own volume slider, but it isn't happening. It synchronises with system volume changes, though, but the net result is a combined (lower) volume (50% system volume and 50% VOX's volume =? 25% perceived volume).

VOX version: 2.7.7
OSX version: 10.11.5

Audio settings:
[Output]
System default
[x] Synchronize Sample Rate with player
[x] Obtain Exclusive Access (Hog Mode)

[Channels]
Multichannel

[Balance]
Center

[Volume Limit]
100%


#2

Thank You for Your comments!

The idea of Vox volume control on System default device is that it's not connected in any way with the device, it's internal Vox volume, in addition to device's one, as You correctly stated. That's because the device is System-wide default and we don't want to alter it's volume, as it's used by the majority of other apps at the same time, and we don't want to be changing the volume of alerts and other app sound by moving Vox volume slider.

So the idea is definitely not to control system default device with app volume slider.

On non-system default devices, it depends. If the device uses it's own volume control, Vox will try to use it. Otherwise it will default to again using it's own separate volume as in System default example.

As for Airplay case, could you please try the next: set built-in device as Your System Default in System Preferences->Audio->Output, and select Your Airplay device in Vox. This way Vox should be able to control the volume of device itself, with volume slider.

Please share Your experience with us here.


#3

I can confirm that selecting the AirPlay device in VOX while the system remains on Internal Speakers does adjust the receiver's volume when using the slider. The volume also seems to be at the right level. However, manually adjusting the receiver's volume with the remote does not sync VOX's slider.

The problem still remains that VOX will react to volume changes when using the system's default output, creating a compound volume that is lower than it should be.

As an extra test, I connected my laptop to the receiver through HDMI, and selected that output in VOX (system remains at Internal Speakers). VOX is now completely unable to adjust the receiver's volume (as expected), but it still has its own volume settings. The end result: the output is too low until I manually set the volume to 100% in VOX.

My choice so far, when given, is to disable volume synchronisation in the player and have its output at 100% (from which I expect bit-perfect playback).

Having thus an option in VOX that makes it stop responding to system volume changes as well as trying to adjust the output's volume would be ideal (at least for me). That way I could keep VOX at 100% volume (bit-perfect, I hope, and assuming VOX remembers the last setting), always using the system's output and changing the volume outside VOX (once again, without VOX responding to those changes). Let's call it a "feature request" ;)

In any case, compound (lower) volume output when using the system's output and not responding to AirPlay volume changes (when only VOX is using it), do seem like bugs to me :/


#4

Ok, I got Your point!

It's not a bug for sure, since when current device is system default no single app should control it. it's that simple. So in that case we default to having our own in-app volume parameter. If device it's not sys default -ok, do whatever You need if You can.

When Your Airplay device is system default - then system is responsible to respond on device volume changes (and I hope it does in Your case), we have no control over this then.

In case of HDMI receiver the output interface is wired so it's assumed You will use external volume control most of the time. So no volume control for wired external devices also.

And You are right, 100% volume in that case is the best mode for audio quality.

Regarding Your feature request - we were thinking about this a lot and will do more.. Your problem is that Vox doe not see volume changes from device, which is probably because device uses another yet unsupported protocol for that. We have success in Vox responding to volume events from AppleTV, for example... In that case, as soon as You switch to Airplay device, internal Vox volume becomes 100% automatically, and device volume is wired to slider.

internal volume is always 100% when You use Airplay non - system - default device. If You are able to control device volume using Vox volume slider - meant, it's "bit perfect" internally up to the device stack point.


#5

The bottomline is,

  • when using Airplay as system default, Vox does not control device volume and uses it's own "overlaid" internal volume for convenience.
  • when Airplay device used is NOT system default, Vox sets it's internal volume to 100% (by effectively bypassing internal volume routing), and tries to control device's volume and and respond to it's changes.

I hope this time it's more clear ...


#6

Discussion was added to Old Pending queue


#7

If the current device is system default, and no single app should control it, then no single app should react to volume changes either. VOX does react, and that's why the perceived volume goes down. This part does look like a bug to me.

When the system default is AirPlay, OS X does react to volume changes. If VOX is using system default in this situation, VOX's volume will get updated too. This is still the same bug (reacting to volume changes in system default).

I don't have any other AirPlay devices (such as an Apple TV), so I cannot test VOX responding to volume changes on another AirPlay capable device. What I got is a Sony A/V Receiver with AirPlay support.

When using HDMI (or SPDIF), the best choice for VOX would be to stay at 100% volume. When such a device is selected in OS X, the volume control is disabled automatically. Maybe it can be detected by VOX as well when manually chosen, so it will delegate volume control to the device, just as OS X does, and keep its output bit-perfect.

VOX not reacting to volume changes over AirPlay is a minor bug. The big one is still VOX reacting to volume changes on system default by setting its own "overlaid" internal volume to that of the system.

VOX setting its internal volume to 100% when directly playing over AirPlay is ok, and that one is working fine it seems.


#8

I just tried all over again after restarting my Mac. I had VOX use "Same as System" with Internal Speakers selected in OS X. Volume behaved as it should.

I closed VOX, turned on my A/V receiver, chose AirPlay on OS X and started VOX. Now VOX detects that it's playing over AirPlay, even when it remains in "Same as System". Now VOX starts reacting to volume changes, even though it's using its own internal volume instead of controlling that of the device. Adjusting the volume slider will not adjust the receiver's volume (even though audio is playing over AirPlay, VOX is still using "Same as System"). That's what seems to confuse VOX.

In other words: using "Same as System" when the system is using AirPlay, and the volume is adjusted (remote or OS X), VOX should not react to volume changes. It should probably ignore that the system is using AirPlay in the first place, and only care about it when the AirPlay device is manually chosen in VOX itself.


#9

Ceniza, now I've got what You are saying... sorry it took so long to grasp... I will check this and respond here...


#10

Vox surely is able to detect that it plays over Airplay even though it's set to system default. it cannot control device volume that way.

Does Vox volume bar move when You adjust volume on a device configured as system default? over mouse over it so it stays open and You can observe if it reacts.


#11

That is the problem. The volume bar in VOX moves when I adjust the device's volume, and system default is an AirPlay device.

I may have found an extra issue too: if I choose the AirPlay device in VOX, music stops playing soon after my laptop goes to sleep. This doesn't happen if AirPlay is the system default, and VOX is configured to use Same as System (but then I have the volume problem instead).

I also got problems trying to play a 24/192 track with VOX using AirPlay (the audio got all messed up), but this one I need to check again to find the right conditions. I shall post it in a new thread if I can reproduce it again.


#12

That's really interesting... I checked with AppleTV today and this problem with volume doesn't reproduce at all.. I will watch further for what can cause this...

Re: work when sleeping.
The secret behind Airplay as System default is Apple internal Airplay implementation is used in that case, while otherwise our own implementation is used. As You probably understand our solution does not have privileges and now-hows of Apple internal services. It is still possible for apps to prevent mac from sleeping but Apple strongly discourages such behaviour. For now we decided not to mess with this since user can always disable sleep if music playback is desired.

Own Airplay impl was required since El Capitan when Apple broke down the support of Airplay for third-party apps.

Re: 24/192 - should not cause any problem. Airplay unfortunately will still be 16/44, so nothing new happens to Airplay routine. However if You streamed this 24/192 file from internet or via local wireless network the data traffic over wifi in this case is substantial so could, in theory, add to Airplay stream lag/shuttering.


#13

I was sure I had posted a reply, but I don't see it.

I had offered to record a video showing the issue in action, if that's of any help. I was also wondering if it's reproducible with another AirPlay implementation, but I would need to install special software in another machine first.

I also mentioned that disabling sleep isn't a very good solution due to battery drain. Hopefully you can find the root of the problem, so you can work on a solution.

Lastly, I tried the 24/192 track again, but I wasn't able to reproduce the issue anymore. Let's call it a hiccup :)


#14

I just installed the latest version of VOX (2.8.1), and the problem still remains :(


#15

Any chance to at least have the option to force VOX not to try to control hardware volume (AirPlay in this case) neither react to volume change notifications? That way I can keep VOX at 100% volume (bit-perfect), then control the device's volume independently.


#16

+1 for being able to disable any volume control internal to the player :)


#17

Will add this proposal to next major release plan.


#18

Ceniza, I think I am too late to answer, but this is exactly the case currently - when Vox uses Airplay device volume (and the device is NOT system default), it sets it's own internal volume to 100%. So it's "bit perfect" right from the start, if You are not using "System default".