site logo

Stage 1 ライブストリーム音声可視化ツール

 これはVer 0b166で導入された機能です。
 ひょんなことからYoutubeにて、円状に広がるスペクトラムがついた歌の編集ムービーと、Vのライバーさんの歌枠ライブ配信を見比べて、「このエフェクトみたいなのをライブストリームで気軽に利用出来たら面白いのでは」と思いつき作成。
 0b167ではハードウェアアクセラレーションを導入し、圧倒的なパフォーマンスの向上などを行いました。
 ハードウェアアクセラレーションは64bit版のみ導入され、Windows10では標準で利用できます。

 この機能を利用した動画の公開・配信は、クレジットを表記すれば商用・非商用ともに無償で使用できます。
 クレジット例: 「リアルタイム音声ビジュアライザー : thilmera7 stage1」
 クレジットはメディアの概要欄などでかまいません。
 クレジットを表記しない商用利用に関してはお問合せ下さい。

 スクリーンショットなどの画像(静止画)に関しては、商用・非商用ともに無償で使用でき、クレジット表記は必須ではありません。


Stage 1 とは

 「stage 1」はPC上の音声を可視化して、その内容に反応した図形などをリアルタイムで画面内に表示します。

 基本的に thilmera のサウンドアナライザー機能の派生ですが、以下のような特徴があります。

・OBSなどのウィンドウキャプチャとしての対象に出るため、ウィンドウキャプチャのソースとして利用できる。
・レイヤードという透過ウィンドウ機能により、OBSなどの画面キャプチャ用に綺麗なアルファブレンドができる。
・thilmera のメイン処理から独立しているため、専用の設定、専用の速さと音声ソースを指定できる。
・本体プロパティ画面での設定に加え、stage 1 の画面(もしくはタスクトレイアイコン)の右クリックから開くメニューでクイック設定ができる。

 なお、DAWなどでASIOで直出力される音声には対応していません。(音声デバイスでloopbackすればいける…?)

 このstage 1はまだLive2Dなどでのライブ配信で実際に実験したわけではないので、再生/マイクと描画の遅延などの関係で上手くいかない可能性があります。
 とりあえず面白そうだから開発してみただけで、需要があるのかや、実は既出な機能だけどいらないものなのかなど全く分かってないので、実際にもしこれ配信で使うよって方がいてフィードバック頂けたら可能な範囲で対応します。( thilmera 開発の基本対応と同様)
 ちなみに開発者の手元にある音声周りのデバイスはBabyface Pro FSとSound Blaster Zとオンボード。
 一応Babyface Pro(FS)のミックス上にてマイクを追加でループバックさせた内容を「入力音声」の方で反応させることができるのは確認しています。

 処理遅延の理論値は、ハードウェア描画の60fpsで、10+16.6msの26.6ms未満。


共通オプション

・出力音声(デクトップ音声)、入力音声(マイク)のうちどちらか。または両方をミックス。
・出力音声、入力音声ごとの音量(反応の大きさ)の調整。
・FPS(フレーム/秒)の指定。10~30の間で指定。0b166のソフト計算では20fpsでも相当つらかったですが、0b167からはハードウェアアクセラレーションの導入により圧倒的な速度が出せるようになりました。
減衰速度の指定 → ピーク時から徐々に減衰させていく速度。設定は感覚で。
平方根 → 突出した音程に近い音域や、それほど突出していない音程をよく拾うようになります。
オートピーク → もっとも突出した音域の高さを最大値として平均化するので、オンにすると一点が突出しやすく、オフにすると全体的に反応します。
・音声の可視化範囲をKhzで指定。標準は3Khz。大きくずれば高い音域まで対応する代わりに、低い音域の差が解りづらくなります。
FFTタイプ → 基本的に数字を上げると反応の突出が滑らかになります。
最背面ウィンドウ → 配信中に誤って前面にでてきてしまわないように、ウィンドウを最背面に固定する設定。(0b167)
帯域 高解像度 → 0b167から導入されるスペクトラムの解像度を上げる設定。
フレーム待機なし → 0b167から導入される非同期フレーム待機なしの高速モード。ハードウェアアクセラレーションが有効かつ7s版のみ使用できます。60fps(ハード依存)または100fps。


帯域 高解像度 オプション

 解像度のレベルはビット数で代わり、表示値として b11 や b13 とでます。 b11 は 11ビットなので2048サンプル。b12で4048サンプル。b13で8192サンプルです。
 元の音声のヘルツ数により適正値は異なりますが、だいたい開発者の環境では b12~b13 あたりがお薦めです。
 B14 以上はすこし解像度が高すぎ。 b11 以下は低すぎる印象です。
 また、この設定数値を上げれば上げるほど、元の音声データの対象期間が長くなるので、瞬間的な反応が鈍くなったり、減衰が遅くなったりするので、一概に高ければいいわけではないです。
 解像度レベルが変わるぎりぎりの数値を指定していると、バッファの均等化と取得タイミングによる増減でレベルが頻繁に変わってしまうことがあるので、レベルが切り替わるぎりぎりの設定はあまりよくありません。



サークル1

 一般的にはオーディオスペクトラムエフェクトと呼ばれているような感じの音声可視化ステージです。

開始位置の角度 → 標準では上から始まるところの角度を指定します。
左回り → 音の高低を右回り、左回りの順番指定。
開始位置移動アニメーション → 1000分の1°単位で正の数にすると右へ。負の数で左へ開始位置が動いていきます。0を指定するとリセットされます。

サークル1サイド

 サークル1を「出力音声と入力音声」で左右に分けて2つ別々に半月状に表示する音声可視化ステージです。

スパークル

 サークル1を作る仮定で副産物的にできた線香花火のような音声可視化ステージです。
 あくまで反応は音域ごとなので、音域全てを上げる音でもないかぎり全体的に広がりはしないので、デコレーションとして役にたつかは不明です。

サークル2 (0b167)

 ウェーブ状の波形データを円状に表示する音声可視化ステージです。
 スペクトラムではく波形データなので、音程で位置は決まらず、高い音になると細かくなり、低い音になるとなだらかな山になります。

ストレート1 (0b167)

 スペクトラムの最も有名な形状である横ストレートの音声可視化ステージです。
 オプションで中央線ベースと下線ベースを変更できます。


スクリーンショット

screenshot

デモムービー

https://www.youtube.com/watch?v=tlESvD8-sHU (0b171)
© 2001-2023 Gakuto Matsumura:弦生ささと (thilmera7gmail.com)