mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-18 20:56:28 +01:00
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:
parent
4cb9014de2
commit
ec047d8981
6 changed files with 40 additions and 23 deletions
|
|
@ -758,6 +758,18 @@ style "default_clock_display" = "medium text"
|
||||||
bg[ACTIVE] = { 0, 0, 0 }
|
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"
|
style "editor_time_ruler" = "small_text"
|
||||||
{
|
{
|
||||||
fg[NORMAL] = { 0.80, 0.80, 0.80 }
|
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 "*AudioClockBBTLowerInfo" style:highest "tempo_meter_clock_display"
|
||||||
widget "*SelectionStartClock" style:highest "default_clock_display"
|
widget "*SelectionStartClock" style:highest "default_clock_display"
|
||||||
widget "*SelectionEndClock" 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 "*EditPointClock" style:highest "default_clock_display"
|
||||||
widget "*PreRollClock" style:highest "default_clock_display"
|
widget "*PreRollClock" style:highest "default_clock_display"
|
||||||
widget "*PostRollClock" style:highest "default_clock_display"
|
widget "*PostRollClock" style:highest "default_clock_display"
|
||||||
|
|
|
||||||
|
|
@ -128,7 +128,7 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[])
|
||||||
|
|
||||||
/* big clock */
|
/* big clock */
|
||||||
|
|
||||||
big_clock (X_("bigclock"), false, "BigClockNonRecording", true, true, false, true),
|
big_clock (X_("bigclock"), false, "BigClockNonRecording", true, true, false, false),
|
||||||
|
|
||||||
/* transport */
|
/* transport */
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,7 @@ const uint32_t AudioClock::field_length[(int) AudioClock::AudioFrames+1] = {
|
||||||
10 /* Audio Frame */
|
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)
|
bool allow_edit, bool follows_playhead, bool duration, bool with_info)
|
||||||
: _name (clock_name),
|
: _name (clock_name),
|
||||||
is_transient (transient),
|
is_transient (transient),
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,8 @@ class AudioClock : public Gtk::HBox, public ARDOUR::SessionHandlePtr
|
||||||
Off
|
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; }
|
Mode mode() const { return _mode; }
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4651,7 +4651,7 @@ Editor::strip_region_silence ()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
StripSilenceDialog d (ar);
|
StripSilenceDialog d (_session, ar);
|
||||||
int const r = d.run ();
|
int const r = d.run ();
|
||||||
|
|
||||||
if (r == Gtk::RESPONSE_OK) {
|
if (r == Gtk::RESPONSE_OK) {
|
||||||
|
|
|
||||||
|
|
@ -26,28 +26,23 @@
|
||||||
|
|
||||||
namespace ARDOUR {
|
namespace ARDOUR {
|
||||||
class AudioRegion;
|
class AudioRegion;
|
||||||
|
class Session;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Dialog box to set options for the `strip silence' filter
|
/// Dialog box to set options for the `strip silence' filter
|
||||||
class StripSilenceDialog : public ArdourDialog
|
class StripSilenceDialog : public ArdourDialog
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
StripSilenceDialog (std::list<boost::shared_ptr<ARDOUR::AudioRegion> > const &);
|
StripSilenceDialog (ARDOUR::Session*, std::list<boost::shared_ptr<ARDOUR::AudioRegion> > const &);
|
||||||
~StripSilenceDialog ();
|
~StripSilenceDialog ();
|
||||||
|
|
||||||
double threshold () const {
|
double threshold () const {
|
||||||
return _threshold.get_value ();
|
return _threshold.get_value ();
|
||||||
}
|
}
|
||||||
|
|
||||||
nframes_t minimum_length () const {
|
nframes_t minimum_length () const;
|
||||||
return _minimum_length.get_value_as_int ();
|
nframes_t fade_length () const;
|
||||||
}
|
static void stop_thread ();
|
||||||
|
|
||||||
nframes_t fade_length () const {
|
|
||||||
return _fade_length.get_value_as_int ();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void stop_thread ();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void create_waves ();
|
void create_waves ();
|
||||||
|
|
@ -57,16 +52,17 @@ private:
|
||||||
void redraw_silence_rects ();
|
void redraw_silence_rects ();
|
||||||
|
|
||||||
Gtk::SpinButton _threshold;
|
Gtk::SpinButton _threshold;
|
||||||
Gtk::SpinButton _minimum_length;
|
AudioClock _minimum_length;
|
||||||
Gtk::SpinButton _fade_length;
|
AudioClock _fade_length;
|
||||||
Gtk::Label _segment_count_label;
|
Gtk::Label _segment_count_label;
|
||||||
|
typedef std::list<std::pair<ARDOUR::frameoffset_t,ARDOUR::framecnt_t> > SilenceResult;
|
||||||
|
|
||||||
struct Wave {
|
struct Wave {
|
||||||
boost::shared_ptr<ARDOUR::AudioRegion> region;
|
boost::shared_ptr<ARDOUR::AudioRegion> region;
|
||||||
ArdourCanvas::WaveView* view;
|
ArdourCanvas::WaveView* view;
|
||||||
std::list<ArdourCanvas::SimpleRect*> silence_rects;
|
std::list<ArdourCanvas::SimpleRect*> silence_rects;
|
||||||
double samples_per_unit;
|
double samples_per_unit;
|
||||||
std::list<std::pair<ARDOUR::frameoffset_t,ARDOUR::framecnt_t> >silence;
|
SilenceResult silence;
|
||||||
|
|
||||||
Wave() : view (0), samples_per_unit (1) { }
|
Wave() : view (0), samples_per_unit (1) { }
|
||||||
};
|
};
|
||||||
|
|
@ -77,12 +73,17 @@ private:
|
||||||
int _wave_height;
|
int _wave_height;
|
||||||
bool restart_queued;
|
bool restart_queued;
|
||||||
|
|
||||||
static ARDOUR::InterThreadInfo itt;
|
static ARDOUR::InterThreadInfo itt;
|
||||||
static bool thread_should_exit;
|
static bool thread_should_exit;
|
||||||
static Glib::Cond *thread_run;
|
static Glib::Cond *thread_run;
|
||||||
static Glib::Cond *thread_waiting;
|
static Glib::Cond *thread_waiting;
|
||||||
static Glib::StaticMutex run_lock;
|
static Glib::StaticMutex run_lock;
|
||||||
static StripSilenceDialog* current;
|
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;
|
PBD::ScopedConnection _peaks_ready_connection;
|
||||||
|
|
||||||
|
|
@ -93,4 +94,6 @@ private:
|
||||||
void* detection_thread_work ();
|
void* detection_thread_work ();
|
||||||
bool start_silence_detection ();
|
bool start_silence_detection ();
|
||||||
void maybe_start_silence_detection ();
|
void maybe_start_silence_detection ();
|
||||||
|
|
||||||
|
void update_stats (const SilenceResult&);
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue