【发布时间】:2013-03-01 23:42:57
【问题描述】:
大家好,
我目前正在使用 C# 后端在 Silverlight 中开发用于乐器/声音的半音调音器。我处于起步阶段,在获取音频数据时遇到问题。当实时捕获开始时,我正在使用 AudioSink 类将音频写入内存流。我遇到的问题是将流中的这些字节转换为复数,以便可以将其输入 FFT 算法。我已经尝试了这篇文章Problem to convert byte array to double 中讨论的各种方法,但不确定应该使用哪种方法。
关于从字节数组到复数数组的任何建议?准确度和速度是必须的(比速度更准确),因为我项目的后期阶段将实时执行此过程,以便在声音进入时显示正在播放的音高。
干杯,谢谢!
乔什
【问题讨论】:
-
你能解释一下你所说的“转换”是什么意思吗?例如,
0x78的复数等价物是什么?7 + 8i?您的问题真的是关于转换还是关于信号处理? -
如果您为我们绝大多数未参与信号处理的人澄清问题,这可能会有所帮助。例如,让我们暂时将数组放在一侧。您是在问如何将字节转换为复数?是否只是要设置的实数部分,剩余的虚数 0?
-
我可能最终会在另一篇文章中问另一个问题......我也不熟悉信号处理,并且很难找到一些算法中的数字来自哪里......但随着这个问题的出现,我正在寻找转换。例如,一个具有 5 个值的字节数组:115、255、49、85 和 145。我见过人们转换此数据的许多不同方式(来自音频样本)。一个是使用 BitConverter 将字节转换为双精度......简单的双重转换((双)字节[1])......然后在这篇文章的第一个答案中使用下面的方法..
-
然后每个都将双精度数转换为复数。我只是找不到使用其中一个的原因背后的任何明确解释。这就是问题所在。
标签: c# silverlight silverlight-4.0