X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Frhythm_ferret.cc;h=8eb64840f6a721c4d7aaf7535882d982a92001b5;hb=0268489c7853780a91f289a409ec00c6e561526c;hp=964418843de6b37b04a50fedfe42ec92962d0c07;hpb=a53d94c3d0cf7cb331c6a48afcebdb5d2706141d;p=ardour.git diff --git a/gtk2_ardour/rhythm_ferret.cc b/gtk2_ardour/rhythm_ferret.cc index 964418843d..8eb64840f6 100644 --- a/gtk2_ardour/rhythm_ferret.cc +++ b/gtk2_ardour/rhythm_ferret.cc @@ -33,7 +33,7 @@ #include "editor.h" #include "time_axis_view.h" -#include "i18n.h" +#include "pbd/i18n.h" using namespace std; using namespace Gtk; @@ -172,6 +172,12 @@ RhythmFerret::RhythmFerret (Editor& e) analysis_mode_changed (); } +void +RhythmFerret::on_response (int response_id) +{ + Gtk::Dialog::on_response (response_id); +} + void RhythmFerret::analysis_mode_changed () { @@ -251,30 +257,36 @@ RhythmFerret::run_analysis () } int -RhythmFerret::run_percussion_onset_analysis (boost::shared_ptr readable, frameoffset_t /*offset*/, AnalysisFeatureList& results) +RhythmFerret::run_percussion_onset_analysis (boost::shared_ptr readable, sampleoffset_t /*offset*/, AnalysisFeatureList& results) { - TransientDetector t (_session->frame_rate()); + try { + TransientDetector t (_session->sample_rate()); - for (uint32_t i = 0; i < readable->n_channels(); ++i) { + for (uint32_t i = 0; i < readable->n_channels(); ++i) { - AnalysisFeatureList these_results; + AnalysisFeatureList these_results; - t.reset (); - float dB = detection_threshold_adjustment.get_value(); - float coeff = dB > -80.0f ? pow (10.0f, dB * 0.05f) : 0.0f; - t.set_threshold (coeff); - t.set_sensitivity (4, sensitivity_adjustment.get_value()); + t.reset (); + float dB = detection_threshold_adjustment.get_value(); + float coeff = dB > -80.0f ? pow (10.0f, dB * 0.05f) : 0.0f; + t.set_threshold (coeff); + t.set_sensitivity (4, sensitivity_adjustment.get_value()); - if (t.run ("", readable.get(), i, these_results)) { - continue; - } + if (t.run ("", readable.get(), i, these_results)) { + continue; + } + + /* merge */ - /* merge */ + results.insert (results.end(), these_results.begin(), these_results.end()); + these_results.clear (); - results.insert (results.end(), these_results.begin(), these_results.end()); - these_results.clear (); + t.update_positions (readable.get(), i, results); + } - t.update_positions (readable.get(), i, results); + } catch (failed_constructor& err) { + error << "Could not load percussion onset detection plugin" << endmsg; + return -1; } return 0; @@ -300,10 +312,10 @@ RhythmFerret::get_note_onset_function () } int -RhythmFerret::run_note_onset_analysis (boost::shared_ptr readable, frameoffset_t /*offset*/, AnalysisFeatureList& results) +RhythmFerret::run_note_onset_analysis (boost::shared_ptr readable, sampleoffset_t /*offset*/, AnalysisFeatureList& results) { try { - OnsetDetector t (_session->frame_rate()); + OnsetDetector t (_session->sample_rate()); for (uint32_t i = 0; i < readable->n_channels(); ++i) { @@ -335,7 +347,7 @@ RhythmFerret::run_note_onset_analysis (boost::shared_ptr readable, fra } if (!results.empty()) { - OnsetDetector::cleanup_onsets (results, _session->frame_rate(), trigger_gap_adjustment.get_value()); + OnsetDetector::cleanup_onsets (results, _session->sample_rate(), trigger_gap_adjustment.get_value()); } return 0; @@ -377,6 +389,8 @@ RhythmFerret::do_split_action () return; } + editor.EditorFreeze(); /* Emit signal */ + editor.begin_reversible_command (_("split regions (rhythm ferret)")); /* Merge the transient positions for regions in consideration */ @@ -407,6 +421,8 @@ RhythmFerret::do_split_action () } editor.commit_reversible_command (); + + editor.EditorThaw(); /* Emit signal */ } void