Frescobaldi捉虫记录

嗯……这里要怎么发带标题的博文呢?正好写这篇文章测试一下。

这两天study break的时候在玩Frescobaldi,因为其中几个插件都比较老了,有一些虫需要捉。这里就把捉虫的一些心得写下来。对于遇到类似问题的人希望能抛砖引玉;对于对此类细节没有太多兴趣的人,也可以看个开心吧。

记得Frescobaldi是当年修音乐史专业课时,巴洛克时期讲的第一个人。我对LiliPond这个Latex与打谱软件的结合其实已经瞻望很久了,而看到竟然有一个软件的名字在玩如此合我口味的梗,我就下载了。

(我的配置是AMD 4000 series以及PopOS 20.10。PopOS官方商店里竟然就有Frescobaldi,当时装系统的时候就开心地下载了,不过半年以后才有时间来玩它。此时Frescobaldi的版本号是3.1.2。)

界面与基本操作

刚打两行谱就受不了了——系统默认的color scheme里的高亮让我根本看不见原文。所幸这个问题很好解决,随便搜一下就找到了一个GitHub Repo,里面分享了许多常见theme。我随便下了一个nord。

之后发现预览出来的乐谱不是白纸了,变成深蓝了……于是找到设置(Edit → Preferences),在Fonts & Colors → Base colors → Preview background 找了一个比较接近与白色、又不会对比度太大的颜色。

然后开始学习打谱。软件自带的User Guide很好用,大多数东西都说得很清楚。然而写完两句想听一下的时候,遇到了前所未有的困难。

Playback与需要的许多插件

我找到了playback窗口,但是点击播放的时候虽然显示在一个小节一个小节地走,却完全没有声音。升级到PopOS 20.10以后,我的声卡其实经常断断续续不能识别(Zoom的时候别提有多乌龙了…)。于是我最开始以为是声卡的老毛病犯了。今天早上先花了半个小时确定声卡没有问题,然后才开始慢慢查MIDI播放的问题。

首先在AskUbuntu之类的网站上能看到许多类似的问题,但都是2014,甚至2008年左右提出的。稍微试了一下,好像也完全不能解决我的问题。后来发现Frescobaldi的wiki上专门有一篇讲MIDI Playback的:于是我也去装了libportmidi0,fluidsynth,qsynth和timidity(均为sudo apt-get install)。它们之间的关系:

QSynth is a GUI of FluidSynth. They are both more actively maintained than timidity. (Note: the wiki page seems to say that either FluidSynth or Timidity would work, but based on this and what ended up working for me, both are probably necessary.)

Timidity (and probably FluidSynth) is an external midi synthesizer.

接着要把他们启动起来。

cp /usr/share/applications/qsynth.desktop ~/.config/autostart

这行可以让QSynth开机的时候自动启动。(后来想想,我并不想在下次声卡不识别、反复重启修声卡驱动的时候每次都要关QSynth……之后有时间写个脚本让它在我用Frescobaldi之前运行就可以了。)

我最开始以为有QSynth就不需要Timidity了,绕了不少远路。后来发现Timidity也要,所以也要启动它一下。这个稍微有些麻烦了,因为有点兼容性的问题,不过按照这个网页所指导的那样。我把相关的部分在这里也存个档:

To start TiMidity in daemon mode once, you can use the following command:

timidity -iA

To do so, write a timidity.service file in ~/.config/systemd/user/ like that one :

sudo nano /etc/systemd/user/timidity.service

Add the following lines to timidity.service

[Unit]Description=TiMidity++ DaemonAfter=sound.target[Service]ExecStart=/usr/bin/timidity -iA -Os[Install]WantedBy=default.target

Then enable the service with:

sudo systemctl --user enable timidity.service

如果直接输入 sudo /etc/init.d/timidity start ,会显示 sudo: /etc/init.d/timidity: command not found。类似地如果直接输入 systemctl --user start timidity 也会显示 Failed to start timidity.service: Unit timidity.service not found. 。所以照着上面的方法建立一个.service file还是必要的。之后 systemctl --user start timidity 就可以成功运行了。最后输入 timidity -iA,这个窗口就被这个进程占着了。

然后去调试QSynth。最开始它的log如图一。

我没有意识到这背后的问题,照着这个error message搜了半天……现在点击Setup → Audio。Audio driver那里应该选的是jack。把它改成alsa。然后点击Restart。

现在回到Frescobaldi(可能需要重新打开一下Frescobaldi),再进入设置→ MIDI Settings。

【见图二】

把Player output改成如图所示(可能需要先点击Refresh)。其它的一些接口可能也可以,我之后再试着玩。

然后回到文件,可能需要重新compile一下(Ctrl+M)。之后MIDI Playback就有声音啦~

后记

呵呵,现在Export Audio(把MIDI转换成wav)还是会报错,说Could not start timidity。我什么时候再继续捉虫吧。

最初想装Linux系统的时候一大犹豫就是Sibelius用不成了。现在我已经欢快地用代码打起了谱。这里再废话几句用了Linux小半年的一些感慨。

曾经听一人说“Linux is great if you don’t care about your time”。我最开始开始使用Linux的时候心下还惴惴,但越来越觉得Linux是需要一个学习的过程。长期来看,这样的投资也会回报越来越多,因为长久发展的趋势大概是会对Linux的生态越来越好的,电脑上比较新的、现在还兼容不是很好的配件,到了之后也会越来越支持;而像windows和mac就恰恰相反,Outlook如果有个奇怪的bug就只能祈祷它尽快修复、苹果要是出了新系统并对旧系统停止支持就只能去买新机器。反正我是很享受这一波Mac换M1芯片,我不用继续追求它新发布的产品了。

所以我直到我的电脑下次声卡坏掉之前都是很满意的。

另:买新电脑其实并不是一个很好的换Linux的契机,因为顶配的一些东西太新了(要不就是太proprietary了),会不支持,还搜不到这个解决方案。我要是当时知道这个,可能能省去现在的许多麻烦。不过长远看来,这也算是投资吧。

其它

不记得是在安装jack还是Qsynth的时候了,有一个东西会要求确认给不给它realtime priority。我只查到一个这个,当时就给了(尤其是我的电脑也只有我一个人用),后来有看到有人说其实不用给也不应该给的。总之这个就留作一个亟待解决的问题了,万一未来的某一天我电脑因为这个死机了的话,我会回来更新的。

Qoto Mastodon

QOTO: Question Others to Teach Ourselves
An inclusive, Academic Freedom, instance
All cultures welcome.
Hate speech and harassment strictly forbidden.