IcecastとMixxxを使っておうち限定DJストリーミング垂れ流しシステムをつくったお話。

## なにをしたのか？  
- フリーのDJのソフトMixxxってやつを使いたかった。
- あとただ曲流すだけではつまらんので、ストリーミングしてみることにした。
- つべに流すほど素晴らしいお皿回しスキルは無いので、宅内で済ます⇒LANでどうにか終えたかった。
- 結果、宅内のLAN回線内で配信するお家ラジオ的なものが完成した。

## 使ったDJソフトと配信基盤
### Mixxx(フリーのDJソフト)

- 今回のメインで使いたかったソフトウェア
    - マルチプラットフォーム
    - Win版においてはASIOに対応してるなど結構優秀
    - AutoDJ機能がある。
        - 使えばストレージ内の音楽勝手に再生マンと化す
    - (筆者は)Linux版は使ったことあるが、Win版はない。
    -  Shoutcast 1,Icecast 1,2系のストリーミング配信に対応
    -  (完全に余談ですけど)その他配信をしたければたぶん、  
OBSとかでループバック使ってごまかすといいのかな。

### Icecast2(配信基盤ミドルウェア)
- M3Uとかを配信するミドルウェア
- XMLで配信設定を通す。
- 使い方がゴロゴロ転がってる(日本語も英語もあったので好きなの探しましょう。

## DJソフト(Mixxx)の準備
### 準備するもの
- 適当なPC
- 適当に曲たくさん
- 2系統の吐き出しを備えたオーディオインターフェース
- (あるとより良いのが)テーブルコントローラー
    - なくてもキーボード操作を受け付けるので、気合いでどうにでもなります。

### インストール方法
#### 1.Download
https://mixxx.org へアクセスして、Downloadのメニューから自分のPCにあったものをDLしてください。

#### 2.インストール
そもそもWin版はインストーラー形式なので、好きなとこにインストールしてください。
(他のソフトのインストールと大差ないです)

#### 3.とりあえずたちあげてみましょう。
インストール時にメニューにアプリケーション登録されるので、Mixxxを探して立ち上げましょう。

#### 4.試しにあそびましょう。
たぶん、DJはセンスなので、細かい使い方は
https://mixxx.org/manual/latest/en/#
にぶんなげます。

##### 因みに
キーボードに割り当てられてる機能としては、
https://mixxx.org/manual/latest/en/chapters/controlling_mixxx.html#using-a-keyboard
以上に詳細が記載されています。参考にすると良いかもしれません。


#### 5.(都合により配信をする場合は)LAMEのダウンロード
MP3で配信するとだいたいのデバイスで拾えるのですが、
Mixxxが音声を変換する為のエンコーダが必要です。
ただ、mp3エンコーダがライセンスの都合で載ってないらしいので、

http://www.rarewares.org/mp3-lame-libraries.php

以上から自分がDLしたMixxxと同一プロセッサ向けのバージョンのzipをDownloadして、
解凍し、中から『libmp3lame.dll』ってファイルをコピーして
Program FilesのMixxxの実行ファイルと同じディレクトリにペーストしてください。



## Icecast2の準備
### 必要なもの
- LANにぶっささっとりますPC(性能に余裕がある場合↑のDJで使ってるPCと一緒で構いません。)

### インストール・セットアップ手順
#### 1.Download
https://icecast.org/download/ からWin版なりLinux版なり落としてください。
(Mac版はビルドを要するのかも?)

#### 2.インストール
これもインストーラタイプなので勝手にやってくれます。

#### 3.Configファイルのセットアップ
スタート(?)メニューから『Icecast Config』ってショートカットを踏むとメモ帳でConfigが記載されたXMLが立ち上がります。

##### 3.1 ロケールの設定
適当にローカルで掘っ立てるだけなのでEarthのままでも良いんですけど気分で設定します。

```XML:icecast.xml
<location>Tokyo</location> 
```

##### 3.2 パスの管理

```XML:icecast.xml
    <authentication>
        <!-- Sources log in with username 'source' -->
        <source-password>(hoge)</source-password>
        <!-- Relays log in with username 'relay' -->
        <relay-password>(hoge)</relay-password>

        <!-- Admin logs in with the username given below -->
        <admin-user>(admin namehoge)</admin-user>
        <admin-password>(admin passhoge)</admin-password>
    </authentication>
```

authenticationタグ内の  

- source-password
- admin-user
- admin-password

上記3つをそれぞれ設定しましょう。  

source-passwordはMixxxで配信する時につかいます(上記(hoge))。
admin-user(上記例だと(admin namehoge)),
admin-password(上記例だと(admin passhoge))は
Icecastの管理画面のログインで必要です(ほっとんど管理画面みなかったですけどね)。

##### 3.3 mountの設定
一応日本語曲名がぶっ飛ばない様にするための設定です。
XMLの最終行手前icecastタブのターミネーターの前にmountタグ仕込んで以下の様に設定してください。
この(hogehoge)のところは、ご自分で好きにマウントネームを設定してください。
(ストリームのログはたぶん取ってないので、容量等きにしなくても大丈夫な筈(may be...))

```xml:icecast.xml
    <mount>
        <mount-name>/(hogehoge)</mount-name>
        <charset>UTF-8</charset>
    </mount>
</icecast>
```

#### 4.立ち上げ
スタートメニューのRun Icecast(Terminal)を使って立ち上げましょう。
コマンドプロンプトが立ち上がり、
『Please open http://localhost:8000 in your web browser to see the web interface.』
なんて表示されてましたら、localhostの8000番にブラウザ使ってアクセスしてみましょう。
たぶんIcecast2の『ほっとんどいじりがいのない』メニュー画面が出ます。

## Mixxxでストリーム
### Mixxxの設定
お待たせ致しました。ストリーム方法の伝授です。
Mixxxを立ち上げたら設定を開きます(ショートカットは『Ctrl+P』です)
![画像1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/205714/c37c5362-1015-66f3-9ed5-35e5fc5ad2fd.png)
図1.設定画面

メニューのライブ放送欄からサーバ接続のところを弄ります。(上記赤枠)

- タイプ：Icecast2
- ホストアドレス:サーバーの置いてあるアドレス。今回はlocalhostとした。
- ログイン名:source
- マウントポイント:(hogehoge)
- password:上記(hoge)で設定した内容


次にエンコーディング

- フォーマット:MP3
- その他:用途に合わせて好きに設定してください。

最後にMetadata

- 『メタデータにUTF-8エンコーディングを使用』というチェックボックスを有効にする。

### Mixxxで配信する。
右上とかにあるアンテナを押下すると色が変わって緑っぽくなれば配信できてます。
![がじょ2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/205714/b4b77ce0-baed-c931-fbb5-d2986606c8df.png)
図2.配信が出来ているときのステータスバー

### 端末とかで拾う
同一LAN内ならこれで拾える筈なので、

http://(Icecastの突っ込んだPCのIPアドレス):8000 

でアクセスするとおそらく聴けます。

![がじょ3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/205714/7b4bc1b0-3ce4-6e41-9722-4a2ff9572cfe.png)
図3.Localhost8000番の中身

ストリーミングしている音声を聞く時は
http://(Icecastの突っ込んだPCのIPアドレス):8000/(mount point)
にアクセスすると大抵の場合聴けます。