SMCBenchmark
收藏资源简介:
The processed (already converted MIDI/csv files to npy files) but unquantized SMCBenchmark for symbolic music classification. Paper name (to cite the benchmark) Jun-You Wang and Li Su, "Improving BERT for symbolic music understanding using token denoising and pianoroll prediction," ISMIR 2025. Data format Each dataset contains two files: note list and groundtruth labels. For example, 'pm2s_train.npy' is the data list while 'pm2s_train_beatans.npy' is the groundtruth of the dataset (PM2S) for the BP task. Each data list contains a list of songs; each song contains a list of notes; each note is represented as [onset, offset, MIDI pitch]. Except BP/DbP (where onset and offset times are "pseudo" crotchet beats), all onset and offset times are represented in crotchet beats. For sequence prediction tasks (SGC/PR/ER), the groundtruth is a list of integer, each indicates the class label of a song; for note-level prediction tasks, the groundtruth is a list of label list; each label in the label list indicates the class label of a note in a song. Evaluation details In our implementation, for sequence prediction tasks, the note sequences are segmented to 512-note segments, and the accuracy is computed at the segment level (not the whole song level). This follows the implementation of MidiBERT. Note that this "512" parameter has nothing to do with the actual max length of the pretrained model (actually, the default setting of the proposed M2BERT has a max note length of 1024). For cross-validation tasks, the accuracy is computed for each fold; then, we average all folds' accuracies to obtain the final results. For other evaluation details, please see https://github.com/york135/SMCBenchmark Data names Task Data files Groundtruth files SGC tagatraum_{train, valid, test}.npy tagatraum_{train, valid, test}_genreans.npy BP pm2s_{train, valid, test}.npy pm2s_{train, valid, test}_beatans.npy DbP pm2s_{train, valid, test}.npy pm2s_{train, valid, test}_downbeatans.npy CR augnet_{train, valid, test}.npy augnet_{train, valid, test}_chordrootans.npy LK augnet_{train, valid, test}.npy augnet_{train, valid, test}_localkeyans.npy ME pop909_{train, valid, test}.npy pop909_{train, valid, test}_melodyans.npy VE pop909_{train, valid, test}.npy pop909_{train, valid, test}_velocityans.npy OTC orch_{train, valid, test}.npy orch_{train, valid, test}_textureans.npy PS pianist8_fold_{0, 1, 2, 3, 4}.npy pianist8_fold_{0, 1, 2, 3, 4}_composerans.npy ER emopia_fold_{0, 1, 2, 3, 4}.npy emopia_fold_{0, 1, 2, 3, 4}_emotionans.npy VF tnua_{train, valid, test}.npy tnua_{train, valid, test}_violin_allans.npy MNID bps_motif_fold_{0, 1, 2, 3, 4}.npy bps_motif_fold_{0, 1, 2, 3, 4}_mnidans.npy Please feels free to report any issue by sending e-mail to me (junyouwang135@gmail.com) !
本数据集为已完成预处理(已将MIDI/CSV文件转换为NPY格式文件)但未进行量化处理的符号音乐分类基准数据集SMCBenchmark。 引用该基准数据集的论文:王钧佑、苏立,《基于Token去噪与钢琴卷帘预测优化BERT的符号音乐理解方法》,发表于ISMIR 2025。 数据格式:每个数据集包含两类文件:音符列表文件与真值标签文件。例如,'pm2s_train.npy'为PM2S数据集BP任务的输入数据列表,'pm2s_train_beatans.npy'为该任务对应的真值标签。每个数据列表由多首乐曲的音符序列组成;每首乐曲包含若干音符;每个音符以[起始时间,结束时间,MIDI音高]的形式表示。除BP/DbP任务(其起始与结束时间为“伪”四分拍)外,其余所有任务的起始与结束时间均以四分拍为单位。 对于序列预测任务(SGC/PR/ER),真值标签为整数列表,每个整数对应一首乐曲的类别标签;对于音符级预测任务,真值标签为标签列表的列表,其中每个标签对应乐曲中单个音符的类别标签。 评估细节:在我们的实现中,针对序列预测任务,会将音符序列切割为长度512个音符的片段,并在片段级别(而非整首乐曲级别)计算准确率。该实现方案沿用了MidiBERT的处理逻辑。需注意,此处的“512”参数与预训练模型的实际最大输入长度无关(事实上,本文提出的M2BERT默认设置的最大音符序列长度为1024)。对于交叉验证任务,我们会为每一折单独计算准确率,随后取所有折的准确率平均值作为最终结果。更多评估细节请参考:https://github.com/york135/SMCBenchmark 数据集名称与任务对应: - 风格分类(SGC):数据文件为'tagatraum_{train, valid, test}.npy',真值标签文件为'tagatraum_{train, valid, test}_genreans.npy' - 节拍位置预测(BP):数据文件为'pm2s_{train, valid, test}.npy',真值标签文件为'pm2s_{train, valid, test}_beatans.npy' - 强拍位置预测(DbP):数据文件为'pm2s_{train, valid, test}.npy',真值标签文件为'pm2s_{train, valid, test}_downbeatans.npy' - 和弦根音预测(CR):数据文件为'augnet_{train, valid, test}.npy',真值标签文件为'augnet_{train, valid, test}_chordrootans.npy' - 局部调性预测(LK):数据文件为'augnet_{train, valid, test}.npy',真值标签文件为'augnet_{train, valid, test}_localkeyans.npy' - 旋律提取(ME):数据文件为'pop909_{train, valid, test}.npy',真值标签文件为'pop909_{train, valid, test}_melodyans.npy' - 音符力度预测(VE):数据文件为'pop909_{train, valid, test}.npy',真值标签文件为'pop909_{train, valid, test}_velocityans.npy' - 织体分类(OTC):数据文件为'orch_{train, valid, test}.npy',真值标签文件为'orch_{train, valid, test}_textureans.npy' - 作曲家识别(PS):数据文件为'pianist8_fold_{0, 1, 2, 3, 4}.npy',真值标签文件为'pianist8_fold_{0, 1, 2, 3, 4}_composerans.npy' - 情绪识别(ER):数据文件为'emopia_fold_{0, 1, 2, 3, 4}.npy',真值标签文件为'emopia_fold_{0, 1, 2, 3, 4}_emotionans.npy' - 小提琴音高预测(VF):数据文件为'tnua_{train, valid, test}.npy',真值标签文件为'tnua_{train, valid, test}_violin_allans.npy' - 动机识别(MNID):数据文件为'bps_motif_fold_{0, 1, 2, 3, 4}.npy',真值标签文件为'bps_motif_fold_{0, 1, 2, 3, 4}_mnidans.npy' 若发现任何问题,欢迎通过邮箱junyouwang135@gmail.com与我们联系!



