如何用PYTHON代码写出音乐

如何用PYTHON代码写出音乐

什么是MIDI

博主本人虽然五音不全,而且唱歌还很难听,但是还是非常喜欢听歌的。我一直在做这样的尝试,就是通过人工智能算法实现机器自动的作词和编曲(在这里预告下,通过深度学习写歌词已经实现了,之后会分享给大家),本文我们主要聊下如何写曲。

说到用代码写曲子,有一个东西大家一定要了解就是MIDI。MIDI是一种乐器数字接口,是编曲界最广泛的音乐标准格式。MIDI并不是真正意义上的音乐文件,大家可以把它理解成乐谱,需要有环境编译MIDI文件,才可以生成音乐。这个关系有点像代码和编译器的关系。市面上可以解析MIDI文件的软件有很多种,本文将用到MuseScore2的软件,以下就是这个软件的截图,界面中的五线谱就是MIDI文件的呈现。这个乐谱是可以播放的,并且可以导出为MP3格式的音乐文件。

下面我们就介绍下生成MIDI文件所使用的PYTHON库。

python-midi库介绍

市面上差不多有十多种PYTHON库可以编写MIDI格式的文件,本文会推荐大家使用PYTHON-MIDI。我觉得python-midi的优势是不光可以自己写程序生成MIDI,而且还可以对MIDI文件进行解析。这样的功能配合机器学习算法,或许可以帮助我们实现机器的自动编曲,当然这是后话。先来看下如何安装python-midi。

1.首先进入https://github.com/vishnubob/python-midi#Installation,将整个项目克隆下来。

2.在程序目录下执行以下命令安装,

python setup.py install

3.如果想执行某个以mid为后缀的MIDI文件,只要执行以下命令即可:

mididump.py test.mid

接下来介绍下如何写代码生成midi文件。

实操

在python-midi库中,每个乐谱用Pattern对象表示,乐谱中的每个音轨(通常音乐都有很多轨道组成,每种乐器是一个轨道)用Track对象表示。每个音符的开端用midi.NoteOnEvent表示,结束用midi.NoteOffEvent表示,可以在参数中定义每个字符的音长和音高。示例代码如下:

生成的是一个简单的音阶:

更多有趣的音乐生成代码和样例可以关注我的微信公众号进行下载,进入公众号,输入“music”显示下载链接,谢谢。

  • 23
    点赞
  • 93
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
### 回答1: 这是一段爬取音乐的简单 Python 代码: ```python import requests from bs4 import BeautifulSoup # 请求网页 url = "https://music.163.com/playlist?id=3778678" headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} res = requests.get(url, headers=headers) # 解析网页 soup = BeautifulSoup(res.text, 'html.parser') # 查找音乐信息 music_list = soup.select('.f-hide a') for music in music_list: print(music.getText()) ``` 此代码爬取的是网易云音乐中某个歌单的信息,使用了requests库和beautifulsoup库,需要在终端中运行。 请注意使用爬虫爬取网站的数据时需要遵循网站的相关协议和规定。 ### 回答2: 以下是一个使用Python的爬取音乐代码示例: ```python import requests from bs4 import BeautifulSoup def get_music_list(keyword): url = f"https://www.example.com/search?keywords={keyword}" response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') music_list = [] results = soup.find_all('div', {'class': 'music-item'}) for result in results: title = result.find('h2', {'class': 'title'}).text.strip() artist = result.find('p', {'class': 'artist'}).text.strip() music_list.append({'title': title, 'artist': artist}) return music_list def download_music(url, file_path): response = requests.get(url) with open(file_path, 'wb') as file: file.write(response.content) if __name__ == "__main__": keyword = input("请输入要搜索的音乐关键字:") music_list = get_music_list(keyword) print(f"共找到{len(music_list)}首符合条件的音乐:") for index, music in enumerate(music_list): print(f"{index + 1}. 标题:{music['title']},艺术家:{music['artist']}") # 假设下载链接在music字典的'download_url'键中保存 download_url = music['download_url'] file_path = f"music{index + 1}.mp3" download_music(download_url, file_path) print(f"音乐已下载保存为:{file_path}") ``` 这段代码通过向音乐搜索网站发送GET请求,获取搜索结果页面的HTML内容,并使用BeautifulSoup解析HTML,提取出音乐的标题和艺术家信息。然后,根据用户输入的关键字,获取音乐列表。接下来,代码迭代音乐列表,并下载每首歌曲的音乐文件到本地。在代码中,假设下载链接保存在音乐字典的`download_url`键中,下载的音乐文件将保存为`music1.mp3`、`music2.mp3`等。 ### 回答3: import requests from bs4 import BeautifulSoup # 定义爬取音乐的函数 def crawl_music(keyword): url = f"https://music.example.com/search?keyword={keyword}" # 替换为实际的音乐网站链接 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) " "Chrome/58.0.3029.110 Safari/537.3" } # 添加User-Agent以伪装浏览器请求 response = requests.get(url, headers=headers) # 发送GET请求 soup = BeautifulSoup(response.text, "html.parser") # 解析网页 music_list = soup.find_all("a", class_="music") # 根据实际网页结构找到音乐链接标签 for music in music_list: music_name = music.text # 获取音乐名称 music_url = music["href"] # 获取音乐链接 print("音乐名称:" + music_name) print("音乐链接:" + music_url) print("--------") # 调用函数进行音乐爬取 crawl_music("周杰伦") # 以"周杰伦"为关键词爬取音乐链接

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值