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
This commit is contained in:
Paul Davis 2010-03-05 02:09:37 +00:00
parent 4cb9014de2
commit ec047d8981
6 changed files with 40 additions and 23 deletions

View file

@ -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"

View file

@ -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 */

View file

@ -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),

View file

@ -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; }

View file

@ -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) {

View file

@ -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<boost::shared_ptr<ARDOUR::AudioRegion> > const &);
StripSilenceDialog (ARDOUR::Session*, std::list<boost::shared_ptr<ARDOUR::AudioRegion> > 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<std::pair<ARDOUR::frameoffset_t,ARDOUR::framecnt_t> > SilenceResult;
struct Wave {
boost::shared_ptr<ARDOUR::AudioRegion> region;
ArdourCanvas::WaveView* view;
std::list<ArdourCanvas::SimpleRect*> silence_rects;
double samples_per_unit;
std::list<std::pair<ARDOUR::frameoffset_t,ARDOUR::framecnt_t> >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&);
};