projects
/
ardour.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
update ALSA backend, MIDI device config
[ardour.git]
/
gtk2_ardour
/
gain_meter.cc
diff --git
a/gtk2_ardour/gain_meter.cc
b/gtk2_ardour/gain_meter.cc
index d67bf77dc7107bcd4b8a456ff75d35c1617bce69..7e781cafd93cd1d6724f33f68dfd89264a229c2b 100644
(file)
--- a/
gtk2_ardour/gain_meter.cc
+++ b/
gtk2_ardour/gain_meter.cc
@@
-32,7
+32,6
@@
#include <gtkmm2ext/fastmeter.h>
#include <gtkmm2ext/barcontroller.h>
#include <gtkmm2ext/gtk_ui.h>
#include <gtkmm2ext/fastmeter.h>
#include <gtkmm2ext/barcontroller.h>
#include <gtkmm2ext/gtk_ui.h>
-#include "midi++/manager.h"
#include "pbd/fastlog.h"
#include "pbd/stacktrace.h"
#include "pbd/fastlog.h"
#include "pbd/stacktrace.h"
@@
-84,7
+83,7
@@
GainMeterBase::GainMeterBase (Session* s, bool horizontal, int fader_length, int
gain_slider = manage (new VSliderController (&gain_adjustment, fader_length, fader_girth, false));
}
gain_slider = manage (new VSliderController (&gain_adjustment, fader_length, fader_girth, false));
}
- level_meter = new LevelMeter(_session);
+ level_meter = new LevelMeter
HBox
(_session);
level_meter->ButtonPress.connect_same_thread (_level_meter_connection, boost::bind (&GainMeterBase::level_meter_button_press, this, _1));
meter_metric_area.signal_button_press_event().connect (sigc::mem_fun (*this, &GainMeterBase::level_meter_button_press));
level_meter->ButtonPress.connect_same_thread (_level_meter_connection, boost::bind (&GainMeterBase::level_meter_button_press, this, _1));
meter_metric_area.signal_button_press_event().connect (sigc::mem_fun (*this, &GainMeterBase::level_meter_button_press));
@@
-99,6
+98,7
@@
GainMeterBase::GainMeterBase (Session* s, bool horizontal, int fader_length, int
gain_display.signal_activate().connect (sigc::mem_fun (*this, &GainMeter::gain_activated));
gain_display.signal_focus_in_event().connect (sigc::mem_fun (*this, &GainMeter::gain_focused), false);
gain_display.signal_focus_out_event().connect (sigc::mem_fun (*this, &GainMeter::gain_focused), false);
gain_display.signal_activate().connect (sigc::mem_fun (*this, &GainMeter::gain_activated));
gain_display.signal_focus_in_event().connect (sigc::mem_fun (*this, &GainMeter::gain_focused), false);
gain_display.signal_focus_out_event().connect (sigc::mem_fun (*this, &GainMeter::gain_focused), false);
+ gain_display.set_alignment(1.0);
peak_display.set_name ("MixerStripPeakDisplay");
set_size_request_to_display_given_text (peak_display, "-80.g", 2, 6); /* note the descender */
peak_display.set_name ("MixerStripPeakDisplay");
set_size_request_to_display_given_text (peak_display, "-80.g", 2, 6); /* note the descender */
@@
-144,7
+144,6
@@
GainMeterBase::GainMeterBase (Session* s, bool horizontal, int fader_length, int
void
GainMeterBase::set_flat_buttons ()
{
void
GainMeterBase::set_flat_buttons ()
{
-printf("set_flat_butt\n");
// gain_slider->set_flat_buttons( ARDOUR_UI::config()->flat_buttons.get() );
}
// gain_slider->set_flat_buttons( ARDOUR_UI::config()->flat_buttons.get() );
}
@@
-275,19
+274,29
@@
void
GainMeterBase::setup_meters (int len)
{
int meter_width = 5;
GainMeterBase::setup_meters (int len)
{
int meter_width = 5;
+ uint32_t meter_channels = 0;
+ if (_meter) {
+ meter_channels = _meter->input_streams().n_total();
+ } else if (_route) {
+ meter_channels = _route->shared_peak_meter()->input_streams().n_total();
+ }
switch (_width) {
case Wide:
switch (_width) {
case Wide:
- meter_ticks1_area.show();
- meter_ticks2_area.show();
- if (_route && _route->shared_peak_meter()->input_streams().n_total() == 1) {
+ //meter_ticks1_area.show();
+ //meter_ticks2_area.show();
+ meter_metric_area.show();
+ if (meter_channels == 1) {
meter_width = 10;
}
break;
case Narrow:
meter_width = 10;
}
break;
case Narrow:
- meter_width = 2;
- meter_ticks1_area.hide();
- meter_ticks2_area.hide();
+ if (meter_channels > 1) {
+ meter_width = 4;
+ }
+ //meter_ticks1_area.hide();
+ //meter_ticks2_area.hide();
+ meter_metric_area.hide();
break;
}
level_meter->setup_meters(len, meter_width);
break;
}
level_meter->setup_meters(len, meter_width);
@@
-526,9
+535,12
@@
GainMeterBase::gain_changed ()
void
GainMeterBase::set_meter_strip_name (const char * name)
{
void
GainMeterBase::set_meter_strip_name (const char * name)
{
+ char tmp[256];
meter_metric_area.set_name (name);
meter_metric_area.set_name (name);
- meter_ticks1_area.set_name (name);
- meter_ticks2_area.set_name (name);
+ sprintf(tmp, "Mark%sLeft", name);
+ meter_ticks1_area.set_name (tmp);
+ sprintf(tmp, "Mark%sRight", name);
+ meter_ticks2_area.set_name (tmp);
}
void
}
void
@@
-861,7
+873,7
@@
GainMeterBase::update_meters()
}
}
}
}
-void GainMeterBase::color_handler(bool
dpi
)
+void GainMeterBase::color_handler(bool
/*dpi*/
)
{
setup_meters();
}
{
setup_meters();
}
@@
-901,6
+913,11
@@
GainMeter::GainMeter (Session* s, int fader_length)
}
gain_display_box.pack_start (gain_display, true, true);
}
gain_display_box.pack_start (gain_display, true, true);
+ if (peak_display.get_parent()) {
+ peak_display.get_parent()->remove (gain_display);
+ }
+ gain_display_box.pack_start (peak_display, true, true);
+
meter_metric_area.set_name ("AudioTrackMetrics");
meter_metric_area.set_size_request(24, -1);
meter_metric_area.set_name ("AudioTrackMetrics");
meter_metric_area.set_size_request(24, -1);
@@
-944,12
+961,14
@@
GainMeter::GainMeter (Session* s, int fader_length)
meter_ticks2_area.signal_expose_event().connect (
sigc::mem_fun(*this, &GainMeter::meter_ticks2_expose));
meter_ticks2_area.signal_expose_event().connect (
sigc::mem_fun(*this, &GainMeter::meter_ticks2_expose));
- meter_hbox.pack_start (meter_metric_area, false, false);
meter_hbox.pack_start (meter_ticks1_area, false, false);
meter_hbox.pack_start (meter_alignment, false, false);
meter_hbox.pack_start (meter_ticks2_area, false, false);
meter_hbox.pack_start (meter_ticks1_area, false, false);
meter_hbox.pack_start (meter_alignment, false, false);
meter_hbox.pack_start (meter_ticks2_area, false, false);
+ meter_hbox.pack_start (meter_metric_area, false, false);
}
}
+GainMeter::~GainMeter () { }
+
void
GainMeter::set_controls (boost::shared_ptr<Route> r,
boost::shared_ptr<PeakMeter> meter,
void
GainMeter::set_controls (boost::shared_ptr<Route> r,
boost::shared_ptr<PeakMeter> meter,
@@
-977,6
+996,10
@@
GainMeter::set_controls (boost::shared_ptr<Route> r,
}
}
+ if (_route) {
+ _route->active_changed.connect (model_connections, invalidator (*this), boost::bind (&GainMeter::route_active_changed, this), gui_context ());
+ }
+
/*
if we have a non-hidden route (ie. we're not the click or the auditioner),
pack some route-dependent stuff.
/*
if we have a non-hidden route (ie. we're not the click or the auditioner),
pack some route-dependent stuff.
@@
-997,6
+1020,7
@@
GainMeter::get_gm_width ()
{
Gtk::Requisition sz;
int min_w = 0;
{
Gtk::Requisition sz;
int min_w = 0;
+ sz.width = 0;
meter_metric_area.size_request (sz);
min_w += sz.width;
level_meter->size_request (sz);
meter_metric_area.size_request (sz);
min_w += sz.width;
level_meter->size_request (sz);
@@
-1013,19
+1037,31
@@
GainMeter::get_gm_width ()
gint
GainMeter::meter_metrics_expose (GdkEventExpose *ev)
{
gint
GainMeter::meter_metrics_expose (GdkEventExpose *ev)
{
- return meter_expose_metrics(ev, _types, &meter_metric_area);
+ if (!_route) {
+ if (_types.empty()) { _types.push_back(DataType::AUDIO); }
+ return meter_expose_metrics(ev, MeterPeak, _types, &meter_metric_area);
+ }
+ return meter_expose_metrics(ev, _route->meter_type(), _types, &meter_metric_area);
}
gint
GainMeter::meter_ticks1_expose (GdkEventExpose *ev)
{
}
gint
GainMeter::meter_ticks1_expose (GdkEventExpose *ev)
{
- return meter_expose_ticks(ev, _types, &meter_ticks1_area);
+ if (!_route) {
+ if (_types.empty()) { _types.push_back(DataType::AUDIO); }
+ return meter_expose_ticks(ev, MeterPeak, _types, &meter_ticks1_area);
+ }
+ return meter_expose_ticks(ev, _route->meter_type(), _types, &meter_ticks1_area);
}
gint
GainMeter::meter_ticks2_expose (GdkEventExpose *ev)
{
}
gint
GainMeter::meter_ticks2_expose (GdkEventExpose *ev)
{
- return meter_expose_ticks(ev, _types, &meter_ticks2_area);
+ if (!_route) {
+ if (_types.empty()) { _types.push_back(DataType::AUDIO); }
+ return meter_expose_ticks(ev, MeterPeak, _types, &meter_ticks2_area);
+ }
+ return meter_expose_ticks(ev, _route->meter_type(), _types, &meter_ticks2_area);
}
boost::shared_ptr<PBD::Controllable>
}
boost::shared_ptr<PBD::Controllable>
@@
-1067,18
+1103,21
@@
GainMeter::meter_configuration_changed (ChanCount c)
set_meter_strip_name ("AudioBusMetricsInactive");
}
}
set_meter_strip_name ("AudioBusMetricsInactive");
}
}
- else if (type == (1 << DataType::AUDIO)) {
+ else if (
+ (type == (1 << DataType::MIDI))
+ || (_route && boost::dynamic_pointer_cast<MidiTrack>(_route))
+ ) {
if (!_route || _route->active()) {
if (!_route || _route->active()) {
- set_meter_strip_name ("
Audio
TrackMetrics");
+ set_meter_strip_name ("
Midi
TrackMetrics");
} else {
} else {
- set_meter_strip_name ("
Audio
TrackMetricsInactive");
+ set_meter_strip_name ("
Midi
TrackMetricsInactive");
}
}
}
}
- else if (type == (1 << DataType::
MIDI
)) {
+ else if (type == (1 << DataType::
AUDIO
)) {
if (!_route || _route->active()) {
if (!_route || _route->active()) {
- set_meter_strip_name ("
Midi
TrackMetrics");
+ set_meter_strip_name ("
Audio
TrackMetrics");
} else {
} else {
- set_meter_strip_name ("
Midi
TrackMetricsInactive");
+ set_meter_strip_name ("
Audio
TrackMetricsInactive");
}
} else {
if (!_route || _route->active()) {
}
} else {
if (!_route || _route->active()) {
@@
-1087,11
+1126,22
@@
GainMeter::meter_configuration_changed (ChanCount c)
set_meter_strip_name ("AudioMidiTrackMetricsInactive");
}
}
set_meter_strip_name ("AudioMidiTrackMetricsInactive");
}
}
+
+ setup_meters();
meter_clear_pattern_cache(4);
}
meter_clear_pattern_cache(4);
}
+void
+GainMeter::route_active_changed ()
+{
+ if (_meter) {
+ meter_configuration_changed (_meter->input_streams ());
+ }
+}
+
void
GainMeter::meter_type_changed (MeterType t)
{
_route->set_meter_type(t);
void
GainMeter::meter_type_changed (MeterType t)
{
_route->set_meter_type(t);
+ RedrawMetrics();
}
}