醉赤壁
《醉赤壁》- 林俊杰
首次尝试电钢琴内录:
- 电钢琴:罗兰 fp30x
内录实操
我使用的是 U 盘内录,需要先格式化:
然后是一些 录制、播放、存储 的操作:
操作还算简单,录完一看发现是个 .mid 文件,有点意外,因为我以为会是个 .mp3 或者 .wav 之类的。我还算不上是一个玩电子音乐的玩家,此时还不知道 .mid 是什么类型的文件,但有种不太好的预感,因为它只有 10k 不到的大小;而曲子是大于 3 分钟的,就算是普通音质它也得有个 10MB 以上吧。
.mid 文件
先用多媒体播放器点开看看,发现不能播,说明不是能够直接播放的音频文件,查一下大概了解了:简单来说,.mid 文件是一种标准的 数字音频 文件格式,也称为 MIDI(Musical Instrument Digital Interface)文件。MIDI 文件并不包含实际的音频数据,而是包含了音乐的 音符、乐器、音量和音调 等信息,用来指示播放设备如何生成音乐,举个例子,对于钢琴,通俗来说它记录了 你在什么时间用多大力按了哪个琴键,以及在什么时间用多大力踩了哪个踏板 等等。因此,MIDI 文件相对较小,通常只包含音乐的音乐数据,而不包含实际的音频波形数据。
至于它为何而生,以下内容引自百度百科:
八十年代初,电脑音乐迎来了第一个真正的繁荣时期,同时也迎来了一个难以解决的问题,那就是各种电子乐器之间的通讯问题:各生产厂家都按照自己的规格生产电子乐器,当您单独使用某一厂家的产品时,您还不会遇到什么问题,可是当您同时使用几家公司的设备构成一个电脑音乐系统的时候,麻烦就来了,您怎么能使一台美国 E-MU 的音源发出您在日本 ROLAND 键盘上弹奏的一个标准 A 呢?
为了解决电子乐器的通讯问题,1982 年,国际乐器制造者协会的十几家厂商(其中主要是美国和日本的厂商)会聚一堂,各抒己见。会议通过了美国 Sequential Circuits 公 司的大卫.史密斯提出的“通用合成器接口”的方案,并改名为“音乐设备数字接口”,即“Musical Instrument Digital Interface”缩写为“MIDI”,公布于世。1983 年,MIDI 协议 1.0 版正式制定出来。此后,所有的商业用电子乐器的背后都出现了几个五孔的 MIDI 插座,乐器之间不再存在“语言障碍”,它们同装上 MIDI 接口的电脑一起,构成了一个更加繁荣昌盛的电脑音乐大家庭。
实际上, MIDI 本身只是 Musical Instrument Digital Interface 的缩写,意思是音乐设备数字接口。 这种接口技术的作用就是使电子乐器与电子乐器,电子乐器与电脑之间通过一种通用的通讯协议进行通讯, 这种协议自然就是 MIDI 协议了。
参考资料:mid 格式 - 百度百科
mid 转换成音频文件
也就是说要把 mid 记录的音乐数据转换成实际的音频波形数据(.mp3/.wav/...)之后才能播放。
而这中间就有很大的空间可以发挥了,以下内容引自百度百科:
MIDI 标准的成熟使各电子乐器生产厂商更加信心百倍,它们绞尽脑汁、挖空心思,以空前的热情生产出各种电子乐器,有键盘式的(合成器、主控键盘)、弦控式的(MIDI 吉他)、敲击式的(鼓机)甚至还有吹奏式的(呼吸控制器),除此之外,还有五花八门的各种音源模块(就是把没有键盘的电子合成器)供人选购。
即 mid 需要经过某种 音源/音色库 的处理。我想既然电钢琴自身能发出声音,那它的声音是怎么出来的呢?也是先生成 mid 然后用自己的音色库处理后播放出来吗?问问 ChatGPT:
看起来是直接播放预采样的音频样本,再简单了解下历史:电子钢琴如何工作?(里面视频需要科学上网)
简单点说,音源(或音色)库就是对各种乐器不同状态(音高、力度等)进行 采样 然后存储下来,根据需要取出对应的音频样本,组合起来就可以发出对应的声音了。所以,一些好的音源或音色占用空间会非常大,有些质量非常高的音色甚至达到上百 G。
不过还有另一种方法,上面链接里面也有说,就是采用 物理建模 技术来模拟乐器的声音生成过程,而不是传统的采样技术。它可以实时计算音乐乐器的物理特性,包括弹奏技巧、共鸣效果等,从而提供更加动态和逼真的音色表现。这种方法做得好的话,好处非常明显:相比基于采样的音源软件,它所需的存储空间更小(不需要采样),并且在计算资源方面的要求也较低,同时保持高质量的声音表现。这需要音乐和数学都非常强才能做到。
所以电钢琴录制的时候保存的是 mid 文件非常合理,有很大的处理空间可以发挥,不过既然电钢琴有自己的音色,录制的时候顺便存一份自己音色的音频文件(.mp3/.wav)好像也不是什么难事吧,而且是存到 U 盘里面,又不占用电钢琴自身的容量。还是说有这个功能我没有发现?这就导致要内录电钢琴自身的音色的话,感觉需要买个声卡或录音笔插到耳机接口才能录下。这个方案直接放弃,罗兰 fp30x 的默认音色并不是特别喜欢,那就直接处理 mid 吧。
先试试直接用在线工具转:audio.online-convert.com
- 醉赤壁
不太能接受,好像没得选音色,感觉它只是帮你把声音播出来而已,声音还很小。
音源软件
花了点功夫了解了下各种 音源软件。(因为只是简单了解了下,所以以下的一些说法可能并不太正确,后面如果有新的理解再回来修改)
有些是纯音源(或音色)库软件,它本身并不能直接导入 mid 文件。你可以拿根 midi-usb 线通过电钢琴的 midi 接口连接到电脑,软件能识别出来,并且在演奏电钢琴的时候,软件能发出选中的音色。我没买这根线,所以没尝试过,感觉应该会有延迟吧。
比如 truepianos,它可以在电脑上独立运行:
我的目的是需要能导入处理 mid 文件的软件,同时它需要有各种音色可供选择。我想先试试免费的方案。
LMMS
LMMS 是一个选择。LMMS(旧称:Linux MultiMedia Studio),是一个自由、免费且开源的的数字音频工作站软件,支持 Linux、macOS 和 Microsoft Windows 三大操作系统。主要是用来 作曲、编曲 的。
它有一些预设的音色处理:
可以看到,导入 mid 后直接播放是没有声音的,需要给它选择一种音色才能播,上面的例子都是 LMMS 自身的音色,不过感觉很多都是为游戏音乐准备的。
SoundFont 2.0 是一种音色库文件格式(后缀是 .sf2),LMMS 支持加载该类型的音色库文件,找了一些免费的钢琴音色放进去看看:
声音好像还可以,不过没有踏板的效果,理论上 mid 是有记录踏板信息的。这好像是个已知问题:Recording MIDI with Sustain pedal。
用别的音色库试试,前面介绍了 truepianos,它是一个包含了很多钢琴音色的音源软件,而 LMMS 本身没有好的音色库,但它可以导入 mid 文件,并使用别人制作的音色库来处理 mid。不过它们是两个不同的软件,LMMS 能不能加载 truepianos 里面的音色呢?
通过 VST 插件标准 就可以做到。VST(Virtual Studio Technology)是一种常见的插件标准,用于虚拟乐器和音频效果的集成到数字音频工作站(DAW)软件中。
truepianos 和 LMMS 都是支持 VST 插件标准的,也就是可以通过 LMMS 作为 宿主软件,把 truepianos 当插件使用。在 windows 上,truepianos 的插件是个 .dll 文件,在安装 truepianos 的时候勾选安装 vst 插件,它就会生成这个文件。把它拷贝到 LMMS 的插件目录后就可以使用:
还是没有踏板的效果。就算它有别的办法可以把踏板效果添加进去,我暂时也不打算再尝试了,好用的软件应该能直接从 mid 里面读取播放出来。
CakeWalk By Bandlab
再测试一个免费的宿主软件:CakeWalk By Bandlab(它还有个 CakeWalkNext 和 CakeWalkSonar,我不太了解)。
CakeWalk 也有自己的内置音色库,很一般,还是得靠插件。跟 LMMS 类似,对于加载 truepianos 插件,我已经有经验了,把 truepianos.dll 拷贝到 CakeWalk 的插件目录即可:
它发现插件目录有文件更新会自动扫描把它更新到应用里面。使用起来也很方便:
开始播放时的速度吓我一跳,mid 文件应该有存储速率信息吧,前面 LMMS 播放都算正常。应该有地方可以调整至原速的,但我没找着,只能手动调整了,平时练这个曲子的时候是 78,先调到 78 吧,跟原速可能会有一些差别,因为录的时候没有开节拍器。这个没调准的话后面跟视频合并的时候音乐跟手会对不上。
不过所幸,效果是期待中的效果。不过导出音频文件(.wav)的时候又出现问题了:它只能导出 truepianos 默认的那个音色,而且里面有些对该音色的细节调整也没有生效。不过还好它默认的音色就很不错了,目前问题不大。
还有别的免费的 “宿主软件” 比如 Audacity 或者别的应该也能试试,不过现在先不试了,后面有时间再测试下。
Pianoteq8
上面试了两个免费的方案(truepianos 音源其实是需要付费的,但不贵,只是我很容易就找到了破解版,就顺势拿来用一下~),可以看到或多或少有些使用上的不便。接下来测试一款 付费 音源软件:Pianoteq8。
前面说过,音源(或音色)库要么是通过采样的方式合成,要么是通过物理建模的方式去模拟。而 Pianoteq8 就是一款通过物理建模的方式去模拟声音生成的过程的软件,而且做得非常好!另外它不需要宿主软件,可以直接处理 mid 文件。
Pianoteq8 可以免费试用,但有两个限制:
- 会禁用其中的一些黑键
- 每次只能使用 20 分钟
基本不需要做什么额外的操作,就是导入 mid,然后点播放,出来的效果就很惊艳(因为有几个黑键被禁用了,所以有些地方会表现出漏音的情况)!默认就是 斯坦威 的音色,不是前面两种方案做出的效果能比的。而且会有踩踏板的声音,不过可以关掉,另外不知道什么原因音量有点小。
Pianoteq8 的基础版本就需要 1000+ RMB,完整版好像得上万 RMB。我还是先观望一下,后面多尝试其他音源再看看。
合并音视频
目前音频的方案就是 cakewalk + truepianos 导出 .wav,反正 mid 还在,后面可以慢慢找合适的音源。
内录的时候有用相机同步在录视频,现在声音处理好了下一步就是跟视频合并。基本就是先把视频消音,然后把音频插到合适的位置再把前后多余的剪掉。
程序员要先尝试程序员的方法,虽然我没用 ffmpeg 干过这种事,但它应该能够胜任这个工作。直接问 ChatGPT:
ffmpeg -i input.mp4 -c:v copy -an output.mp4
视频消音后需要把音频合入,音频是从第 6 秒开始播放的,而视频大概是从第 10 秒开始触键,所以先剪掉视频前 4 秒:
ffmpeg -i input.mp4 -ss 4 -c copy output.mp4
然后把音频合入视频:
ffmpeg -i input.mp4 -i input.wav -c:v copy -c:a aac -strict experimental -map 0:v:0 -map 1:a:0 output.mp4
起初我还有点担心音质会有不少损失,合完播放视频觉得跟 wav 没有太明显的区别。音乐跟手的动作也还对的上,前面测试 cakewalk 时说了 wav 是按照 78 的速度生成的,说明我弹的时候速度跟这大差不差。
合完后前面有 6 秒的静止画面,用前面的方法再剪掉 4 秒。然后后面还有 6 秒左右的多余:
ffmpeg -i input.mp4 -t [duration] -c copy output.mp4
至此就得到了文章最开始的视频。不过画面有点粗糙,这灯光、这场景、这录像设备,廉价感都要溢出屏幕了,得学学摄影了(但视频模糊是预期的,因为是放在腾讯云上的,不压缩的话近 300MB,压缩一下成了 20 多 M,省些流量)。还有,我现在这个阶段,完整地录一首曲子真的是考验心态,脾气都磨平了。
最后,虽然还没买 Pianoteq8,但也先用试用版整一个缺了几个黑键的斯坦威音色版本听听,跟前面一对比音色和音质的确好很多(安静环境戴耳机对比很明显):