There is no volume control in a Discord call - not per person, and not overall. grep -i volume across nobilis/src/backend/discord/voice.rs, nobilis/src/audio.rs and the RPC surface returns nothing: the playback path
mixes what arrives and plays it as it came.
Discord has per-user volume because calls need it. One person joins twice as
loud as everyone else, or a stream's game audio buries the people talking over
it, and the only answers moho has are the system mixer - which moves everything
together - and leaving.
Two separate things, and the smaller one is worth having on its own:
Per user. A gain applied per SSRC before the mix. The daemon already
tracks who is speaking per participant (voice.rs:494, speakers), so the
identity a slider would attach to is already resolved.
Overall output. One gain on the playback stream, which is a smaller
change than the above and covers the common case of a call that is simply too
loud.
Related to #232 in one respect worth noting: gain applied after an echo
canceller has to be visible to it, or it will be cancelling against a reference
signal that no longer matches what came out of the speakers. Whichever of the
two is built second should account for the other.
There is no volume control in a Discord call - not per person, and not overall.
`grep -i volume` across `nobilis/src/backend/discord/voice.rs`,
`nobilis/src/audio.rs` and the RPC surface returns nothing: the playback path
mixes what arrives and plays it as it came.
Discord has per-user volume because calls need it. One person joins twice as
loud as everyone else, or a stream's game audio buries the people talking over
it, and the only answers moho has are the system mixer - which moves everything
together - and leaving.
Two separate things, and the smaller one is worth having on its own:
- **Per user.** A gain applied per SSRC before the mix. The daemon already
tracks who is speaking per participant (`voice.rs:494`, `speakers`), so the
identity a slider would attach to is already resolved.
- **Overall output.** One gain on the playback stream, which is a smaller
change than the above and covers the common case of a call that is simply too
loud.
Related to #232 in one respect worth noting: gain applied after an echo
canceller has to be visible to it, or it will be cancelling against a reference
signal that no longer matches what came out of the speakers. Whichever of the
two is built second should account for the other.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
There is no volume control in a Discord call - not per person, and not overall.
grep -i volumeacrossnobilis/src/backend/discord/voice.rs,nobilis/src/audio.rsand the RPC surface returns nothing: the playback pathmixes what arrives and plays it as it came.
Discord has per-user volume because calls need it. One person joins twice as
loud as everyone else, or a stream's game audio buries the people talking over
it, and the only answers moho has are the system mixer - which moves everything
together - and leaving.
Two separate things, and the smaller one is worth having on its own:
tracks who is speaking per participant (
voice.rs:494,speakers), so theidentity a slider would attach to is already resolved.
change than the above and covers the common case of a call that is simply too
loud.
Related to #232 in one respect worth noting: gain applied after an echo
canceller has to be visible to it, or it will be cancelling against a reference
signal that no longer matches what came out of the speakers. Whichever of the
two is built second should account for the other.
Finished
https://git.salastil.com/Salastil/nobilis/commit/4a5a31c
https://git.salastil.com/Salastil/moho/commit/f700713
https://git.salastil.com/Salastil/moho/commit/b72633f
https://git.salastil.com/Salastil/moho/commit/ccd9936