From ec047d89810677cdf4ae3363834919a77b459047 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 5 Mar 2010 02:09:37 +0000 Subject: [PATCH] more strip silence dialog changes, to use audio clocks, show smallest silence/audible segments, etc. git-svn-id: svn://localhost/ardour2/branches/3.0@6734 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/ardour3_ui_dark.rc.in | 13 ++++++++++ gtk2_ardour/ardour_ui.cc | 2 +- gtk2_ardour/audio_clock.cc | 2 +- gtk2_ardour/audio_clock.h | 3 ++- gtk2_ardour/editor_ops.cc | 2 +- gtk2_ardour/strip_silence_dialog.h | 41 ++++++++++++++++-------------- 6 files changed, 40 insertions(+), 23 deletions(-) diff --git a/gtk2_ardour/ardour3_ui_dark.rc.in b/gtk2_ardour/ardour3_ui_dark.rc.in index cea780a766..ff7ecc9a3c 100644 --- a/gtk2_ardour/ardour3_ui_dark.rc.in +++ b/gtk2_ardour/ardour3_ui_dark.rc.in @@ -758,6 +758,18 @@ style "default_clock_display" = "medium text" bg[ACTIVE] = { 0, 0, 0 } } + +style "white_on_black_clock_display" = "medium text" +{ + fg[NORMAL] = { 1.0, 1.0, 1.0 } + fg[ACTIVE] = { 1.0, 0.0, 0.0 } + fg[SELECTED] = { 1.0, 0, 0 } + base[NORMAL] = { 0, 0, 0 } + base[ACTIVE] = { 0, 0, 0 } + bg[NORMAL] = { 0, 0, 0 } + bg[ACTIVE] = { 0, 0, 0 } +} + style "editor_time_ruler" = "small_text" { fg[NORMAL] = { 0.80, 0.80, 0.80 } @@ -1440,6 +1452,7 @@ widget "*AudioClockBBTUpperInfo" style:highest "tempo_meter_clock_display" widget "*AudioClockBBTLowerInfo" style:highest "tempo_meter_clock_display" widget "*SelectionStartClock" style:highest "default_clock_display" widget "*SelectionEndClock" style:highest "default_clock_display" +widget "*SilenceDurationClock" style:highest "white_on_black_clock_display" widget "*EditPointClock" style:highest "default_clock_display" widget "*PreRollClock" style:highest "default_clock_display" widget "*PostRollClock" style:highest "default_clock_display" diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index b6486827e4..039e328012 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -128,7 +128,7 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[]) /* big clock */ - big_clock (X_("bigclock"), false, "BigClockNonRecording", true, true, false, true), + big_clock (X_("bigclock"), false, "BigClockNonRecording", true, true, false, false), /* transport */ diff --git a/gtk2_ardour/audio_clock.cc b/gtk2_ardour/audio_clock.cc index bdf0ceda33..a7430d9045 100644 --- a/gtk2_ardour/audio_clock.cc +++ b/gtk2_ardour/audio_clock.cc @@ -65,7 +65,7 @@ const uint32_t AudioClock::field_length[(int) AudioClock::AudioFrames+1] = { 10 /* Audio Frame */ }; -AudioClock::AudioClock (std::string clock_name, bool transient, std::string widget_name, +AudioClock::AudioClock (const string& clock_name, bool transient, const string& widget_name, bool allow_edit, bool follows_playhead, bool duration, bool with_info) : _name (clock_name), is_transient (transient), diff --git a/gtk2_ardour/audio_clock.h b/gtk2_ardour/audio_clock.h index b9fc740543..c51c321ba4 100644 --- a/gtk2_ardour/audio_clock.h +++ b/gtk2_ardour/audio_clock.h @@ -43,7 +43,8 @@ class AudioClock : public Gtk::HBox, public ARDOUR::SessionHandlePtr Off }; - AudioClock (std::string, bool, std::string, bool, bool, bool duration = false, bool with_info = false); + AudioClock (const std::string& clock_name, bool is_transient, const std::string& widget_name, + bool editable, bool follows_playhead, bool duration = false, bool with_info = false); Mode mode() const { return _mode; } diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index 2866f82e61..d4e8f4b54f 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -4651,7 +4651,7 @@ Editor::strip_region_silence () } } - StripSilenceDialog d (ar); + StripSilenceDialog d (_session, ar); int const r = d.run (); if (r == Gtk::RESPONSE_OK) { diff --git a/gtk2_ardour/strip_silence_dialog.h b/gtk2_ardour/strip_silence_dialog.h index 2084d74de2..c746edc6b5 100644 --- a/gtk2_ardour/strip_silence_dialog.h +++ b/gtk2_ardour/strip_silence_dialog.h @@ -26,28 +26,23 @@ namespace ARDOUR { class AudioRegion; + class Session; } /// Dialog box to set options for the `strip silence' filter class StripSilenceDialog : public ArdourDialog { public: - StripSilenceDialog (std::list > const &); + StripSilenceDialog (ARDOUR::Session*, std::list > const &); ~StripSilenceDialog (); double threshold () const { return _threshold.get_value (); } - nframes_t minimum_length () const { - return _minimum_length.get_value_as_int (); - } - - nframes_t fade_length () const { - return _fade_length.get_value_as_int (); - } - - static void stop_thread (); + nframes_t minimum_length () const; + nframes_t fade_length () const; + static void stop_thread (); private: void create_waves (); @@ -57,16 +52,17 @@ private: void redraw_silence_rects (); Gtk::SpinButton _threshold; - Gtk::SpinButton _minimum_length; - Gtk::SpinButton _fade_length; + AudioClock _minimum_length; + AudioClock _fade_length; Gtk::Label _segment_count_label; + typedef std::list > SilenceResult; struct Wave { boost::shared_ptr region; ArdourCanvas::WaveView* view; std::list silence_rects; double samples_per_unit; - std::list >silence; + SilenceResult silence; Wave() : view (0), samples_per_unit (1) { } }; @@ -77,12 +73,17 @@ private: int _wave_height; bool restart_queued; - static ARDOUR::InterThreadInfo itt; - static bool thread_should_exit; - static Glib::Cond *thread_run; - static Glib::Cond *thread_waiting; - static Glib::StaticMutex run_lock; - static StripSilenceDialog* current; + static ARDOUR::InterThreadInfo itt; + static bool thread_should_exit; + static Glib::Cond *thread_run; + static Glib::Cond *thread_waiting; + static Glib::StaticMutex run_lock; + static StripSilenceDialog* current; + + ARDOUR::framecnt_t max_audible; + ARDOUR::framecnt_t min_audible; + ARDOUR::framecnt_t max_silence; + ARDOUR::framecnt_t min_silence; PBD::ScopedConnection _peaks_ready_connection; @@ -93,4 +94,6 @@ private: void* detection_thread_work (); bool start_silence_detection (); void maybe_start_silence_detection (); + + void update_stats (const SilenceResult&); }; -- 2.30.2