therealmuffin / synchronator

Synchronator brings bit perfect volume control to Hi-Fi systems with Linux as source.
GNU General Public License v3.0
12 stars 3 forks source link

feature request: softer volume change #7

Closed Schorsch99 closed 6 years ago

Schorsch99 commented 7 years ago

feature request: when changing volume, ramp up or down quickly from "old" to "new" level rather than instantly switching from one value to the next.

therealmuffin commented 7 years ago

I see your point (I think). However, to know what the 'new' target volume is necessarily causes a delayed response which I don't like.

However, currently, when mimicking absolute volume control with amplifiers only having relative volume control (plus/min), I've implemented the following approach: the target volume level is continuously updated as you change the volume (target volume level as in latest volume level received from computer end) and the actual volume level at the amplifier end moves in configurable timed steps towards that target (and changes direction -up/down- as required). That prevents some amplifiers getting an overload of commands and enables a more smooth volume control.

I've been thinking about implementing that also for absolute volume control (as you are using). Would that be something that could work for you?

Schorsch99 commented 7 years ago

That would be a very nice feature and pretty much what I had in mind, provided that these "ballistics" also work for larger volume steps. Because -if my observations are correct- BubbleUPNP for example does not send continuous volume updates as you move the control. I think it only sends one update on release. But then again that assumption may be wrong, as it is based purely on observation, not on tcp tracing or debug logs.

Am 2. Mai 2017 22:10:41 MESZ schrieb Muffinman notifications@github.com:

I see your point (I think). However, to know what the 'new' target volume is necessarily causes a delayed response which I don't like.

However, currently, when mimicking absolute volume control with amplifiers only having relative volume control (plus/min), I've implemented the following approach: the target volume level is continuously updated as you change the volume (target volume level as in latest volume level received from computer end) and the actual volume level at the amplifier end moves in configurable timed steps towards that target (and changes direction -up/down- as required). That prevents some amplifiers getting an overload of commands and enables a more smooth volume control.

I've been thinking about implementing that also for absolute volume control (as you are using). Would that be something that could work for you?

-- You are receiving this because you authored the thread. Reply to this email directly or view it on GitHub: https://github.com/therealmuffin/synchronator/issues/7#issuecomment-298746945

therealmuffin commented 7 years ago

Ok, put the feature on my todo list. Will report when there is news, no time frame though.

therealmuffin commented 7 years ago

I've setup the basic implementation of this idea. For linear configuration (such as yours) this should work quite well (though it still requires a bit of testing). For amplifiers with logarithmic volume curves I still need to do some work.

You can activate this functionality by downloading/compiling the smoothvolume branch. In the config you can set in the volume section the option: timeout=100;

If still interested, let me know how it works so far.

therealmuffin commented 6 years ago

Merged smoothvolume branch with master