Commit d034ab59 authored by Jean-Baptiste Kempf's avatar Jean-Baptiste Kempf

Spatializer: spaces and tab!!!

parent c701929d
...@@ -8,29 +8,29 @@ ...@@ -8,29 +8,29 @@
allpass::allpass() allpass::allpass()
{ {
bufidx = 0; bufidx = 0;
} }
void allpass::setbuffer(float *buf, int size) void allpass::setbuffer(float *buf, int size)
{ {
buffer = buf; buffer = buf;
bufsize = size; bufsize = size;
} }
void allpass::mute() void allpass::mute()
{ {
for (int i=0; i<bufsize; i++) for (int i=0; i<bufsize; i++)
buffer[i]=0; buffer[i]=0;
} }
void allpass::setfeedback(float val) void allpass::setfeedback(float val)
{ {
feedback = val; feedback = val;
} }
float allpass::getfeedback() float allpass::getfeedback()
{ {
return feedback; return feedback;
} }
//ends //ends
\ No newline at end of file
...@@ -12,16 +12,16 @@ class allpass ...@@ -12,16 +12,16 @@ class allpass
{ {
public: public:
allpass(); allpass();
void setbuffer(float *buf, int size); void setbuffer(float *buf, int size);
inline float process(float inp); inline float process(float inp);
void mute(); void mute();
void setfeedback(float val); void setfeedback(float val);
float getfeedback(); float getfeedback();
// private: // private:
float feedback; float feedback;
float *buffer; float *buffer;
int bufsize; int bufsize;
int bufidx; int bufidx;
}; };
...@@ -29,18 +29,18 @@ public: ...@@ -29,18 +29,18 @@ public:
inline float allpass::process(float input) inline float allpass::process(float input)
{ {
float output; float output;
float bufout; float bufout;
bufout = buffer[bufidx]; bufout = buffer[bufidx];
undenormalise(bufout); undenormalise(bufout);
output = -input + bufout; output = -input + bufout;
buffer[bufidx] = input + (bufout*feedback); buffer[bufidx] = input + (bufout*feedback);
if(++bufidx>=bufsize) bufidx = 0; if(++bufidx>=bufsize) bufidx = 0;
return output; return output;
} }
#endif//_allpass #endif//_allpass
......
...@@ -8,41 +8,41 @@ ...@@ -8,41 +8,41 @@
comb::comb() comb::comb()
{ {
filterstore = 0; filterstore = 0;
bufidx = 0; bufidx = 0;
} }
void comb::setbuffer(float *buf, int size) void comb::setbuffer(float *buf, int size)
{ {
buffer = buf; buffer = buf;
bufsize = size; bufsize = size;
} }
void comb::mute() void comb::mute()
{ {
for (int i=0; i<bufsize; i++) for (int i=0; i<bufsize; i++)
buffer[i]=0; buffer[i]=0;
} }
void comb::setdamp(float val) void comb::setdamp(float val)
{ {
damp1 = val; damp1 = val;
damp2 = 1-val; damp2 = 1-val;
} }
float comb::getdamp() float comb::getdamp()
{ {
return damp1; return damp1;
} }
void comb::setfeedback(float val) void comb::setfeedback(float val)
{ {
feedback = val; feedback = val;
} }
float comb::getfeedback() float comb::getfeedback()
{ {
return feedback; return feedback;
} }
// ends // ends
...@@ -12,22 +12,22 @@ ...@@ -12,22 +12,22 @@
class comb class comb
{ {
public: public:
comb(); comb();
void setbuffer(float *buf, int size); void setbuffer(float *buf, int size);
inline float process(float inp); inline float process(float inp);
void mute(); void mute();
void setdamp(float val); void setdamp(float val);
float getdamp(); float getdamp();
void setfeedback(float val); void setfeedback(float val);
float getfeedback(); float getfeedback();
private: private:
float feedback; float feedback;
float filterstore; float filterstore;
float damp1; float damp1;
float damp2; float damp2;
float *buffer; float *buffer;
int bufsize; int bufsize;
int bufidx; int bufidx;
}; };
...@@ -35,19 +35,19 @@ private: ...@@ -35,19 +35,19 @@ private:
inline float comb::process(float input) inline float comb::process(float input)
{ {
float output; float output;
output = buffer[bufidx]; output = buffer[bufidx];
undenormalise(output); undenormalise(output);
filterstore = (output*damp2) + (filterstore*damp1); filterstore = (output*damp2) + (filterstore*damp1);
undenormalise(filterstore); undenormalise(filterstore);
buffer[bufidx] = input + (filterstore*feedback); buffer[bufidx] = input + (filterstore*feedback);
if(++bufidx>=bufsize) bufidx = 0; if(++bufidx>=bufsize) bufidx = 0;
return output; return output;
} }
#endif //_comb_ #endif //_comb_
......
// Reverb model implementation // Reverb model implementation
// //
// //
// Google Summer of Code 2007 // Google Summer of Code 2007
// //
// Authors: Biodun Osunkunle <biodun@videolan.org> // Authors: Biodun Osunkunle <biodun@videolan.org>
// //
// Mentor : Jean-Baptiste Kempf <jb@videolan.org> // Mentor : Jean-Baptiste Kempf <jb@videolan.org>
// //
// Original written by Jezar at Dreampoint, June 2000 // Original written by Jezar at Dreampoint, June 2000
...@@ -16,169 +16,169 @@ ...@@ -16,169 +16,169 @@
revmodel::revmodel() revmodel::revmodel()
{ {
// Tie the components to their buffers // Tie the components to their buffers
combL[0].setbuffer(bufcombL1,combtuningL1); combL[0].setbuffer(bufcombL1,combtuningL1);
combR[0].setbuffer(bufcombR1,combtuningR1); combR[0].setbuffer(bufcombR1,combtuningR1);
combL[1].setbuffer(bufcombL2,combtuningL2); combL[1].setbuffer(bufcombL2,combtuningL2);
combR[1].setbuffer(bufcombR2,combtuningR2); combR[1].setbuffer(bufcombR2,combtuningR2);
combL[2].setbuffer(bufcombL3,combtuningL3); combL[2].setbuffer(bufcombL3,combtuningL3);
combR[2].setbuffer(bufcombR3,combtuningR3); combR[2].setbuffer(bufcombR3,combtuningR3);
combL[3].setbuffer(bufcombL4,combtuningL4); combL[3].setbuffer(bufcombL4,combtuningL4);
combR[3].setbuffer(bufcombR4,combtuningR4); combR[3].setbuffer(bufcombR4,combtuningR4);
combL[4].setbuffer(bufcombL5,combtuningL5); combL[4].setbuffer(bufcombL5,combtuningL5);
combR[4].setbuffer(bufcombR5,combtuningR5); combR[4].setbuffer(bufcombR5,combtuningR5);
combL[5].setbuffer(bufcombL6,combtuningL6); combL[5].setbuffer(bufcombL6,combtuningL6);
combR[5].setbuffer(bufcombR6,combtuningR6); combR[5].setbuffer(bufcombR6,combtuningR6);
combL[6].setbuffer(bufcombL7,combtuningL7); combL[6].setbuffer(bufcombL7,combtuningL7);
combR[6].setbuffer(bufcombR7,combtuningR7); combR[6].setbuffer(bufcombR7,combtuningR7);
combL[7].setbuffer(bufcombL8,combtuningL8); combL[7].setbuffer(bufcombL8,combtuningL8);
combR[7].setbuffer(bufcombR8,combtuningR8); combR[7].setbuffer(bufcombR8,combtuningR8);
allpassL[0].setbuffer(bufallpassL1,allpasstuningL1); allpassL[0].setbuffer(bufallpassL1,allpasstuningL1);
allpassR[0].setbuffer(bufallpassR1,allpasstuningR1); allpassR[0].setbuffer(bufallpassR1,allpasstuningR1);
allpassL[1].setbuffer(bufallpassL2,allpasstuningL2); allpassL[1].setbuffer(bufallpassL2,allpasstuningL2);
allpassR[1].setbuffer(bufallpassR2,allpasstuningR2); allpassR[1].setbuffer(bufallpassR2,allpasstuningR2);
allpassL[2].setbuffer(bufallpassL3,allpasstuningL3); allpassL[2].setbuffer(bufallpassL3,allpasstuningL3);
allpassR[2].setbuffer(bufallpassR3,allpasstuningR3); allpassR[2].setbuffer(bufallpassR3,allpasstuningR3);
allpassL[3].setbuffer(bufallpassL4,allpasstuningL4); allpassL[3].setbuffer(bufallpassL4,allpasstuningL4);
allpassR[3].setbuffer(bufallpassR4,allpasstuningR4); allpassR[3].setbuffer(bufallpassR4,allpasstuningR4);
// Set default values // Set default values
allpassL[0].setfeedback(0.5f); allpassL[0].setfeedback(0.5f);
allpassR[0].setfeedback(0.5f); allpassR[0].setfeedback(0.5f);
allpassL[1].setfeedback(0.5f); allpassL[1].setfeedback(0.5f);
allpassR[1].setfeedback(0.5f); allpassR[1].setfeedback(0.5f);
allpassL[2].setfeedback(0.5f); allpassL[2].setfeedback(0.5f);
allpassR[2].setfeedback(0.5f); allpassR[2].setfeedback(0.5f);
allpassL[3].setfeedback(0.5f); allpassL[3].setfeedback(0.5f);
allpassR[3].setfeedback(0.5f); allpassR[3].setfeedback(0.5f);
setwet(initialwet); setwet(initialwet);
setroomsize(initialroom); setroomsize(initialroom);
setdry(initialdry); setdry(initialdry);
setdamp(initialdamp); setdamp(initialdamp);
setwidth(initialwidth); setwidth(initialwidth);
setmode(initialmode); setmode(initialmode);
// Buffer will be full of rubbish - so we MUST mute them // Buffer will be full of rubbish - so we MUST mute them
mute(); mute();
} }
void revmodel::mute() void revmodel::mute()
{ {
int i; int i;
if (getmode() >= freezemode) if (getmode() >= freezemode)
return; return;
for (i = 0 ; i < numcombs ; i++) for (i = 0 ; i < numcombs ; i++)
{ {
combL[i].mute(); combL[i].mute();
combR[i].mute(); combR[i].mute();
} }
for (i=0;i<numallpasses;i++) for (i=0;i<numallpasses;i++)
{ {
allpassL[i].mute(); allpassL[i].mute();
allpassR[i].mute(); allpassR[i].mute();
} }
} }
void revmodel::processreplace(float *inputL, float *outputL, long numsamples, int skip) void revmodel::processreplace(float *inputL, float *outputL, long numsamples, int skip)
{ {
float outL,outR,input; float outL,outR,input;
float inputR; float inputR;
int i; int i;
outL = outR = 0; outL = outR = 0;
if (skip > 1) if (skip > 1)
inputR = inputL[1]; inputR = inputL[1];
else else
inputR = inputL[0]; inputR = inputL[0];
input = (inputL[0] + inputR) * gain; input = (inputL[0] + inputR) * gain;
// Accumulate comb filters in parallel // Accumulate comb filters in parallel
for(i=0; i<numcombs; i++) for(i=0; i<numcombs; i++)
{ {
outL += combL[i].process(input); outL += combL[i].process(input);
outR += combR[i].process(input); outR += combR[i].process(input);
} }
// Feed through allpasses in series // Feed through allpasses in series
for(i=0; i<numallpasses; i++) for(i=0; i<numallpasses; i++)
{ {
outL = allpassL[i].process(outL); outL = allpassL[i].process(outL);
outR = allpassR[i].process(outR); outR = allpassR[i].process(outR);
} }
// Calculate output REPLACING anything already there // Calculate output REPLACING anything already there
outputL[0] = (outL*wet1 + outR*wet2 + inputR*dry); outputL[0] = (outL*wet1 + outR*wet2 + inputR*dry);
if (skip > 1) if (skip > 1)
outputL[1] = (outR*wet1 + outL*wet2 + inputR*dry); outputL[1] = (outR*wet1 + outL*wet2 + inputR*dry);
} }
void revmodel::processmix(float *inputL, float *outputL, long numsamples, int skip) void revmodel::processmix(float *inputL, float *outputL, long numsamples, int skip)
{ {
float outL,outR,input; float outL,outR,input;
float inputR; float inputR;
int i; int i;
outL = outR = 0; outL = outR = 0;
if (skip > 1) if (skip > 1)
inputR = inputL[1]; inputR = inputL[1];
else else
inputR = inputL[0]; inputR = inputL[0];
input = (inputL[0] + inputR) * gain; input = (inputL[0] + inputR) * gain;
// Accumulate comb filters in parallel // Accumulate comb filters in parallel
for(i=0; i<numcombs; i++) for(i=0; i<numcombs; i++)
{ {
outL += combL[i].process(input); outL += combL[i].process(input);
outR += combR[i].process(input); outR += combR[i].process(input);
} }
// Feed through allpasses in series // Feed through allpasses in series
for(i=0; i<numallpasses; i++) for(i=0; i<numallpasses; i++)
{ {
outL = allpassL[i].process(outL); outL = allpassL[i].process(outL);
outR = allpassR[i].process(outR); outR = allpassR[i].process(outR);
} }
// Calculate output REPLACING anything already there // Calculate output REPLACING anything already there
outputL[0] += (outL*wet1 + outR*wet2 + inputR*dry); outputL[0] += (outL*wet1 + outR*wet2 + inputR*dry);
if (skip > 1) if (skip > 1)
outputL[1] += (outR*wet1 + outL*wet2 + inputR*dry); outputL[1] += (outR*wet1 + outL*wet2 + inputR*dry);
} }
void revmodel::update() void revmodel::update()
{ {
// Recalculate internal values after parameter change // Recalculate internal values after parameter change
int i; int i;
wet1 = wet*(width/2 + 0.5f); wet1 = wet*(width/2 + 0.5f);
wet2 = wet*((1-width)/2); wet2 = wet*((1-width)/2);
if (mode >= freezemode) if (mode >= freezemode)
{ {
roomsize1 = 1; roomsize1 = 1;
damp1 = 0; damp1 = 0;
gain = muted; gain = muted;
} }
else else
{ {
roomsize1 = roomsize; roomsize1 = roomsize;
damp1 = damp; damp1 = damp;
gain = fixedgain; gain = fixedgain;
} }
for(i=0; i<numcombs; i++) for(i=0; i<numcombs; i++)
{ {
combL[i].setfeedback(roomsize1); combL[i].setfeedback(roomsize1);
combR[i].setfeedback(roomsize1); combR[i].setfeedback(roomsize1);
} }
for(i=0; i<numcombs; i++) for(i=0; i<numcombs; i++)
{ {
combL[i].setdamp(damp1); combL[i].setdamp(damp1);
combR[i].setdamp(damp1); combR[i].setdamp(damp1);
} }
} }
// The following get/set functions are not inlined, because // The following get/set functions are not inlined, because
...@@ -188,70 +188,70 @@ void revmodel::update() ...@@ -188,70 +188,70 @@ void revmodel::update()
void revmodel::setroomsize(float value) void revmodel::setroomsize(float value)
{ {
roomsize = (value*scaleroom) + offsetroom; roomsize = (value*scaleroom) + offsetroom;
update(); update();
} }
float revmodel::getroomsize() float revmodel::getroomsize()
{ {
return (roomsize-offsetroom)/scaleroom; return (roomsize-offsetroom)/scaleroom;
} }
void revmodel::setdamp(float value) void revmodel::setdamp(float value)
{ {
damp = value*scaledamp; damp = value*scaledamp;
update(); update();
} }
float revmodel::getdamp() float revmodel::getdamp()
{ {
return damp/scaledamp; return damp/scaledamp;
} }
void revmodel::setwet(float value) void revmodel::setwet(float value)
{ {
wet = value*scalewet; wet = value*scalewet;
update(); update();
} }
float revmodel::getwet() float revmodel::getwet()
{ {
return wet/scalewet; return wet/scalewet;
} }
void revmodel::setdry(float value) void revmodel::setdry(float value)
{ {
dry = value*scaledry; dry = value*scaledry;
} }
float revmodel::getdry() float revmodel::getdry()
{ {
return dry/scaledry; return dry/scaledry;
} }
void revmodel::setwidth(float value) void revmodel::setwidth(float value)
{ {
width = value; width = value;
update(); update();
} }
float revmodel::getwidth() float revmodel::getwidth()
{ {
return width; return width;
} }
void revmodel::setmode(float value) void revmodel::setmode(float value)
{ {
mode = value; mode = value;
update(); update();
} }
float revmodel::getmode() float revmodel::getmode()
{ {
if (mode >= freezemode) if (mode >= freezemode)
return 1; return 1;
else else
return 0; return 0;
} }
//ends //ends
// Reverb model declaration // Reverb model declaration
// //
// Google Summer of Code 2007 // Google Summer of Code 2007
// //
// Authors: Biodun Osunkunle <biodun@videolan.org> // Authors: Biodun Osunkunle <biodun@videolan.org>
// //
// Mentor : Jean-Baptiste Kempf <jb@videolan.org> // Mentor : Jean-Baptiste Kempf <jb@videolan.org>
// //
// Original written by Jezar at Dreampoint, June 2000 // Original written by Jezar at Dreampoint, June 2000
...@@ -18,72 +18,72 @@ ...@@ -18,72 +18,72 @@
class revmodel class revmodel
{ {
public: public:
revmodel(); revmodel();
void mute(); void mute();
void processreplace(float *inputL, float *outputL, long numsamples, int skip); void processreplace(float *inputL, float *outputL, long numsamples, int skip);
void processmix(float *inputL, float *outputL, long numsamples, int skip); void processmix(float *inputL, float *outputL, long numsamples, int skip);
void setroomsize(float value); void setroomsize(float value);
float getroomsize(); float getroomsize();
void setdamp(float value); void setdamp(float value);
float getdamp(); float getdamp();
void setwet(float value); void setwet(float value);
float getwet(); float getwet();
void setdry(float value); void setdry(float value);
float getdry(); float getdry();
void setwidth(float value); void setwidth(float value);
float getwidth(); float getwidth();
void setmode(float value); void setmode(float value);
float getmode(); float getmode();
private: private:
void update(); void update();
private: private:
float gain; float gain;
float roomsize,roomsize1; float roomsize,roomsize1;
float damp,damp1; float damp,damp1;
float wet,wet1,wet2; float wet,wet1,wet2;
float dry; float dry;
float width; float width;
float mode; float mode;
// The following are all declared inline // The following are all declared inline
// to remove the need for dynamic allocation // to remove the need for dynamic allocation
// with its subsequent error-checking messiness // with its subsequent error-checking messiness
// Comb filters // Comb filters
comb combL[numcombs]; comb combL[numcombs];
comb combR[numcombs]; comb combR[numcombs];
// Allpass filters // Allpass filters
allpass allpassL[numallpasses]; allpass allpassL[numallpasses];
allpass allpassR[numallpasses]; allpass allpassR[numallpasses];
// Buffers for the combs // Buffers for the combs
float bufcombL1[combtuningL1]; float bufcombL1[combtuningL1];
float bufcombR1[combtuningR1]; float bufcombR1[combtuningR1];
float bufcombL2[combtuningL2]; float bufcombL2[combtuningL2];
float bufcombR2[combtuningR2]; float bufcombR2[combtuningR2];
float bufcombL3[combtuningL3]; float bufcombL3[combtuningL3];
float bufcombR3[combtuningR3]; float bufcombR3[combtuningR3];
float bufcombL4[combtuningL4]; float bufcombL4[combtuningL4];
float bufcombR4[combtuningR4]; float bufcombR4[combtuningR4];
float bufcombL5[combtuningL5]; float bufcombL5[combtuningL5];
float bufcombR5[combtuningR5]; float bufcombR5[combtuningR5];
float bufcombL6[combtuningL6]; float bufcombL6[combtuningL6];
float bufcombR6[combtuningR6]; float bufcombR6[combtuningR6];
float bufcombL7[combtuningL7]; float bufcombL7[combtuningL7];
float bufcombR7[combtuningR7]; float bufcombR7[combtuningR7];
float bufcombL8[combtuningL8]; float bufcombL8[combtuningL8];
float bufcombR8[combtuningR8]; float bufcombR8[combtuningR8];
// Buffers for the allpasses // Buffers for the allpasses
float bufallpassL1[allpasstuningL1]; float bufallpassL1[allpasstuningL1];
float bufallpassR1[allpasstuningR1]; float bufallpassR1[allpasstuningR1];
float bufallpassL2[allpasstuningL2]; float bufallpassL2[allpasstuningL2];
float bufallpassR2[allpasstuningR2]; float bufallpassR2[allpasstuningR2];
float bufallpassL3[allpasstuningL3]; float bufallpassL3[allpasstuningL3];
float bufallpassR3[allpasstuningR3]; float bufallpassR3[allpasstuningR3];
float bufallpassL4[allpasstuningL4]; float bufallpassL4[allpasstuningL4];
float bufallpassR4[allpasstuningR4]; float bufallpassR4[allpasstuningR4];
}; };
#endif//_revmodel_ #endif//_revmodel_
......
...@@ -2,11 +2,11 @@ ...@@ -2,11 +2,11 @@
* spatializer.cpp: * spatializer.cpp:
***************************************************************************** *****************************************************************************
* Copyright (C) 2004, 2006, 2007 the VideoLAN team * Copyright (C) 2004, 2006, 2007 the VideoLAN team
* *
* Google Summer of Code 2007 * Google Summer of Code 2007
* *
* Authors: Biodun Osunkunle <biodun@videolan.org> * Authors: Biodun Osunkunle <biodun@videolan.org>
* *
* Mentor : Jean-Baptiste Kempf <jb@videolan.org> * Mentor : Jean-Baptiste Kempf <jb@videolan.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
...@@ -63,11 +63,11 @@ typedef struct aout_filter_sys_t ...@@ -63,11 +63,11 @@ typedef struct aout_filter_sys_t
{ {
/* reverb static config */ /* reverb static config */
vlc_bool_t b_first; vlc_bool_t b_first;
} aout_filter_sys_t; } aout_filter_sys_t;
static revmodel reverbm; static revmodel reverbm;
static const char *psz_control_names[] = static const char *psz_control_names[] =
{ {
"Roomsize", "Width" , "Wet", "Dry", "Damp" "Roomsize", "Width" , "Wet", "Dry", "Damp"
...@@ -88,7 +88,8 @@ static int DryCallback ( vlc_object_t *, char const *, ...@@ -88,7 +88,8 @@ static int DryCallback ( vlc_object_t *, char const *,
static int DampCallback ( vlc_object_t *, char const *, static int DampCallback ( vlc_object_t *, char const *,
vlc_value_t, vlc_value_t, void * ); vlc_value_t, vlc_value_t, void * );
static int WidthCallback ( vlc_object_t *, char const *, static int WidthCallback ( vlc_object_t *, char const *,
vlc_value_t, vlc_value_t, void * ); vlc_value_t, vlc_value_t, void * );
/***************************************************************************** /*****************************************************************************
* Open: * Open:
*****************************************************************************/ *****************************************************************************/
...@@ -122,8 +123,8 @@ static int Open( vlc_object_t *p_this ) ...@@ -122,8 +123,8 @@ static int Open( vlc_object_t *p_this )
p_filter->pf_do_work = DoWork; p_filter->pf_do_work = DoWork;
p_filter->b_in_place = VLC_TRUE; p_filter->b_in_place = VLC_TRUE;
/* Allocate structure */ /* Allocate structure */
p_sys = p_filter->p_sys = (aout_filter_sys_t*)malloc( sizeof( aout_filter_sys_t ) ); p_sys = p_filter->p_sys = (aout_filter_sys_t*)malloc( sizeof( aout_filter_sys_t ) );
reverbm.setroomsize(1.05); reverbm.setroomsize(1.05);
reverbm.setwet(10.0f); reverbm.setwet(10.0f);
...@@ -131,14 +132,14 @@ static int Open( vlc_object_t *p_this ) ...@@ -131,14 +132,14 @@ static int Open( vlc_object_t *p_this )
reverbm.setdamp(0.3); reverbm.setdamp(0.3);
reverbm.setwidth(0.9); reverbm.setwidth(0.9);
SpatInit( p_filter); SpatInit( p_filter);
return VLC_SUCCESS; return VLC_SUCCESS;
} }
/***************************************************************************** /*****************************************************************************
* Close: close the plugin * Close: close the plugin
*****************************************************************************/ *****************************************************************************/
static void Close( vlc_object_t *p_this ) static void Close( vlc_object_t *p_this )
{ {
aout_filter_t *p_filter = (aout_filter_t *)p_this; aout_filter_t *p_filter = (aout_filter_t *)p_this;
aout_filter_sys_t *p_sys = p_filter->p_sys; aout_filter_sys_t *p_sys = p_filter->p_sys;
...@@ -169,7 +170,7 @@ static int SpatInit( aout_filter_t *p_filter ) ...@@ -169,7 +170,7 @@ static int SpatInit( aout_filter_t *p_filter )
int i, ch; int i, ch;
vlc_value_t val1, val2, val3, val4, val5; vlc_value_t val1, val2, val3, val4, val5;
aout_instance_t *p_aout = (aout_instance_t *)p_filter->p_parent; aout_instance_t *p_aout = (aout_instance_t *)p_filter->p_parent;
for( int i = 0; i < 5 ; i ++ ) for( int i = 0; i < 5 ; i ++ )
{ {
var_CreateGetFloatCommand( p_aout, psz_control_names[i] ); var_CreateGetFloatCommand( p_aout, psz_control_names[i] );
...@@ -195,7 +196,7 @@ static int SpatInit( aout_filter_t *p_filter ) ...@@ -195,7 +196,7 @@ static int SpatInit( aout_filter_t *p_filter )
var_AddCallback( p_aout, psz_control_names[2], WetCallback, p_sys ); var_AddCallback( p_aout, psz_control_names[2], WetCallback, p_sys );
var_AddCallback( p_aout, psz_control_names[3], DryCallback, p_sys ); var_AddCallback( p_aout, psz_control_names[3], DryCallback, p_sys );
var_AddCallback( p_aout, psz_control_names[4], DampCallback, p_sys ); var_AddCallback( p_aout, psz_control_names[4], DampCallback, p_sys );
return VLC_SUCCESS; return VLC_SUCCESS;
} }
...@@ -210,7 +211,7 @@ static void SpatFilter( aout_instance_t *p_aout, ...@@ -210,7 +211,7 @@ static void SpatFilter( aout_instance_t *p_aout,
{ {
in[ch] = in[ch] * SPAT_AMP; in[ch] = in[ch] * SPAT_AMP;
} }
reverbm.processreplace( in, out , 1, i_channels); reverbm.processreplace( in, out , 1, i_channels);
in += i_channels; in += i_channels;
out += i_channels; out += i_channels;
} }
...@@ -236,7 +237,7 @@ static void SpatClean( aout_filter_t *p_filter ) ...@@ -236,7 +237,7 @@ static void SpatClean( aout_filter_t *p_filter )
static int RoomCallback( vlc_object_t *p_this, char const *psz_cmd, static int RoomCallback( vlc_object_t *p_this, char const *psz_cmd,
vlc_value_t oldval, vlc_value_t newval, void *p_data ) vlc_value_t oldval, vlc_value_t newval, void *p_data )
{ {
msg_Dbg (p_this,"room callback %3.1f %s %s %d\n", newval.f_float, __FILE__,__func__,__LINE__); msg_Dbg (p_this,"room callback %3.1f %s %s %d\n", newval.f_float, __FILE__,__func__,__LINE__);
reverbm.setroomsize(newval.f_float); reverbm.setroomsize(newval.f_float);
return VLC_SUCCESS; return VLC_SUCCESS;
} }
......
...@@ -7,52 +7,52 @@ ...@@ -7,52 +7,52 @@
#ifndef _tuning_ #ifndef _tuning_
#define _tuning_ #define _tuning_
const int numcombs = 8; const int numcombs = 8;
const int numallpasses = 4; const int numallpasses = 4;
const float muted = 0; const float muted = 0;
const float fixedgain = 0.005f; const float fixedgain = 0.005f;
const float scalewet = 3; const float scalewet = 3;
const float scaledry = 2; const float scaledry = 2;
const float scaledamp = 0.4f; const float scaledamp = 0.4f;
const float scaleroom = 0.28f; const float scaleroom = 0.28f;
const float offsetroom = 0.7f; const float offsetroom = 0.7f;
const float initialroom = 0.5f; const float initialroom = 0.5f;
const float initialdamp = 0.5f; const float initialdamp = 0.5f;
const float initialwet = 1/scalewet; const float initialwet = 1/scalewet;
const float initialdry = 0; const float initialdry = 0;
const float initialwidth = 1; const float initialwidth = 1;
const float initialmode = 0; const float initialmode = 0;
const float freezemode = 0.5f; const float freezemode = 0.5f;
const int stereospread = 23; const int stereospread = 23;
// These values assume 44.1KHz sample rate // These values assume 44.1KHz sample rate
// they will probably be OK for 48KHz sample rate // they will probably be OK for 48KHz sample rate
// but would need scaling for 96KHz (or other) sample rates. // but would need scaling for 96KHz (or other) sample rates.
// The values were obtained by listening tests. // The values were obtained by listening tests.
const int combtuningL1 = 1116; const int combtuningL1 = 1116;
const int combtuningR1 = 1116+stereospread; const int combtuningR1 = 1116+stereospread;
const int combtuningL2 = 1188; const int combtuningL2 = 1188;
const int combtuningR2 = 1188+stereospread; const int combtuningR2 = 1188+stereospread;
const int combtuningL3 = 1277; const int combtuningL3 = 1277;
const int combtuningR3 = 1277+stereospread; const int combtuningR3 = 1277+stereospread;
const int combtuningL4 = 1356; const int combtuningL4 = 1356;
const int combtuningR4 = 1356+stereospread; const int combtuningR4 = 1356+stereospread;
const int combtuningL5 = 1422; const int combtuningL5 = 1422;
const int combtuningR5 = 1422+stereospread; const int combtuningR5 = 1422+stereospread;
const int combtuningL6 = 1491; const int combtuningL6 = 1491;
const int combtuningR6 = 1491+stereospread; const int combtuningR6 = 1491+stereospread;
const int combtuningL7 = 1557; const int combtuningL7 = 1557;
const int combtuningR7 = 1557+stereospread; const int combtuningR7 = 1557+stereospread;
const int combtuningL8 = 1617; const int combtuningL8 = 1617;
const int combtuningR8 = 1617+stereospread; const int combtuningR8 = 1617+stereospread;
const int allpasstuningL1 = 556; const int allpasstuningL1 = 556;
const int allpasstuningR1 = 556+stereospread; const int allpasstuningR1 = 556+stereospread;
const int allpasstuningL2 = 441; const int allpasstuningL2 = 441;
const int allpasstuningR2 = 441+stereospread; const int allpasstuningR2 = 441+stereospread;
const int allpasstuningL3 = 341; const int allpasstuningL3 = 341;
const int allpasstuningR3 = 341+stereospread; const int allpasstuningR3 = 341+stereospread;
const int allpasstuningL4 = 225; const int allpasstuningL4 = 225;
const int allpasstuningR4 = 225+stereospread; const int allpasstuningR4 = 225+stereospread;
#endif//_tuning_ #endif//_tuning_
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment