Sound Player Lilith - Faceに関するメモ。 ヘルプ、Errata.txt、oboe.txt、公式サポート掲示板から抜粋、引用など のまとめ。 自分が分かる程度にテキトーに抜き出してるだけなんで古い情報も入ってるかもしれません もともとの文章にはProject9k、他に著作権があると思われ 公開ヤメレといわれればすぐ止めちゃう。 私(HiroHiro)は開発にはまったく関わってません 変なFace送っただけです。 TXTのままなんで空白、TAB、改行がおかしくなるかも 最終更新05/12/23 -------------------------------------------------------------- ★ コメント  行頭に 半角の ;(セミコロン)を書くとその行はコメントとして扱われ、  セミコロン以降の記述は無視されます。 サポート外機能です。Lilith.cfgを手動で書き換えます。 [PlayList][DecodeList]の各フィールドに FullRowSelect=DIABLE // 行全体を選択する機能を無効 GridLines=DISABLE // 罫線表示を無効 HeaderDragDrop=DISABLE // カラムヘッダのドラッグ&ドロップによる移動を無効 を追加して指定します。 隠しコマンドID 1SHOT再生 : 40037 ワントラックプレイ? 曲の末端まで来た際に、次の曲へ切り替わらずに停止するという特性があります。 なお、この隠しモードの設定をクリアするには、 通常の3種の再生モードのどれかに設定しなおす必要があります。 (通常・1曲リピート・ランダムのどれか) プレイモードとのトグル式らしい。が、なにか挙動不審。 --------------------------------------------------------------------- フォントの指定がない場合には、システムデフォルトのフォントが使用されます。 #通常Systemという名前のフォントが使用されます。 FontColor = 0x00数値 フォントの色を16進数で指定の場合 0x00bbggrrの順でRGBを16進数で指定 通常(RGB)と逆なので注意 ---------------------------------------------------------------------- [Preference] Version = 0x2000 FaceName="文字列" 記述がない場合には、定義ファイルのファイル名部分(拡張子は除く)を代わりにフェイス名として使用します。 LoadingMessage="文字列" 起動時、ファイル読み込み中の文字列 DefaultMessage="文字列"  起動後再生前、タイトル部の表示文字列 SavingMessage="文字列"  終了時、終了処理の間に表示される文字列 NextFace=ファイル名 CommandID=40073 を指定の時有効になる。 (フェイスの切り替えができる) NextFace2=ファイル名   CommandID=40079 を指定の時有効(フェイスの切り替え) NextFace3=ファイル名   CommandID=40105 を指定の時有効(フェイスの切り替え) NextFace4=ファイル名   CommandID=40106 を指定の時有効(フェイスの切り替え) NextFace5=ファイル名   CommandID=40107 を指定の時有効(フェイスの切り替え) TitleFormat="書式" タイトル文字列の書式の指定 例:" [%Track%] %Title% " AutoTipHint = ENABLE or DISABLE デフォルトチップヒントの表示/非表示切り替え(デフォルトはENBLE) NewPlayControl=TRUE [Play]と[Stop]、[Suspend]と[Resume]がそれぞれ対になったトグル式に変わる UseMiliSecTime = ENABLE 時間表示のms単位有効 NewButtonControl= TRUE 明示的にENABLEフラグを立てているアイテムのみクリックに反応させるように変更 [window] Option = TRANSPARENT (不定形ウィンドウを作成時に使用) ForceSystemMemory=TRUE フェイスロード時に強制的にVRAMを使用しないモードに変更 アキュムレーションバッファ(新型)やアルファブレンディング等を使用時に必ず指定 Image = ファイル名 背景とするイメージを指定 Width = 数値 背景とするイメージの幅を指定 Height = 数値 背景とするイメージの高さを指定 W、Hの指定がない場合には[Window]セクションのImageキーのファイルを読み込み、 その画像サイズを利用するようにしましたが、 フェイス読み込みとは別個に行われるため、余分な処理となります。 フェイス作者の方は、起動速度を少しでも高速化するため、 できるだけWidth/Heightキーの設定をお願いいたします。 -------------------------------------------------------------------- OPTION= フォントの装飾 ,BOLD : 太字 ,ITALIC : 斜体 ,UNDERLINE : 下線付き ,STRIKEOUT : 取り消し線つき ,EXTRABOLD : 極太字 ,TEXTLEFT : 左寄せ(デフォルト) ,TEXTCENTER : 中央寄せ ,TEXTRIGHT : 右寄せ ,SCROLL : 文字列が領域に入らない場合にスクロール ,FORCESCROLL : 強制スクロール ,FADE : 書き換えがあった場合にフェードインしながら表示されます。 ,CROSSFADE : テキスト変更時クロスフェードしながら切り替わるようになります。 ,ACTIVEONLY : アクティブ時のみにそのフィールドが有効 ,INACTIVEONLY : 非アクティブ時のみにそのフィールドが有効 ,USETIPHINT : チップヒントを表示 (TipHint=文字列 が必要) ● テキストのフェード速度の指定を可能に FadeSpeed = 数値(1〜256)で指定します。 1  :最遅設定(12.8秒程度) 8  :デフォルト(1.6秒程度) 256:最速設定(50ms程度) 速度というよりアニメーションの細かさを指定します。 ココで指定した数値分ずつα値が増えていきます。 50msおきに描画されるので、任意の数値での時間は N  :(50 x (256 / N) ms 程度) と求められます。 なお、現在のところ指定された数値を2の累乗の数値に切り捨てます。 ●非矩形ボタン Option = USEREGION アルファチャネルまたはカラーキーが埋め込まれたPNGファイル、 またはCOLORKEYオプションを併用したときに利用できます。 このオプションは、シークバーなどの スライダーコントロール系では利用できません。 AlphaBoundary = 0〜255までの数値 と指定することで、閾値を指定できます。 閾値より大きいアルファチャネルを持つ領域のみが クリック判定を持つことになります。 アルファチャネルを持たずに、カラーキーを利用する場合には、 自動的にカラーキー以外の領域がクリック判定を持ちます。 (TRANSPARENTオプション併用不可) #TRANSPARENTオプションは、背景を切り抜いて、そこにイメージを合成した #矩形ボタンを作成するオプションです。 3DEDGEオプションを伴わない透明ボタンは実質意味がありませんので、 カラーキー透過を用いるだけの場合には、COLORKEYオプションを 利用することを強くお勧めします。 #カラーキー透過をするためだけに、COLORKEYオプションを利用せずに、 #TRANSPARENTオプションを利用している投稿フェイスが多く見られます。 #3DEDGEオプションをつけない場合の見た目はほぼ一緒ですが、 #内部動作はまったく違います。 ALPHAENABLEフラグはTRANSPARENTフラグとは同時に利用しないで下さい。 ● フェイス上のフォントのアンチエイリアス Option = ANTIALIASTEXT また、ClearTypeなどが利用可能な場合には利用するようにしてみました。 ClearTypeそのままではないので、本来の効果は得られませんが。 ついでに、プレイリストのフォントにも、ClearTypeを有効にしてみました。 -------------------------------------------------------------------- ALPHAENABLEフラグはあまり多用しないようにしてください。 処理が大変重くなるため、事前にα合成した画像を用意できないケースでのみ ご利用くださるようにお願いします。 #事前に用意できないケースとは、他のアイテムの上に(半透明で)重なって表示される #ようなアイテムを作成したい、とかです。 #他のアイテムとの重なりがなければ、事前にその部分の背景とα合成した #画像が用意できるはずです。 #また、もともとαチャネルつきの画像の場合には、 #αチャネルにAlphaValueで動的積算するα情報を #あらかじめ積算しておくことができるため、 #他のアイテムとの重なりがあっても事前にαを適用した画像が用意できます。 -------------------------------------------------------------------- -------------------------------------------------------------------- ●ユーザ定義アイテム Category = UserItem を指定 CommandID = 数値 ボタンとして押した時のIDを指定 (コマンドID一覧.txtを参照) 定義済みフィールドでも、CommandIDを指定して、動作を上書きできる ● ウィンドウをドラッグ状態にするコマンドID CommandID = 40083 ● Rewind&Playコマンドを定義 カスタムフェイスでWinAmpなどと同様の操作を実現するために必要な、 再生中なら先頭に巻き戻して再生、一時停止中なら一時停止解除、 ファイルがオープンされていなければオープンして再生のコマンドを追加しました。 CommandID = 40082 です。ユーザ定義アイテムでご利用ください。 -------------------------------------------------------------------- スペクトラムアナライザ WidthやHeightの指定は出来ません。 指定したイメージのサイズがWidthやHeightの代わりに使用されます。 ・Option = ANALYZER (必須) 利用可能なキー ・PosX 表示位置の左上のX座標を指定します ・PosY 表示位置の左上のY座標を指定します ・Image アナライザのイメージファイルを指定します(必須) ・Priority 表示プライオリティを指定します ・AlphaValue ALPHAENABLEフラグ使用時の透明度を指定します AlphaValue = 数値 (0-255) 0で完全透明、255で完全不透明 ・ColorKey 内部処理中でカラーキーとして使う色を指定します。 イメージ中にこの色が含まれている場合、そこは表示されません ・CommandID ENABLEフラグ使用時に、発行するコマンドIDを指定します。 ・TipHint チップヒント文字列を指定します ・Reduction アキュムレーションバッファ(新旧とも)を使用時に、元の映像が減衰していく割合 Reduction = 数値  値の範囲は、0〜255です。大きいほど早く残像が消えていきます。  255だと残像がまったく出ず、0だとずっと残ります(=アキュムレーションバッファを使う意味が無い) 利用可能なオプション ・ANALYZER スペクトラムアナライザの定義であることを示すフラグです。必ずつけてください。 ・ALPHAENABLE 半透明表示にするフラグです([Window] フィールドに ForceSystemMemory=TRUE を必ず指定) ・ACCUMULATION アキュムレーションバッファ風の処理で表示するフラグです。多少処理が重くなります。 ・ENABLE クリックした時に指定されたコマンドIDを発行するようにするフラグです Imageに指定したファイルの幅にあわせて、サウンドを解析します。 横256pixelのイメージを指定した時は、256pointDCTが行われます。 2の累乗だと、FCTで高速な計算が行われるので、可能ならば2の累乗にすることをお勧めします。 以上より、Imageの幅は、周波数分解能に影響します。 Imageの高さは、各周波数のレベル表示の分解能に影響します。 上から1/10の高さの位置が、0.0dBの位置になります。 一番下の位置は、再生しているサウンドの量子化ビット数によって変わります。 8bit時 : 約 -48dB 16bit時 : 約 -96dB 32bit時 : 約-144dB AlphaValue = 数値 (0-255) ALPHAENABLEフラグ使用時の透明度を指定 0で完全透明、255で完全不透明 ・ACCUMULATIONフラグについて フラグを実際に使用してみればわかりますが、残像が残るような感じで変化するようになります。 通常時は、スペクトルを描画する際には、いったんカラーキーで塗りつぶしてから、その上に描画しています。 ACCUMULATIONフラグ使用時には、カラーキーで塗りつぶすのではなく、 カラーキーを25%の割合でαブレンディングしています。 カラーキーが0(黒)の場合には、その部分はだんだんと黒く変化していきます。 この場合、影が残るような感じに見えると思います。 なお、カラーキーに黒以外も指定できますが、この場合、αブレンディングの原理的に、 計算誤差や、累積誤差によって、何度重ねてもその色にはなりません。 よって、きちんとカラーキーで抜き処理が行えなくなります。 黒(R=0,G=0,B=0)の時だけ、重ねていくうちにその色になります。 黒の時は、きちんと抜き処理が行われます。 なので、ACCUMULATIONフラグを使用する時には、カラーキーに黒を使用するか、 スペクトル表示領域自体をカラーキー単色で塗りつぶしておくようにしてください。 カラーキー単色塗りつぶし以外のところへスペクトラムアナライザを配置すると、 きちんと抜き処理が行われないため、表示がおかしくなります。 ACCUMULATIONEX フラグを指定すると、新型のアキュムレーションバッファを使用します。 αチャンネルの方を操作することによって、より高速な処理と正確な表示を実現しました。 αチャンネル仕様なので、今度のは背景色に依りません。 ([Window] フィールドに ForceSystemMemory=TRUE を必ず指定) あと表示レベルが固定に変わってます。 デフォルトでは、0.0〜80.0dBです。 フェイス側の設定で変更することが出来ます。 単位はdBで、小数を受け付けます。 Range = 数値 各周波数のレベル表示の分解能を指定 Range = 96.0 のように指定した場合、一番上が0.0dB、一番下が-96.0dBになる デフォルト=80.0 ------------------------------------------------------------------------- [Seek] PosX= 数値 PosY= 数値 Width= 数値 Height= 数値 Option = IMAGE, PUSHBUTTON Image = seek.png Option = PUSHBUTTONを指定しておくと、1歩ごとに切り替わる2パターンアニメになります。 このとき、指定するイメージはボタンと同じく上下に同サイズのパターンを配置してください。 オプションでDEFAULTSIZEは指定しないで下さい。 つまみの移動領域がイメージのサイズとなってしまうため、動かせなくなります(汗) つまみは、ここで指定したWidth - 実際のイメージのWidthの間で動きますので、 Widthを大きくとればとるほど、シークの精度が上がります。 デフォルトのでは、Width=230、実際のイメージのWidth=13ですので、 230-13=217段階の精度を持っております。 ENABLEフラグが指定されている時、シークバー領域で左クリックした時に その位置にシークカーソルをダイレクトに移動する ----------------------------------------------- 表示優先度 Priority = 300 のような感じで、数字で指定します。数字が大きいほど、上に表示されるようになります。 何も入力されていないフィールドのアイテムは、デフォルト値として 0xFFFF = 65535 に設定されるので、他のアイテムに隠されたくないのはそれ以上の数字、 逆に他のアイテムの前に出ちゃいやなアイテムは、それより小さく指定します。 デフォルトのフェイスでは、タイトルなどが表示される文字列の後ろにシーク用のアイコンがありますので、 [Title]フィールドに Priority = 0x1FFFF として他のアイテムより前に、 [Seek]フィールドに Priority = 0x0FFF として他のアイテムより後ろに表示されるようにしております。 その他のアイテムは重なりがないので、何も指定せずにデフォルト値の0xFFFFとして解釈させております。 ちなみに、数字は16進数でも10進数でもOKです。 16進の場合は、0xどうのこうのと、頭に0xをつけましょう。 有効な値は、32ビットで表せる範囲である、0〜約42億、16進で0x00000000〜0xFFFFFFFFまでです。 ------------------------------------------------ ----------------------------------------------- プレイリストフィールド [List] Category=PlayList 必須 FontFace="フォント名" FontSize="フォントの大きさ(ピクセル単位)" FontOptoin=[BOLD,ITALIC,UNDERLINE,STRIKEOUT,EXTRABOLD] フォントの装飾を指定 FileName = 数値 FilePath = 数値 Title = 数値 Artist = 数値 Album = 数値 Date = 数値 Track = 数値 Genre = 数値 Comment = 数値 PlayTime = 数値 Number = 数値 それぞれカラム幅を指定 負の値を指定すると、従来の表示文字列に合わせた可変幅になります。 また、0を指定すると見かけ上その表示項目をOFFにすることが出来ます。 ここで指定した幅は、フェイスロード時に設定されるもので、 ユーザがその後カラムの幅を手動で動かした場合には、変更されます。 ColumnOrder=文字列で並び順を指定できます。 アーティスト/タイトル/アルバム/ファイル名/……の順に並べるように指定するなら、 ColumnOrder = Artist, Title, Album, FileName とします。残りのカラムはこの後ろに自動的にデフォルトの順番に並びます。 スペース/タブ/カンマで区切りながら、幅指定のキーと同じ文字列を表示したい順番に指定してください。 同じキーが2度現れた場合には、2度目以降は無視されます。 また、現れなかったキーは後ろにデフォルトの順番に指定されたものと解釈します。 プレイリストのカラムのテキストを指定した文字列に変更 (ドッキングモード時のみ) ColumFileName =文字列 ColumnFilePath = 文字列 ColumnTitle = 文字列 ColumnArtist = 文字列 ColumnAlbum = 文字列 ColumnDate = 文字列 ColumnTrack = 文字列 ColumnGenre = 文字列 ColumnComment = 文字列 ColumnPlayTime = 文字列 ColumnNumber = 文字列 プレイリスト背景の色 TextColor=0x00数値 テキスト(それぞれ色指定) BackColor1=0x00数値 奇数ライン BackColor2=0x00数値 偶数ライン (選択時の色指定は現在できない) TextColorPlaying = 0x00数値 再生中の曲のテキストの色を16進数で定 BackColorPlaying = 0x00数値 再生中の曲のラインの色を16進数で指定 0x00bbggrrの順でRGBを16進数で指定 ● プレイリストのソートの操作方法を変更 カラムをクリックしてソートが出来ますが、 この時左クリックだと昇順、右クリックだと降順になるようにしました。 ● 独立プレイリストのメニューに、『新規にプレイリストを作成』、『既存のプレイリストを呼び出す』の2つを追加 それぞれ動作は、 アイテム全削除&保存ファイル名リセット、 アイテム全削除&リストファイルからアイテムインポート&当該リストファイル名を保存ファイル名にセット、 という感じになります。 『既存のプレイリストを呼び出す』では、保存ファイル名の決定方法の問題から、 単一ファイル選択しかできないようになっています。 プレイリストが入れ子になっていた場合などでも、 ダイアログ上で選択したリストファイル名がプレイリストの名前になります。 切り取り(CTRL+X)、コピー(CTRL+C)、貼り付け(CTRL+V)、すべてを選択(CTRL+A)を追加しました。 CommandID = プレイリストの選択アイテムをデコードリストへ送る 40131 プレイリストの項目の切り取り 40134 プレイリストの項目のコピー 40135 プレイリストの項目の貼り付け 40136 プレイリストの項目をすべて選択 40137 プレイリストの項目の選択の反転 40138 貼り付けはカーソル位置への挿入の形で行われます。 カーソルを合わせているエントリの直前に挿入されます。