添加更多环境混响音效
This commit is contained in:
@@ -8,42 +8,24 @@ export const freqs = [31, 62, 125, 250, 500, 1000, 2000, 4000, 8000, 16000] as c
|
||||
type Freqs = (typeof freqs)[number]
|
||||
let biquads: Map<`hz${Freqs}`, BiquadFilterNode>
|
||||
export const convolutions = [
|
||||
{
|
||||
name: 'telephone', // 电话
|
||||
mainGain: 0.0,
|
||||
sendGain: 3.0,
|
||||
source: 'filter-telephone.wav',
|
||||
},
|
||||
{
|
||||
name: 'spreader', // 室内
|
||||
mainGain: 1.0,
|
||||
sendGain: 2.5,
|
||||
source: 'spreader50-65ms.wav',
|
||||
},
|
||||
{
|
||||
name: 'feedback_spring', // 山洞
|
||||
mainGain: 0.0,
|
||||
sendGain: 2.4,
|
||||
source: 'feedback-spring.wav',
|
||||
},
|
||||
{
|
||||
name: 'church', // 教堂
|
||||
mainGain: 1.8,
|
||||
sendGain: 0.9,
|
||||
source: 's2_r4_bd.wav',
|
||||
},
|
||||
{
|
||||
name: 'kitchen', // 厨房
|
||||
mainGain: 0.6,
|
||||
sendGain: 3.0,
|
||||
source: 'kitchen-true-stereo.wav',
|
||||
},
|
||||
{
|
||||
name: 'wc', // 厕所
|
||||
mainGain: 0.6,
|
||||
sendGain: 2.1,
|
||||
source: 'living-bedroom-leveled.wav',
|
||||
},
|
||||
{ name: 'telephone', mainGain: 0.0, sendGain: 3.0, source: 'filter-telephone.wav' }, // 电话
|
||||
{ name: 's2_r4_bd', mainGain: 1.8, sendGain: 0.9, source: 's2_r4_bd.wav' }, // 教堂
|
||||
{ name: 's3_r1_bd', mainGain: 1.8, sendGain: 0.8, source: 's3_r1_bd.wav' },
|
||||
{ name: 'matrix_1', mainGain: 1.5, sendGain: 0.9, source: 'matrix-reverb1.wav' },
|
||||
{ name: 'matrix_2', mainGain: 1.3, sendGain: 1, source: 'matrix-reverb2.wav' },
|
||||
{ name: 'bright_hall', mainGain: 0.8, sendGain: 2.4, source: 'bright-hall.wav' },
|
||||
{ name: 'cinema_diningroom', mainGain: 0.6, sendGain: 2.3, source: 'cinema-diningroom.wav' },
|
||||
{ name: 'dining_living_true_stereo', mainGain: 0.6, sendGain: 1.8, source: 'dining-living-true-stereo.wav' },
|
||||
{ name: 'living_bedroom_leveled', mainGain: 0.6, sendGain: 2.1, source: 'living-bedroom-leveled.wav' },
|
||||
{ name: 'spreader50_65ms', mainGain: 1, sendGain: 2.5, source: 'spreader50-65ms.wav' },
|
||||
{ name: 'spreader25_125ms', mainGain: 1, sendGain: 2.5, source: 'spreader25-125ms.wav' },
|
||||
// { name: 'backslap', mainGain: 1.8, sendGain: 0.8, source: 'backslap1.wav' },
|
||||
{ name: 'cardiod_35_10_spread', mainGain: 1.8, sendGain: 0.8, source: 'cardiod-35-10-spread.wav' },
|
||||
{ name: 'tim_omni_35_10_magnetic', mainGain: 1.8, sendGain: 0.8, source: 'tim-omni-35-10-magnetic.wav' },
|
||||
// { name: 'spatialized', mainGain: 1.8, sendGain: 0.8, source: 'spatialized8.wav' },
|
||||
// { name: 'zing_long_stereo', mainGain: 0.8, sendGain: 1.8, source: 'zing-long-stereo.wav' },
|
||||
{ name: 'feedback_spring', mainGain: 1.8, sendGain: 0.8, source: 'feedback-spring.wav' },
|
||||
// { name: 'tim_omni_rear_blend', mainGain: 1.8, sendGain: 0.8, source: 'tim-omni-rear-blend.wav' },
|
||||
] as const
|
||||
let convolver: ConvolverNode
|
||||
let convolverSourceGainNode: GainNode
|
||||
@@ -147,18 +129,31 @@ export const getBiquadFilter = () => {
|
||||
}
|
||||
|
||||
// let isConvolverConnected = false
|
||||
export const setConvolver = (buffer: AudioBuffer | null, sendGain: number, mainGain: number) => {
|
||||
export const setConvolver = (buffer: AudioBuffer | null, mainGain: number, sendGain: number) => {
|
||||
initAdvancedAudioFeatures()
|
||||
convolver.buffer = buffer
|
||||
// console.log(mainGain, sendGain)
|
||||
if (buffer) {
|
||||
convolverOutputGainNode.gain.value = sendGain
|
||||
convolverSourceGainNode.gain.value = mainGain
|
||||
convolverOutputGainNode.gain.value = sendGain
|
||||
} else {
|
||||
convolverOutputGainNode.gain.value = 0
|
||||
convolverSourceGainNode.gain.value = 1
|
||||
convolverOutputGainNode.gain.value = 0
|
||||
}
|
||||
}
|
||||
|
||||
export const setConvolverMainGain = (gain: number) => {
|
||||
if (convolverSourceGainNode.gain.value == gain) return
|
||||
// console.log(gain)
|
||||
convolverSourceGainNode.gain.value = gain
|
||||
}
|
||||
|
||||
export const setConvolverSendGain = (gain: number) => {
|
||||
if (convolverOutputGainNode.gain.value == gain) return
|
||||
// console.log(gain)
|
||||
convolverOutputGainNode.gain.value = gain
|
||||
}
|
||||
|
||||
let pannerInfo = {
|
||||
x: 0,
|
||||
y: 0,
|
||||
@@ -210,7 +205,7 @@ export const startPanner = () => {
|
||||
}, pannerInfo.speed * 10)
|
||||
}
|
||||
|
||||
export const hasInitedAnalyser = (): boolean => audioContext != null
|
||||
export const hasInitedAdvancedAudioFeatures = (): boolean => audioContext != null
|
||||
|
||||
export const setResource = (src: string) => {
|
||||
if (audio) audio.src = src
|
||||
|
||||
Reference in New Issue
Block a user