📜  Ov sacarament 和 sinest (1)

📅  最后修改于: 2023-12-03 14:44:59.096000             🧑  作者: Mango

Ov Sacarament 和 Sinest

概述

Ov Sacarament 和 Sinest 都是 LISP 语言的方言,是专门为音乐及数字信号处理 (DSP) 设计的语言。Ov Sacarament 是以 Common Lisp 为基础的,而 Sinest 则是以 Scheme 为基础的。它们可以用于创作音乐、音效及其他数字信号处理应用程序。

Ov Sacarament

Ov Sacarament 由 Andrew Horner 创造,在 Common Lisp 上开发。它的主要特点包括:

  • 表达式求值:Ov Sacarament 基于类似 Lisp 的 S 表达式语法,可以用来表示任何数学或逻辑表达式。

  • 声音合成器:Ov Sacarament 提供了一组内建的声音合成器,可用于生成多种音效。它还支持 MIDI 标准,可以通过 MIDI 控制器来改变声音的音高、音量等属性。

  • 可扩展性:Ov Sacarament 提供了完整的自定义函数和宏支持,因此可以轻松地将新的函数和特性加入到语言中。

以下是一个 Ov Sacarament 程序示例:

;;定义一个函数,PlaySound
(defun PlaySound ()
   (with-sound ()
      (osc 440 :osc-type 'square :duration 1)))
;;使用该函数
(PlaySound)

该程序定义了一个名为 PlaySound 的函数,该函数将播放一个 440Hz 的方波震荡器。通过调用 with-sound,程序将声音输出到系统的默认输出设备。

Sinest

Sinest 是在 Scheme 平台上创建的 LISP 方言,由 Eric Merritt 开发。它的主要特点包括:

  • Scheme 兼容性:Sinest 保留了 Scheme 的许多特性,比如 infix 表达式、第一类函数等。

  • 声音合成器:Sinest 的声音合成器和 Ov Sacarament 的类似,提供了多种声音生成方式和声音控制接口。

  • 可扩展性:Sinest 的函数和宏可以与 Scheme 互操作,也可以通过 Sinest 语言自己进行扩展。

以下是一个 Sinest 程序示例:

;; 定义一个函数,实现一个 FM 合成器
(define (fm-synth freq mod-freq depth)
   (let ((modulator (mult (sin mod-freq) depth))) ;; 调制器
      (mult (sin (+ freq modulator)) 0.5))) ;; 信号输出
;; 输出一些音符
(do ((t 0 (+ t 1))) ((> t 10))
   (let ((note (fm-synth (* 2 pi (* 440 (expt 2 (/ (- t 5) 12)))) 3 1000)))
      (write-sample note)))

该程序定义了一个名为 fm-synth 的函数,实现了一个 FM 合成器。它通过调制器和信号输出器来生成音效,支持调节调制频率和幅度。程序输出了在一段时间内升高五度的 A 音符。

总结

Ov Sacarament 和 Sinest 是两个基于 LISP 的语言,专为音乐和 DSP 设计。它们提供内置的声音合成器和可扩展性,可轻松地扩展语言特性和函数。由于其灵活性和表现力,Ov Sacarament 和 Sinest 在音乐界和数字信号处理领域得到了广泛的应用。