Skip to content

从八音盒或纯钢琴音乐mp3中扒谱,自动生成30音八音盒乐谱。Turn music box or piano MP3s into melodies that can be played on a 30-note music box.

Notifications You must be signed in to change notification settings

glassykingyo/AutoMusicBox

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 

Repository files navigation

Automusicbox

从八音盒或纯钢琴音乐mp3中扒谱,自动生成30音八音盒乐谱。
Turn music box or piano MP3s into melodies that can be played on a 30-note music box.
matlab2019版本及以上,依赖signal processing toolbox。

使用样例

AutoMusicBox('D:\yourpath\cobweb.mp3','D:\yourpath\cobweb\','HideMiddle',0,'noteWinSize',[5,5]);

其中cobweb.mp3为截取自https://b23.tv/2tSmNyF 的一段纯八音盒音乐,原曲为Sasakure.UK的蜘蛛糸モノポリー。
由于歌曲节奏较快,于是将noteWinSize参数的时间轴缩小(10→5)。由于低音部分较低且音高接近的音符较多,将noteWinSize的频率轴增大(3→5)。

运行中途,生成如下图片。这是得到的完整乐谱。
scorefull 并在命令行弹出待输入问句:

What part of the score do you want to keep? [start, end](column idx)  

输入[1,104],表示只需要1-104列的音符。 最终得到可直接复刻到纸带上使用的乐谱(png与pdf):
score

中途输出图片

音符识别可能出错,尤其是在扒谱BPM不同的曲子时,往往需要调整参数。最好在初次识别时设置'HideMiddle'=0,输出处理中途的时频图,与生成的谱面对照。

baseTFA.png:

baseTFA 时间-频率-振幅。横向白线代表采样为音符的频率。
可观察音符分布诸如低音高音比例、大致BPM、音符间互相影响的程度,来决定noteWinSize、up/downSampRange、TimeRange等采样参数及STFT参数。

data.png:

data 时间-音符-振幅。自baseTFA选取划白色横线的行。 每一行都将当作独立的音符来分析,应在这一步确定noteWinSize的纵向大小以避免音符间相互影响。

dataMax.png:

dataMax 时间-音符-振幅。data.png运行过noteWin滑窗(每窗内仅保留最大值)后的结果。白色纵向线表示节拍位置。 仅在节拍位置附近的音会被采纳。可根据此步结果决定BPM相关参数如artiLag、artiScal、beatRange。

About

从八音盒或纯钢琴音乐mp3中扒谱,自动生成30音八音盒乐谱。Turn music box or piano MP3s into melodies that can be played on a 30-note music box.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages