Giter Club home page Giter Club logo

sound-of-cthulhu's Introduction

Sound of Cthulhu

Icon

Sound management tool for TRPG session

Tools version

  • Node.js 16.18.1
    • Node.js version is managed by nodenv
  • Python2.7
    • Python version is managed by pyenv
  • npm 6.9.0
  • yarn 1.16.1
  • vue-cli 3.8.2

Project setup

yarn install

Compiles and hot-reloads for development

yarn electron:serve

Compiles and minifies for production

yarn electron:build

Run your tests

yarn run test

Lints and fixes files

yarn run lint

Customize configuration

See Configuration Reference.

How to Release

  1. update version on package.json
  2. create Pull Request to master
  3. merge Pull Request
    • release is created by GitHub Action

Sample sound

sound-of-cthulhu's People

Contributors

gimkondo avatar u-ishii avatar cahlchang avatar dependabot[bot] avatar shiranuik avatar

Stargazers

Tana avatar Daisuke NAGASAKA avatar nagashima-w avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

cahlchang

sound-of-cthulhu's Issues

BGM、SEの並べ替え

BGMボックスやSEボックスをドラッグ・アンド・ドロップで並べ替える

Discordで音声を再生できるようにする

その機能は何を解決しますか?

  • Discord上で音楽を再生することができるようになりる。
    • 仮想デバイスを通して再生するより音質が良くなることが見込まれる。
    • 1つのPCで簡単にBGM再生とボイスチャットができるようになる。

解決案

  • Discord APIを利用して、DiscordのBotを使って音声を再生できるようにする。
  • UIとしては、仮想デバイスを選択していたリストにDiscordでの再生という選択肢を用意する。

その他の代替案

  • 仮想サウンドデバイスを使うことにより、音声をDiscordで流すことができる。
    • ただし、音質が悪い、ボイスチャットとの併用に面倒な手順が必要になる、などの問題がある。

追加情報

  • この機能実装時に、事実上Discordでの再生を目的としていた仮想デバイス機能はオミットしても良いかもしれない。

Discord APIの仕様変更によりDiscordで再生できない

概要

Discord APIの仕様変更により、Discord上で :soc: join と入力してもbotがDiscordのボイスチャンネルに参加しない。
SoCはbotを経由して音声を再生しているので、当然、再生できなくなっている。

再現方法

  1. SoCでOutput Deviceとして Discord API を選択
  2. Discordのテキストチャンネルで :soc: join と入力する
  3. botがボイスチャンネルに参加されない

期待する動作

:soc: join を入力したら、botがボイスチャンネルに参加する。
かつ、音楽を再生したらDiscordで再生される。

環境 (下記の情報を埋めてください)

  • OS: MacOS、Windows
  • バージョン: v2.0.1

追加情報

DiscordのAPI仕様変更情報

DiscordのAPIから送信される情報が制限されるようになる
具体的にはメッセージの内容が読み取れなくなる

Developer PortalからPrivileged Gateway Intentsの節にあるトグルボタンを有効化することで、[_ 何も影響を受けなくなる]

この変更は100以上のサーバーに参加している、認証済みのbotとアプリにのみ適用されます

とあるが、未認証のものでも設定変更がいるのかも

複数の音声ファイルを1度に登録

その機能は何を解決しますか?
複数の音声ファイルを追加したいとき、何度もファイル選択ダイアログを開いて入力する必要がある。

解決案
音声ファイル追加のUIで、複数のファイルを選択できるようにする。

Discord APIモードでSEを再生すると無限にリピートしてしまう

概要
Discord APIモードでSEを再生すると無限にリピートしてしまう。
また、それを止められない。

再現方法

  1. Output DeviceでDiscord APIを選択
  2. Discordで :soc: join と打つ
  3. SEを再生する
  4. SEが無限にリピート再生してしまう

期待する動作
SEは1回だけ再生されて止まる

追加情報

  • SEの一時停止ボタンも効かない
  • BGMを再生すると、リピートは止まるが、UI上では再生しているような表示が続き、再度再生することができない

DiscordAPIモードでSEを再生するとBGMが止まる

概要
DiscordAPIモードでBGM再生中にSEを再生すると

再現方法

  1. Output DeviceでDiscord APIを選択
  2. Discordで :soc: join と打つ
  3. BGMを再生する
  4. SEを再生する
  5. BGMが止まり、SEが再生される
  • さらにSEが無限にリピート再生される: #89

期待する動作
BGMが再生されたまま、SEが再生される

追加情報
DiscordのBotに2つの音声を同時再生されるのは結構対処が難しそう
(Botを2体用意する方法もなくはないが……)

楽曲タグの順次再生

その機能は何を解決しますか?
同じシーンが続く場面で違う曲を自動で流したい

解決案
タグ機能を元に、順番に曲を流すようにする

やりたいこと
日常曲や進行フェーズで、延々と同じ曲がループすることを防げる

ID3から一旦ファイルパスにもどす

曲名の仕様については、こちらに統一するのが良いと思うのですが、現状、このアプリではファイル名を曲名として表示しています。
ですので、一旦はファイル名を曲名として扱うようにしてほしいです。

その上で、別途、メタデータから曲名を取り出して利用するプルリクを投げて貰えればと思います。
その際、メタデータは常にあるとは限らないので、

  1. メタデータとしての曲名があれば、それを曲名とする
  2. なければ、ファイル名を曲名とする

という挙動になるのが良いかな、と思います。

Originally posted by @gimKondo in #64 (comment)

Master volume controller

  • 個別に音量を設定できるのは便利
  • とはいえ、全体の音量を調整したいこともあるので、マスタボリュームがほしい
    • Maxが100として、下記のようなイメージ
      • マスタ100 x 個別60 = 60
      • マスタ80 x 個別60 = 48

タグ機能の追加

その機能は何を解決しますか?
楽曲の雰囲気で探しやすい

解決案
曲にタグを追加できるようにします
曲はタグでフィルタリングできるようにします

追加情報
ALLつきラジオボタンで、タグのついた曲のみフィルタリングできるイメージにする。

Discord再生機能のマニュアルを作る

その機能は何を解決しますか?
Discord再生機能を誰でも使えるようにする。

解決案
MANUAL.mdというファイルを作り、そこに以下の内容を記載する。

  • Discord側での準備方法
    • Botの作成方法(のリファレンスへのURL)
    • Botに必要な権限
  • Tokenの発行方法
    • Discord側のリファレンスURLで良い
  • Tokenのセットアップ方法
    • 現状だとホームディレクトリのファイルですね
  • Discord側でのBot準備(チャンネル参加)
    • 再生したいチャンネルに招待する、で良い?
  • SoCでの再生方法

[feature_idea]出力デバイス先の指定

ABOUT

出力デバイス先の指定が出来る。

DETAIL

このソフトウェアが、出力先デバイスを指定出来るようになると、非常に使っていて楽しくなると思います!
DJソフトウェアのように出力先のデバイスを切り替える事が出来ると良いな、と思います。

シーンとしては、オンラインセッションでのキーパリング中の音声再生を想定しています。
オンラインセッションでは、その特性上音声チャットアプリを使用する事が多いです。
音声チャットアプリは、複数人の会話が聞こえやすいように最適化されています。
例えば、一定音量を下回るとそこで、そのユーザの音声を無音化したり、その人のしゃべる音声レベルから聞こえやすさの最適化を行っているので、喋るユーザと音声が流れるユーザが別になっていると音声体験が向上します。
参考リンク:この他にも
https://gigazine.net/news/20180912-webrtc-discord/

そのため、オンラインセッションでは複数アカウントを用いて「自分の喋る声」と「音声BGM」の2ラインの送信を行いますが、この時に1clientでこの処理を行うと、音声のルーティング処理が発生し、面倒な事になります。
(仮想音声デバイス・音声ルーティング・イコライザーなど)

ここで、出力デバイスを指定できれば、音声ルーティング処理が不要となるので、オンラインセッションとしてとても使いやすくなります。
現在はその場で音声を鳴らす用としての利用想定だとは思うのですが、将来のアイデアとして出力先デバイスを指定できればとても魅力なソフトウェアになると思います!

REF

https://www.npmjs.com/package/node-core-audio
node-core-audioでは、デバイスのインターフェースは取得できそうです。

VS

https://rekordbox.com/ja/
出力デバイスが指定出来るので、音声ルーティングが不要になります。
また、イコライザー処理などが出来るため、現在私が利用しているソフトウェアはこれになります。
ただ、OSSでは無い、ソフトウェアが重い、本格的なDJソフトウェアなので導入障壁が高い、などの問題があります。
TRPGのキーパリングとしてはリッチすぎるので、このsound-of-cthulhuでデバイスの指定ができれば、と思います。

https://www.apple.com/jp/apple-music/
iTunesあらためapple-music。
標準ソフトウェアなのに、イコライザーやオーディオデバイス変更という、キーパリングに最低限必要なものが揃っています。

考えてくれれば、嬉しいです。

BGMの再生時間をリセット

BGMは再生を始めてしまうと、再生時間をリセットできない。
一時停止したい場合にはこれでも良いが、改めて最初から再生する手段がほしい。

CDをして、git releaseにビルド差分を上げたい

その機能は何を解決しますか?
新しいバージョンを作るためにクロスプラットフォームビルドをしてリリースに上げる手間が省ける
featのdiscordの対応でffmpegのバイナリを入れているので、macのターゲットビルドができなくなっている可能性があるので、その対応も込み(Dockerでビルドすれば問題ないが)

解決案
ブランチがマスターにマージされる or リリースが切られる or タグが変わった状態でマスターマージなどのトリガーで
github actrions(など)でビルドが行われ、リリースにビルドが上げられる

追加情報
https://github.com/cahlchang/sound-of-cthulhu/blob/temp/upload-binary/.github/workflows/electron.yml
個人用ブランチではこのように実現しています。
機能としてOKならトリガーと命名ルールだけ変えて入れてしまおうと思います。

mp3以外のサウンドの対応

その機能は何を解決しますか?
mp3以外のファイルを使える
mp3に変換する必要がない

解決案
mp3以外の音が再生できる

サウンドリストに音量を保存

  • 現状、ファイルパスのみサウンドリストに保存するようになっている
  • 音量もサウンドリストに保存するようにする

ID3タグを元にした曲情報の表示

その機能は何を解決しますか?
ファイル名より、実際の曲情報に近いデータを表示できる

解決案
現在ファイル名で表示されている曲情報を、楽曲内に保存されているメタデータ(ID3)を用いる。
メタデータが無い時は従来どおりファイル名を元にする。

追加情報
アーティスト名を利用するかは検討

Discordモードで音楽を再生できない

概要

Discordモードで音声を再生しようとしても音が鳴らない。

再現方法

  1. Output DeviceでDiscord APIを選択
  2. Discordでボイスチャンネルに入り、テキストチャンネルで :soc: join と打ち込む
  3. 任意の音楽を再生する
  4. 音楽が鳴らない
  5. (デバッグ実行すると)エラーポップアップが出る

期待する動作

3の時点で指定の音楽がDiscordのbotから再生される

環境 (下記の情報を埋めてください)

  • OS: macOS 13.2.1(22D68)
  • バージョン: v2.0.1 (ソースから実行して試したのはv2.0.2相当)

追加情報

  • #129 を解消した時点で、一度v2.0.1での再生は成功していた

デバッグ時のポップアップ

yarn electron:serve で実行してDiscordモードで音声を再生すると以下のようなエラーポップアップが出る。

Uncaught Exception:
Error: Error: Cannot find module 'node:path'
Require stack:
- path_of_app/sound-of-cthulhu/node_modules/@discordjs/opus/lib/index.js
- path_of_app/sound-of-cthulhu/node_modules/prism-media/src/util/loader.js
- path_of_app/sound-of-cthulhu/node_modules/prism-media/src/opus/Opus.js
- path_of_app/sound-of-cthulhu/node_modules/prism-media/src/opus/index.js
- path_of_app/sound-of-cthulhu/node_modules/prism-media/src/index.js
- path_of_app/sound-of-cthulhu/node_modules/discord.js/src/client/voice/player/BasePlayer.js
- path_of_app/sound-of-cthulhu/node_modules/discord.js/src/client/voice/player/BroadcastAudioPlayer.js
- path_of_app/sound-of-cthulhu/node_modules/discord.js/src/client/voice/VoiceBroadcast.js
- path_of_app/sound-of-cthulhu/node_modules/discord.js/src/client/voice/ClientVoiceManager.js
- path_of_app/sound-of-cthulhu/node_modules/discord.js/src/client/Client.js
- path_of_app/sound-of-cthulhu/node_modules/discord.js/src/index.js
- path_of_app/sound-of-cthulhu/dist_electron/index.js
- path_of_app/sound-of-cthulhu/node_modules/electron/dist/Electron.app/Contents/Resources/default_app.asar/main.js
- 
Error: Cannot find module 'node-opus'
Require stack:
- path_of_app/sound-of-cthulhu/node_modules/prism-media/src/util/loader.js
- path_of_app/sound-of-cthulhu/node_modules/prism-media/src/opus/Opus.js
- path_of_app/sound-of-cthulhu/node_modules/prism-media/src/opus/index.js
- path_of_app/sound-of-cthulhu/node_modules/prism-media/src/index.js
- path_of_app/sound-of-cthulhu/node_modules/discord.js/src/client/voice/player/BasePlayer.js
- path_of_app/sound-of-cthulhu/node_modules/discord.js/src/client/voice/player/BroadcastAudioPlayer.js
- path_of_app/sound-of-cthulhu/node_modules/discord.js/src/client/voice/VoiceBroadcast.js
- path_of_app/sound-of-cthulhu/node_modules/discord.js/src/client/voice/ClientVoiceManager.js
- path_of_app/sound-of-cthulhu/node_modules/discord.js/src/client/Client.js
- path_of_app/sound-of-cthulhu/node_modules/discord.js/src/index.js
- path_of_app/sound-of-cthulhu/dist_electron/index.js
- path_of_app/sound-of-cthulhu/node_modules/electron/dist/Electron.app/Contents/Resources/default_app.asar/main.js
- 
Error: Cannot find module 'opusscript'
Require stack:
- path_of_app/sound-of-cthulhu/node_modules/prism-media/src/util/loader.js
- path_of_app/sound-of-cthulhu/node_modules/prism-media/src/opus/Opus.js

自動セーブ機能を追加する

その機能は何を解決しますか?
セーブ機能の煩雑さが減る

解決案
設定に変更があったタイミングに自動的に保存されるようになる

追加情報
SAVE/LOAD機能を一緒に削除する

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.