Compose Music with Lisp

這几天在研究如何通過编程作曲。看到了 Opusmodus 這個用 Common Lisp 编曲的软件,然而实在太貴了,就算是 Academic License 也有 £149(≈$208),和未打折的 Logic Pro X ($199.9)一樣貴。

有一個功能大副度缩水的 Common Lisp Music,我正在整理。

然後发現了一個好玩的東西:Live Coding。实時编程作曲,現場表演。

用的是专门用于 Live Coding 的语言 Extempore。這是 Scheme 和一種靜態类型语言 (xtlang) 的混合。

Scheme 用于动态修改程序,上面视频的主要邏輯就是用 Scheme 调用一个尾递归 procedure 形成一個 loop,然后在不中断 loop 的前提下通过直接修改 procedure 定义变曲调。靜態类型语言会通過 LLVM JIT 成比较高效的 native code,供 Scheme 调用。其解釋器是个监听端口的 Daemon,在编辑器中写好代碼就会发到解釋器运行。

(define scheme-closure
  (lambda (a b)
    (let ((result (* a b)))
      (print "result = " result)
      result)))

(bind-func xtlang_closure
  (lambda (c:double d:i64)
    (let ((result (* c (i64tod d))))
      (printf "result = %f\n" result)
      result)))

extempore-mode 現已加入 Melpa。

1 个赞

这个里面的截图用的主题真的是丧心病狂 :joy:

很有夜店feel了

我觉得LilyPond-mode还不错http://lilypond.org/,比较直观,漂亮的排版,多种谱格,MIDI play

请教一下LilyPond-mode怎么用?为啥包管理里面找不到?

就是不能直接合成。

Melpa 用多了导致用户都不知道以前 Emacs 扩展是要手动下載安装的了⋯⋯

emacswiki上也没找到? 官方渠道在哪里?

和 LilyPond 本体在一起的啊。

要使用本地包,安装Lilypond后有个emacs扩展目录可以将它们copy过来.使用spacemacs的话放到local目录下 配置:

(defconst personal-packages
  '(
   (lilypond-mode :location local)))

(defun personal/init-lilypond-mode ()
(use-package lilypond-mode
:init
(autoload 'LilyPond-mode "lilypond-mode" "LilyPond Editing Mode" t)
(add-to-list 'auto-mode-alist '("\\.ly$" . LilyPond-mode))
(add-to-list 'auto-mode-alist '("\\.ily$" . LilyPond-mode))
(add-hook 'LilyPond-mode-hook (lambda () (turn-on-font-lock)))
))

哦,不一样的目的

有意思...........