tl;dr

  • 4人 vs 4人のチーム戦のような試合のDiscord上の通話を配信に乗せるのに便利なソフトを作りました
  • チームごとに別のオーディオインターフェイスに出力できます
  • 一人ごとの音量をフェーダーで調整できます
  • MIDI コントローラーを繋げばそちらでも調整できます

あらすじ

最近SplathonというところでSplatoonのチーム対抗戦の配信をよくやったりするのですが、Discord上での通話を録音するのに、アカウントが複数必要だったり、チームごとに左右に音を分けるためにオーディオインターフェイスを分けたりと準備が必要でした。

あと、Discordは一人ずつ音量を調整することが可能なのですが、人によっては小さかったり大きかったりがするので随時調整みたいなことをやっていると、試合の画面にかまっている余裕がなくなってきてしまいました。

というわけで、いい感じに外部デバイスでひとりひとりの音声をいい感じに調節できて、複数のクライアントを立ち上げる必要もないいい感じの配信用のやつを作ろうとなりました。

公開できるものは公開していけのスタンスでGitHubに載せたので、その紹介になります。

基本機能

アルファチーム・ブラボーチームそれぞれで音声の出力先、Discordのギルド・ボイスチャンネルの設定項目があります。

上部はMIDIコントローラーの選択画面で、今の所KORGのnanoKontrol2が対応しています。

設定ファイル

ルートに setting.yml という名前でファイルを作っておく必要があります。

1
2
3
4
5
6
7
8
9
default_midi_device_id: "{midi device id}"

alpha:
  discord_bot_api_key: "{discord bot api key}"
  default_audio_device_id: "{audio interface id}"

bravo:
  discord_bot_api_key: "{discord bot api key}"
  default_audio_device_id: "{audio interface id}"

discord\_bot\_api_key のみ必須で、それ以外はなくても大丈夫です。

起動の仕方

から最新のjarをダウンロードし、シェルから

1
java -jar vcord-[version]-all.jar

で起動します。

使い方

設定ファイルにDiscord Botのアクセストークンを入力すると、そのBotが追加されているギルドのリストが出るようになります。

ギルドを選ぶことでそのギルドにあるボイスチャンネルのリストが表示されるようになり、ボイスチャンネルを選ぶとBotがボイスチャンネルに参加します。

また、ボイスチャンネルに参加している人を下の+のところから選べるようになるので、選択するとその人の音声を流すようになります。

フェーダーは音声の大きさに対応しており、0で無音、1で等倍、2で2倍の音量になります(db単位のことはよくわからないです。)

MIDIコントローラーを接続して、General パネルから選ぶことで、対応したフェーダーを操作することができます。ただ、MIDIコントローラーの仕様でつないだときの初期のフェーダーの位置を取得できないので、少しだけ動かしてあげることできちんとした位置に動いてくれます。また、MIDIコントローラーごとにコントロールチェンジメッセージの値が違うようなので、自分で確認の取れたKORGのnanoKontrol2しかプロファイルとして登録されていません。

他のデバイスも対応してほしいということがあれば連絡いただけると対応できるかもしれません。

おわりに

JavFX使ってがっつりGUI作るのは初めてでしたが、なかなか直感的だったんじゃないかなと思います。

Androidのレイアウトに慣れすぎたのもあって、迷った部分はありましたが、可変のウィンドウとかでなければ決め打ちで色々できるのでデスクトップはやはりいいですね。