音量調整

今までのアプリケーションはあまりに音量が大きすぎました。すみません。そこで、gainNode で音量を調節します。具体的には 1 以下の値を与えることで、音量を下げます。

https://codesandbox.io/s/18lz7nz9o4

index.js
import convertMidiNoteToFrequency from '/src/convertMidiNoteToFrequency'
const audioContext = new AudioContext()
const destination = audioContext.destination
const MidiNoteArray = [60, 64, 67, 71]
const oscArray = MidiNoteArray.map(frequency => {
const osc = audioContext.createOscillator()
osc.frequency.value = convertMidiNoteToFrequency(frequency)
// 音量調節用の nord
const gain = audioContext.createGain()
// 1が default の値なので、それより下げる
gain.gain.value = 0.2
// osc -> gain -> destination
// となるようにつなぐ
osc.connect(gain)
gain.connect(destination)
return osc
})
const now = audioContext.currentTime
oscArray.forEach((osc, index) => {
osc.start(now + index)
})
setInterval(() => {
oscArray.forEach(osc => osc.stop())
}, 6000)

ルーティングのポイント

osc -> gainNode -> destination と順番につなぎます。gainNode を通る際に音量が小さくなるわけですね。