+ gain_t gain;
+
+ if (Config->get_solo_mute_override()) {
+ if (_soloed) {
+ gain = 1.0;
+ } else if (muted_by_self_at (mp)) {
+ gain = 0.0;
+ } else {
+ if (muted_by_others_at (mp)) {
+ gain = Config->get_solo_mute_gain ();
+ } else {
+ gain = 1.0;
+ }
+ }
+ } else {
+ if (muted_by_self_at (mp)) {
+ gain = 0.0;
+ } else if (_soloed) {
+ gain = 1.0;
+ } else {
+ if (muted_by_others_at (mp)) {
+ gain = Config->get_solo_mute_gain ();
+ } else {
+ gain = 1.0;
+ }
+ }
+ }
+
+ return gain;