用Emacs org-mode学习音乐

买了本乐理书打算给自己补一下音乐,当然第一件事情是搞定org-mode笔记。调查了一下发现,org-mode原来内置就有lilypond支持,可输出图片和midi。不得不感慨一下,除了Emacs,也不可能有别的文字编辑器能内置支持这些东西了。

18 个赞

黑客与音乐家:smile::smile:

除了emacs 别的也可以支持的

Vscode插件只有语法高亮,别的啥也没有

Emacs里可以行内显示乐谱,可以直接播放midi,而且不需要安装任何插件

vim 的也有

你说的这些都要另外装插件,装完了也只有个语法高亮,充其量加个编译命令。没法像org-mode这样当笔记用啊。

然而你这两个不说功能阉割只有高亮,连个详细点文档都没有。更别说与其他相关插件集成了

当笔记啊

还有

latex里也行欧

推荐这本Kostka的Tonal Harmony,美国大学里音乐专业大一的经典教材。

3 个赞

直接看源码

又不是Emacs源码,我凭什么要看,就拿第一句看有啥意思,我说了两句的。

因为源码里有文档所以直接看源码,而不是一头扑进源码海里找不到北。

更何况JS和VimL根本没有写docstring的传统,还有各种import alias,看得眼花。

所以有了namespace后用import alias都用疯了,搞得不同包的不同功能函数import到一起后就起个相近的名字以为万事大吉了。这危害不亚于Java式参数列表重载。

擦,太牛了,才发现org还有这个

实际上这是Literate Programming的传统,这个在TeX社区里算是比较常见。

可以参考:

https://orgmode.org/worg/org-contrib/babel/

我自己以前没学完的Automata笔记也是这么弄的。

https://leeifrankjaw.github.io/notes/automata/

实际上,最早Wolfram Mathematica的Notebook一直就在尝试这样的事情,包括前几年流行起来的IPython Notebook,后来在支持多语言之后改名成Jupyter。

5 个赞

我觉得这个例子很好的体现了Emacs和其他环境的区别。

在标记文本中嵌入其他语言代码块这个功能,组合使用命令行工具当然没有什么做不到的。具体到这个例子,可以用LaTeX,也可以用加插件的markdown之类的。用专门的文字编辑器来编辑源代码,然后编译输出。unix的哲学就是这样了。

而在这个连续谱的另一端,是各种专业的工具,提供一整套复杂专业的功能。但除了它被设计来做的事情之外,就什么也干不了了。

Emacs厉害的地方就在于它把外部工具整合进来以后可以用一种一致的方式让它们一起工作,成为Emacs的一部分。整合进org-mode的代码块就可以用熟悉的Emacs和org-mode快捷键进行操作。可以添加TODO和标签,让它们出现在日程表里,可以追踪进度。我甚至可以做一个org表格,然后用一段elisp代码块读取表格里的数据生成音符,再用一段lilypond代码块引用这些从表格数据生成的音符。在代码块上按一个快捷键,就可以播放乐谱生成的midi。我觉得这是Emacs比其他任何工具都要强的地方。

先来个简单的 编辑个svg吧

如果我想直接编辑生成的乐谱 emacs应该不能做到

但vscode可以

如果我想指定一个播放的起止点 该怎么做

我想加个播放循环次数又该怎么做

搞不懂这也能和Unix哲学扯上关系。捂脸