X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fanalysis_window.cc;h=6d858732ff91e4574d0bac284a5ee7683f466dbc;hb=d69e177076aa10e19992c8f6133a8928c24c81e2;hp=b76a1b356e1c17998c9cdd0249a16794a80bd1a0;hpb=68e943265edf04e63a8e8b8f62bab20f99d9c637;p=ardour.git diff --git a/gtk2_ardour/analysis_window.cc b/gtk2_ardour/analysis_window.cc index b76a1b356e..6d858732ff 100644 --- a/gtk2_ardour/analysis_window.cc +++ b/gtk2_ardour/analysis_window.cc @@ -24,9 +24,9 @@ #include #include -#include -#include -#include +#include "ardour/audioregion.h" +#include "ardour/audioplaylist.h" +#include "ardour/types.h" #include "analysis_window.h" @@ -46,21 +46,21 @@ AnalysisWindow::AnalysisWindow() : source_selection_label (_("Signal source")), source_selection_ranges_rb (_("Selected ranges")), source_selection_regions_rb (_("Selected regions")), - + display_model_label (_("Display model")), display_model_composite_separate_rb (_("Composite graphs for each track")), display_model_composite_all_tracks_rb (_("Composite graph of all tracks")), - + show_minmax_button (_("Show frequency power range")), show_normalized_button (_("Normalize values")), fft_graph (16384) { set_name(_("FFT analysis window")); - set_title(_("FFT analysis window")); + set_title (_("Spectral Analysis")); track_list_ready = false; - + // Left side: track list + controls tlmodel = Gtk::ListStore::create(tlcols); track_list.set_model (tlmodel); @@ -73,16 +73,16 @@ AnalysisWindow::AnalysisWindow() : Gtk::TreeViewColumn* track_col = track_list.get_column(0); Gtk::CellRendererText* renderer = dynamic_cast(track_list.get_column_cell_renderer (0)); - + track_col->add_attribute(renderer->property_foreground_gdk(), tlcols.color); track_col->set_expand(true); tlmodel->signal_row_changed().connect ( - mem_fun(*this, &AnalysisWindow::track_list_row_changed) ); - + sigc::mem_fun(*this, &AnalysisWindow::track_list_row_changed) ); + fft_graph.set_analysis_window(this); - + vbox.pack_start(track_list); @@ -94,39 +94,39 @@ AnalysisWindow::AnalysisWindow() : source_selection_regions_rb.set_group(group); source_selection_ranges_rb.set_active(); - + vbox.pack_start (source_selection_ranges_rb, false, false); vbox.pack_start (source_selection_regions_rb, false, false); - + // "Selected ranges" radio source_selection_ranges_rb.signal_toggled().connect ( - bind ( mem_fun(*this, &AnalysisWindow::source_selection_changed), &source_selection_ranges_rb)); + sigc::bind ( sigc::mem_fun(*this, &AnalysisWindow::source_selection_changed), &source_selection_ranges_rb)); // "Selected regions" radio source_selection_regions_rb.signal_toggled().connect ( - bind ( mem_fun(*this, &AnalysisWindow::source_selection_changed), &source_selection_regions_rb)); + sigc::bind ( sigc::mem_fun(*this, &AnalysisWindow::source_selection_changed), &source_selection_regions_rb)); } - + vbox.pack_start(hseparator1, false, false); - + // "Display model" vbox.pack_start(display_model_label, false, false); { Gtk::RadioButtonGroup group = display_model_composite_separate_rb.get_group(); display_model_composite_all_tracks_rb.set_group (group); - + display_model_composite_separate_rb.set_active(); - + vbox.pack_start (display_model_composite_separate_rb, false, false); vbox.pack_start (display_model_composite_all_tracks_rb, false, false); // "Composite graphs for all tracks" display_model_composite_separate_rb.signal_toggled().connect ( - bind ( mem_fun(*this, &AnalysisWindow::display_model_changed), &display_model_composite_separate_rb)); - + sigc::bind ( sigc::mem_fun(*this, &AnalysisWindow::display_model_changed), &display_model_composite_separate_rb)); + // "Composite graph of all tracks" display_model_composite_all_tracks_rb.signal_toggled().connect ( - bind ( mem_fun(*this, &AnalysisWindow::display_model_changed), &display_model_composite_all_tracks_rb)); + sigc::bind ( sigc::mem_fun(*this, &AnalysisWindow::display_model_changed), &display_model_composite_all_tracks_rb)); } // Analyze button @@ -134,7 +134,7 @@ AnalysisWindow::AnalysisWindow() : refresh_button.set_name("EditorGTKButton"); refresh_button.set_label(_("Re-analyze data")); - refresh_button.signal_clicked().connect ( bind ( mem_fun(*this, &AnalysisWindow::analyze_data), &refresh_button)); + refresh_button.signal_clicked().connect ( sigc::bind ( sigc::mem_fun(*this, &AnalysisWindow::analyze_data), &refresh_button)); vbox.pack_start(refresh_button, false, false, 10); @@ -142,25 +142,25 @@ AnalysisWindow::AnalysisWindow() : // Feature checkboxes // minmax - show_minmax_button.signal_toggled().connect( mem_fun(*this, &AnalysisWindow::show_minmax_changed)); + show_minmax_button.signal_toggled().connect( sigc::mem_fun(*this, &AnalysisWindow::show_minmax_changed)); vbox.pack_start(show_minmax_button, false, false); // normalize - show_normalized_button.signal_toggled().connect( mem_fun(*this, &AnalysisWindow::show_normalized_changed)); + show_normalized_button.signal_toggled().connect( sigc::mem_fun(*this, &AnalysisWindow::show_normalized_changed)); vbox.pack_start(show_normalized_button, false, false); - - - + + + hbox.pack_start(vbox, Gtk::PACK_SHRINK); - + // Analysis window on the right fft_graph.ensure_style(); hbox.add(fft_graph); - - + + // And last we pack the hbox add(hbox); @@ -197,8 +197,8 @@ AnalysisWindow::set_regionmode() source_selection_regions_rb.set_active(true); } -void -AnalysisWindow::track_list_row_changed(const Gtk::TreeModel::Path& path, const Gtk::TreeModel::iterator& iter) +void +AnalysisWindow::track_list_row_changed(const Gtk::TreeModel::Path& /*path*/, const Gtk::TreeModel::iterator& /*iter*/) { if (track_list_ready) { fft_graph.redraw(); @@ -211,7 +211,7 @@ AnalysisWindow::clear_tracklist() { // Empty track list & free old graphs Gtk::TreeNodeChildren children = track_list.get_model()->children(); - + for (Gtk::TreeIter i = children.begin(); i != children.end(); i++) { Gtk::TreeModel::Row row = *i; @@ -221,10 +221,10 @@ AnalysisWindow::clear_tracklist() // Make sure it's not drawn row[tlcols.graph] = 0; - + delete delete_me; } - + tlmodel->clear(); } @@ -235,7 +235,7 @@ AnalysisWindow::analyze() } void -AnalysisWindow::analyze_data (Gtk::Button *button) +AnalysisWindow::analyze_data (Gtk::Button */*button*/) { track_list_ready = false; { @@ -243,17 +243,17 @@ AnalysisWindow::analyze_data (Gtk::Button *button) // Empty track list & free old graphs clear_tracklist(); - + // first we gather the FFTResults of all tracks - + Sample *buf = (Sample *) malloc(sizeof(Sample) * fft_graph.windowSize()); Sample *mixbuf = (Sample *) malloc(sizeof(Sample) * fft_graph.windowSize()); float *gain = (float *) malloc(sizeof(float) * fft_graph.windowSize()); - - Selection s = PublicEditor::instance().get_selection(); + + Selection& s (PublicEditor::instance().get_selection()); TimeSelection ts = s.time; RegionSelection ars = s.regions; - + for (TrackSelection::iterator i = s.tracks.begin(); i != s.tracks.end(); ++i) { boost::shared_ptr pl = boost::dynamic_pointer_cast((*i)->playlist()); @@ -269,11 +269,11 @@ AnalysisWindow::analyze_data (Gtk::Button *button) continue; FFTResult *res = fft_graph.prepareResult(rui->color(), rui->route()->name()); - + // if timeSelection if (source_selection_ranges_rb.get_active()) { // cerr << "Analyzing ranges on track " << *&rui->route().name() << endl; - + for (std::list::iterator j = ts.begin(); j != ts.end(); ++j) { int n; @@ -305,15 +305,15 @@ AnalysisWindow::analyze_data (Gtk::Button *button) } } else if (source_selection_regions_rb.get_active()) { // cerr << "Analyzing selected regions on track " << *&rui->route().name() << endl; - + TimeAxisView *current_axis = (*i); - + for (RegionSelection::iterator j = ars.begin(); j != ars.end(); ++j) { // Check that the region is actually audio (so we can analyze it) AudioRegionView* arv = dynamic_cast(*j); if (!arv) continue; - + // Check that the region really is selected on _this_ track/solo if ( &arv->get_time_axis_view() != current_axis) continue; @@ -357,21 +357,21 @@ AnalysisWindow::analyze_data (Gtk::Button *button) } res->finalize(); - + Gtk::TreeModel::Row newrow = *(tlmodel)->append(); newrow[tlcols.trackname] = rui->route()->name(); newrow[tlcols.visible] = true; newrow[tlcols.color] = rui->color(); newrow[tlcols.graph] = res; - } + } + - free(buf); free(mixbuf); track_list_ready = true; } /* end lock */ - + fft_graph.redraw(); } @@ -384,13 +384,13 @@ AnalysisWindow::source_selection_changed (Gtk::RadioButton *button) /* cerr << "AnalysisWindow: signal source = "; - + if (button == &source_selection_ranges_rb) { cerr << "selected ranges" << endl; - + } else if (button == &source_selection_regions_rb) { cerr << "selected regions" << endl; - + } else { cerr << "unknown?" << endl; } @@ -406,7 +406,7 @@ AnalysisWindow::display_model_changed (Gtk::RadioButton *button) /* cerr << "AnalysisWindow: display model = "; - + if (button == &display_model_composite_separate_rb) { cerr << "separate composites of tracks" << endl; } else if (button == &display_model_composite_all_tracks_rb) { @@ -416,5 +416,5 @@ AnalysisWindow::display_model_changed (Gtk::RadioButton *button) } */ } - +