「Ambient」の最新バージョン 1.2.0で実装した「疑似フェーダー」機能を使って、ソーシャルゲーム「メメントモリ」のYouTube公式チャンネルで公開されているMVを集約したラメント専用プレイヤーを作ってみた。
ラメント専用プレイヤーと言っても、実際は「Ambient」用にラメントMV集のプレイリストを作るだけなのだが……まぁ、プレイリストカスタマイズのTIPSにもなるかと。
なぜ、メメントモリなのか?──って、先日購入したアルバム「メメントモリ Lament Collection Vol.1」に私の推し曲「燐光」(イリアのラメント)が収録されていなかったので、「燐光」が聴けるメディアプレイヤーが欲しかったのだ。ちょうど新アモールも追加されたタイミングで旬だしね。
あと、やっぱり気軽にフル尺の全ラメントが聴ける環境があることは(自分的に)素晴らしいのだ!──メメントモリのラメントは全て神曲なので。
なお完成したプレイリストは下記クラウド版デモのページで公開しているので、興味がある人はデモ用「Ambient」で mememori-youtube.json のプレイリストを読み込んでみて欲しい。
https://amp.ka2.org/
バージョン 1.2.0で実装した機能
「Ambient」のバージョン 1.2.0で追加された機能は以下の通りだ。
- 疑似フェーダー
- UIの言語切り替え
疑似フェーダーの詳しい説明は後述するとして、もう一つの言語切り替え機能については詳しい説明は不要かと。
クラウド版デモではデフォルト言語である「English」に追加して日本語の翻訳ファイルをアサインしているので「日本語」への切り替えが可能になっている。
なお、どちらの機能も設定メニューから切り替えが可能だが、言語切り替えを行うとプレイヤーの初期化(再読み込み)が行われるので、プレイリストを選択する前に切り替えておくのが良い。
言語設定は一度切り替えるとその設定言語がCookieに保存されるようにしているので、次回以降のアクセス時には改めて切り替える必要はない。
疑似フェーダーについて
「Ambient」の「疑似フェーダー」とは、再生メディアごとに音量のフェードイン/フェードアウトを行うための仕組みである。
プレイリスト側に設定された値に沿って、自動で埋め込みプレイヤー側のボリュームを動的に変更することで実現しており、再生メディア自体がフェードイン/フェードアウトを行っているわけではないので疑似的な処理として「疑似フェーダー」と呼称している。
「疑似フェーダー」の制御を行うにあたって、バージョン 1.2.0からプレイリストのoptionsプロパティにfaderの設定値を追加している。
| プロパティ名 | 型 | 初期値(省略時) | 値の説明 |
|---|---|---|---|
| fader | boolean | false | 再生するメディアに疑似フェーダーのエフェクトを有効化するかどうか。プレイリスト読み込み後、設定メニューから変更も可能 |
また、各メディアデータ側にはフェードイン/フェードアウトの範囲を秒数で指定するためのプロパティが追加され、再生メディア単位でフェードイン/フェードアウトを指定できるようになっている。
| プロパティ名 | 型 | 値の説明 |
|---|---|---|
| fadein | integer/float | 音量がフェードインするまでの時間を秒単位で指定。再生開始のシークタイム(startプロパティ)が設定されている場合、再生開始から設定した秒数だけフェードインする |
| fadeout | integer/float | 音量がフェードアウトするまでの時間を秒単位で指定。 再生終了までのシークタイム(endプロパティ)が設定されている場合、再生終了から設定した秒数後にフェードアウトが始まる |
フェードイン後およびフェードアウト直前の音量は、メディアデータ側に再生音量(volumeプロパティ)が指定されていればその値に、もしくはoptionsに初期ボリュームを指定している場合はその値に変更される。フェードイン/フェードアウトの音量の変遷を視覚化すると下図のようになる。

フェードインは再生開始時間(startが指定されている場合はその時間)からfadeinプロパティで設定された時間(秒数)分行われ、その間再生音量が0から既定音量(初期ボリューム値)まで増加する。
フェードアウトは再生終了時間(endが指定されている場合はその時間、未指定時はメディアの再生終端時間)からfadeoutプロパティで設定された時間(秒数)分遡った時点から行われ、その間再生音量が既定音量(初期ボリューム値)から0まで減少する。フェードイン後からフェードアウト開始時点まではプレイヤー側での音量変更が可能だが、フェードイン/フェードアウト中は100ミリ秒単位で自動で音量変更が行われているため、結果的にユーザー側からの音量変更が無視されるので注意が必要である。
なお、「疑似フェーダー」はYouTubeの動画およびローカルメディアのどちらにも使用できる。
プレイリスト欄のサムネイル
これは、バージョン 1.0.0から実装されている隠し機能なのだが、各メディアデータのimageプロパティに指定できる再生メディアのサムネイル画像について、ファイル名の末尾に-thumbか_thumbのサフィックスを付けた画像ファイルを前述の画像ファイルと同じパス上に設置しておくと、左ドロワーのプレイリスト一覧のサムネイルとして優先的にそちらが使われる。プレイリスト一覧用に別のサムネイル画像を表示したい時に利用できる。
プレイリスト一覧に表示されるサムネイルは幅と高さが等しいアスペクト比の画像が最適で、YouTubeから自動で読み込まれたサムネイル等は横長なためにはみ出した部分の画像は表示が切り取られてしまうため、別途プレイリスト用に正方形の画像を準備することで、プレイリスト一覧を綺麗に表示することができるようになる。
クラウド版デモではこのプレイリスト欄用のサムネイルを準備していないので確認はできないが、プレイリストごとにネオスキューモフィズム的な色合いを持たせることができるのが、「Ambient」の隠れた特長でもある。
最後に
プレイリスト・カスタマイズの参考に、プレイリスト欄を含む各種サムネイル画像や背景等をメメントモリの世界観に合わせて作ったプレイリストのデータを下記Gistに公開しておく。
諸々の画像を準備してからこのプレイリストを読み込むと、以下のようにまさにメメントモリの専用プレイヤーみたいにデコレーションできる。

さて、今回のバージョン 1.2.0で「Ambient」の開発はひとまず一段落だ。
まぁ欲を言えばプレイリスト管理をもっと強化して、メディアの編集や削除、指定フォルダ内のメディア一括追加などの機能も実装できればアプリとして完成度が高まるのだろうが、個人利用する分にはプレイリストのJSONファイルを直接編集してしまった方が早いので、もうこの辺で機能は十分かなぁ……と思っていたり。
何気に、「Ambient」使い出したら他のメディアプレイヤーはCDの音源取り込みぐらいでしか使わなくなってしまった……我ながら良いアプリ作ったものである。