用 Python 生成音樂的波形圖案 (Wave Form)


因為發現了一個蠻有趣的東西叫 PyWaveform.所以就寫了這個小程式.
不過由於 PyWaveform 沒有提交到 pip 裡.而且裡面有用到 C 語言.
所以只好自己手動來完成這個套件安裝

而這東西主要是通過 imagemagick 生成波形圖

先記錄…基本的安裝

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 切換到自家目錄
cd ~/Venv/

# 建立虛擬環境
virtualenv --no-site-package py-music-wave

# 激活虛擬環境
source ~/Venv/py-music-wave/bin/activate

# 安裝相應的套件
pip install bottle

# 切換到網站目錄
cd ~/Desktop/htdocs/git

# 將小程式 Checkout 進來
git clone git://github.com/thinker/pymusic-wave.git py-music-wave

# 執行後則可以打開瀏覽器查看 http://localhost:8083/
cd py-music-wave
python index.py

PyWaveform 動手安裝

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 切換到目錄
cd ~/Desktop/Program/Git

# Checkout 整個專案下來
git clone https://github.com/superjoe30/PyWaveform.git
cd PyWaveform

# 打開 setup.py 查看一下程式碼確認需要的東西
- mpg123_libs -> mpg123
- MagickWand-config -> imagemagick

# 再打開 cwaveformmodule.c 查看一下載入的 headers
- sndfile.h -> libsndfile

# 通過 Homebrew 來安裝這三個東西
brew install mpg123
brew install imagemagick
brew install libsndfile

# Build 出套件
python setup.py build

# 如無意外就可以安裝套件
python setup.py install

# 查看目前已安裝的套件
pip freeze

# 再測試是否成功,如無出現錯誤即正常
$ python
> import waveform

可能出現的問題

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Q: 如果安裝 imagemagick 出現找不到情況
A: 可以嘗試 brew update

Q: 如果 brew update 出現錯誤
A: 可以嘗試 cd cd `brew --prefix` && git reset --hard FETCH_HEAD

Q: 查看 brew 目前已安裝的東西
A: brew list

Q: 如果不通過查看的方法.
A: 可以執行 python build 指令時根據錯誤查出依賴性套件
-- mpg123 可以通過 brew search mpg123 是有對應的東西
--
-- MagickWand-config 可以查 google 得知是 imagemagick
--
-- 如 error: sndfile.h: No such file or directory
-- 得到是 libsndfile 這個東西