Sequencer audio waveform drawing fix, now assured to be within the strip bounds.
This commit is contained in:
@@ -1094,9 +1094,11 @@ int AUD_readSound(AUD_Sound* sound, sample_t* buffer, int length, int samples_pe
|
|||||||
specs.specs = reader->getSpecs();
|
specs.specs = reader->getSpecs();
|
||||||
int len;
|
int len;
|
||||||
float samplejump = specs.rate / samples_per_second;
|
float samplejump = specs.rate / samples_per_second;
|
||||||
float min, max, power;
|
float min, max, power, overallmax;
|
||||||
bool eos;
|
bool eos;
|
||||||
|
|
||||||
|
overallmax = 0;
|
||||||
|
|
||||||
for(int i = 0; i < length; i++)
|
for(int i = 0; i < length; i++)
|
||||||
{
|
{
|
||||||
len = floor(samplejump * (i+1)) - floor(samplejump * i);
|
len = floor(samplejump * (i+1)) - floor(samplejump * i);
|
||||||
@@ -1121,6 +1123,11 @@ int AUD_readSound(AUD_Sound* sound, sample_t* buffer, int length, int samples_pe
|
|||||||
buffer[i * 3 + 1] = max;
|
buffer[i * 3 + 1] = max;
|
||||||
buffer[i * 3 + 2] = sqrt(power) / len;
|
buffer[i * 3 + 2] = sqrt(power) / len;
|
||||||
|
|
||||||
|
if(overallmax < max)
|
||||||
|
overallmax = max;
|
||||||
|
if(overallmax < -min)
|
||||||
|
overallmax = -min;
|
||||||
|
|
||||||
if(eos)
|
if(eos)
|
||||||
{
|
{
|
||||||
length = i;
|
length = i;
|
||||||
@@ -1128,6 +1135,14 @@ int AUD_readSound(AUD_Sound* sound, sample_t* buffer, int length, int samples_pe
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(overallmax > 1.0f)
|
||||||
|
{
|
||||||
|
for(int i = 0; i < length * 3; i++)
|
||||||
|
{
|
||||||
|
buffer[i] /= overallmax;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return length;
|
return length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user