Python图像特征的音乐序列生成关于mingus一个bug的修复,兼改进情感模型
Posted ldzhangyx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python图像特征的音乐序列生成关于mingus一个bug的修复,兼改进情感模型相关的知识,希望对你有一定的参考价值。
mingus在输出midi文件的时候,使用这样的函数:
1 from mingus.containers import NoteContainer 2 from mingus.midi import midi_file_out 3 4 nc = NoteContainer(["A", "C", "E"]) 5 midi_file_out.write_NoteContainer("test.mid", nc)
在输出时会报错:
1 Traceback (most recent call last): 2 File "<stdin>", line 1, in <module> 3 File "C:\\Users\\jzy\\Anaconda3\\lib\\site-packages\\mingus-0.5.2-py3.6.egg\\mingus\\midi\\midi_file_out.py", line 94, in write_NoteContainer 4 File "C:\\Users\\jzy\\Anaconda3\\lib\\site-packages\\mingus-0.5.2-py3.6.egg\\mingus\\midi\\midi_track.py", line 50, in __init__ 5 File "C:\\Users\\jzy\\Anaconda3\\lib\\site-packages\\mingus-0.5.2-py3.6.egg\\mingus\\midi\\midi_track.py", line 225, in set_tempo 6 File "C:\\Users\\jzy\\Anaconda3\\lib\\site-packages\\mingus-0.5.2-py3.6.egg\\mingus\\midi\\midi_track.py", line 230, in set_tempo_event 7 TypeError: %x format: an integer is required, not float
解决办法是找到这个文件:
...\\Anaconda3\\Lib\\site-packages\\mingus-0.5.2-py3.6.egg
用7-Zip打开这个文件,直接编辑里面的midi_track.py文件:
找到230行,将代码改成下图所示即可。
保存,退出,重新import,程序正确。。
============================================
关于情感模型的改进,我重新评估了原来的情感分类,发现可行性很差,于是尝试使用这个模型:
其实我一度动摇,根据乐理来做这样的音乐会不会是多此一举呢?
其实再想想,这样做也没什么不好的,至少比全自动生成Bach的音乐有意思多了。
关于主旋律的问题,周末我休息的时候也在思考要怎么制作,结论是:可能采用情感与节奏结合的模型,结合小跳和大跳来做一种概率模型。
即主旋律是在一定的大框架内,根据图像的情感特征决定节奏拍子,决定一种旋律行进模式(小跳、大跳);根据图像本身来选择随机种子,设计随机算法。
这都是耗费精力的事情。
以上是关于Python图像特征的音乐序列生成关于mingus一个bug的修复,兼改进情感模型的主要内容,如果未能解决你的问题,请参考以下文章
Python图像特征的音乐序列生成数据集制作的一些tricks