【Python圖像特征的音樂序列生成】關於mingus一個bug的修復,兼改進情感模型
阿新 • • 發佈:2017-07-10
.cn 事情 height trac most 1-1 使用 int .py
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> 3File "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的修復,兼改進情感模型