第十一回:音楽再生していない時はカバーアートを隠すようにする2つの方法【How to Kustom】

公開日: 2016年9月24日 HowTo KLWP ライブ壁紙 考察


コメントでいただいた内容なのですが短くお伝えするのが難しかったので、やりかたをまとめることにしました。

KLWPを使って音楽再生モジュールを作る時、楽曲カバーアートを自動的に隠す仕組みを簡単に作る方法です。



前提:カバーアートは「図形」で作る


今回の方法ではカバーアートを「図形」モジュールを使って配置します。

画像だと形に融通がきかないので、図形を使う方法は覚えておいて損はないと思います。


図形の大きさと形を決めたら「FX」タブから「テクスチャ」を「ビットマップ」にします。

すると1行下に「ビットマップ」が挿入されるので、右端のチェックボックスにチェックを入れてから右上の電卓アイコンをタップします。

これで「ビットマップ」に関数を挿入できるようになりましたので、タップします。


仕込む関数は「mi」の中の「現在のカバーアート」です。

式は $mi(cover)$ という非常にシンプルなものなので、探すのが面倒な場合は手打ちしちゃってもいいかも。

正確に関数を挿入すると、テキストのプレビュー欄に下記フォルダパスが表示されるはずです。

/内部ストレージ/Kustom/bitmaps/music_cover

KLWPは音楽が再生されるとこの場所にキャッシュのようなかたちでカバーアートを保存します。

カバーアートの設置はこれでok、いよいよ本題です。

簡単な隠し方①、透過


カバーアートモジュールの「塗り」タブを開き、「色」項目にチェックを入れて関数を仕込みます。

この関数は個人的によく使うものなので、エディタの★マークからお気に入り登録してます。

$if(mi(state)=playing,#ffffffff,#00000000)$

という関数です。

一番外側 $if()$ は条件分岐です。中に仕込んだ演算子の結果がTRUE(正)なら前の値を、FALSE(誤)なら後ろの値を返します。この値は半角のコンマで区切ります。

分岐させる演算子は mi(state) で、 =playing とつけることで条件を定義します。

これの意味は、「KLWPが PLAYING の値を出力したかどうか」です。

演算子 mi の一覧を見ているとわかるかと思いますが、KLWPは音楽プレイヤーの動作次第で様々な値を出力します。その中で「再生中はPLAYINGを出力する」ことになっているので、これを使うわけです。

以上をまとめて、この関数全体では『出力された値が「PLAYING」なら「#ffffffff」を返し、「それ以外」なら「#00000000」を返す』という条件分岐を使った演算子になります。

もう1つ余談として、KLWPで使用する色コードはRGBではなくARGBです。基本的にはRGBと同じ2進数なので難しいことはないのですが、最初の2桁がAlpha(透過率)を表すため、

# = AGRBコードであることを示す記号
ff = Alpha(透過率)
ff = Red(赤色の濃さ)
ff = Blue(青色の濃さ)
ff = Green(緑色の濃さ)

となり、数字は全部で8桁になります。00で最低値(0%)、ffで最高値(255 or 100%)です。

ではこの関数を入れると壁紙がどう動くか見てみましょう。


というわけです。

簡単な隠し方②、アニメ

透過だと一瞬でパッと動いてしまい味気ないという場合はアニメを挿入します。


KLWPには音楽再生に連動したトリガーを持つアニメはないので、「数式」を使ってトリガーを作ります。

挿入する関数はこちら。

$if(mi(state)=playing,1,0)$

先ほどと関数の構造は全く一緒ですが、返す値が異なります。

「音楽再生中(PLAYINGが出力された時)は「1」を、「それ以外の時」は「0」を返す」式になります。

理屈はよくわかりませんがたぶんJavaとかもそうなのかな?

「1」で「on」を、「0」で「off」を返したことになるみたいです。

で、どんな動き方をさせるかは自由に決められます。ここがアニメのいいところ。

たとえば回転しながら縮小していったり、斜めにスクロールしたり、小さく折りたたまれたり。お好きなようにカスタムしてください。

今回はシンプルに「出現」を使っています。なお、仕込んだ式と選んだアニメとの関連で動きが逆になることがありますので注意。その場合アニメを選び直すよりも「緩急」を「反転」にしちゃったほうが楽なこともあります。


このように動きます。

そんな感じ。

4 件のコメント :

  1. 動画のように再生停止時にアルバムアートをフェードアウトさせる場合は
    アニメ設定で $if(mi(state)=paused,1,0)$ に消失を設定すればいいのでしょうか?

    返信削除
    返信
    1. コメントありがとうございます。

      $if(mi(state)=playing,0,1)$
      ※値を反転させる

      出現ではなく消失を使う

      緩急を「反転」にする

      など、いろいろな方法があります。

      1つずつ試してみて一番気に入ったものを採用してください。

      削除
  2. 配布してくれないかなぁ(チラッ

    返信削除
    返信
    1. コメントありがとうございます。

      すみません、ちょっとこれまだ作ってる途中なので…(^^ゞ

      削除

いつもご覧いただきありがとうございます。
質問やご意見がありましたらこちらからどうぞ。
返答まで時間がかかる場合があります。