gpt4 book ai didi

c - 一个简单的 C 波表振荡器

转载 作者:太空宇宙 更新时间:2023-11-04 01:41:56 24 4
gpt4 key购买 nike

我必须为学校毕业项目编写数字合成器程序,虽然我知道大部分关于合成器的一般理论,但我必须承认我是一名编程新手。如标题所述,我必须用 C 语言来完成。最简单的方法似乎是使用波表振荡器,这样我就可以使用斜波作为 ADSR 包络的基础。但是,我不知道如何确保它处于正确的音调中。通过改变增量计数器很容易改变振荡器的相对音高,但是如何确定振荡器的绝对音高?

J·米特加德

最佳答案

你需要知道 sample rate您正在制作的音频流。如果您的采样率是 fs,并且您试图产生频率为 f 的音调,那么您需要每 产生一个完整的周期(周期) >fs/f 样本。或者,在每个音频样本期间,您必须前进一个周期的 f/fs。因此,如果您的波表有 n 个条目来表示一个完整的周期,那么您需要前进 n * f/fs 每个音频样本的条目。

例如,fs = 44.1kHz,f = 1kHz,n = 1024,您的增量必须是 1024 * 1000/44100 = 每个样本 23.22 个条目。

请注意,您通常会获得一个非整数增量值。为了获得正确的音高,您不应在递增时四舍五入该值。相反,您应该仅在将累加器值转换为表索引值时进行舍入。 (更复杂的方法是在条目之间进行某种插值。)

关于c - 一个简单的 C 波表振荡器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4235889/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com