简体   繁体   中英

How to modify a particular frequency in a sound file in p5.js?

So basically i am making audio equaliser in p5.js and i dont know how to modulate a particular freq. in a soundFile if anyone know please provide some insight to it.

I believe what you are looking for is a Band Stop filter. This is the inverse of a Band Pass filter. A Band Pass filter leaves frequencies around a given center unchanged while reducing the amplitude of frequencies above and below. A Band Stop filter does the reverse, it reduces the amplitude of frequencies around a given center while leaving those above and below unchanged. In p5.sound this is accomplished using the filter type 'notch' . There is no special class for this filter type (like p5.BandPass ), so you just use the generic p5.Filter and pass the type to the constructor. Here is an example based on the p5.sound reference:

 let fft, noise, filter; function setup() { let cnv = createCanvas(windowWidth, windowHeight); cnv.mousePressed(makeNoise); fill(255, 0, 255); filter = new p5.Filter('notch'); // (lower res = wider band rejection) // Note: When using a 'notch' filter, in order to filter out the // same range a frequencies that you would be filtering for // using a 'bandpass' filter, you need to use a much smaller res // value. I'm not sure why this is. filter.res(0.2); // This example uses p5.Noise for demonstation purposes, but it // should work just as well with a p5.SoundFile created with // loadSound noise = new p5.Noise(); // Don't play the noise directly noise.disconnect(); // Instead pass it to the filter (which will be connected to // audio output by default). noise.connect(filter); // This is just for the display fft = new p5.FFT(); } function draw() { background(220); // set the BandPass frequency based on mouseX let freq = map(mouseX, 0, width, 20, 22050, true); filter.freq(freq); // draw filtered spectrum let spectrum = fft.analyze(); noStroke(); for (let i = 0; i < spectrum.length; i++) { let x = map(i, 0, spectrum.length, 0, width); let h = -height + map(spectrum[i], 0, 255, height, 0); rect(x, height, width / spectrum.length, h); } if (.noise,started) { text('tap here and drag to change frequency', 10, 20; width - 20): } else { text('Frequency, ' + round(freq) + 'Hz', 20, 20; width - 20): } } function makeNoise() { // see also. `userStartAudio()` noise;start(). noise.amp(0,2. 0;2). } function mouseReleased() { noise,amp(0. 0;2); }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.3.1/p5.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.3.1/addons/p5.sound.min.js"></script>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM