Ok, here's a newly design [output~] abstraction. If there's only a mono input on the left inlet (and nothing on the right inlet), the mono signal gets distributed to both outputs. That's something new!
I have a slider now and the control is now a quartic function instead of db as discussed. As originally, whenever we move the slider, the abstraction sends a 'pd dsp 1' message to turn the audio on in the case it was off.
I kept the same control messages as the current [output~] object, a bang message is still there to mute/unmute. A 'level' message is also still there to control the volume from an external control (but the input range is now from 0 to 1 and sets the slider).
Now, I decided to propose a whole new approach for the mute logic. It seems much more reasonable and simpler to just use a toggle button that visually shows us when it is muted or not. The patch is much simpler this way and there's no complicated logic to store the slider value, set it to zero when muted and restore to the previous value when unmuted. The slider keeps at the same position when muted, and if you move the slider when muted, no sound is output because... well.. the mute toggle is still on :)
I then added two more messages for external control 'mute' and 'unmute'.
This seems simple, better and is more versatile and seems like a good candidate for a new Vanilla [output~] abstraction that is really useful for day to day usage. See screenshot below and find the patch attached. Please give me feedback to see if I'm going in the right direction. If it is ok I will make a PR and update the documentation.
Cheers~