summaryrefslogtreecommitdiff
path: root/libs/ardour
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2013-07-22 18:45:08 +0200
committerRobin Gareus <robin@gareus.org>2013-07-22 18:45:08 +0200
commit708edd586611c6b1132e4f25be4c2c0865ba4738 (patch)
tree501211154ef6f5cc06606874edfe3371f7049825 /libs/ardour
parent72aa1cd86cf04964f08e7ca0557f73afd1c96e83 (diff)
implement new meter types
Diffstat (limited to 'libs/ardour')
-rw-r--r--libs/ardour/ardour/types.h18
-rw-r--r--libs/ardour/enums.cc10
-rw-r--r--libs/ardour/meter.cc22
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();