Csound 的 gen09 是如何工作的?

How does Csound's gen09 work?

我试图理解 Csound 的 gen09,我尝试了这一行:

gigen   ftgen 1, 0, 16384, 9,   1, 1, 0,   1, 1, 180

我理解 gen09 的工作方式,在这种情况下,第二个部分应该取消第一个,因为它们都处于基频 (1),并且相位反转 (0180)。但不是沉默,我得到的是一个看起来像这样的波浪:

这里到底发生了什么来创建这个波形?

这里发生的事情是因为重新调整(正 GEN 编号), 计算中的小错误会被放大(因此最大值为 1)。如果你用 -9 构造 table,你会看到结果是你所期望的。

试试这个

<CsoundSynthesizer>
<CsOptions>
</CsOptions>
<CsInstruments>

 instr 1
  a1 oscili 0dbfs,A4,1
  out a1
 endin
</CsInstruments>
<CsScore>
 f1 0 16384 -9 1 1 0 1 1 180
 i1 0 1
</CsScore>
</CsoundSynthesizer>

结果应该是

SECTION 1:
ftable 1:
new alloc for instr 1:
B  0.000 ..  1.000 T  1.000 TT  1.000 M:      0.0
Score finished in csoundPerformKsmps().
inactive allocs returned to freespace
end of score.          overall amps:      0.0
   overall samples out of range:        0