wavの波形をpng画像に変換する。
SoundCloudっぽく音源の波形を表示して、コメント付けたりキャッキャウフフしたい時に。
まんま、wav2pngというものがあるみたい。
http://code.google.com/p/wav2png/source/checkout
インスコしてみる。
svn checkout http://wav2png.googlecode.com/svn/trunk/
まずはSVNから拾ってくる。
Revisionは11だった。
ふむ、中を見るとどうやらWindows用のバイナリが沢山出てくる。
一瞬、アレこれもしかして駄目?と思ったけど、ソースはあるし、buildの下にLinux用のMakefile発見。
cd trunk/build/linux
んじゃまー、なにも考えずにポチッとな。
# make g++ -c -O2 -Wall -I../../lib/anyoption ../../lib/anyoption/anyoption.cpp ../../lib/anyoption/anyoption.cpp: In member function ‘void AnyOption::init(int, int)’: ../../lib/anyoption/anyoption.cpp:131: error: ‘strcpy’ was not declared in this scope 〜中略〜 make: *** [anyoption.o] エラー 1
怒られた。まーそうだと思ったよ!
../../lib/anyoption/anyoption.cppってファイルで怒られてる。
strcpyなんて知らねーと言わんばかりです。はい。
C言語とか、入社研修でさっわって以来やってないから、わからんつーに。
でもたしか、str*使うにはstring.hとかインクルード宣言しなきゃいけなかった気がする。
で、anyoption.cpp内で宣言してないようだ。
../../lib/anyoption/anyoption.cpp 一文追加。
#include "string.h"
もっかいやってみる。
# make g++ -c -O2 -Wall -I../../lib/anyoption ../../src/main.cpp ../../src/main.cpp:42:21: error: sndfile.h: そのようなファイルやディレクトリはありません ../../src/main.cpp: In function ‘void saveImage(std::string, gdImage*, bool, int)’: ../../src/main.cpp:78: warning: comparison between signed and unsigned integer expressions ../../src/main.cpp: In function ‘int main(int, char**)’: ../../src/main.cpp:570: error: ‘strcmp’ was not declared in this scope ../../src/main.cpp:586: error: ‘strcmp’ was not declared in this scope 中略 make: *** [main.o] エラー 1
strcmp…またお前か!
../../src/main.cppに同じように、インクルード文追加。
#include "string.h"
あと、sndfileが無いようだ。
これは入れなきゃね。libsndfileインスコ。
# make g++ anyoption.o main.o -lgd -lsndfile -ljpeg -o wav2png
できた!
叩いてみる。
# ./wav2png Usage: wav2png --input wavefile.wav Additional options: --width 300 --height 151 --output image.jpg --linecolor ff00aa --backgroundcolor 002222 --zerocolor ff0000 --colorfile filename --padding 2 --verbose true --type jpeg --quality 85 Short command line switches: -i -w -h -o -l -b -z -c -o width: width of PNG (default: 300) height: height of PNG (default: 151) output: output filename (default: input filename with '.png' appended) linecolor: color of waveform lines (default: 323232) backgroundcolor: color of background (default: FFFFFF) zerocolor: color of line through zero (default: 960000) colors are defined like HTML colors in hex colorfile: file with (samplePosition,value) pairs for coloring padding: padding around the edge verbose: true or false type: png or jpeg quality: jpeg quality between 0 and 100
おー、なんか色々出来そうだ。
# ./wav2png --input test.wav
test.wav.pngってファイルが出来た。