move "logmeter.h" from gtk2_ardour into libs/ardour
This commit is contained in:
parent
29b8072555
commit
56af59953f
@ -36,6 +36,7 @@
|
|||||||
#include "ardour/audioregion.h"
|
#include "ardour/audioregion.h"
|
||||||
#include "ardour/auditioner.h"
|
#include "ardour/auditioner.h"
|
||||||
#include "ardour/dB.h"
|
#include "ardour/dB.h"
|
||||||
|
#include "ardour/logmeter.h"
|
||||||
#include "ardour/region_factory.h"
|
#include "ardour/region_factory.h"
|
||||||
#include "ardour/session.h"
|
#include "ardour/session.h"
|
||||||
#include "ardour/smf_source.h"
|
#include "ardour/smf_source.h"
|
||||||
@ -44,7 +45,6 @@
|
|||||||
|
|
||||||
#include "audio_clock.h"
|
#include "audio_clock.h"
|
||||||
#include "export_report.h"
|
#include "export_report.h"
|
||||||
#include "logmeter.h"
|
|
||||||
#include "ui_config.h"
|
#include "ui_config.h"
|
||||||
|
|
||||||
#include "pbd/i18n.h"
|
#include "pbd/i18n.h"
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
|
|
||||||
#include "ardour/amp.h"
|
#include "ardour/amp.h"
|
||||||
|
#include "ardour/logmeter.h"
|
||||||
#include "ardour/route_group.h"
|
#include "ardour/route_group.h"
|
||||||
#include "ardour/session_route.h"
|
#include "ardour/session_route.h"
|
||||||
#include "ardour/dB.h"
|
#include "ardour/dB.h"
|
||||||
@ -35,7 +36,6 @@
|
|||||||
#include "pbd/stacktrace.h"
|
#include "pbd/stacktrace.h"
|
||||||
|
|
||||||
#include "gain_meter.h"
|
#include "gain_meter.h"
|
||||||
#include "logmeter.h"
|
|
||||||
#include "gui_thread.h"
|
#include "gui_thread.h"
|
||||||
#include "keyboard.h"
|
#include "keyboard.h"
|
||||||
#include "public_editor.h"
|
#include "public_editor.h"
|
||||||
|
@ -20,13 +20,13 @@
|
|||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
|
|
||||||
#include "ardour/meter.h"
|
#include "ardour/meter.h"
|
||||||
|
#include "ardour/logmeter.h"
|
||||||
|
|
||||||
#include <gtkmm2ext/utils.h>
|
#include <gtkmm2ext/utils.h>
|
||||||
#include "pbd/fastlog.h"
|
#include "pbd/fastlog.h"
|
||||||
|
|
||||||
#include "level_meter.h"
|
#include "level_meter.h"
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
#include "logmeter.h"
|
|
||||||
#include "gui_thread.h"
|
#include "gui_thread.h"
|
||||||
#include "keyboard.h"
|
#include "keyboard.h"
|
||||||
#include "public_editor.h"
|
#include "public_editor.h"
|
||||||
|
@ -1,172 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright (C) 2000-2007 Paul Davis
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __ardour_gtk_log_meter_h__
|
|
||||||
#define __ardour_gtk_log_meter_h__
|
|
||||||
|
|
||||||
#include "ardour/dB.h"
|
|
||||||
|
|
||||||
#if 1
|
|
||||||
static inline float
|
|
||||||
_log_meter (float power, double lower_db, double upper_db, double non_linearity)
|
|
||||||
{
|
|
||||||
return (power < lower_db ? 0.0 : pow((power-lower_db)/(upper_db-lower_db), non_linearity));
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline float
|
|
||||||
alt_log_meter (float power)
|
|
||||||
{
|
|
||||||
return _log_meter (power, -192.0, 0.0, 8.0);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* prototypes - avoid compiler warning */
|
|
||||||
static inline float log_meter (float db);
|
|
||||||
static inline float meter_deflect_ppm (float);
|
|
||||||
static inline float meter_deflect_din (float);
|
|
||||||
static inline float meter_deflect_nordic (float);
|
|
||||||
static inline float meter_deflect_vu (float);
|
|
||||||
static inline float meter_deflect_k (float, float);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static inline float
|
|
||||||
log_meter (float db)
|
|
||||||
{
|
|
||||||
gfloat def = 0.0f; /* Meter deflection %age */
|
|
||||||
|
|
||||||
if (db < -70.0f) {
|
|
||||||
def = 0.0f;
|
|
||||||
} else if (db < -60.0f) {
|
|
||||||
def = (db + 70.0f) * 0.25f;
|
|
||||||
} else if (db < -50.0f) {
|
|
||||||
def = (db + 60.0f) * 0.5f + 2.5f;
|
|
||||||
} else if (db < -40.0f) {
|
|
||||||
def = (db + 50.0f) * 0.75f + 7.5f;
|
|
||||||
} else if (db < -30.0f) {
|
|
||||||
def = (db + 40.0f) * 1.5f + 15.0f;
|
|
||||||
} else if (db < -20.0f) {
|
|
||||||
def = (db + 30.0f) * 2.0f + 30.0f;
|
|
||||||
} else if (db < 6.0f) {
|
|
||||||
def = (db + 20.0f) * 2.5f + 50.0f;
|
|
||||||
} else {
|
|
||||||
def = 115.0f;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 115 is the deflection %age that would be
|
|
||||||
when db=6.0. this is an arbitrary
|
|
||||||
endpoint for our scaling.
|
|
||||||
*/
|
|
||||||
|
|
||||||
return def/115.0f;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline float
|
|
||||||
log_meter0dB (float db)
|
|
||||||
{
|
|
||||||
gfloat def = 0.0f; /* Meter deflection %age */
|
|
||||||
|
|
||||||
if (db < -70.0f) {
|
|
||||||
def = 0.0f;
|
|
||||||
} else if (db < -60.0f) {
|
|
||||||
def = (db + 70.0f) * 0.25f;
|
|
||||||
} else if (db < -50.0f) {
|
|
||||||
def = (db + 60.0f) * 0.5f + 2.5f;
|
|
||||||
} else if (db < -40.0f) {
|
|
||||||
def = (db + 50.0f) * 0.75f + 7.5f;
|
|
||||||
} else if (db < -30.0f) {
|
|
||||||
def = (db + 40.0f) * 1.5f + 15.0f;
|
|
||||||
} else if (db < -20.0f) {
|
|
||||||
def = (db + 30.0f) * 2.0f + 30.0f;
|
|
||||||
} else if (db < 0.0f) {
|
|
||||||
def = (db + 20.0f) * 2.5f + 50.0f;
|
|
||||||
} else {
|
|
||||||
def = 100.0f;
|
|
||||||
}
|
|
||||||
return def/100.0f;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline float
|
|
||||||
meter_deflect_ppm (float db)
|
|
||||||
{
|
|
||||||
if (db < -30) {
|
|
||||||
// 2.258 == ((-30 + 32.0)/ 28.0) / 10^(-30 / 20);
|
|
||||||
return (dB_to_coefficient(db) * 2.258769757f);
|
|
||||||
} else {
|
|
||||||
const float rv = (db + 32.0f) / 28.0f;
|
|
||||||
if (rv < 1.0) {
|
|
||||||
return rv;
|
|
||||||
} else {
|
|
||||||
return 1.0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline float
|
|
||||||
meter_deflect_din (float db)
|
|
||||||
{
|
|
||||||
float rv = dB_to_coefficient(db);
|
|
||||||
rv = sqrtf (sqrtf (2.3676f * rv)) - 0.1803f;
|
|
||||||
if (rv >= 1.0) {
|
|
||||||
return 1.0;
|
|
||||||
} else {
|
|
||||||
return (rv > 0 ? rv : 0.0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline float
|
|
||||||
meter_deflect_nordic (float db)
|
|
||||||
{
|
|
||||||
if (db < -60) {
|
|
||||||
return 0.0;
|
|
||||||
} else {
|
|
||||||
const float rv = (db + 60.0f) / 54.0f;
|
|
||||||
if (rv < 1.0) {
|
|
||||||
return rv;
|
|
||||||
} else {
|
|
||||||
return 1.0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline float
|
|
||||||
meter_deflect_vu (float db)
|
|
||||||
{
|
|
||||||
const float rv = 6.77165f * dB_to_coefficient(db);
|
|
||||||
if (rv > 1.0) return 1.0;
|
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline float
|
|
||||||
meter_deflect_k (float db, float krange)
|
|
||||||
{
|
|
||||||
db+=krange;
|
|
||||||
if (db < -40.0f) {
|
|
||||||
return (dB_to_coefficient(db) * 500.0f / (krange + 45.0f));
|
|
||||||
} else {
|
|
||||||
const float rv = (db + 45.0f) / (krange + 45.0f);
|
|
||||||
if (rv < 1.0) {
|
|
||||||
return rv;
|
|
||||||
} else {
|
|
||||||
return 1.0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* __ardour_gtk_log_meter_h__ */
|
|
@ -24,9 +24,10 @@
|
|||||||
#include <gtkmm2ext/utils.h>
|
#include <gtkmm2ext/utils.h>
|
||||||
#include <gtkmm2ext/rgb_macros.h>
|
#include <gtkmm2ext/rgb_macros.h>
|
||||||
|
|
||||||
|
#include "ardour/logmeter.h"
|
||||||
#include <ardour/rc_configuration.h>
|
#include <ardour/rc_configuration.h>
|
||||||
|
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
#include "logmeter.h"
|
|
||||||
#include "meter_patterns.h"
|
#include "meter_patterns.h"
|
||||||
#include "ui_config.h"
|
#include "ui_config.h"
|
||||||
|
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
|
|
||||||
#include <sigc++/bind.h>
|
#include <sigc++/bind.h>
|
||||||
|
|
||||||
|
#include "ardour/logmeter.h"
|
||||||
#include "ardour/session.h"
|
#include "ardour/session.h"
|
||||||
#include "ardour/route.h"
|
#include "ardour/route.h"
|
||||||
#include "ardour/route_group.h"
|
#include "ardour/route_group.h"
|
||||||
@ -34,7 +35,6 @@
|
|||||||
#include <gtkmm2ext/utils.h>
|
#include <gtkmm2ext/utils.h>
|
||||||
#include <gtkmm2ext/rgb_macros.h>
|
#include <gtkmm2ext/rgb_macros.h>
|
||||||
|
|
||||||
#include "logmeter.h"
|
|
||||||
#include "gui_thread.h"
|
#include "gui_thread.h"
|
||||||
#include "ardour_window.h"
|
#include "ardour_window.h"
|
||||||
#include "tooltips.h"
|
#include "tooltips.h"
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
|
|
||||||
#include "ardour/audioregion.h"
|
#include "ardour/audioregion.h"
|
||||||
#include "ardour/dB.h"
|
#include "ardour/dB.h"
|
||||||
|
#include "ardour/logmeter.h"
|
||||||
#include "ardour_ui.h"
|
#include "ardour_ui.h"
|
||||||
|
|
||||||
#include "audio_clock.h"
|
#include "audio_clock.h"
|
||||||
@ -33,7 +34,6 @@
|
|||||||
#include "region_view.h"
|
#include "region_view.h"
|
||||||
#include "rgb_macros.h"
|
#include "rgb_macros.h"
|
||||||
#include "pbd/i18n.h"
|
#include "pbd/i18n.h"
|
||||||
#include "logmeter.h"
|
|
||||||
|
|
||||||
using namespace ARDOUR;
|
using namespace ARDOUR;
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
Loading…
Reference in New Issue
Block a user