使用Web Audio API,我想用一個信號來調製另一個信號。我發現調製不像預期的那樣。下面的示例代碼創建兩個振盪器,一個是440Hz,一個是1Hz,並使用1Hz的振盪器通過增益節點的增益AudioParam調製440Hz的增益。使用WebAudio API如何調製信號?
預期行爲:振盪器輸出值從-1到+1。因此,增益應該在-1和+1之間振盪,每秒一次,即增益應該爲每秒兩次零(無聲)。
實際行爲:相反,它只是每秒沉默一次。看來增益值被重新映射,所以範圍(-1,+1)被映射到(0,+1)。
問題:爲什麼重新映射發生?如果我將增益設置爲單個浮點值,則不會發生這種情況 - 其中,+1表示+1而0表示0。是否可以關閉此重新映射,以使調製信號中的零值產生零振幅聲音?爲了澄清,我的目標是使用其值在0和1之間變化的任意包絡E來調製載波的幅度C,使得輸出爲C * E,使得C E = 0時,E的振幅= 0,E = 1時的C * E的振幅= 1。
window.AudioContext = (window.AudioContext || window.webkitAudioContext);
var context = new AudioContext();
var gain = context.createGain();
gain.connect(context.destination);
var osc = context.createOscillator();
osc.connect(gain);
osc.start(0);
var mod = context.createOscillator();
mod.frequency.value = 1;
mod.connect(gain.gain);
mod.start(0);
」振盪器輸出的值從-1到+1,因此,增益應該在-1和+1之間振盪,每秒一次,即增益應爲零(無聲),每秒兩次。 ...嘗試想象如果將增益設置爲-1和0之間的值一半的時間會發生什麼。你最終會在半個時期內聽到沉默。 –
凱文:增益是一個乘數,所以增益= -1對應於信號的反轉。因此,只有當增益通過零時,信號才應該保持沉默。 – user8539
呵呵。只需再次檢查規格,你是絕對正確的。我沒有意識到你可以去負面和反轉階段。我很抱歉。 –