Use constants from math_funcs rather than unstandardized C++ constants.

This commit is contained in:
Ray Koopa 2017-01-24 18:56:43 +01:00
parent 87bb6cdc6f
commit ad3e1a9067
7 changed files with 41 additions and 34 deletions

View file

@ -1,5 +1,6 @@
#include "audio_effect_chorus.h" #include "audio_effect_chorus.h"
#include "servers/audio_server.h" #include "servers/audio_server.h"
#include "math_funcs.h"
void AudioEffectChorusInstance::process(const AudioFrame *p_src_frames,AudioFrame *p_dst_frames,int p_frame_count) { void AudioEffectChorusInstance::process(const AudioFrame *p_src_frames,AudioFrame *p_dst_frames,int p_frame_count) {
@ -61,7 +62,7 @@ void AudioEffectChorusInstance::_process_chunk(const AudioFrame *p_src_frames,Au
//low pass filter //low pass filter
if (v.cutoff==0) if (v.cutoff==0)
continue; continue;
float auxlp=expf(-2.0*M_PI*v.cutoff/mix_rate); float auxlp=expf(-2.0*Math_PI*v.cutoff/mix_rate);
float c1=1.0-auxlp; float c1=1.0-auxlp;
float c2=auxlp; float c2=auxlp;
AudioFrame h=filter_h[vc]; AudioFrame h=filter_h[vc];
@ -83,7 +84,7 @@ void AudioEffectChorusInstance::_process_chunk(const AudioFrame *p_src_frames,Au
float phase=(float)(local_cycles&AudioEffectChorus::CYCLES_MASK)/(float)(1<<AudioEffectChorus::CYCLES_FRAC); float phase=(float)(local_cycles&AudioEffectChorus::CYCLES_MASK)/(float)(1<<AudioEffectChorus::CYCLES_FRAC);
float wave_delay=sinf(phase*2.0*M_PI)*max_depth_frames; float wave_delay=sinf(phase*2.0*Math_PI)*max_depth_frames;
int wave_delay_frames=lrint(floor(wave_delay)); int wave_delay_frames=lrint(floor(wave_delay));
float wave_delay_frac=wave_delay-(float)wave_delay_frames; float wave_delay_frac=wave_delay-(float)wave_delay_frames;

View file

@ -1,5 +1,6 @@
#include "audio_effect_delay.h" #include "audio_effect_delay.h"
#include "servers/audio_server.h" #include "servers/audio_server.h"
#include "math_funcs.h"
void AudioEffectDelayInstance::process(const AudioFrame *p_src_frames,AudioFrame *p_dst_frames,int p_frame_count) { void AudioEffectDelayInstance::process(const AudioFrame *p_src_frames,AudioFrame *p_dst_frames,int p_frame_count) {
@ -48,7 +49,7 @@ void AudioEffectDelayInstance::_process_chunk(const AudioFrame *p_src_frames,Aud
tap2_vol.r*=CLAMP( 1.0 + base->tap_2_pan, 0, 1); tap2_vol.r*=CLAMP( 1.0 + base->tap_2_pan, 0, 1);
// feedback lowpass here // feedback lowpass here
float lpf_c=expf(-2.0*M_PI*base->feedback_lowpass/mix_rate); // 0 .. 10khz float lpf_c=expf(-2.0*Math_PI*base->feedback_lowpass/mix_rate); // 0 .. 10khz
float lpf_ic=1.0-lpf_c; float lpf_ic=1.0-lpf_c;
const AudioFrame *src=p_src_frames; const AudioFrame *src=p_src_frames;

View file

@ -1,5 +1,6 @@
#include "audio_effect_distortion.h" #include "audio_effect_distortion.h"
#include "servers/audio_server.h" #include "servers/audio_server.h"
#include "math_funcs.h"
@ -8,8 +9,8 @@ void AudioEffectDistortionInstance::process(const AudioFrame *p_src_frames,Audio
const float *src = (const float*)p_src_frames; const float *src = (const float*)p_src_frames;
float *dst = (float*)p_dst_frames; float *dst = (float*)p_dst_frames;
//float lpf_c=expf(-2.0*M_PI*keep_hf_hz.get()/(mix_rate*(float)OVERSAMPLE)); //float lpf_c=expf(-2.0*Math_PI*keep_hf_hz.get()/(mix_rate*(float)OVERSAMPLE));
float lpf_c=expf(-2.0*M_PI*base->keep_hf_hz/(AudioServer::get_singleton()->get_mix_rate())); float lpf_c=expf(-2.0*Math_PI*base->keep_hf_hz/(AudioServer::get_singleton()->get_mix_rate()));
float lpf_ic=1.0-lpf_c; float lpf_ic=1.0-lpf_c;
float drive_f=base->drive; float drive_f=base->drive;

View file

@ -1,5 +1,6 @@
#include "audio_effect_phaser.h" #include "audio_effect_phaser.h"
#include "servers/audio_server.h" #include "servers/audio_server.h"
#include "math_funcs.h"
void AudioEffectPhaserInstance::process(const AudioFrame *p_src_frames,AudioFrame *p_dst_frames,int p_frame_count) { void AudioEffectPhaserInstance::process(const AudioFrame *p_src_frames,AudioFrame *p_dst_frames,int p_frame_count) {
@ -8,14 +9,14 @@ void AudioEffectPhaserInstance::process(const AudioFrame *p_src_frames,AudioFram
float dmin = base->range_min / (sampling_rate/2.0); float dmin = base->range_min / (sampling_rate/2.0);
float dmax = base->range_max / (sampling_rate/2.0); float dmax = base->range_max / (sampling_rate/2.0);
float increment = 2.f * M_PI * (base->rate / sampling_rate); float increment = 2.f * Math_PI * (base->rate / sampling_rate);
for(int i=0;i<p_frame_count;i++) { for(int i=0;i<p_frame_count;i++) {
phase += increment; phase += increment;
while ( phase >= M_PI * 2.f ) { while ( phase >= Math_PI * 2.f ) {
phase -= M_PI * 2.f; phase -= Math_PI * 2.f;
} }
float d = dmin + (dmax-dmin) * ((sin( phase ) + 1.f)/2.f); float d = dmin + (dmax-dmin) * ((sin( phase ) + 1.f)/2.f);

View file

@ -1,5 +1,6 @@
#include "audio_effect_pitch_shift.h" #include "audio_effect_pitch_shift.h"
#include "servers/audio_server.h" #include "servers/audio_server.h"
#include "math_funcs.h"
/**************************************************************************** /****************************************************************************
* *
* NAME: smbPitchShift.cpp * NAME: smbPitchShift.cpp
@ -57,7 +58,7 @@ void SMBPitchShift::PitchShift(float pitchShift, long numSampsToProcess, long ff
fftFrameSize2 = fftFrameSize/2; fftFrameSize2 = fftFrameSize/2;
stepSize = fftFrameSize/osamp; stepSize = fftFrameSize/osamp;
freqPerBin = sampleRate/(double)fftFrameSize; freqPerBin = sampleRate/(double)fftFrameSize;
expct = 2.*M_PI*(double)stepSize/(double)fftFrameSize; expct = 2.*Math_PI*(double)stepSize/(double)fftFrameSize;
inFifoLatency = fftFrameSize-stepSize; inFifoLatency = fftFrameSize-stepSize;
if (gRover == 0) gRover = inFifoLatency; if (gRover == 0) gRover = inFifoLatency;
@ -77,7 +78,7 @@ void SMBPitchShift::PitchShift(float pitchShift, long numSampsToProcess, long ff
/* do windowing and re,im interleave */ /* do windowing and re,im interleave */
for (k = 0; k < fftFrameSize;k++) { for (k = 0; k < fftFrameSize;k++) {
window = -.5*cos(2.*M_PI*(double)k/(double)fftFrameSize)+.5; window = -.5*cos(2.*Math_PI*(double)k/(double)fftFrameSize)+.5;
gFFTworksp[2*k] = gInFIFO[k] * window; gFFTworksp[2*k] = gInFIFO[k] * window;
gFFTworksp[2*k+1] = 0.; gFFTworksp[2*k+1] = 0.;
} }
@ -106,13 +107,13 @@ void SMBPitchShift::PitchShift(float pitchShift, long numSampsToProcess, long ff
tmp -= (double)k*expct; tmp -= (double)k*expct;
/* map delta phase into +/- Pi interval */ /* map delta phase into +/- Pi interval */
qpd = tmp/M_PI; qpd = tmp/Math_PI;
if (qpd >= 0) qpd += qpd&1; if (qpd >= 0) qpd += qpd&1;
else qpd -= qpd&1; else qpd -= qpd&1;
tmp -= M_PI*(double)qpd; tmp -= Math_PI*(double)qpd;
/* get deviation from bin frequency from the +/- Pi interval */ /* get deviation from bin frequency from the +/- Pi interval */
tmp = osamp*tmp/(2.*M_PI); tmp = osamp*tmp/(2.*Math_PI);
/* compute the k-th partials' true frequency */ /* compute the k-th partials' true frequency */
tmp = (double)k*freqPerBin + tmp*freqPerBin; tmp = (double)k*freqPerBin + tmp*freqPerBin;
@ -150,7 +151,7 @@ void SMBPitchShift::PitchShift(float pitchShift, long numSampsToProcess, long ff
tmp /= freqPerBin; tmp /= freqPerBin;
/* take osamp into account */ /* take osamp into account */
tmp = 2.*M_PI*tmp/osamp; tmp = 2.*Math_PI*tmp/osamp;
/* add the overlap phase advance back in */ /* add the overlap phase advance back in */
tmp += (double)k*expct; tmp += (double)k*expct;
@ -172,7 +173,7 @@ void SMBPitchShift::PitchShift(float pitchShift, long numSampsToProcess, long ff
/* do windowing and add to output accumulator */ /* do windowing and add to output accumulator */
for(k=0; k < fftFrameSize; k++) { for(k=0; k < fftFrameSize; k++) {
window = -.5*cos(2.*M_PI*(double)k/(double)fftFrameSize)+.5; window = -.5*cos(2.*Math_PI*(double)k/(double)fftFrameSize)+.5;
gOutputAccum[k] += 2.*window*gFFTworksp[2*k]/(fftFrameSize2*osamp); gOutputAccum[k] += 2.*window*gFFTworksp[2*k]/(fftFrameSize2*osamp);
} }
for (k = 0; k < stepSize; k++) gOutFIFO[k] = gOutputAccum[k]; for (k = 0; k < stepSize; k++) gOutFIFO[k] = gOutputAccum[k];
@ -224,7 +225,7 @@ void SMBPitchShift::smbFft(float *fftBuffer, long fftFrameSize, long sign)
le2 = le>>1; le2 = le>>1;
ur = 1.0; ur = 1.0;
ui = 0.0; ui = 0.0;
arg = M_PI / (le2>>1); arg = Math_PI / (le2>>1);
wr = cos(arg); wr = cos(arg);
wi = sign*sin(arg); wi = sign*sin(arg);
for (j = 0; j < le2; j += 2) { for (j = 0; j < le2; j += 2) {

View file

@ -12,6 +12,7 @@
#include "eq.h" #include "eq.h"
#include <math.h> #include <math.h>
#include "error_macros.h" #include "error_macros.h"
#include "math_funcs.h"
#define POW2(v) ((v)*(v)) #define POW2(v) ((v)*(v))
@ -73,9 +74,9 @@ void EQ::recalculate_band_coefficients() {
double side_gain2=POW2(1.0/M_SQRT2); double side_gain2=POW2(Math_SQRT12);
double th=2.0*M_PI*frq/mix_rate; double th=2.0*Math_PI*frq/mix_rate;
double th_l=2.0*M_PI*frq_l/mix_rate; double th_l=2.0*Math_PI*frq_l/mix_rate;
double c2a=side_gain2 * POW2(cos(th)) double c2a=side_gain2 * POW2(cos(th))
- 2.0 * side_gain2 * cos(th_l) * cos(th) - 2.0 * side_gain2 * cos(th_l) * cos(th)

View file

@ -12,6 +12,7 @@
#include "reverb.h" #include "reverb.h"
#include <math.h> #include <math.h>
#include "math_funcs.h"
const float Reverb::comb_tunings[MAX_COMBS]={ const float Reverb::comb_tunings[MAX_COMBS]={
@ -68,7 +69,7 @@ void Reverb::process(float *p_src,float *p_dst,int p_frames) {
} }
if (params.hpf>0) { if (params.hpf>0) {
float hpaux=expf(-2.0*M_PI*params.hpf*6000/params.mix_rate); float hpaux=expf(-2.0*Math_PI*params.hpf*6000/params.mix_rate);
float hp_a1=(1.0+hpaux)/2.0; float hp_a1=(1.0+hpaux)/2.0;
float hp_a2=-(1.0+hpaux)/2.0; float hp_a2=-(1.0+hpaux)/2.0;
float hp_b1=hpaux; float hp_b1=hpaux;
@ -299,7 +300,7 @@ void Reverb::update_parameters() {
float auxdmp=params.damp/2.0+0.5; //only half the range (0.5 .. 1.0 is enough) float auxdmp=params.damp/2.0+0.5; //only half the range (0.5 .. 1.0 is enough)
auxdmp*=auxdmp; auxdmp*=auxdmp;
c.damp=expf(-2.0*M_PI*auxdmp*10000/params.mix_rate); // 0 .. 10khz c.damp=expf(-2.0*Math_PI*auxdmp*10000/params.mix_rate); // 0 .. 10khz
} }
} }