
Spotifyの音をセカンドライフの土地音楽に流す方法
セカンドライフ(セカンドライフ/SecondLife/SL)では土地区画の中でラジオ放送を流すことができ、多くの土地ではネットで一般公開されているネットラジオをそのまま流してBGMにしたり、DJイベントでDJがリアルタイムにミックスした音を流してアバターがダンスしたりしています。
SLの土地音楽というのは、ShoutcastもしくはIcecastというメジャーな音楽ストリーミングプロトコルを使ったラジオ放送URLを土地区画に設定しているだけなので、一般公開のネットラジオを設定してもいいし、DJがやっているように自分のオリジナルのラジオ放送を設定してもOK。
その土地区画にいる人全員のSLビューワーには同じURLがセットされるので、あとは土地音楽再生ボタンを押せばラジオ放送が流れるわけです。
ではSpotifyの音を土地音楽に流す方法は?
では自分が再生しているSpotifyの音をそのまま流すことはできないか?と多くの人は考えるでしょう。技術的にはもちろん可能です。
その方法はいくつかありますが、一番確実で便利な方法をここでは紹介します。細かいことを解説すると長くなるので、ここでは基本的には設定手順を優先して書いていきます。
まずここで紹介する方法の条件と概要は下記のとおりです。
OSはWindows
Spotifyアカウントがあること
SLに音楽URL設定可能な土地があること
Spotify連携の音楽プレヤーとしてSpotiampを使う
ラジオ放送するための音楽プレヤーとしてfoobar2000を使う
ラジオ放送ストリーム配信アドオンとしてfoo_streamerを使う
ShoutcastサーバーをSecondLife MARKETPLACEでレンタルする
楽曲メタデータを送信してSLビューワー側に曲名を表示する
Spotify連携の音楽プレヤーとしてSpotiampを入れる
まず、Spotifyと連携動作するSpotiampというソフトをインストールします。公式ページ(正確には公式サイトは現在はなく過去のアーカイブ)に「Spotiamp 0.2 - Installer (.exe, Win32, 448kB)」のリンクがあるので、これをクリックしてダウンロードし、インストールを実行します。

次にレジストリを書き換えるため、管理者権限で立ち上げたコマンドプロンプトから2行のコマンドを入れます。コマンドプロンプトはWindowsのタスクバーの検索窓に「cmd」と入れると「コマンドプロンプト」が検索結果に表示されるので、これを右クリックして「管理者として実行」をクリックします。

コマンドプロンプトのウィンドウが出たら、次の2行のコマンドを1行ずつコピーしてペーストして実行します。
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\drivers.desc" /v "%SYSTEMROOT%\SysWOW64\l3codecp.acm" /t REG_SZ /d "Fraunhofer IIS MPEG Audio Layer-3 Codec (professional)" /f
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Drivers32" /v "msacm.l3acm" /t REG_SZ /d "%SYSTEMROOT%\SysWOW64\l3codecp.acm" /f
1行ずつコマンドを実行して「この操作を正しく完了しました。」とメッセージが出たら成功です。もし、「エラー: アクセスが拒否されました。」というメッセージが出た場合は、コマンドプロンプトが管理者権限付きで起動していないので、前述の操作をやり直しましょう。

この操作が終わったらコマンドプロンプトは閉じてください。
そして、ここで一度PCを再起動してください(ここ重要!)。
PCが起動したら、Spotiampを実行します。すると、プレイヤーの画面が出ます。

次にSpotiampを右クリックして Setting > Enable Shoutcast Server (on port 5010) にチェックが入ってることを確認します。それと、デフォルトでは「Normal bitrate(160Kbps)」にチェックが入っているので、より高音質な「High bitrate(320Kbps)」にチェックを移しましょう。

この設定がひとつの肝です。SpotiampはSpotifyプレイヤーと連携して動作するほか、再生中の音をローカルPC内のShoutcastサーバーとしてラジオ配信ができるという大きな特徴があります。
ただし、これだけではあくまでも自分のPCが接続されているローカルネットワーク内での配信に限定されるので、実質自分しか聞くことが出来ず、外部の誰かにそのままラジオ配信できるわけではありません。でもこれが出来ることが重要で、まずはこれが第一ステップです。
本家Spotifyプレイヤーから音楽を再生してSpotiampに出力
次に本家のSpotifyプレイヤーを起動して音楽を再生します。このSpotifyプレイヤーは、Spotify公式サイトにあるWindows版のアプリでもいいですし、WebブラウザからSpotifyのサイトを開いて操作してもいいし、どちらか好きな方法で行ってください。
では例として、Tokyo Super Hits!というプレイリストを再生してみます。するとすぐに音楽が再生されるので、次はSpotiamp側の再生ボタンを押しましょう。するとSpotifyプレイヤー側の音が止まって、Spotiamp側から音が出るように切り替わります。
Spotifyプレイヤー画面右下には「Spotiamp 0.2で再生中」というメッセージが出ているはずです。これはSpotifyプレイヤーからSpotiampに音楽データを直接送り込んでいる状態になっているということで、これによりSpotiamp側でも一時停止や次曲再生などの操作が可能になったことになります。

Spotifyプレイヤー画面右下にあるスピーカーのアイコンを押すと、どのデバイスに音楽データを送り込んでいるのか確認できます。正常に動いていれば、「お使いのデバイス」の項目に「Spotiamp 0.2」と出ているはずです。

Spotiampの「PL」ボタンを押すとプレイリストにSpotifyプレイヤーのプレイリストがそのまま乗っているのがわかります。この状態で、Spotifyプレイヤー側でプレイリストをいじったりほかのアーティストのアルバムやプレイリストを再生するとリアルタイムにSpotiampのプレイリストが更新されます。

先ほどSpotiampでローカルShoutcastサーバーへのラジオ配信する設定をしたので、Spotiampで音楽が再生されると同時にローカルネットワーク内でのラジオ配信も始まっています。
これでSpotifyプレイヤー > Spotiamp > Local Shoutcast Server という連携まで出来ました。
定番の万能音楽プレイヤーfoobar2000を入れる
次にWindowsでは定番の万能音楽プレイヤーfoobar2000を入れます。
32bit版と64bit版がありますが、後で使用するアドオンとの互換性の関係で必ず32bit版をインストールしてください。

インストールして実行するとプレイヤー画面が出ます。

SpotiampからLocasl Shoutcastサーバーで配信中のラジオを受信するために、「File > Add location… ( Ctrl+U )」を実行した後、「http://127.0.0.1:5010/play.pls」を入力します。

そして再生ボタンを押すと、再生音はfoobar2000側に切り替わり、Local Shoutcastのラジオ配信をそのまま再生している状態になります。Spotiampは音量0でLocal Shoutcastのラジオ配信のみ行っている状態になっています。

これで Spotifyプレイヤー > Spotiamp > Local Shoutcast Server > foobar2000 という連携まで出来ました。
foobar2000用のエンコーダーパックを入れる
次にfoobar2000用のエンコーダーパックを入れます。これはラジオ配信用にMP3コーデックでエンコードして送信する必要があるためです。
公式ページからインストーラーをダウンロードして実行するだけで完了です。
foobar2000用のストリーム配信アドオンfoo_streamerを入れる
今度はfoobar2000から外部のShoutcast Serverへラジオとしてデータを送信するためのアドオン「foo_streamer」をインストールします。
このアドオンは今は作者公式サイトからの配布は終了しているため、有志がミラーサイト経由で配布しています。「foo_streamer141.zip」をダウンロード後に展開します。

展開した後に出てきた「foo_streamer.dll」をfoobar2000のインストールフォルダにある「components」フォルダ( C:\Program Files (x86)\foobar2000\components )にコピーします。

foobar2000を一度終了します。ここで一度foobar2000のlocal Shoutcast Serverのラジオ受信と再生が止まり、Spotiamp側での再生音が出る状態に戻ります。
そしてfoobar2000をもう一度起動し、「Vew > Streaming Client」を実行します。

するとfoo_streamerの設定画面が出ます。

ここまで来たら、次は世界中にラジオ配信するための外部Shoutcast Serverを用意します。
ShoutcastサーバーをSecondLife MARKETPLACEでレンタルする
世界中で配信されているネットラジオの多くはShoutcast Serverを使って配信しています。SL内でのラジオ配信も、このShoutcast Serverから配信されているラジオを再生しています。
これを個人でやるには、ホームページやブログ運営と同じでレンタルサーバーのサービスを使ってShoutcast Serverを借りることになります。これはSLユーザーとしては実は簡単で、Second Life MarketplaceにShoutcastのレンタルサーバーがたくさん登録されています。
今回はBlue-Bart.comというショップがレンタルしている、 東京設置サーバー/帯域192Kbps/25人リスナー/1ヶ月レンタル/L$13 という条件のサーバーを借ります。これは日本のユーザー向けに使用するにはかなり格安の条件です。
Shoutcastのレンタルサーバーを借りずに自分のPCをIcecastという方式のサーバーを運用して外部に公開してラジオ配信する方法もありますが、これはファイヤーウォール含むネットワーク設定をいじる必要があり、セキュリティ的に危険度が増してしまうのと(外部に開放したIPアドレス+ポートはサイバー攻撃対象になる)、自宅回線の帯域を放送中に常に消費(256Kbpsで送信して20人が受信すれば256Kbps×21=5.4Mbpsの帯域)してしまうデメリットがあるため、ここでは低価格なShoutcastサーバーのレンタル方法を紹介します。

購入すると「Blue-Bart.com 25 listeners - MarketPlace - Server #2 /month/ A」というアイテムがインベントリに入るのでこれを右クリックして装着します。すると右手に白い箱が付きます。これをクリックして数秒待つとチャット画面に設定データやレンタル期間などのデータが表示されます。これは1度丸ごとノートカードなどにコピーして保存しておきましょう。

foo_streamerの設定をする
foobar2000のfoo_streamer画面に戻り「Config」ボタンを押すと設定画面になります。

最初は「Encoder」の設定です。ラジオ配信する音楽データをどういう形式で配信するかの設定で、今回は借りたShoutcast Severに合わせて lame - MP3で192Kbpsに設定します。「lame MP3」をクリックして「Edit」ボタン押すとパラメーター設定ができるので、「-r --quiet --flush --preset cbr 192 -」と入れて「OK」ボタンを押します。

次に「Server」タブを押すとShoutcast Serverの設定を入れる入れる画面になります。Server TypeはSHOUTCAST v1にし、さきほどレンタルしたサーバーのデータの中にある「IP」の欄にあるデータを「Host」の項目に入力、「Port」の欄にあるデータを「Port」に、「Password」の欄にあるデータを「Passsword」にそれぞれ入力して「OK」ボタンを押します。

これで設定は完了したので、もう一度foobar2000でlocal Shoutcast Serverのラジオ配信を再生しましょう。foobar2000のDefault Playlist欄にラジオ受信の履歴として「Spotiamp」がリストされているので、それをダブルクリックします。

そしてfoo_streamer設定画面の「Connect」ボタンを押せばShoutcast Serverへの送信が開始され、自分が送信した音楽データを世界中から誰でもそのサーバーからラジオ受信できるようになります。接続されるとボタンが「Disconnect」に変わるので、切断する場合はこれを押します。

ラジオ受信するときのURLは先程のレンタルサーバーのデータにある「Land Media URL」の欄にあります。今回の場合だと「http://s2.bb-stream.com:19270/」になります。
これで、Spotifyプレイヤー > Spotiamp > Local Shoutcast Server > foobar2000 > foo_streamer > Shoutcast Sever(外部配信) という全ての連携ができたことになります。
土地音楽にラジオURLを設定すれば配信開始
Shoutcast Serverでラジオ配信がスタートしたので、あとは土地区画にそのURLを登録するだけです。
SLビューワーで土地情報を表示し、「サウンド」タブにある「音楽URL」にさきほどレンタルしたShoutcast ServerのURLを設定します。

直接設定する方法のほか、スクリプト経由でなんらかのオブジェクトをクリックしてダイアログに入力して設定できる場合もあります(DJクラブなどは誰でも不特定の人がラジオ配信するためにこの方式をとっています)。
そしてSLビューワーの音楽再生ボタンを押すと、SLビューワー側でShoutcast Severのラジオ配信を再生するので、自分の送ったデータが数秒遅れの遅延で再生されます。これは、同じ土地区画にいる人は全員同じURLが割り当てられるので、例えば5人いて全員再生すれば5人同じラジオ配信を聞くことになります。さきほど借りたShoutcast Serverの場合は25人まで配信が可能です。
もし自分もSLビューワーでラジオ配信を再生した場合、foobar2000から出ている音とずれて被ってしまうので、foobar2000のボリュームは0にしてOKです。
SLビューワーがFirestomの場合、環境設定の「サウンドとメディア - 音楽」で「曲のタイトルの通知方法」を「周辺チャット」に設定していれば、現在再生している曲のメタデータ(曲名+アーティスト名)が表示されるので便利です。


ここまで成功したら、あとはいつでも、Spotifyプレイヤー > Spotiamp > foobar2000 > foo_streamer の順に立ち上げてShoutcast Serverに接続すればラジオ配信できます。
今までShoutcast Serverに接続できてたのに急に接続できなくなったという場合は、レンタルしたサーバーの期間が切れた可能性があるので、確認して切れていた場合は再度購入してfoo_Streamerの設定をし直しましょう。