It's a bit confusing. `kAudioObjectPropertyScopeOutput` set the global volume for the whole system to 1.0 on my M1, and still did not actually change volume past that. `kAudioObjectPropertyScopeGlobal` ends up affecting the stream volume. (I think "Output" in this sense refers to the output device, and "Global" refers to the stream regardless of output device.)
Could you change your patch to always use `kHALOutputParam_Volume`
This would regress per-channel support on audio devices that do support it.