3

我一直在研究试图理解声音和正弦波的工作方式,尤其是和弦。到目前为止,我的理解如下:

  1. b(t) = sin(Api(t))是频率 A 的和弦的基音。
  2. T(t) = sin(5/4piA(t))是底 b(t) 的大三分之一。
  3. D(t) = sin(3/2piA(t))是基础 b(t) 的主要(第五个)。
  4. A(t) = sin(2Api(t))是八度。

每个单独的频率都是一个单独的频率,计算机发生器很容易发出声音。但是,频率为 A 的音符的大和弦如下:

Major Chord = b+T+D+A

我想知道是否有人有办法让电脑合成器播放这个功能,这样我就可以听到结果了;我发现的大多数程序只将 Hz 作为输入,虽然这个函数有一个波长,但它与具有相同波长的简单正弦波不同。

注意:也会将其发布在物理和计算机部分 - 只是想知道你们音乐家是否对此有所了解。

4

3 回答 3

3

我有点不清楚你想要做什么,所以我解释了一些事情,并给你一些选项来进一步调查,这取决于你的目的是什么。

在计算机上合成音乐的实际方法是使用 MIDI(乐器数字接口)。因为音乐家很少直接考虑频率或波长(他们沿着音阶计算步数或半步数),所以 MIDI 用整数表示每个音高,表示半步数。默认情况下,MIDI 假设这些音高使用称为“12 音等律”(12TET)的标准进行调音,不幸的是,使用其他调音并不容易。

这是什么意思?为什么这是一个问题?(我不确定你已经知道多少,所以如果我重复你所知道的,我很抱歉)

理论上讲,您所说的基于频率比的调谐是 100% 绝对正确的——这是一个称为 Just Tuning 的系统。大三度是 5/4 的比例,完美的五度是 3/2 的比例。然而,具有固定音高的乐器(键盘、按弦乐器等)在实践中很少采用这种方式进行调音。相反,他们妥协,将半音阶中的每个音符四舍五入到最接近的 12 个八度音阶。由于增加一个八度相当于将初始频率乘以 2,所以增加一个八度的 12 相当于将初始频率乘以 2^(1/12)。这就是钢琴上所有半音的调音方式。

因此,您实际上将拥有的不是纯比率:

  • 罪(A pi t)
  • sin(2^(4/12) A pi t)
  • sin(2^(7/12) A pi t)
  • sin(2^(12/12) 一个 pi t)

注意:比较 2^(4/12) ~ 1.26,与 5/4 = 1.25。还将 2^(7/12) ~ 1.498 与 3/2 = 1.5 进行比较。

这些正是任何 MIDI 合成器将播放的频率,给定编号为nn +4、n +7 和n +12 的 MIDI 音符。所以,如果你只是想演奏一个和弦,而不关心频率比是纯的(只是),你可以只使用 MIDI。

但是,如果您正在寻找能够发挥实际公正比率的东西,那就有点棘手了。您可以从这里查看一些内容开始:https ://music.stackexchange.com/questions/351/software-that-allows-playing-in-different-temperments

如果您只是想看看它们听起来像什么,您可以观看这个 youtube 视频: https ://www.youtube.com/watch?v=6NlI4No3s0M

如果您可以编写软件,您可能会尝试编写自己的软件,但如果没有帮助,我不想讨论如何做到这一点。

我不确定您所描述的“仅以 Hz 作为输入”的程序类型。这是一个软件库(如 API 调用?)还是不同的东西?有(显然)API 调用可以向声卡发送比单频波更复杂的数据。


编辑:我没有使用它,但看起来这个软件可能可以做你想做的事:https ://www.youtube.com/watch?v=z0NZQMiDdNU

于 2014-10-13T03:45:58.273 回答
1

我认为您从错误的方向解决问题。您正在使用正弦信号作为“和弦”和纯音程的基础。

其输出是严格周期性的,其周期是各个周期的最小公倍数。所以基本上你没有“和弦”,而是“音调”。

管风琴使用这种技术:您可以将 8" 管与 5⅓" 管结合起来,以获得听起来像是来自一些有趣的 16" 管的音调。这不是“和弦”,而是注册。古典作曲理论不允许五重音平行以避免这种影响:五重音只能暂时发生,并且比不向不同方向移动或与基本音符不同步的频率更高。

“和弦”在音色和声音之间产生听觉模糊:它们激发您内耳的同一区域。然而,真正的“和弦”和合唱效果也有来自非理想频率比的跳动和干扰,并且它们所构成的音调具有自己的泛音,因此可以将它们识别为独立的实体。

有经验的音乐听众将这一切视为一种独立的现象。但是,如果您从纯正弦波或高度锁定的相对纯音源(如无军鼓风琴管)开始,这将变得难以做到。

因此,我不确定您是否通过查看正弦曲线来帮自己一个忙。这就像试图根据原色成分来理解一幅画。它更像是一个复制工具包,而不是与更高层次的感知相关的任何东西。

于 2014-10-13T11:13:47.193 回答
0

一个非常低门槛的玩法是使用wavepot

执行您在问题中提出的问题的代码是

var A = 440
export function dsp(t) {
  var b = Math.sin(t * Math.PI * 2 *       A);
  var T = Math.sin(t * Math.PI * 2 * 5/4 * A);
  var D = Math.sin(t * Math.PI * 2 * 3/2 * A);
  var O = Math.sin(t * Math.PI * 2 * 2   * A);
  return (b + T + D+ O) * 1/4
}

这是在这个链接

请注意,由于正弦波没有谐波,这听起来可能不像和弦。这是相同的示例,但使用了具有许多谐波的锯齿波形。

var A = 440
//function f(x){return Math.sin(x)   }
function f(x){return 2 * ( (x/(2*Math.PI) % 1) -.5)   } //sawtooth

export function dsp(t) {
  var b = f(t * Math.PI * 2 *       A);
  var T = f(t * Math.PI * 2 * 5/4 * A);
  var D = f(t * Math.PI * 2 * 3/2 * A);
  var O = f(t * Math.PI * 2 * 2   * A);
  return (b + T + D+ O) * 1/4
}
于 2015-01-22T06:30:56.000 回答