|
|||||||
![]() |
|
|
Thread Tools |
|
|
#1 |
|
DriverHeaven Newbie
Join Date: Sep 2003
Posts: 3
Rep Power: 0 ![]() |
Microphone Feedback cancellation effect, is there?
Hi,
Microphone Feedback cancellation effect, is there? I am talking about that noise you hear when the microphone picks up the sound from the speakers and the amplifier amplifies it, and soon you have a loud tone sound. I have seen at www.zzounds.com a few DSP machines that cancel the feedback by putting a notch filters (of 1/60 and even 1/80 of an octave minimum width) over offensive frequencies. This way they reduce the feedbacking tone to a point it stops feeding back, without hurting the rest of the sound signal. Do you know of such a feedback cancellation effect for a PC? |
|
|
|
|
|
#2 |
|
DH Senior Member
Join Date: Jan 2003
Location: The Netherlands
Posts: 1,932
Rep Power: 64 ![]() ![]() ![]() ![]() |
As far as I know no one has coded a Kx Feedback Killer yet, but I think it can be done.
Another technique is to apply a very small (inaudible) pitchshift to the incoming Mic signal. When 'InSignal is Not Equal to OutSignal', feedback is surrpressed. You can experiment this with the APS-Pitchshifter. Regards, /LeMury |
|
|
|
|
|
|
|
DriverHeaven Newbie
Join Date: Sep 2003
Posts: 3
Rep Power: 0 ![]() |
Pitch shift
Hi LeMury,
Thanks for your reply. It is an interesting idea. I think that it can be used as a method of finding the feedback Please allow me to think out loud: If you do a shift, lets say from frequency f to (f+1), and lets say the feedback is amplified by a factor of 2. If the initial feedbacking signal is of frequency f and amplitude A then the feedback effect will occur as follows: (freq,Amplitude) (f,A) -> (f+1,2A) -> (f+2,4A) ->(f+3,8A)-> ... ->(f+k,2^kA) So if you divide one amplitude by the next you get a constant: 1/2 = A/2A = 2A/4A = 4A/8A So, a program can look at the spectrum of several times [S(f,t)= (amplitude of freq f at time t)] and look for something like: S(f,t)/S(f+1,t+1) ~= S(f+1,t+1)/S(f+2,t+2) ~= ... ~=S(f+k,t+k)/S(f+k+1,t+k+1) And if it finds something like this it then kill the frequency (f+k+1) and thereby stopping the signal from growing any more. On the other hand, maybe it could be done without the pitch shift by searching a growth factor over the same frequency S(f, t ... t+k): S(f,t)/S(f,t+1) ~= S(f,t+1)/S(f,t+2) ~= ... ~=S(f,t+k)/S(f,t+k+1) = feedback_factor@f Knowing the feedback_factor at f, one can multiply the amplitude@f by 1/feedback_factor@f. which is a small filter, and it can also be used with the previous method. However I wonder if a singer may produce such a ratio sequnce naturally, in which case this would interfere with the singer's voice. I also wonder if the feedback factor beside being dependent on f, it is perhaps dependent on the amplitude as well, in which case it is actually feadback_factor(f,A), and if the feedback_factor@f changes too much over A ... well, ah'humm, another method need to be thought of, because the ratio wouldn't be a constant. |
|
|
|
|
|
#4 |
|
DH Senior Member
Join Date: Jan 2003
Location: The Netherlands
Posts: 1,932
Rep Power: 64 ![]() ![]() ![]() ![]() |
Hi Jhonyl ,
Interesting thoughts you 'cooked' up there. I see you did your 'homework' on Feedback killing'. Nice! I asume you are aware of the posabilty to write your own DSP effects with the Kx-Package. So why not give it a try and see if your theories work out. You might end up with a nice Feedback Killer and saving alot of $$$ on external gear. Unfortunatly I'm to busy coding other dsp stuff and we run short on active coders here at Kx as it is. Nevertheless; Feel free to ask questions if you need help with coding. Regards, /LeMury |
|
|
|
|
|
|
|
DriverHeaven Newbie
Join Date: Sep 2003
Posts: 3
Rep Power: 0 ![]() |
OK.
Hi LeMury, OK,
It seems an interesting idea to write my own DSP Feedback Killer. But I would need to learn everything about the required programming language, if it isn't one of C/C++/Java/Matlab/Scheme/Pascal. I have just discovered this site, and about KX,( while looking for gear for my sister, who is a starting singer, and thinking to myself why can't my computer do all these things. By the way, how many effects could be activated at once, without hurting the latency to much? (say for live performance), And where does the calculations take place, at the CPU or at the sound card chip?) PS. I developed further the previous thoughts into a single better algorithm: First the program uses the second algorithm ( the one without the pitch shift ) and then when it finds a "suspect", in order to verify that it is feedback, it pitch shift that suspect frequency, and see if next it gets the shifted frequency amplified. It can repeat the verification step several times, and then it would be certain that it is feedback, because first the amplitude@f has increased by the same factor A several times, from one step to the next, a property that may be feedback, but may also be the original performance, but then when the artificially shifted pitch feeds back at the predicted frequency (f+1) at the predicted amplitude (A*PrevAmp) several times, well it must be feedback. |
|
|
|
|
|
#6 |
|
DH Senior Member
Join Date: Jan 2003
Location: The Netherlands
Posts: 1,932
Rep Power: 64 ![]() ![]() ![]() ![]() |
Hi Jhonyl ,
>> But I would need to learn everything about the required programming language, >> if it isn't one of C/C++/Java/Matlab/Scheme/Pascal. The Kx Driver-Package comes with a complete C++ SDK and an EMU10kx DSP IDE. In your case it seems you only have to learn the DSP assembler language and the basic EMU10kx architecture wich really shouldn't be to hard for someone with your background. >>By the way, how many effects could be activated at once, without hurting the latency to much? You can run as much dsp effects as the on-chip dsp resources allow you to. Since all dsp effects run in the dsp hardware, latency is as good as "real time' like outboard dsp gear. >> And where does the calculations take place, at the CPU or at the sound card chip?) The actual dsp code runs in the the EMU10kx DSP Chip on the SBLive/Audigy/Emu-APS soundcard. They are loaded by the host (cpu) and can be dynamicly controlled by the host. Basicly you have a "Programmable Hardware DSP effect unit".. ![]() See the 'Docs' section at Kx-Project Home page for in-depth info: http://kxproject.lugosoft.com/docs.php?language=en Hope this helps, Regards, /LeMury |
|
|
|
![]() |
| Thread Tools | |
|
|