amazon

Now Loading...

音楽の音階をテレビで表示するようにBMS2のLuaスクリプトを修正しました

めっきりDLNA関係のネタを書いていません。ひと通り必要な機能が実現できているのでネタができないんですよね。

最近rigaya様のQSVEncの更新が頻繁に行われています。欲しい機能が着々と追加されてます。久しぶりにBMS2で使ってみようと思ったら・・・まったく動かない。う~ん、どうやって動かしていたかもう覚えてないから直せない・・・。という事で、いつからか私のBMS2用LuaスクリプトではQSVを動かなくなっています。

なかなか直せないので思い出しついでに違う事をしました。
VIERA用のオーディオ再生時画面をLifeゲームからConstant Q Transformにしてみました。
なにそれ? 音楽の音階を音ゲーのように表示できます。



最初に少し説明をしておきます。
この記事はテレビ(ビエラ)のDLNA機能を使ってパソコンにある音楽ファイルをテレビで再生する方法に関連する記事です。DLNAプログラムについてはこのページの上の方のメニューにある "BMS2用Luaスクリプト" をご覧いただくかDLNAタグを追って頂くと良いかもしれません。
説明終わり。

ビエラではDLNAでオーディオファイルを再生する事ができません。ビデオファイルしか再生できないのです。
そこでBMS2用Luaスクリプトでは映像を別に作り再生したいオーディオファイルにくっつけてビデオファイルとしてビエラへ送るようにしています。これでオーディオファイルも再生できるようになります。

この時の映像をFFmpegの機能で作っています。今まではライフゲームを生成して表示していました。しかし、ライフゲームなんて知っている方はもうかなりの年齢になっているのでは???
見ていてもあまり面白くありません。面白くないので私もあまり使っていませんでした。

FFmpegで生成する映像は他にもあります。オーディオから生成する映像では波形を表示するのがイメージしやすいですよね。スマホアプリにも波形を表示するプレーヤーがあります。
しかし波形を見ていてもつまらないですよね。そこまでしてテレビでオーディオを再生する理由が無い!
と言ってしまうと話が続かないので、もうちょっと何か面白いの無いかなlぁ、と久しぶりにFFmpegのドキュメントを眺めてみました。

最近仕事でフーリエ変換とかして遊んでいたので、showcqt(FFmpeg Documentation)というのが気になりました。Constant Q Transform(定Q変換)という、フーリエ変換時に少し細工してピークの幅が周波数によらず一定になるようにしたものだそうです。なんのこっちゃ? 
音楽の周波数成分を表示する時、音階をはっきりと区別して表示するのに良い方法だそうです。

画面が派手で良いです。歌声などの周波数の変化もよくわかります。これは見ていて面白い。無駄にオーディオを再生してしまいます。
画面はこんなのです。

FFmpeg の Constant Q Transform

画面の上側がスペクトル表示です。周波数成分のレベルが表示されています。
画面の中央に赤い文字でアルファベットが書いてあります。これは音階を表します。音階が等間隔になって表示されていますので音楽向けの表示です。
画面の下側はスペクトログラムになっています。今までのスペクトルの履歴が表示されます。下側中央あたりで白くフニャフニャした線が何本かありますね。これは歌声です。音程の変化が見てわかります。

普通のフーリエ変換では表しにくい音程の変化が見やすく表示できています。これがConstant Q Transformの良いところです。
耳コピするのによさそうですね。

Luaスクリプトに"Audio2Video"という変数を追加してライフゲームとCQTを選択できるようにしました。ついでにDrawTextで再生中のファイル名を表示するようにしてみました。ShowInfoをtrueにすると表示されます。

この変更は現在ビエラ用のみにしています。
レグザはオーディオを再生できるのでこの機能を追加していません。とはいえ再生できるフォーマットが少なく不便なのでトランスコードしたいのですけど。
オーディオ再生環境としては連続再生ができるレグザの方が便利です。ただし、メニューの逆順で再生しちゃんですよねぇ。コメントでも頂ければ追加するかもしれません。保証なしですが。

さて変更したLuaスクリプトはこのページの上の方のメニューにある"BMS2用Luaスクリプト"内にに置いておきます。


コメント

amazon

Now Loading...

最近のコメント

Threaded Recent Comments will be here.