Rokiのチラ裏

学生による学習のログ

アドベントカレンダーだるい

前書き

この記事は、アドベントカレンダーだるい 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

だるい。ダリークリスマス。