Add software volume mixer. Add fadeout
This commit is contained in:
@@ -37,10 +37,11 @@ static uint32_t currentChunkDurationMs = 0;
|
||||
|
||||
static ptype_t bq[8];
|
||||
|
||||
static double dynamic_vol = 1.0;
|
||||
|
||||
int
|
||||
dsp_processor (char *audio, size_t chunk_size, dspFlows_t dspFlow)
|
||||
{
|
||||
double dynamic_vol = 1.0;
|
||||
int16_t len = chunk_size / 4;
|
||||
int16_t valint;
|
||||
uint16_t i;
|
||||
@@ -58,6 +59,17 @@ dsp_processor (char *audio, size_t chunk_size, dspFlows_t dspFlow)
|
||||
{
|
||||
case dspfStereo:
|
||||
{
|
||||
//set volume
|
||||
if (dynamic_vol != 1.0)
|
||||
{
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
audio_tmp[i] = ((uint32_t) (dynamic_vol
|
||||
* ((float)((int16_t)((audio_tmp[i] & 0xFFFF0000) >> 16)))) << 16)
|
||||
+ (uint32_t) (dynamic_vol
|
||||
* ((float)((int16_t)(audio_tmp[i] & 0xFFFF))));
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -374,4 +386,14 @@ dsp_set_xoverfreq (uint8_t freqh, uint8_t freql, uint32_t samplerate)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
dsp_set_vol (double volume)
|
||||
{
|
||||
if (volume >= 0 && volume <= 1.0)
|
||||
{
|
||||
ESP_LOGI (TAG, "Set volume to %f", volume);
|
||||
dynamic_vol = volume;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -42,5 +42,6 @@ typedef struct pnode {
|
||||
void dsp_setup_flow(double freq, uint32_t samplerate, uint32_t chunkDurationMs);
|
||||
int dsp_processor(char *audio, size_t chunk_size, dspFlows_t dspFlow);
|
||||
void dsp_set_xoverfreq(uint8_t, uint8_t, uint32_t);
|
||||
void dsp_set_vol(double volume);
|
||||
|
||||
#endif /* _DSP_PROCESSOR_H_ */
|
||||
|
||||
Reference in New Issue
Block a user