2016/11/29

iPhone/iPadの音声をMacで聴く - Shairport-syncをインストールする

Shairportとは


iOSにはairplayというデバイス間で映像や音声をやりとりする仕組みがあります。
有名なところだとiPhoneの画面をAppleTVに転送してテレビに映したり出来る、というあれです。
AndroidだとchromecastやBravia等のスマートTVにキャスト出来たりします。あれの親戚みたいなものです。(出来ることは結構違いますけど)

で、Sharportというのは、そのAirplay機能をPCなどでも使えるようにした互換プログラムのこと。
Sharport-syncは本家からfork(いわば暖簾分け)したもので、今回は専らこっちがメインで開発されているそう。




お断り


今回はこれをインストールする機会があったので、その方法と簡単な使い方を書いてみます。
ちなみに「Macは使い慣れているけど、普段ターミナルなんか触らない人」向けに書いていますので、普段からターミナルヤッホーな人達には突っ込みを入れたくなるような迂遠なこともあるかもしれませんが、ご容赦のほどを。

何が便利?


airpplay互換ソフトならLonlyScreenというソフトがすでにあります。
インストーラ一発でインストールできて楽ちんです。

音だけMacに持っていきたいならLightningケーブルでiPhoneとMacと繋いで「Quicktime player」でリダイレクトする方法もあります。

なのに以下の手間をかけてわざわざshairportを入れるかというと、LonlyScreenは映像まで一緒に転送されてしまうし、QuicktimePlayerは有線ぶらさがりになってしまいます。

対してShairportは無線です。WiFiが届く範囲なら移動自由です。ちょっと休憩というときにスマホを掴んでベッドやソファにゴロンとしてオッケーなのです。

ちなみにshairportをはじめとしてAirplayの音声伝送はALACが使われます。ロスレスです。

環境と必要なモノ


さて、使用するソフト群は以下の通りです。


  • homebrew
  • shairport-sync
  • (必要なら)Autromator

homebrewのインストール


homebrewというのはMac用のアプリーケーション管理マネージャーです。
主にコンソールでごそごそするアプリをインストールするときに使われるアプリです。

homebrewのインストールは簡単です。
まず以下のサイトを開きます。


続いて「アプリケーション>ユーティリティ>ターミナル」という黒いウィンドウを起動して、homebewのページの上の方にある以下の一文をコピペして実行します。





するとターミナル上になにやら文字が表示された後、鍵マークが表示されます。
これは権限がいるところを触るからパスワード入れてね、という意味です。
普通のアプリのインストーラでもダイアログが表示されて聞かれるアレです。
パスワードを入力してインストールを続行します。

その後、なんかすごい勢いで文字列が流れていきます。
なんかダウンロードしたりします。
なんやかんや終わったらhomebrewはおしまいです。

Shairport-syncのインストール


Shairport-syncをインストールします。
昔は自分でソースコードからmakeなんて事をしていたらしいのですが、今は次の1行をターミナルにコピペするだけで終わります。

brew install shairport-sync

再びだらっと文字列が流れていき、なにやらダウンロードしたり展開したりします。
入力が戻ってきたらインストール終了です。ほら、簡単。

sharport-syncの設定


shariport-syncは2016年11月29日現在なら以下のところにインストールされています。

/usr/local/Callar/Sharport-syc/2.8.6/bin/

普通のMacアプリがある「アプリケーション」にはないんです。
その理由を説明すると長くなるので、そういうモノと思って下さい。
ざっくり言うとMacOS XのベースになったUnixからの移植アプリを扱うのがhomebrewなんです。

設定もGUIなんてなくてテキストファイルです。
設定ファイルは以下のところにあります。

/usr/local/etc/shairport-sync/shairport-sync.cnf


これを弄ることで、iPhone側に表示される名前などを変更できますが、今回はすぱっと飛ばします。
またの機会に説明するかもです。

テスト起動


finderの「移動>フォルダに移動」を選んで入力欄に以下のように入れます。

/usr/local/Celler/shairport-sync/2.8.6/bin/

全部入れるのは面倒な場合は、頭数文字を入れてtabキーを押すと補完してくれます。
例えば
/us[tab]/lo[tab]/Ce[tab]/sha[tab]/2.[tab]/bin/
とかでもいけます。

さて開いたウィンドウにshairport-syncというファイルがポツン一個だけあると思います。
マウスでダブルクリックして起動します。
ターミナルが勝手に開きます。


 こんな感じに表示されたら起動成功です。

続いて環境設定のサウンドのところを見てみます。
『出力」のところに「(マシン名) Airplay」というのが表示されていたら起動成功です。

iPhoneから接続


iPhoneやiPadから接続してみます。
なお接続には接続先のMacとiPhoneが同じWiFi内に居ることが大前提です。

接続の仕方は画面の下スワイプでコントロールセンターを表示します。
そこに「Aiarplayミラーリング」というのがあるのでつい押しがちですが、ここを押しても見つけてくれません。ここはAppleTVなどと接続する場合ですね。



音声の場合は、コントロールセンターの右側にある(つまり左にスワイプする)再生コントロールのところにあります。

下部にiPhoneという列がありますのでそこをタップ。するとMac側に表示されていたAirplay名が表示されると思うので、それを選択します。

その後、何か音を鳴らしてみて下さい。
Mac側から音が鳴るはずです。
音が小さい場合は、iPhone側のボリュームやMac側のボリュームを調節してみて下さい。

無事、テストが終わったらMacのターミナルに戻ってctrl+cを押してshairport-syncを一旦終了してそのターミナルを閉じます。

Automatorで簡単起動化


これでiPhoneの音をMacで慣らすことが出来るようになりました。
でもいちいちフォルダを開いて実行してというのは面倒ですし、ターミナルが開きっぱなしというのも締まりません。
なのでautomatorで簡単に起動できるようにします。

Automatorを起動します。
起動後、新規で「アプリケーション」を選びます。
検索窓のところに「シェル」と入れます。すると「シェルスクリプトの実行」という候補が絞られて表示されますので、それを画面右側のペインへD&Dします。

なにやら文字を入力する枠が表示され、そこに「cat」と表示されていると思います。

  1. 「cat」を削除します。
  2. 閉じずに残していた「shairport-sync」フォルダの中にあるプログラムファイルを、そのテキスト枠の中にD&Dします。すると勝手にパスが挿入されます。
  3. 挿入されたパスの末尾に[(半角スペース)-d]を追加します。
  4. 保存します。保存名は何でも良いです。(例:shairport起動)
  5. つづいて終了用を作ります。「ファイル>複製」を選びます。
  6. 「-d」と入れたところを「-k」と直します。
  7. 保存します。保存名は終了用だと分ければなんでもいいです。(例:shairport終了)
起動用
終了用
-dはdeamonモードで起動という意味です。バックグラウンドで実行し続けるわけですね。
-kはkill、つまりdeamonで起動したものを終了する意味です。

さて、これで起動用のautomatorファイルをfinderでアプリケーションのように開くだけでプログラムが立ち上がります。
終了したいときは終了用を実行して下さい。

 Automatorの使い方は、他にも詳しい方が丁寧に解説してくれていますので、行き詰まったら検索してみて下さい。


Windowsの場合


Windowsならshairport4wというアプリがすでにありますのでこちらでさくっと接続できます。
shairport4xとかmとかそんなアプリが出来れば良いんですけどね。

使いどころ

遅延は酷いのでゲームは無理ぽいです。
リズムゲームなんてもってのほかです。

音だけ飛ばすという若干ニッチな使い方をしようとしたのは、Macで作業時に音楽を聞きたかったからです。
「Macでプレイヤーを立ち上げれば良いじゃ無いか」という話ですがMac側では極力アプリを起動したくなったのです。

自分にとってのMacの良さは「狙ったアプリ以外にやることが無い半専用機」というフォーカスモード的なスタンスなので、Macであれこれ制御しだすと気が散るんですね。
また昔、動画やブラウザを開いていたらクリスタのキャンバス操作が劇重になった経験も後を引いているのかもしれません。

じゃiPnoneにヘッドホンを刺して直接聞けばいいじゃないか、という話ですが、私の場合だとMacには外部DACが繋いでありましてそれ経由の方が音が良いわけです。
AirplayならALACだし、iphoneを送り出しにすればMacはすっきりするし、手元でタッチパネルでサクサク操作出来るし、良いんじゃ無いかなと。

余談ですがSpotifyはPCやタブレットからはフリー時間が決まっていますが、スマホからだと時間制限がありません。
iPhone送り出しでPCスピーカーから鳴らしたい、という時にも使えそうです。

まあ、素直に下のAAを貼ったようなLightningに直接刺せるDACがあれば良いんですけどね。