Lisp Audacity-如何设置Nyquist提示控制速率以匹配音频速率?

Lisp Audacity-如何设置Nyquist提示控制速率以匹配音频速率?,lisp,waveform,piecewise,audacity,nyquist,Lisp,Waveform,Piecewise,Audacity,Nyquist,我希望使用Audacity中的Nyquist提示符插件来构建长度为2048个样本的分段线性波形。例如,我可以通过从2048个静默(零)采样开始,选择all,然后使用以下命令调用Nyquist提示符来生成方形脉冲波: (sum s (pwl 0 1 0.5 1 0.5)) 这使用分段线性(pwl)函数创建一个波形,该波形从时间0(级别1.0)开始,然后线性插值到时间0.5(选择的一半),级别1.0,然后立即跳到级别0.0,并在0.0处继续,直到时间1.0 这是可行的,但是在时间0.5

我希望使用Audacity中的Nyquist提示符插件来构建长度为2048个样本的分段线性波形。例如,我可以通过从2048个静默(零)采样开始,选择all,然后使用以下命令调用Nyquist提示符来生成方形脉冲波:

(sum s (pwl
  0 1
  0.5 1
  0.5))
这使用分段线性(pwl)函数创建一个波形,该波形从时间0(级别1.0)开始,然后线性插值到时间0.5(选择的一半),级别1.0,然后立即跳到级别0.0,并在0.0处继续,直到时间1.0

这是可行的,但是在时间0.5时,产生的波形没有急剧的单样本转换(阶跃),而是在约40个样本上有1.0到0.0之间的线性斜坡。在这种情况下,这是不可接受的

转换表明,在Audacity中,Nyquist插件实际上以远低于音频速率的控制速率运行,因此产生了渐变

我实际上希望创建一个比方波复杂得多的波形,所以一旦这个问题得到解决,我可以继续构建完整的波形

我的问题是:

  • 是否可以调整控制率以匹配音频采样率,以便对pwl功能进行采样精确控制,以及
  • 如何将其合并到一个也调用“pwl”的Nyquist Lisp表达式中?我对Lisp一点都不熟悉,也不知道如何按顺序执行两条语句。我猜是有一个函数可以做这件事

如果这更有意义的话,我很乐意在Audacity之外使用Nyquist。

我链接的线程包含了我需要的答案。我将在这里发布此消息,以防将来对某人有所帮助:

(progv '(*control-srate*) (list *sound-srate*)
  (sum s (pwl
  0 1
  0.5 1
  0.5))
)
这将控制速率设置为等于声音采样速率,从而允许pwl功能在单个采样中直接绘制到目标电平


此外,Lisp中的语句似乎是通过简单地将下一条语句作为上一条语句的最后一个参数来进行排序的。例如,此处调用“sum”的语句位于progv的第三个参数块内。这是正确的和一般的吗?

不是,只是在某些表格中。这些(通常)是以
prog
开头的(比如
progv
prog1
prog2
progn
prog
)和被称为具有“隐式progn”(让
除非
和朋友)的,如何在lisp中构造一系列独立的语句?这仅仅是一个列表吗?我们根据副作用进行排序:
(progn(do-thing-1)(do-thing-2)(do-thing-3)…(do-thing-n))
使用返回值进行排序:
(use-value-n(…(use-value-3)(use-value-2(product-value))