ライブラリによるアプリケーション |
新クラシックプレーヤ |
最終更新日:2006/08/05
記事追加 |
新プレーヤコントロールを利用して、WMPライブラリを対象にしたクラシック音楽専用のプレーヤで筆者向けにカスタマイズされたものである。
●概要
新プレーヤコントロールを利用したジュークボックスで、WMPライブラリの曲を再生する。クラシックの場合は階層が多いので、データベースにて選曲し、ライブラリにてプレイリストを生成する方法としている。また、データベースの方が高速で、複雑な検索ができる。WMPのUIでは全てが一堂に表示され煩雑となるが、このプレーヤでは絞り込める
し、作品単位で再生できるのでアクセスし良い。
- (作曲者別)曲種、(作曲者別)独奏楽器、再生リスト、検索なる大きなメニューがある。
- 検索は、作品名、演奏者、曲名の部分一致で行う。
- 再生は基本的に作品単位であるが。必要に応じて楽章を選べる。
- 再生は複数の作品を選んで行える。
- 通常のUIと全面表示があり、切り替えられる。全面のときは、曲に合せて作曲者に関連するイメージを表示できる。
同じ作曲者に複数のイメージがあれば、ランダムに選んで表示する。
●外観
通常UIの例。(最近、再登録しているので曲数はまだ少ない。)
全面UIの例。(便宜上縮小している)
特定の楽章を指定できる。
●プレイリストの生成
UIとして表示される作品一覧あるいは楽章一覧までは、データベースにて行うが、ユーザが作品や楽章を選んだ後は、ライブラリをアクセスしてプレイリストを生成する。ライブラリのアクセスはメディアオブジェクトを特定する必要があるので、以下の準備をする。
- カテゴリがClassicのメディアをプレイリストとして集める。
- そのプレイリストから、曲番号とインデックスによるハッシュテーブルを生成する。
- 曲番号はユニークなので、ハッシュテーブルで検索すれば、プレイリストでのインデックスが直ちに判明する。
ユーザが選択した作品や楽章からデータベースにて対応する曲番号が分るので、上記ハッシュテーブルにて、ライブラリでのオブジェクトとしてのメディアが得られるので。プレイリストを簡単に生成できる。
○コード例
・ハッシュテーブル生成
Dim MuHst As New Hashtable()
Dim MPL As IWMPPlaylist
MPL = rgpM.mediaCollection.getByAttribute("WM/Category", "Classic")
MMCnt = MPL.count
For i = 0 To MMCnt - 1
Dim MN As String =
vbLeft(vbRight(MPL.Item(i).getItemInfo("sourceURL"), 22), 18)
MuHst.Add(MN, i)
Next
・再生
Ixs() は、作品一覧での選択行インデックスアレイ
Cnt は、選択数
VcDS はDataSet
MDR0() はDataRow で、作品一覧を示す
rgpM は、新プレーヤコントロール
Dim pl As IWMPPlaylist = rgpM.mediaCollection.getByAlbum("xxxxxyyyyyyzzzzz")
'空白のプレイリスト生成
For i = 0 To Cnt - 1
Ix = Ixs(i)
Dim OP As String = MDR0(Ix)("作品コード")
Dim PC As String = MDR0(Ix)("演奏コード")
Dim DR() As DataRow = VcDS.Tables("TblGList").Select("作品コード = '" +
OP + "' and 演奏コード = '" + PC + "'")
'その作品を構成する曲群を得る
For j = 0 To DR.Length - 1
Dim MN As String = DR(j)("曲番号")
pl.appendItem(MPL.Item(MuHst(MN)))
'プレイリストに選択された曲を追加
Next
Next
rgpM.PlayList = pl
'wmp で再生させる
|