|
|
PlayListは、Mediaのコレクションで、ライブラリからGet関数にて選択・抽出したサブセットである。このItem が、個々の処理対象のMedia(ここでは音源) となる。例えば、ライブラリから、作曲者がXXXXXX のMediaの集団を、PlayList として確保できる。これをコードにて再生したり、属性を表示したり、変更したりできる訳である。 ここでは、PlayList 自体を如何ににコードでアクセスするかを研究する。 ●概要 ○内容 プレイリスト(再生リスト)は、抽象的なものと、具体的なものとがある。抽象的なものは、コードにて生成されるオブジェクトで、コードで実行中の間だけ存在する。具体的なものは、XMLで記述され、.wpl ファイルとして保存されたものである。WMP のUIで表示されている再生リストはファイルとして保存されたものである。 ○構造 いずれにしても、プレイリストは、再生すべき具体的なメディアを再生順に並べたものである。オブジェクトでは、メディアのコレクションであり、XMLでは、具体的なソースへのフルパス(URL)の羅列となっている。 <PlayList .wpl の中身の例>
<?wpl version="1.0"?> ●参照と再生 ○参照 PlayList は、ライブラリを構成する一つのオブジェクトなので、media の1種である。従って、 player.mediaCollection.getAll で、PlayListも含まれる。PlayList のみ明示的に確保したければ、 playListArray = player.playlistCollection.getAll とする。playListArray にて、playListArray.Item(index) で、個々のPlayList にアクセスできる。 しかし、このplayListArray には、イリーガルなものも含まれており、単純にアクセスするとエラーになってしまう。どうも、実ファイルを検索しに行ってエラーを起こすようである。従って、以下のように、意味のあるもののみ選び出すと良い。
Dim PLA As IWMPPlaylistArray 特定のPlayListであれば、 player.playListCollection.getByName("XXXXX") とする。Name は、生成時に指定した名称。 ○再生 player.currentPlayList = PL (確保したPlayList) で良い。 ●生成 ○空白のPlayListインスタンス このオブジェクトには、New がなく、空白の(メモリ上の)インスタンスを直接生成できないようだ。以下のようにすれば良い(みたい)。 Dim PL As IWMPPlaylist = player.mediaCollection.getByAlbum("xxxxyyyyzzzz") For i = 0 To Cnt - 1 その後、mediaを追加すれば、任意のPlayListを生成できる。この手法にて、あるPlayListから更にユーザに選曲させ、それだけを再生する場合に有効となる。下図参照。
○newPlayList(実ファイル) PL はPlayList PL = player.playListCollection.newPlayList("XXXXX") にて、空白の実プレイリストを生成する。すると、XXXXX.wpl なるXMLファイルが、既定のフォルダに生成される。このメソッドは、実行する度に実際にファイルが生成されるので注意方。 同じ名前があると、自動的に番号が振られる。プレイリストの保存場所は、オプションの"音楽の録音"で指定したフォルダの下に、My PlayLists なるフォルダが作られ、そこに保存される。今のところ、任意のパスを指定する方法は筆者には分らない。 ○アイテムの追加 PL.appendItem(media) media を追加 PL.InsertItem(index, media) media を、index に挿入 とすれば、media が追加され、ファイルにも反映される。 ●筆者のルール .wpl のプレイリストは、ポータブルでもそのまま使用されるし、また自製アプリでも参照/再生する。特にポータブルでは、ポピュラーやクラシックが渾然となっているので、識別し良いようにする。以下のように、プレイリスト名に接頭語を付加する。
これで、ポータブルでは再生リストがグルーピングできるし、アプリで識別できる。 |