这是我的“周末”爱好问题。
我从经典合成器的 ROM 中获得了一些深受喜爱的单周期波形。
这些是 8 位样本(256 个可能的值)。
因为它们只有 8 位,所以本底噪声非常高。这是由于量化误差。量化误差非常奇怪。它使所有频率有点混乱。
我想利用这些周期并制作它们的“干净” 16 位版本。(是的,我知道人们喜欢脏版本,所以我会让用户在脏和干净之间插入他们喜欢的任何程度。)
这听起来不可能,对吧,因为我已经永远失去了低 8 位,对吧?但这在我脑海里已经有一段时间了,我很确定我能做到。
请记住,这些是单周期波形,会一遍又一遍地重复播放,所以这是一种特殊情况。(当然,合成器会做各种各样的事情来让声音变得有趣,包括包络、调制、滤波器交叉淡入淡出等)
对于每个单独的字节样本,我真正知道的是它是 16 位版本中的 256 个值之一。(想象一下相反的过程,其中 16 位值被截断或舍入为 8 位。)
我的评估功能是试图获得最小的本底噪声。我应该能够通过一个或多个 FFT 来判断这一点。
详尽的测试可能需要很长时间,所以我可以先通过较低分辨率的测试。还是我只是随机推送随机选择的值(在保持相同 8 位版本的已知值内)并进行评估并保持更清晰的版本?或者有什么更快的我可以做的吗?当搜索空间的其他地方可能有更好的最小值时,我是否有陷入局部最小值的危险?我在其他类似的情况下也遇到过这种情况。
有没有我可以做出的初步猜测,也许是通过查看相邻值?
编辑:有几个人指出,如果我取消新波形采样到原始波形的要求,问题会更容易。确实如此。事实上,如果我只是在寻找更干净的声音,那么解决方案是微不足道的。