Sonic PiとPythonでGet Wild退勤するプログラム「get wild and home」を作る

f:id:karaage:20160605124025j:plain:w640

Get Wild退勤にチャレンジ

 Sonic Piという音楽をプログラミングできるソフトとpythonというプログラミング言語を使って、Get Wild退勤できるソフトを作って見ました。City Hunterだけにpython使ってます。なぜ今更Get Wild退勤なのかというと理由は以下。

 こだわりとしては、「シティーハンター dramatic master」版の声優さんの小芝居を完全再現することと、Get Wildはバナナマン日村バージョンということです(日村バージョンは音階がオリジナルに比べて半音高い、多分弾きやすくするためだと思う)。ちなみに「シティーハンター dramatic master」は私が生まれて初めて買ったCDです。名盤。

 完成したソフトを動かしてみた動画は以下。Macを閉じると自動的に臭い芝居がはじまり、Get Wildが流れます。これで、ごく自然な感じにGet Wild退勤できますね。

 再現度は…20%くらいかな。

 Get Wild退勤したくてたまらない人のために、やり方を公開します。基本わからない人には宇宙語なので、興味ある方のみどうぞ。

Sonic PiとpythonでGet Wild退勤する方法

必要なもの

Mac Bookとひとりでは解けない愛のパズル

Sonic Piインストール

 Sonic Piは音楽をプログラミングできるソフトウェアです。詳細は以下のDeviceplusさんの記事が参考になるかと思います。

 元々Raspberry Pi用のソフトで、Raspberry Piの標準OSのRaspbianにプリインストールされている場合も多いです。インストールされていない場合は、ターミナルから以下コマンドでインストールできます。

$ sudo apt update
$ sudo apt install sonic-pi

 起動する場合は、ターミナルで以下のコマンドを実行して下さい。

$ sonic-pi

 今回はMacで使ってみたいと思いますので、下記公式サイトからソフトをダウンロードします。

Sonic Pi - The Live Coding Music Synth for Everyone

 Homebrew使っている人は、Homebrew CaskでもSonic Piインストールできます。Homebrewがインストールされていれば、ターミナルで以下コマンドを実行するだけです。

$ brew install sonic-pi

 Homebrew Caskに関して詳しくは以下参照下さい。

python-sonicでSonic Piをpythonからコントロール

 Sonic Piは単体でも面白そうなソフトなのですが、外部から音源モジュールとしてコントロールできたら色々可能性が広がりそうです。例えば、pythonで制御できると良いなと思って調べたら、そのものずばりのpython-sonicというソフトがGitHubにありました。

 インストールや使い方は上記サイトに記載されているのですが、簡単に説明しようと思います。まずはpython3の動作環境を用意します。自分はpyenvで環境構築しました。pyenvに関しては、下記記事参照下さい。

 具体的な手順は、上記記事のpython(Anaconda)インストール(pyenv経由)というところまで実行した後、以下の通り実行すれば、python-sonicのインストールまで完了します。

$ pyenv global anaconda3-2.5.0
$ conda create -n audio python
$ pyenv global anaconda3-2.5.0/envs/audio 
$ pip install python-sonic

 続いて、Sonic Piを起動してから以下のように実行しましょう。

$ python
>>> from psonic import *
>>> play(70)

 音が出たら成功です。これでSonic Piを外部音源モジュールとしてpythonからコントロールできます。

 Raspberry Piの場合は、以下実行するだけでOKです。

$ sudo pip3 install python-sonic

SayコマンドのVC(Voice Character)にOtoyaさんを追加

 男の声をMacにしゃべらせるためにsayコマンドに男のVCを追加

ダウンロード方法:「システム環境設定」=> 「音声入力と読み上げ」=> システムの声でカスタマイズを選択後Otoyaにチェックを入れる

 以下の記事を参考にしました。

NoSleep CLIをインストール

 Macを閉じた動作をトリガにするためにNoSleepをインストール。

 上記サイトのNoSleep-x.x.x.dmgをダウンロードしてダブルクリック。インストールの途中に出てくる「Command-line interface」にチェックを入れましょう。Homebrew Caskで入れると、このコマンドラインインターフェースを有効に出来ませんでした。

Get Wild退勤プログラム「get wild and home」

 基本的に以下のプログラムをほぼそのまま使わさせていただきました。

 例によってGitHubでリポジトリ作りました。その名も「get wild and home」

 元のプログラムは、カフェで盗まれそうになるとGet Wildが強制終了するまで流れるプログラムですが、こちらはMacを閉じると一度Get Wildを流してシャットダウンします。使い方は以下です。

 以下コマンドでリポジトリクローン

$ git clone https://github.com/karaage0703/get-wild-and-home

 ディレクトリ移動

$ cd get-wild-and-home

 実行

$ sudo ./get_wild.sh

 sudoでスーパーユーザー権限が必要なのはシャットダウンするためです。

まとめ

 Get Wild退勤ができるようになりました。次は、これを応用してRaspberry Piで別のものを作ってみようと思います。というか本当はそっちが目的で練習のために作っていたのですが、思ったよりハマってしまったというのが正直なところです。たまには脇道にそれるのも面白いですね。

関連記事

 Get Wildを徹底分析した記事です

 今回と同じく「シティーハンター dramatic master」の1曲目を再現しています。こちらの方が再現率は高いです

変更履歴

  • 2020/01/23 ラズパイのセットアップに関して追記