WPF で Music Play を作り、日々、利用している件は以前に何回か書きました。
実は、音楽を取り込む時に、作詞作曲者や演奏者もデータとして入れています。
勿論、このデータを基に、曲を検索出来るように ... なのですね。 結構、この入力作業も大変ですが ... 。
さぁ、 データハンドリングへ派生!。
音楽ファイルのタグから、データベースを生成し、其れで検索・再生!。
良くある発想ですね。
リーダー名・アルバム名・曲名で フォルダ構成されファイル保存されて行く 訳ですが、
私が良く聴く Jazz は、 サイドメンとして参加した曲がどうの ... と言う世界です。
誰某のソロが良い 等の解説が罷り通る世界です。
とあるアルバムを聴いていて、その参加メンバーのリーダー作が聴きたくなったり、
同じ曲の別演奏を聴きたくなったりします。
長年、聴いていますので、ある程度の知識は頭に入っている訳ですが、
データがサポートしてくれれば、楽ですよね。
忘れている情報も沢山ありますから。
そこで、冒頭に書いた もの も作ってあります。
所謂、データベース化とそのフロントエンドです。
自動取り込みと、その維持。
検索機能と再生機能の融合。
文章で書くのは簡単ですが、実際にものにするのは大変 ... でした。
形にするのも大変でしたが、
実際に運用して行くと、色々、ゴタゴタと出て来ます。
想いも因らぬ 長い曲名( = ファイル名 )にエラーが出たり、
データ構造を弄れば、アプリがハングしたり、
データベースエンジンの仕様に翻弄されたり、
或る意味、地獄です。
Music Player は WPF との戦いでしたが、
今度は DB との戦いです。
長い曲名では 完全フルパス名で 何と 236 文字 でした。
長~い曲名には 辟易 しますね。 これ、Jazz ではありませんが。
依って、データ構造を変えたのですが、
DataSet を使っていたので、xsd を弄る事にもなり、
Property から データ長を変えても他が駄目で、結局、その中の Table 作り直し。
Scalor Query は Stored にしてあったお陰で、作り直しは楽。
.sdf の頃の古い VS (SQLCE) は xsd 上で作っていたので、作り直しは地獄でした。
エンジン仕様で翻弄の件は 別 に纏めました。
でも、幾らか前に作ってあったこれを見て、思うのです。
よく作ったなぁ~、 と。
途中で匙を投げ、作り掛け だったのですが、
これを作った時は テンション高かったんだなぁ~、と。
記憶に依れば、 複雑になりテンションが下がって来て、保留して来た筈です。 きっと。
頓挫していたとしても、素地がしっかりしてさえいれば、
次回、改良で済み、新たに書き起こす必要はありません。
毎度の事ですが、塩漬け期間がある程度以上になると、往時の設計思想を辿るのが ... 大変 。
(今迄、一体、何回書き起こし直した事か ... 。)
では、現状を見て戴きましょうか。
無論、完成形では無く、此処も其処も、手を入れる心算です。
そう。 自分で作れば、自分に合ったものも出来るかも ... 。 ;)
最初のは、データ取得用。
現在、400 強のアルバムがあって、 4000 強の曲が入っています。
曲は複数個所に分散配置されていますので、それへの対応も済み。
データはファイルのタグ情報を自動取得します。 基本、再度入力は不要。
Path に絡むデータは 相対 で持っています。 Dir. 移動に対応するべく です。
タグ情報の変更や、誤情報への対応は、
DB の直接修正では無く、 既存データを削除、再取得で対応します。
タグ修正等は、餅は餅屋に任せる 方針 です。 其処迄の度量は私には無い ... 。.
尚、 目下、UI 調整中ですので、既にもう、この画面とは違う設計になっていますが ... 。.
次のはデータ検索と再生起動用。
参加メンバーや作詞作曲者や曲名の一部の語句から曲検索が可能。
候補は ComboxBox Items に自動取得。 手入力も勿論可能。
全項目でソートも可能。
別 Blog で Jazz の 曲 を紹介している為、特定項目の Clipboard 転送も OK!。
曲単位で、再生用アプリに引き継げます。 (通常、起動中ですが、別個に立ち上げます。)
引き継ぎは、既定のアプリを専用のものに指定してある前提で、ファイルを別プロセスで渡すだけ。
ファイルは相対パス名に、別途保存の ホーム を連結し、順次有無確認。 サーチパスは未設定でも稼働。.
図は、全数表示後、絞り込み条件を入れ、検索する直前のもの。 ボタンを押せばポンと答えが!。.
この Solution には、テスト用も含め、幾つも Project が転がっています。
まぁ、 歴史が物語る試行錯誤の経緯 を記念に取ってある! と書いて置きましょう。
(既に、DB 構造を弄っていますので、実行不可状態なのですが、ね。)
0 件のコメント:
コメントを投稿