Changing intensities (dB) of a sound file at certain frequencies?
    3 views (last 30 days)
  
       Show older comments
    
    Sven Thole
 on 15 Jun 2016
  
    
    
    
    
    Answered: Sachin Shrestha
      
 on 15 Jun 2016
            Is there a way to parse through a sound file (in .wav format) and adjust (increase/decrease) its intensity in decibels at certain frequencies? I have tried to do FFT to get the frequency domain, then adjusting the magnitude of the soundfile by multiplying with a constant value. Then use ifft to return to the time domain.
 [y1, Fs] = audioread('sound.wav');
 Y = fft(y1);
 % decrease intensity of lower frequencies
 Y(1:1000)= Y(1:1000) .* 0.25;
 y2 = ifft(Y);
 soundsc(y2, Fs);
This does not work and gives the error : "Error using soundsc (line 25) Audio data must be real and floating point."
Here is an example of what I want to do in Matlab (0:50 - 1:20): https://youtu.be/YantpouC4Mk?t=50
Any help is appreciated, thanks in advanced!
1 Comment
  Adam
      
      
 on 15 Jun 2016
				If you don't alter the negative frequencies equally with the positive ones you will end up with a complex result when you use iift to return to the time domain.
Accepted Answer
  Star Strider
      
      
 on 15 Jun 2016
        See my Answer to your duplicate Question on this topic: http://www.mathworks.com/matlabcentral/answers/290073-amplify-and-dampen-certain-frequencies
0 Comments
More Answers (1)
  Sachin Shrestha
      
 on 15 Jun 2016
        Hi Sven,
Regarding your error, you could listen to the audio by simply changing the last line of the code from
soundsc(y2, Fs);
to
soundsc(real(y2), Fs);
You may proceed with your testings now.
Hope this will help. Good Luck!
0 Comments
See Also
Categories
				Find more on Audio Processing Algorithm Design in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


