如何用PYTHON程式碼寫出音樂
如何用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”顯示下載連結,謝謝。
相關文章
- 重構程式碼(應如寫詩)
- 阿里如何用 AI 寫程式碼?阿里AI
- 如何用 es6+ 寫出優雅的 js 程式碼JS
- 如何用 SpringBoot 優雅的寫程式碼Spring Boot
- 如何用Python網路爬蟲爬取網易雲音樂歌曲Python爬蟲
- 如何用iPad執行Python程式碼?iPadPython
- 程式碼如人
- 音樂格式轉換:java程式碼實現Java
- 使用js寫一個音樂音譜圖JS
- python加法程式碼如何寫Python
- 如何用Python語音合成,以及文字轉語音~Python
- 雲音樂小程式
- 七個不一樣的Python程式碼寫法,讓你寫出一手漂亮的程式碼Python
- 如何用低程式碼實現批次匯出PDF?
- 如何用Java與python程式碼解釋IO模型JavaPython模型
- 《程式設計珠璣》程式碼之路12:如何用C/C++實現array[-1]並利用它寫出優美的程式碼程式設計C++
- python讀寫Excel表格程式碼PythonExcel
- Python從網易雲音樂、QQ 音樂、酷狗音樂等搜尋和下載歌曲Python
- 如何用程式碼畫出一幅好看的畫
- 如何用 pipenv 克隆 Python 教程程式碼執行環境?Python
- 如何寫出更好的 React 程式碼?React
- 如何寫出優雅的程式碼?
- 寫出優雅的js程式碼JS
- 怎麼避免寫出爛程式碼
- 如何寫出漂亮的 JavaScript 程式碼JavaScript
- 如何寫出整潔的程式碼
- 如何用Python抓抖音上的小姐姐Python
- python如何換行編寫程式碼Python
- [轉]如何用React寫小程式-2React
- 如何用python編寫猜拳小遊戲?Python遊戲
- python如何開啟音樂檔案Python
- 中央音樂學院招音樂AI方向博士生,玩一把程式碼與音符齊飛?AI
- Linux c程式中獲取shell指令碼輸出(如獲取system命令輸出)LinuxC程式指令碼
- THINKPHP 雲哥音樂網Cms系統|社會化音樂分享程式|PHP
- Python之抖音快手程式碼舞--字元舞Python字元
- 【譯】如何寫出更好的 React 程式碼React
- [譯] 如何寫出更好的 React 程式碼?React
- 手寫程式碼之 【釋出訂閱】
- [譯] 如何寫出漂亮的 JavaScript 程式碼JavaScript