X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=libs%2Fardour%2Fardour%2Fmute_master.h;h=460c7bf48ba6e65ac688b6fafdd0aff4d3c4ed3b;hb=da9b82732eed632d8b940818382f7eb369100964;hp=4ddb7075dab00aed9ccda6098860c1bd790a0477;hpb=6dac4da98344ed8ce609a4e7d567ef2f9fbb9b31;p=ardour.git diff --git a/libs/ardour/ardour/mute_master.h b/libs/ardour/ardour/mute_master.h index 4ddb7075da..460c7bf48b 100644 --- a/libs/ardour/ardour/mute_master.h +++ b/libs/ardour/ardour/mute_master.h @@ -25,18 +25,21 @@ #include "pbd/stateful.h" #include +#include "ardour/session_handle.h" + namespace ARDOUR { class Session; -class MuteMaster : public PBD::Stateful +class MuteMaster : public SessionHandleRef, public PBD::Stateful { public: + /** deliveries to mute when the channel is "muted" */ enum MutePoint { - PreFader = 0x1, - PostFader = 0x2, - Listen = 0x4, - Main = 0x8 + PreFader = 0x1, ///< mute all pre-fader sends + PostFader = 0x2, ///< mute all post-fader sends + Listen = 0x4, ///< mute listen out + Main = 0x8 ///< mute main out }; static const MutePoint AllPoints; @@ -44,32 +47,23 @@ class MuteMaster : public PBD::Stateful MuteMaster (Session& s, const std::string& name); ~MuteMaster() {} - bool self_muted() const { return _self_muted && (_mute_point != MutePoint (0)); } - bool muted_by_others() const { return _muted_by_others && (_mute_point != MutePoint (0)); } - bool muted() const { return (_self_muted || (_muted_by_others > 0)) && (_mute_point != MutePoint (0)); } - bool muted_at (MutePoint mp) const { return (_self_muted || (_muted_by_others > 0)) && (_mute_point & mp); } - bool self_muted_at (MutePoint mp) const { return _self_muted && (_mute_point & mp); } - bool muted_by_others_at (MutePoint mp) const { return (_muted_by_others > 0) && (_mute_point & mp); } - - bool muted_pre_fader() const { return muted_at (PreFader); } - bool muted_post_fader() const { return muted_at (PostFader); } - bool muted_listen() const { return muted_at (Listen); } - bool muted_main () const { return muted_at (Main); } + bool muted_by_self () const { return _muted_by_self && (_mute_point != MutePoint (0)); } + bool muted_by_self_at (MutePoint mp) const { return _muted_by_self && (_mute_point & mp); } + bool muted_by_others_at (MutePoint mp) const; gain_t mute_gain_at (MutePoint) const; - void set_self_muted (bool yn) { _self_muted = yn; } - void mod_muted_by_others (int delta); - void clear_muted_by_others (); + void set_muted_by_self (bool yn) { _muted_by_self = yn; } void mute_at (MutePoint); void unmute_at (MutePoint); void set_mute_points (const std::string& mute_point); - void set_mute_points (MutePoint); - MutePoint mute_points() const { return _mute_point; } + void set_mute_points (MutePoint); + MutePoint mute_points() const { return _mute_point; } - void set_solo_level (int32_t); + void set_soloed (bool); + void set_solo_ignore (bool yn) { _solo_ignore = yn; } PBD::Signal0 MutePointChanged; @@ -78,9 +72,9 @@ class MuteMaster : public PBD::Stateful private: volatile MutePoint _mute_point; - volatile bool _self_muted; - volatile uint32_t _muted_by_others; - volatile int32_t _solo_level; + volatile bool _muted_by_self; + volatile bool _soloed; + volatile bool _solo_ignore; }; } // namespace ARDOUR