更新:我会留下答案,因为基本的想法仍然成立,但同意适用淡出的解决方案。除了解决了点击的问题,这也朝施加ADSR包络线,这将使得纯正弦波第一步听起来更有趣即便是不添加色彩..
问题是与蜂鸣类。它不用在零交叉处结束,即完整的正弦波。
解决这个问题的最自然的方法是控制它创建的样本数量。
不知道这种计算的:
double xx = 2 * Math.PI/Frequency;
Samples = (int)((int)(Samples * xx)/xx);
或是被创建之后,你可以截断数据。
你可以试试这个,而粗暴的方式:对4
多
..
MS.Seek(0, SeekOrigin.Begin);
byte[] bytes = MS.ToArray();
Array.Reverse(bytes);
int z = 0;
for (int i = 0; i < bytes.Length; i+=4)
{
int v = bytes[i] + bytes[i+1] + bytes[i+2] + bytes[i+3];
if (v == 0) { z = i; break; }
}
MS.SetLength(bytes.Length - z);
..
此找到最后的零点在流,即过去的连续4个零是开始(或者说结束)
我相信其他的方法来纠正这个会少的hackish,但它应该对于初学者工作..
来源
2017-07-25 21:06:42
TaW
好故事。你的问题是什么?;) –
为清晰起见@TotumusMaximus – epicbob57
使用该类,您可以添加淡出 - 在最近的50毫秒内,幅度逐渐变为零?请说在过去的50年里每隔10毫秒就会减幅20%? – AgapwIesu