This commit is contained in:
2025-04-18 22:48:34 +02:00
parent 9f403b2fac
commit 9bd229e11b
2 changed files with 13 additions and 13 deletions
+9 -9
View File
@@ -15,16 +15,16 @@ void init_modulation_power_measure(MPXPowerMeasurement* mpx, int sample_rate) {
} }
float measure_mpx(MPXPowerMeasurement* mpx, float deviation) { float measure_mpx(MPXPowerMeasurement* mpx, float deviation) {
mpx->sample += deviation * deviation; // rmS mpx->sample += deviation * deviation; // rmS
mpx->i++; mpx->i++;
float avg_deviation = sqrtf(mpx->sample / mpx->i); // RMs float avg_deviation = sqrtf(mpx->sample / mpx->i); // RMs
float modulation_power = deviation_to_dbr(avg_deviation); float modulation_power = deviation_to_dbr(avg_deviation);
if (mpx->i >= mpx->sample_rate * 60) { if (mpx->i >= mpx->sample_rate * 60) {
mpx->sample = 0; mpx->sample = 0;
mpx->i = 0; mpx->i = 0;
} }
return modulation_power; return modulation_power;
} }
+4 -4
View File
@@ -451,8 +451,8 @@ int main(int argc, char **argv) {
MPXPowerMeasurement power; MPXPowerMeasurement power;
init_modulation_power_measure(&power, sample_rate); init_modulation_power_measure(&power, sample_rate);
MPXPowerMeasurement mpx_only_power; MPXPowerMeasurement mpx_only_power;
init_modulation_power_measure(&mpx_only_power, sample_rate); init_modulation_power_measure(&mpx_only_power, sample_rate);
signal(SIGINT, stop); signal(SIGINT, stop);
signal(SIGTERM, stop); signal(SIGTERM, stop);
@@ -542,10 +542,10 @@ int main(int argc, char **argv) {
if(mpx_on) mpx += hard_clip(current_mpx_in, MPX_CLIPPER_THRESHOLD)*MPX_VOLUME; if(mpx_on) mpx += hard_clip(current_mpx_in, MPX_CLIPPER_THRESHOLD)*MPX_VOLUME;
if(sca_on) mpx += modulate_fm(&sca_mod, hard_clip(current_sca_in, sca_clipper_threshold))*SCA_VOLUME; if(sca_on) mpx += modulate_fm(&sca_mod, hard_clip(current_sca_in, sca_clipper_threshold))*SCA_VOLUME;
float mpx_only = measure_mpx(&mpx_only_power, mpx * mpx_deviation); float mpx_only = measure_mpx(&mpx_only_power, mpx * mpx_deviation);
float mpower = measure_mpx(&power, (audio+mpx) * mpx_deviation); float mpower = measure_mpx(&power, (audio+mpx) * mpx_deviation);
if (mpower > mpx_power) { if (mpower > mpx_power) {
float excess_power = mpower - mpx_power - mpx_only_power; float excess_power = mpower - mpx_power - mpx_only;
audio *= (dbr_to_deviation(-excess_power)/mpx_deviation); audio *= (dbr_to_deviation(-excess_power)/mpx_deviation);
} }