当前位置: 首页 > news >正文

Nyquist内置函数-概述

1 Nyquist内置函数-概述

本章提供奈奎斯特(Nyquist)语言参考。操作按功能和抽象级别分类。奈奎斯特在两个重要级别上实现:“高级”级别支持行为抽象,这意味着像 stretchat 这样的操作可以应用。这些函数是典型用户期望使用的,并且大多数用XLISP编写。

“低级”原语直接对声音进行操作,但不涉及环境变量(如 *warp* 等)。大多数这些低级函数的名称以 “snd - ” 开头。一般来说,程序员应避免使用任何带 “snd - ” 前缀的函数。相反,应使用 “高级” 函数,它们了解环境并能做出适当反应。高级函数的名称没有像低级函数那样的前缀。

有一些直接应用于声音(而非行为)的低级操作,对于日常使用相对 “安全”,这些已做标注。

奈奎斯特使用线性频率和十二平均律音高数字来指定重复率。频率始终以每秒周期数(赫兹)指定,音高数字,也称为 “音阶步长”,是十二平均律音阶中的浮点数字,其中60 = 中央C,61 = C#,61.23 是C# 加上23音分等。从音高数字到频率的映射是标准指数转换,并且允许使用分数音高数字:
[频率 = 440 * 2^{(\text{音高} - 69)/12}]

有许多预定义的音高名称。默认情况下,这些按十二平均律调音,A4 = 440Hz,但也可以更改(见“预定义常量”部分)。

1.1 声音

在奈奎斯特中,声音是一种基本数据类型。声音可以像字符串、原子、数字和其他数据类型一样被创建、作为参数传递、进行垃圾回收、打印以及赋值给变量。

1.2 什么是声音?

声音有5个组成部分:

  • srate - 声音的采样率。
  • samples - 样本。
  • signal-start - 第一个样本的时间。
  • signal-stop - 最后一个样本结束的时间。
  • logical-stop - 声音在逻辑上结束的时间,例如,一个声音可能在衰减开始时结束。该值默认为 signal-stop,但也可以设置为任意值。

似乎应该有 logical-start 来指示声音的逻辑或感知起始点,同时也应该有 logical-stop 来指示声音的逻辑结束点。但实际上,只需要 logical-stop 就够了;这个属性用于告知下一个声音何时开始,以形成声音序列。在这方面,奈奎斯特的声音具有不对称性:通过将每个声音的逻辑起始点与前一个声音的 logical-stop 对齐,可以在时间上向前计算声音序列,但无法 “向后” 计算,即无法将每个声音的逻辑结束点与后续声音的逻辑起始点对齐。这种不对称性的根源在于,当我们调用一个行为时,我们指定的是起始时间,而该行为的结果会告诉我们它的逻辑持续时间。不存在一种方法可以在调用行为时直接指定结束时间(脚注3)。

注意:无法强制对 logical-stop 进行预期的 “感知” 解释。就奈奎斯特而言,这些只是用于在各种控制结构中引导声音对齐的数字。

1.2.1 多声道声音

多声道声音由Lisp语言的声音数组表示。创建声音数组时,XLISP的 vector 函数很有用。大多数奈奎斯特低级函数(以 snd- 开头的函数)并不适用于多声道声音,而大多数高级函数则可以处理多声道声音。


作者声明:本文用于记录和分享作者的学习心得,可能有部分文字或示例来自AI平台,如:豆包、DeepSeek(硅基流动)(注册链接)等,由于本人水平有限,难免存在表达错误,欢迎留言交流和指教!
Copyright © 2022~2025 All rights reserved.

相关文章:

  • Spring Task 定时任务
  • 呼叫中心系统压力测试文档
  • C++模板元编程与表达式模板技术深度解析:从原理到Eigen实战
  • Pysides6 Python3.10 Qt 画一个时钟
  • zotero配合本地deepseek使用(翻译、辅助阅读)
  • Ubuntu桌面系统安装VirtualBox教程
  • 企业服务器备份软件,企业服务器备份的方法有哪些?
  • 大语言模型本质上还是自动化,而不是智能化
  • Scala面向对象2
  • 冒泡排序笔记
  • JavaScript学习17-Element获取元素
  • ansible角色 role
  • adb检测不到原来的设备List of devices attached解决办法
  • ROS创建工作空间
  • SAP学习笔记 - 豆知识17 - MRRL里面出 Msg番号 M8240 - 没有番号范围 错误
  • MCP 实战:实现server端,并在cline调用
  • 日志乱码<0x1b>[0;39m]中文乱码<DE><EA><DA>
  • 一种用于扩散磁共振成像(MRI)中多纤维参数估计和不确定性量化的深度学习方法|文献速递-深度学习医疗AI最新文献
  • jmeter接口自动化测试框架
  • 更改vs下的x86与x64的库平台