如何用PYTHON代碼寫出音樂


什么是MIDI

博主本人雖然五音不全,而且唱歌還很難聽,但是還是非常喜歡聽歌的。我一直在做這樣的嘗試,就是通過人工智能算法實現機器自動的作詞和編曲(在這里預告下,通過深度學習寫歌詞已經實現了,之后會分享給大家),本文我們主要聊下如何寫曲。

說到用代碼寫曲子,有一個東西大家一定要了解就是MIDI。MIDI是一種樂器數字接口,是編曲界最廣泛的音樂標准格式。MIDI並不是真正意義上的音樂文件,大家可以把它理解成樂譜,需要有環境編譯MIDI文件,才可以生成音樂。這個關系有點像代碼和編譯器的關系。市面上可以解析MIDI文件的軟件有很多種,本文將用到MuseScore2的軟件,以下就是這個軟件的截圖,界面中的五線譜就是MIDI文件的呈現。這個樂譜是可以播放的,並且可以導出為MP3格式的音樂文件。 

下面我們就介紹下生成MIDI文件所使用的Python庫。

python-midi庫介紹

市面上差不多有十多種python庫可以編寫MIDI格式的文件,本文會推薦大家使用PYTHON-MIDI。我覺得python-midi的優勢是不光可以自己寫程序生成MIDI,而且還可以對MIDI文件進行解析。這樣的功能配合機器學習算法,或許可以幫助我們實現機器的自動編曲,當然這是后話。先來看下如何安裝python-midi。

1.首先進入https://github.com/vishnubob/python-midi#Installation,將整個項目克隆下來。

2.在程序目錄下執行以下命令安裝,

python setup.py install

3.如果想執行某個以mid為后綴的MIDI文件,只要執行以下命令即可:

mididump.py test.mid

 

接下來介紹下如何寫代碼生成midi文件。

實操

在python-midi庫中,每個樂譜用Pattern對象表示,樂譜中的每個音軌(通常音樂都有很多軌道組成,每種樂器是一個軌道)用Track對象表示。每個音符的開端用midi.NoteOnEvent表示,結束用midi.NoteOffEvent表示,可以在參數中定義每個字符的音長和音高。示例代碼如下:

生成的是一個簡單的音階: 

更多有趣的音樂生成代碼和樣例可以關注我的微信公眾號進行下載,進入公眾號,輸入“music”顯示下載鏈接,謝謝。 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM