繁体   English   中英

采样率和音符频率

[英]Sample rate and note frequences

如何以44100采样率演奏高频音符

例如,如果我们尝试以采样率44100创建2959.95538169307680 hz F#7波,则必须由13个采样(sampleRate / hz)定义一个cicle。问题是如果我们记下3135.96348785399680 G7 hz,那么这还将是13个采样从十进制转换为整数。

似乎不可能以44100的采样率生成7个八度以上的准确音符? 还是有一些把戏?

样本-> Hz

13 2959.95538169307680 F#7

13 3135.96348785399680 G7

似乎不可能以44100的采样率生成超过7个八度的准确音符

每秒44100的采样率,您肯定可以创建高达22Khz的声音,这意味着您可以创建整个人类听力范围的声音,

https://en.wikipedia.org/wiki/Nyquist_rate

您以13个周期创建它是什么意思? 请注意,您正在考虑的音符(或频率)是不合理的数字,因此请不要在13个周期内重复。 它们不会以数千比特长度的信号序列重复自己。 (将其视为数字pi)

44.1k的采样率意味着您最多只能生成22.05k的音符(这就是所谓的奈奎斯特频率 )。 通常,您使用的波表超过13个样本,例如256或1024甚至更大(在我的合成器中,每个波形使用4096个32位样本)。

假设您有一个包含1024个正弦波值的数组。 然后,要生成例如3000 Hz的频率,您将以1024 * 3000.0 / 44100.0 = 69.65986的步进步进该阵列。 因此,您从索引0开始,下一个将是索引69处的样本,然后是索引(int)2 * 69.65986 = 139的下一个样本,(int)3 * step处的下一个样本,依此类推。如果到达在数组中,您需要从头开始,不断添加针对给定频率计算出的步长。

这样做,它将从数组的1024个样本中选择13个或14个样本,但每个周期都不相同。

如果要在不产生泛音的情况下执行此操作,则可能必须使用过采样并针对不同的频率范围生成不同的波表,对高频范围的波表进行滤波(例如,使用FFT ,去除Nyquist以上的频率然后进行反向FFT) )以消除泛音。

这不是一个简单的主题。 但是仅拥有一个包含13个样本的表格是不够的。 正如您已经指出的那样,这听起来不正确,并且您无法可靠地产生适当的频率。

网络上有很多有关数字信号处理(和生成)的资料。 在像这样的简单问答媒体中,不可能进行深入讨论。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM