diff options
author | Robin Gareus <robin@gareus.org> | 2013-07-22 18:45:08 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2013-07-22 18:45:08 +0200 |
commit | 708edd586611c6b1132e4f25be4c2c0865ba4738 (patch) | |
tree | 501211154ef6f5cc06606874edfe3371f7049825 /libs/ardour | |
parent | 72aa1cd86cf04964f08e7ca0557f73afd1c96e83 (diff) |
implement new meter types
Diffstat (limited to 'libs/ardour')
-rw-r--r-- | libs/ardour/ardour/types.h | 18 | ||||
-rw-r--r-- | libs/ardour/enums.cc | 10 | ||||
-rw-r--r-- | libs/ardour/meter.cc | 22 |
3 files changed, 31 insertions, 19 deletions
diff --git a/libs/ardour/ardour/types.h b/libs/ardour/ardour/types.h index df7209b581..7b396796ad 100644 --- a/libs/ardour/ardour/types.h +++ b/libs/ardour/ardour/types.h @@ -178,13 +178,17 @@ namespace ARDOUR { }; enum MeterType { - MeterMaxSignal = 0x01, - MeterMaxPeak = 0x02, - MeterPeak = 0x04, - MeterKrms = 0x08, - MeterIEC1 = 0x10, - MeterIEC2 = 0x20, - MeterVU = 0x40 + MeterMaxSignal = 0x001, + MeterMaxPeak = 0x002, + MeterPeak = 0x004, + MeterRMS = 0x008, + MeterK20 = 0x010, + MeterK14 = 0x020, + MeterIEC1DIN = 0x040, + MeterIEC1NOR = 0x080, + MeterIEC2BBC = 0x100, + MeterIEC2EBU = 0x200, + MeterVU = 0x400 }; enum TrackMode { diff --git a/libs/ardour/enums.cc b/libs/ardour/enums.cc index 12eb59ce65..eab3176f57 100644 --- a/libs/ardour/enums.cc +++ b/libs/ardour/enums.cc @@ -176,9 +176,13 @@ setup_enum_writer () REGISTER_ENUM (MeterMaxSignal); REGISTER_ENUM (MeterMaxPeak); REGISTER_ENUM (MeterPeak); - REGISTER_ENUM (MeterKrms); - REGISTER_ENUM (MeterIEC1); - REGISTER_ENUM (MeterIEC2); + REGISTER_ENUM (MeterRMS); + REGISTER_ENUM (MeterK20); + REGISTER_ENUM (MeterK14); + REGISTER_ENUM (MeterIEC1DIN); + REGISTER_ENUM (MeterIEC1NOR); + REGISTER_ENUM (MeterIEC2BBC); + REGISTER_ENUM (MeterIEC2EBU); REGISTER_ENUM (MeterVU); REGISTER (_MeterType); diff --git a/libs/ardour/meter.cc b/libs/ardour/meter.cc index 3ca19afe76..8b9ed436a4 100644 --- a/libs/ardour/meter.cc +++ b/libs/ardour/meter.cc @@ -106,13 +106,13 @@ PeakMeter::run (BufferSet& bufs, framepos_t /*start_frame*/, framepos_t /*end_fr // Meter audio in to the rest of the peaks for (uint32_t i = 0; i < n_audio; ++i, ++n) { _peak_signal[n] = compute_peak (bufs.get_audio(i).data(), nframes, _peak_signal[n]); - if (_meter_type & MeterKrms) { + if (_meter_type & (MeterRMS | MeterK20 | MeterK14)) { _kmeter[i]->process(bufs.get_audio(i).data(), nframes); } - if (_meter_type & MeterIEC1) { + if (_meter_type & (MeterIEC1DIN | MeterIEC1NOR)) { _iec1meter[i]->process(bufs.get_audio(i).data(), nframes); } - if (_meter_type & MeterIEC2) { + if (_meter_type & (MeterIEC2BBC | MeterIEC2EBU)) { _iec2meter[i]->process(bufs.get_audio(i).data(), nframes); } if (_meter_type & MeterVU) { @@ -323,7 +323,9 @@ PeakMeter::meter () float PeakMeter::meter_level(uint32_t n, MeterType type) { switch (type) { - case MeterKrms: + case MeterRMS: + case MeterK20: + case MeterK14: { const uint32_t n_midi = current_meters.n_midi(); if ((n - n_midi) < _kmeter.size() && (n - n_midi) >= 0) { @@ -331,7 +333,8 @@ PeakMeter::meter_level(uint32_t n, MeterType type) { } } break; - case MeterIEC1: + case MeterIEC1DIN: + case MeterIEC1NOR: { const uint32_t n_midi = current_meters.n_midi(); if ((n - n_midi) < _iec1meter.size() && (n - n_midi) >= 0) { @@ -339,7 +342,8 @@ PeakMeter::meter_level(uint32_t n, MeterType type) { } } break; - case MeterIEC2: + case MeterIEC2BBC: + case MeterIEC2EBU: { const uint32_t n_midi = current_meters.n_midi(); if ((n - n_midi) < _iec2meter.size() && (n - n_midi) >= 0) { @@ -381,19 +385,19 @@ PeakMeter::set_type(MeterType t) _meter_type = t; - if (t & MeterKrms) { + if (t & (MeterRMS | MeterK20 | MeterK14)) { const size_t n_audio = current_meters.n_audio(); for (size_t n = 0; n < n_audio; ++n) { _kmeter[n]->reset(); } } - if (t & MeterIEC1) { + if (t & (MeterIEC1DIN | MeterIEC1NOR)) { const size_t n_audio = current_meters.n_audio(); for (size_t n = 0; n < n_audio; ++n) { _iec1meter[n]->reset(); } } - if (t & MeterIEC2) { + if (t & (MeterIEC2BBC | MeterIEC2EBU)) { const size_t n_audio = current_meters.n_audio(); for (size_t n = 0; n < n_audio; ++n) { _iec2meter[n]->reset(); |