|
|
gigabeat 60V をキッカケにして、Media Player のプログラミングを見直した。何故かと言うと、gigabeat は、完全にWindows Media Player 10 にコンテンツ管理や同期化を任せており、順来のままでは、自分流の音源管理ができなくなったからである。完全に、WMP10で管理すれば済むが、自分流が少し残っている。 久しぶりに、SDKの英語と格闘しながら、試行錯誤的に、徐々に核心に近づいている(かな?)。WMPのVB.Tipsは、ここに統合した。 ●WMP10 概要 初期のプレーヤは、ファイルの概念でアクセスしており、単純明快であったが、バージョン9以降から、総合的なコンテンツ管理に移行している。ファイルではなく、インタネットやWebベースも範疇になっている。また、コンテンツ管理も強力になっていて、内部のオブジェクトモデルも複雑になっている。 音源管理をWMP10に任せると、迂闊にソース音源をコードから再生や属性変更を行うと、WMPで管理しているライブラリに不整合や不都合が起きることがある。また、コードが実行できないこともある。 WMPでは、メディア・ライブラリと言う概念で管理しており、ソース音源への参照と、ライブラリ独自の情報とでデータベースを構築している。このライブラリは固有のユーザの所有物となっており、セキュリティ管理されている。 ●コードからのアクセス 本人(ライブラリ所有者)が、WMPのUIを通してメディア・ライブラリにアクセスするのは何の問題もないが、コードからアクセスする場合は、直接、音源にアクセスしてはいけない。必ず、ライブラリオブジェクト(MediaCollection)のサブセットであるPlayListを通してアクセスする。(と、筆者はSDKから読み取った。例によって、これが正しい保証はない。) ●基本事項 UIによるインタラクティブな管理と、コードによる自動管理を両立させるための新しいシステムを構築しているが、これらをコードで実行する基本的な技術を解説する。 media とは、ここでは音源となるWMAファイル、その属性、管理情報などをクラス化したものである。WMPのライブラリはこれらの集合体で成り立っている。 従来、アルバムのタグを利用して、A、B、C、U なる曲のランク付けを止め、WMPの評価方式を採用する。WMPのUI、ポタブルのUI によるインタラクティブな管理の他、コードによる管理も必要となるので、その方法を紹介。 PlayListは、Mediaのコレクションで、ライブラリからGet関数にて選択・抽出したサブセットである。このItem が、個々の処理対象のMedia(ここでは音源) となる。例えば、ライブラリから、作曲者がXXXXXX のMediaの集団を、PlayList として確保できる。これをコードにて再生したり、属性を表示したり、変更したりできる訳である。 |