Hacker News new | past | comments | ask | show | jobs | submit login

Since the user is complaining about the way Mac OS handles the audio buttons, I'm surprised that he doesn't mention the problems with HDMI.

I don't understand why the OS disables the audio controls of HDMI outputs. If I press the volume down button, I want the volume to go down. Instead, I get a "I can't let you do that" warning!

This is particularly bad if I have my headphones connected to the display (I have both my desktop and laptop connected to the same display, keyboard and mouse, being able to share the same headphones would be pretty convenient).

macOS disables the audio control of HDMI outputs because that is what the HDMI specification expects/defines.

If you think of all the devices that output via HDMI, Windows PCs are the outlier (afaik, not sure how Linux handles it) in allowing separate volume controls beyond those on the output device.

Satellite set top boxes, media streaming devices (e.g. Apple TV - I realise NVidia Shield and some Chromecast apps do have some software volume control), games consoles, and Blu-Ray players will all output a fixed audio signal, expecting the TV/AV amplifier to handle volume.

This is what HDMI CEC[1] is for, right?

The devices are supposed to coordinate on which device will output audio (TV, sound system, etc.), and they are supposed to send control signals (volume up, volume down, and mute button presses) in a channel over the HDMI connection so that whatever device is playing audio can adjust its volume.

Of course this assumes all devices involved implement CEC (which is optional) and that the implementations aren't full of bugs. But the point is HDMI does have a solution for this in theory.

CEC is how I can punch the volume control on my Samsung TV remote and the volume on my Denon AV receiver changes. (And it's not the TV remote transmitting IR to the receiver. Within the first 5-10 seconds of powering on, pushing volume up on the TV remote makes the TV try to adjust its own volume even though it's not playing audio. Then it comes to its senses and realizes it should be forwarding that via CEC.)


[1] https://en.wikipedia.org/wiki/Consumer_Electronics_Control

Whereas if you'd bought an LG TV you'd punch the volume control and nothing would happen on the Denon. Both devices claim to support CEC. With an older Sony TV, only some CEC messages worked (I think enough for a Chromecast to be able to switch the active input).

I think they forgot the "consumer" part of "consumer electronics control".

Yeah, I don't know if it's my AVR or TV's fault, but every now and then the TV spontaneously becomes unable to control the AVR. I've never been able to pin down the exact steps required, but through some combination of power cycling things, unplugging HDMI cables, and redoing setup menu stuff, it starts working again.

It really takes away from the appeal of a convenience feature if it requires periodic battles to beat the equipment into submission.

I have a Denon AVR and an LG TV and the TV controls the volume on my AVR.

I have experienced the pain of broken CEC with my previous Hisense TV though.

Linux can control volume on HDMI just fine. I guess it’s my expectation that on a desktop, I can control volume that the desktop emits, whereas with some appliance like an Apple TV or game consoles are solely built for streaming to a TV, and don’t have keyboard input etc, and for which it makes much more sense to just disable that control.

And so does Windows 10, BTW. (let you adjust HDMI vol)

It's still a really poor decision, because it doesn't extend well to having multiple sources. For example, my tv is connected both to my media computer, and to a Nintendo Switch. If the computer is active, then the volume should be around 50 on a 0-100 scale. If the Switch is active, then the volume should be around 10 to get the same level of output. I would love to have a way to tell the Switch that it should adjust the volume being sent, such that both it and the computer default to about the same volume.

The average TV owner doesn’t know the phrase “gain structure” - they are going to set the cable box at 5 and the TV at 100, and then call customer service for the TV because it sounds terrible and won’t get loud enough.

For those interested, these days in the Audio world we refer to it as “Gain Staging”

But you’re spot on. Even my techie friends struggle getting it right with audio over Discord

Then those devices are to blame. Disabling the volume control is common for all digital outputs, not just HDMI. There's an absolute scale for volume in the digital domain, so there should be no vast disparity from different devices unless they're doing something dumb.

Analog sources could vary in volume because they provided voltage across an analog input. When CD players came out, they had notoriously "hot" outputs, meaning physically higher voltage. Not so with digital connections.

Ok? The Windows way is better. It just is.

> Satellite set top boxes, media streaming devices (e.g. Apple TV - I realise NVidia Shield and some Chromecast apps do have some software volume control), games consoles, and Blu-Ray players will all output a fixed audio signal,

I genuinely think that statement might be false in more cases than it's true. Certainly in devices I've used personally, the majority have allowed you to control the output volume directly.

The nvidia shield it depends on the app. Kodi you can adjust volume in app and on the sound receiver, while Netflix just shows a message every time you hit the shield volume control. I hate the Netflix option, is my bloody hardware it should be my choice how to use it

Since you mention macOS and HDMI volume control, try Lunar[0], it has a setting to enable that.

[0]: https://lunar.fyi

>Set top boxes

Maybe that's a regional thing, but I think that all set top boxes (and DTV decoders) that I used had it's own remote with adjustable volume.

My Fire TV and my old cable box remotes both had volume controls on them, but they were programmed to emit IR signals directly to the TV.

Yeah that is really annoying.

You can install https://github.com/MonitorControl/MonitorControl with uses Display Data Channel (DDC) to let you adjust volume and brightness on external monitors. It works for my monitor at least.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact