mirror of
https://github.com/vale981/openAV-Luppp
synced 2025-03-06 01:21:38 -05:00
-Smoothed DSP level metering UI updates
This commit is contained in:
parent
75d9dc592a
commit
8d2924b9d4
3 changed files with 31 additions and 5 deletions
|
@ -29,11 +29,13 @@ class DBMeter
|
||||||
{
|
{
|
||||||
// range scale from range = -96 -> +10, to 0 -> 1
|
// range scale from range = -96 -> +10, to 0 -> 1
|
||||||
float zeroOneL = (1-(fvbargraph0 / -96.f));
|
float zeroOneL = (1-(fvbargraph0 / -96.f));
|
||||||
|
fvbargraph0 = -96;
|
||||||
return pow(zeroOneL, 4);
|
return pow(zeroOneL, 4);
|
||||||
}
|
}
|
||||||
float getRightDB()
|
float getRightDB()
|
||||||
{
|
{
|
||||||
float zeroOneR = (1-(fvbargraph1 / -96.f));
|
float zeroOneR = (1-(fvbargraph1 / -96.f));
|
||||||
|
fvbargraph1 = -96;
|
||||||
return pow(zeroOneR, 4);
|
return pow(zeroOneR, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,9 +44,11 @@ class DBMeter
|
||||||
for (int i = 0; (i < count); i = (i + 1))
|
for (int i = 0; (i < count); i = (i + 1))
|
||||||
{
|
{
|
||||||
fRec0[0] = max((fRec0[1] - fConst0), min(10.f, (20.f * log10f(max(1.58489e-05f, fabsf(*inputL))))));
|
fRec0[0] = max((fRec0[1] - fConst0), min(10.f, (20.f * log10f(max(1.58489e-05f, fabsf(*inputL))))));
|
||||||
|
if ( fvbargraph0 < fRec0[0] )
|
||||||
fvbargraph0 = fRec0[0];
|
fvbargraph0 = fRec0[0];
|
||||||
|
|
||||||
fRec1[0] = max((fRec1[1] - fConst0), min(10.f, (20.f * log10f(max(1.58489e-05f, fabsf(*inputR))))));
|
fRec1[0] = max((fRec1[1] - fConst0), min(10.f, (20.f * log10f(max(1.58489e-05f, fabsf(*inputR))))));
|
||||||
|
if ( fvbargraph1 < fRec1[0] )
|
||||||
fvbargraph1 = fRec1[0];
|
fvbargraph1 = fRec1[0];
|
||||||
|
|
||||||
fRec0[1] = fRec0[0];
|
fRec0[1] = fRec0[0];
|
||||||
|
|
18
src/jack.cxx
18
src/jack.cxx
|
@ -19,6 +19,11 @@ Jack::Jack()
|
||||||
buffers.nframes = jack_get_buffer_size( client );
|
buffers.nframes = jack_get_buffer_size( client );
|
||||||
buffers.samplerate = jack_get_sample_rate( client );
|
buffers.samplerate = jack_get_sample_rate( client );
|
||||||
|
|
||||||
|
// UI update
|
||||||
|
uiUpdateConstant = buffers.samplerate / 30;
|
||||||
|
uiUpdateCounter = buffers.samplerate / 30;
|
||||||
|
|
||||||
|
|
||||||
masterOutput = jack_port_register( client,
|
masterOutput = jack_port_register( client,
|
||||||
"master_out",
|
"master_out",
|
||||||
JACK_DEFAULT_AUDIO_TYPE,
|
JACK_DEFAULT_AUDIO_TYPE,
|
||||||
|
@ -157,13 +162,26 @@ int Jack::process (jack_nframes_t nframes)
|
||||||
{
|
{
|
||||||
// needs to be setup to handle stereo instead of mono
|
// needs to be setup to handle stereo instead of mono
|
||||||
dbMeters.at(n).process( nframes, buffers.audio[Buffers::TRACK_0 + n], buffers.audio[Buffers::TRACK_0 + n]);
|
dbMeters.at(n).process( nframes, buffers.audio[Buffers::TRACK_0 + n], buffers.audio[Buffers::TRACK_0 + n]);
|
||||||
|
|
||||||
|
if (uiUpdateCounter > uiUpdateConstant )
|
||||||
|
{
|
||||||
EventTrackSignalLevel e( n, dbMeters.at(n).getLeftDB(), dbMeters.at(n).getRightDB() );
|
EventTrackSignalLevel e( n, dbMeters.at(n).getLeftDB(), dbMeters.at(n).getRightDB() );
|
||||||
writeToGuiRingbuffer( &e );
|
writeToGuiRingbuffer( &e );
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
metronome.process( nframes, &buffers );
|
metronome.process( nframes, &buffers );
|
||||||
|
|
||||||
|
if (uiUpdateCounter > uiUpdateConstant )
|
||||||
|
{
|
||||||
|
uiUpdateCounter = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
uiUpdateCounter += nframes;
|
||||||
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -64,9 +64,13 @@ class Jack
|
||||||
ControllerUpdater controllerUpdater;
|
ControllerUpdater controllerUpdater;
|
||||||
|
|
||||||
vector<Looper*> loopers;
|
vector<Looper*> loopers;
|
||||||
|
|
||||||
vector<DBMeter> dbMeters;
|
vector<DBMeter> dbMeters;
|
||||||
|
|
||||||
|
// UI update variables
|
||||||
|
long uiUpdateCounter;
|
||||||
|
long uiUpdateConstant;
|
||||||
|
|
||||||
|
|
||||||
int nframes;
|
int nframes;
|
||||||
int samplerate;
|
int samplerate;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue