编程语言
首页 > 编程语言> > 音频编程,产生和谐

音频编程,产生和谐

作者:互联网

我正在尝试开发与C#中的tonematrix类似的应用程序.我首先尝试使用.net和NAudio库,现在尝试使用XNA,但似乎只能听到一个刺耳的声音.

使用NAudio,我将生成8个具有不同频率的简单正弦波,频率从(440hz * 1)到(440hz * 8)不等.

使用XNA,我使用同一音频文件(例如钢琴的D4音符)的多个SoundEffectInstance,每个音色具有不同的Pitch值.音高值可以最多增加或减少一个八度.

在这两种情况下,当声音重叠时,我都会听到噪音而不是音乐.也许我弄错了,这不是混合不同音高/频率的声音的问题.

我很难相信,音调矩阵仅使用了“简单的正弦波合成器”,因为声音非常丰富,当它们混合在一起时,它们总是会产生谐波声,而简单的正弦波总是听起来很丑陋且人为地我.

我在创建和声方面有不好的方法吗?您是否知道tonematrix使用的正弦波到底发生了什么?

解决方法:

我碰巧能够回答您的音乐问题,但是最好在https://music.stackexchange.com/上问这些问题.

首先是规模.这些东西通常使用pentatonic scales(来自Wikipedia:“如此规模的音高可以按任何顺序或组合演奏而不会发生冲突”).根据评论,您链接的示例使用从A到A的D Major Pentatonic.

您会发现它没有使用正弦波,但实际上是使用ADSR envelope在开始时给它一个令人愉悦的“打孔”,并在结尾处给它(假)“ echo”.这很容易实现,因为您只需要调制振幅.

据我所知,将波形混合在一起并没有做任何特别的事情.它有可能正在做简单的加法.

至于实现,如果您有一种生成正弦波的方法,而不是尝试对样本进行音高偏移,那么为什么不使用DynamicSoundEffectInstance并将其馈入正弦波呢?

XNA的内置音调转换并不十分适合此任务.您确定使用正确的值进行调整吗?

标签:xna,frequency,synthesizer,audio,c
来源: https://codeday.me/bug/20191208/2090178.html