前言
可能有的朋友和我一样,平时喜欢一门乐器,同时也喜欢接触音乐。我们平时会遇到一个问题,那就是在生活中听到了一些喜欢的音乐,想把它转化为曲子自己练习,但是大部分的音乐并没有相关爱好者进行编曲,而相关的扒谱价格对于大部分人的钱包非常的不友好(三分钟的曲子要500多RMB),那么,如何自己学习编曲呢?本人没有搜索到国内网站相关的博客,于是打算自己写一篇,希望对有缘看见这篇文章的人有所帮助!
创作乐谱的第一步——转MP3文件至MIDI
现在假设你们已经拥有了音频文件(.mp3后缀),如果你的音乐不是mp3后缀,请去自行查询相关方法。这里放一个mp4后缀视频转mp3的网站网址,亲测可用:
然后,请准备好以下的条件:
①有一个谷歌账号,已开通Google Drive服务
②会使用Google Colab(能新建文件就够)
在Google Colab中,创建一个新笔记本(名字自取),我这里命名为PianoTrans。
我使用的是一个AI转MIDI的库(transkun),这个库相比pianoTranscription(项目地址)更加稳定一些,识别准确度也更高(Colab地址
)
输入以下代码(这个是没使用Google Drive的代码,可直接从电脑上传文件,代码会根据浏览器下载路径下载MIDI文件。若上传多个文件,则输出为压缩包):
#@title 开始
!pip3 install transkun
import os
from google.colab import files
import zipfile
def removeExtension(file):
return ".".join(os.path.basename(file).split('.')[:-1])
def transcribe(file, outfolder='.'):
print(file)
mp3 = removeExtension(file)+".mp3"
os.system('ffmpeg -loglevel warning -i "%s" "%s"'%(file,mp3))
path = os.path.join(outfolder, removeExtension(file)+".mid")
os.system('transkun "%s" "%s" --device cuda'%(mp3,path))
return path
uploaded = files.upload()# 允许直接在本机上传文件
if len(uploaded) >= 2:
newZip = zipfile.ZipFile("transcribe.zip", 'w')
for fn in uploaded.keys():
newZip.write(transcribe(fn, "."), compress_type=zipfile.ZIP_DEFLATED)
newZip.close()
files.download("transcribe.zip")
else:
for fn in uploaded.keys():
files.download(transcribe(fn, "."))
运行代码后,在“代码单元格输出项操作”(就是代码下面三个点)中,上传文件:
选择你的mp3后缀文件后,处理完毕后,会自动下载。我试着听了一下,转化准确度确实挺高。
如果你要使用Google Drive中的文件,请执行以下代码:
#@title 开始
!pip3 install transkun
import os
import zipfile
from google.colab import drive
# Helper function to remove file extension
def removeExtension(file):
return ".".join(os.path.basename(file).split('.')[:-1])
# Function to transcribe audio files to MIDI
def transcribe(file, outfolder='.'):
print(f"Transcribing: {file}")
mp3 = removeExtension(file) + ".mp3"
# Convert the file to MP3 using ffmpeg
os.system(f'ffmpeg -loglevel warning -i "{file}" "{mp3}"')
# Define the output path for the MIDI file
path = os.path.join(outfolder, removeExtension(file) + ".mid")
# Transcribe the audio file using transkun, with GPU support ('cuda')
os.system(f'transkun "{mp3}" "{path}" --device cuda')
return path
# Mount Google Drive
drive.mount('/content/drive')
# Define the file path in Google Drive (replace with your actual file path)
file_path = '/content/drive/MyDrive/pianoMP3/fxj.mp3'# 你要转化的文件
# Create output folder (if needed)
output_folder = "."
# Transcribe the file from Google Drive
midi_path = transcribe(file_path, output_folder)
# Download the resulting MIDI file
from google.colab import files
files.download(midi_path)
这里修改的是文件的路径。读取Drive的文件需要挂载Google Drive(也就是drive.mount())。
创作钢琴乐谱——MIDI文件制作为五线谱
最常见的软件是Muse Score,这是下载地址:MuseHub
如果你是Windows系统,即点击对应的download。
下载的是MuseHub,在MuseHub中安装MuseScore。我这里已经安装了,所以按钮显示的是LAUNCH
启动MuseScore。点击文件→打开…,选择你上一步的MIDI文件(.mid后缀)。
MuseScore会显示乐谱。因为转化后的Mid文件的音不一定和原视频的音完全相同,所以拿到谱子之后,很多人会选择继续修改。这里暂时先不讲这一块,如果研究明白后续会更新。
导出乐谱:点击文件→导出…,导出为PDF。
这样,就有谱子了。
如何在MuseScore中继续修改谱子
该部分主要介绍MuseScore中改谱的内容应该如何使用。这里我使用Cutei的风夏来举例(链接,顺便推荐一下这个纯音乐,非常好听),由于原版纯音乐中有很多弦乐(没错,就是这首曲子找tb扒谱要520RMB /(ㄒoㄒ)/~~),导致转化后的MIDI有很多部分的音乐断断续续,慢了一些。由于本人也是钢琴业余选手,学习钢琴时未专门接触乐理知识,若存在相关内容描述不当,可以在评论区中指出,本人有时间看了之后会确定是否进行修改。
这是直接转化后的MIDI文件链接(百度网盘),你们可以对比上一个链接听一下,是不是很多音慢了一些,对吧。