所以我使用NAudio從C#開始編寫合成器。我已經得到了不同的頻率,這很酷,但我注意到較高的音高比較低的音高要大得多。是,由於這種效果:每個頻率的平均響度
http://en.wikipedia.org/wiki/Equal-loudness_contour
還是我做錯事的時候,我產生正弦波?如果確實有必要,我將如何實現等響度輪廓曲線?
由於
我的代碼:
n音訊預計填充有浮點值在-1至+1來表示波形的緩衝器。
產生正弦波:
buffer[n + offset] = (float)(Amplitude * Math.Sin(angle));
angle = (angle + angleIncrement) % (2 * Math.PI);
設置頻率:
public double Frequency
{
set
{
angleIncrement = 2 * Math.PI * value/sampleRate;
}
get
{
return angleIncrement * sampleRate/2/Math.PI;
}
}
你的代碼看起來沒問題(只要'振幅'是恆定的)。 –
「振幅」表示用戶想要彈奏音符有多大聲。現在在我的測試中是不變的。既然如此,你是否認爲我需要實現響度輪廓/ – John
我已經發布了:「人耳無法像那樣工作,它非常非線性。」該圖左側的比例是對數,3dB等於係數2. –