アドベントカレンダーだるい
前書き
この記事は、アドベントカレンダーだるい Advent Calendar 2016、18日の記事です。
怠さ蔓延るこの時期ですが、あまりにも怠いと怠いと声に出すのも怠いですね。出来れば、無言でトントンやるだけで怠さを伝えたいものです。無言でトントン...モールス信号だ!
というわけで、怠さをモールス信号で伝える事としましょう。それには、二つの方法があります。文字列からモールス信号の音声ファイルを自動出力するツールを使う方法と、そのツールを自作する方法です。今回は、両者とも紹介します。
既存のツールを使う
cwwavというコマンドラインツールがありますのでそれを用いる方法です。といっても簡単です。パッケージマネージャからビルドに必要なツールをインストールしてビルドするだけで環境は整いますので。無気力にやっていきましょう。
sudo apt-get install libsndfile-dev libmp3lame-dev git gcc
git clone https://github.com/sunny256/cwwav
cd cwwav
make
sudo make install
早速、使って見ましょう。
echo "tiring" | cwwav --output darui.wav --frequency=650 --rate=16000 --wpm=20
怠いというモールス信号の音声ファイルが生成されました。
作る
作ります。今回は怠いので音声再生には高レイヤーでSDL Mixerを使わせていただきます。
brew install portaudio sdl_mixer
また、音声はポケットサウンド:【効果音】警告音 ビーを使わせていただきます。
トン、ツー、無音を割り当ててテーブルにし軽く解析しているだけです。SDL Mixer簡単すぎて半端じゃないですね。コンパイルして実行しましょう。
$ clang++ morse.cpp $(sdl-config --cflags --libs) -lSDL -lSDL_mixer $ ./a.out >> tiring
こんな感じに鳴ります。(怠さで録画時の設定を誤ったのか、音が小さいです。)
後当然ですが普通に別の文章も鳴らせます。
無駄にgithubにpushしました。 github.com
だるい。ダリークリスマス。