AudioContext 滤波设置【AudioContext系列二】

上一篇介绍了无标签播放音频,本篇增加些音效效果,主要的api

  • audioContext.createBiquadFilter

主要设置 frequency, Q两个值 (频率,质量)

    const filter = audioContext.createBiquadFilter();
    filter.frequency.value = number; //取值范围 小于800
    filter.Q.value =  number; //小于1000
    

常用的类型主要有:

  • lowpass(低通滤波)
  • highpass(高通滤波)
  • bandpass(带通滤波)
filter.type = 'lowpass'

全部代码

(function(){
		const audioContext = new AudioContext();
		const filter = audioContext.createBiquadFilter();
		async function play(){
			const res = await fetch('../file/sound.mp3');
			 const arraybuffer = await res.arrayBuffer();
		     const audioBuffer = await audioContext.decodeAudioData(arraybuffer);
		     const source = audioContext.createBufferSource();
		     source.connect(audioContext.destination);
		     source.connect(filter);
		     filter.connect(audioContext.destination)
		     filter.type = 'lowpass';
		     console.log(filter)
		     filter.frequency.value = 1 ;
		     filter.Q.value = 1;
		     filter.gain.value = -40;
		     source.buffer = audioBuffer;
		     source.start();
		}

		document.querySelector('button').onclick = play;
		document.querySelector('#pl').oninput = function(e){ 
			var minValue = 40;
			var value = Math.max(minValue, 800*e.target.value);
			console.log(value)
			filter.frequency.value = value; 
		}
		document.querySelector('#gain').oninput = function(e){ filter.gain.value = e.target.value; console.log(e.target.value)}
		document.querySelector('#pz').oninput = function(e){ filter.Q.value = e.target.value * 1000;  console.log(e.target.value * 30)}
		const fillters = document.querySelectorAll('[name="filter"]')
		for(let i=0; i<fillters.length; i++) {
			fillters[i].onchange = function(e){ console.log(e.target.value); filter.type = e.target.value }
		}
	})()

体验地址

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值