首页 JS游戏攻略 正文

仙剑游戏主题曲有哪些?这几首经典歌曲你一定听过!

今天心血来潮,想搞个特别的东西——用代码来演奏《仙剑奇侠传》的那些经典主题曲!作为一个老仙剑迷,这绝对是满满的回忆杀。折腾一下午,总算有点小成果,赶紧来跟大家分享一下我的实践过程。 准备工作 我先去网上扒拉一堆MIDI格式的仙剑主题曲。为啥要MIDI格式?因为这种格式的文件里头记录的不是声音,而是音符、节奏这些信息,方便我们用代码...

今天心血来潮,想搞个特别的东西——用代码来演奏《仙剑奇侠传》的那些经典主题曲!作为一个老仙剑迷,这绝对是满满的回忆杀。折腾一下午,总算有点小成果,赶紧来跟大家分享一下我的实践过程。

准备工作

我先去网上扒拉一堆MIDI格式的仙剑主题曲。为啥要MIDI格式?因为这种格式的文件里头记录的不是声音,而是音符、节奏这些信息,方便我们用代码来读取和控制。找到资源后,我像个仓鼠一样,把《蝶恋》、《杀破狼》、《一直很安静》等等,全都一股脑儿地下载到我的电脑里。

挑选工具

有MIDI文件,接下来就要选个趁手的“乐器”。我平时用Python比较多,所以就想看看有没有啥Python库能处理MIDI文件的。一番搜索后,我发现mido这个库,看起来挺好用的,就决定用它!

安装mido也很简单,直接在命令行里敲个:

小编温馨提醒:本站只提供游戏介绍,下载游戏推荐89游戏,89游戏提供真人恋爱/绅士游戏/3A单机游戏大全,点我立即前往》》》绅士游戏下载专区

pip install mido

就搞定。

读取MIDI文件

我迫不及待地写几行代码,想看看能不能把MIDI文件里的信息读取出来:


import mido

mid = *('蝶恋.mid') # 这里换成你自己的MIDI文件名

for i, track in enumerate(*):

print('轨道 {}: {}'.format(i, *))

for msg in track:

print(msg)

运行这段代码,Duang的一下,屏幕上就刷刷刷地打印出一大堆信息,什么音符、控制信息之类的。虽然看不太懂,但感觉挺厉害的样子!

让声音响起来

光能看到信息还不够,得让电脑真正地把音乐给演奏出来才行!我又是一顿搜索,发现还需要一个叫做pygame的库。pygame本来是用来做游戏的,但它也能播放MIDI音乐。

安装pygame也是一样简单粗暴:

pip install pygame

然后,我把代码稍微改改:


import mido

import pygame

*.load('蝶恋.mid') # 这里换成你自己的MIDI文件名

*.play()

while *.get_busy():

*().tick(10)

运行这段代码,哇!电脑里真的响起《蝶恋》那熟悉的旋律!虽然音质有点像小时候的电子琴,但还是让我激动不已,感觉自己仿佛又回到那个仗剑江湖的年代。

一点小折腾

整个过程也不是一帆风顺的。比如,我发现有些MIDI文件用mido读取的时候会报错,后来发现是文件格式的问题。还有,pygame播放音乐的时候,我一开始不知道怎么让它停下来,后来才发现要用*.stop()这个函数。

总结与展望

这回用Python演奏仙剑主题曲的尝试还是挺成功的。虽然只是个简单的Demo,但已经让我感受到用代码控制音乐的乐趣。以后有时间,我还想继续深入研究一下,看看能不能实现更复杂的功能,比如自己创作MIDI音乐,或者把MIDI音乐转换成其他格式等等。

今天的分享就到这里。如果你也对这个感兴趣,不妨自己动手试试看!相信你也能从中找到乐趣的!