//ぷれいあ //V2.71 短いクリップの連続再生抑止バージョン !母艦設計=「母艦の可視はオフ」 母艦のタイトルは「ぷれいあ」 標準文字色=白色 標準ボタン色=$daeaf7 選択ボタン色=白色 実行ボタン色=$28476c 標準ボリューム色=$B6D5D5 標準枠色=$356996 標準背景色=$69a8c6 標準透過度=220 選択透過度=255 標準書体=「MS ゴシック|10|細字」 標準行間=3 標準幅=320 オリジナルエイリアス=「music{9000の乱数}g」 メインテキスト=「drowsepost」 サブテキスト=「ここにファイルをドラッグして再生。」 現在状態=「停止」 ファイルアドレス=「」 メディアタイトル=「」 メディアオーナー=「」 メディア詳細=「{母艦のタイトル} ver2.71{\n}(c)2007-2015 canotun{\n}すくろーる」をCSV取得 最終時間=「」 最終時間位置=0 時間位置=0 時間=「」 前回位置=0 再生曲番号=0 エントリーとは配列 エントリー数 = 0 エラー数 = 0 ミュージックパレットとはフォーム コントロールパレットとはフォーム /* ミュージックフォームの設定 */ サイセイイチとはスムーズプログレスバー サイセイイチについて 親部品はミュージックパレット Xは5 Yは25 背景色は標準枠色//背景色//$f8f8cb 色は標準文字色//黒色 テキスト色は標準背景色 テキスト書体は「MS ゴシック|6|太字」 オンリョウとはスムーズプログレスバー オンリョウについて 親部品はミュージックパレット 最大値は1000 値は1000 方向は「縦」 反転は1 背景色は標準背景色//背景色//$f8f8cb 色は標準ボリューム色//黒色 トジルとはラベル トジルについて 親部品はミュージックパレット Xは3 Yは3 文字位置は「中央」 テキストは「r」 ヒントは「閉じる」 文字書体は「webdings|12|太字」 文字色は標準ボタン色 Wは20 Hは24 サイセイイチのマウス押した時は サイセイイチのアクティブ=1 サイセイイチのマウス移動した時は もしサイセイイチのアクティブが1ならば bfとは整数=((サイセイイチの最大値)*((サイセイイチのマウスX)/(サイセイイチのW)))の整数部分 サイセイイチの値=bf 時間=「{(INT((bf*0.001)/60))を2でゼロ埋め}:{(INT((bf*0.001)%60))を2でゼロ埋め}」 サイセイイチのテキスト=時間 サイセイイチのマウス離した時は サイセイイチのアクティブ=0 サイセイイチのテキスト=「」 bfとは整数=((サイセイイチの最大値)*((サイセイイチのマウスX)/(サイセイイチのW)))の整数部分 オリジナルエイリアスを「{bf}」で「シーク」とMコン もし(現在状態=「再生」)ならば オリジナルエイリアスを「再生」とMコン オンリョウのマウス押した時は オンリョウのアクティブ=1 オンリョウのマウス移動した時は もしオンリョウのアクティブが1ならば bfとは整数=((オンリョウの最大値)*(((オンリョウのH)-(オンリョウのマウスY))/(オンリョウのH)))の整数部分 もしbf>1000ならば bf=1000 オンリョウの値=bf オリジナルエイリアスを「{bf}」で「ボリューム設定」とMコン オンリョウのマウス離した時は オンリョウのアクティブ=0 bfとは整数=((オンリョウの最大値)*(((オンリョウのH)-(オンリョウのマウスY))/(オンリョウのH)))の整数部分 もしbf>1000ならば bf=1000 オンリョウの値=bf オリジナルエイリアスを「{bf}」で「ボリューム設定」とMコン 母艦の非アクティブ時は ミュージックパレットの透明度は標準透過度 もし((ミュージックパレットのクライアントH)<(115))ならば コントロールパレットの可視はオフ ミュージックパレットのクリックした時は ミュージックパレットの透明度は選択透過度 コントロールパレットの可視はオン//NOT(コントロールパレットの可視) ミュージックパレットのファイルドロップされた時は ミュージックパレットのドロップファイルでファイル登録 現在状態=「再生」 再生曲番号=-1 「次」の曲セレクト //0のファイル再生 ミュージックパレットについて スタイルは「枠なし」 クライアントHは90 クライアントWは標準幅 ドラッグ移動はオン 透明度は0 可視はオン ファイルドロップ許可はオン ポケットは0 タイトルは「stage」 /* コントローラフォームの設定 */ サイセイとはラベル サイセイについて 親部品はコントロールパレット レイアウトは「全体」 文字位置は「中央」 テキストは「4」 ヒントは「再生/停止」 文字書体は「webdings|20|細字」 文字色は標準ボタン色 サイセイのマウス入った時は サイセイの文字色は選択ボタン色 サイセイのマウス出た時は サイセイの文字色は標準ボタン色 サイセイのマウス押した時は サイセイの文字色は実行ボタン色 サイセイのマウス離した時は サイセイの文字色は選択ボタン色 サイセイのクリックした時は もし(現在状態=「再生」)ならば 現在状態=「停止」 オリジナルエイリアスを「停止」とMコン 違えば 現在状態=「再生」 オリジナルエイリアスを「再生」とMコン マエヘとはラベル マエヘについて 親部品はコントロールパレット レイアウトは「左」 文字位置は「中央」 テキストは「7」 ヒントは「前へ」 文字書体は「webdings|20|細字」 文字色は標準ボタン色 Wは50 マエヘのマウス入った時は マエヘの文字色は選択ボタン色 マエヘのマウス出た時は マエヘの文字色は標準ボタン色 マエヘのマウス押した時は マエヘの文字色は実行ボタン色 マエヘのマウス離した時は マエヘの文字色は選択ボタン色 マエヘのクリックした時は もし((ミュージックパレットのクライアントH)<(115))ならば サイセイの可視はオフ もし(時間位置>(サイセイイチの最大値/10))ならば オリジナルエイリアスを「1」で「シーク」とMコン もし(現在状態=「再生」)ならば オリジナルエイリアスを「再生」とMコン 違えば 「前」の曲セレクト ツギヘとはラベル ツギヘについて 親部品はコントロールパレット レイアウトは「右」 文字位置は「中央」 テキストは「8」 ヒントは「次へ」 文字書体は「webdings|20|細字」 文字色は標準ボタン色 Wは50 ツギヘのマウス入った時は ツギヘの文字色は選択ボタン色 ツギヘのマウス出た時は ツギヘの文字色は標準ボタン色 ツギヘのマウス押した時は ツギヘの文字色は実行ボタン色 ツギヘのマウス離した時は ツギヘの文字色は選択ボタン色 ツギヘのクリックした時は もし((ミュージックパレットのクライアントH)<(115))ならば サイセイの可視はオフ 「次」の曲セレクト コントロールパレットのマウス移動した時は サイセイの可視はオン コントロールパレットについて 親部品はミュージックパレット スタイルは「枠なし」 透明度は0 可視はオン クライアントHは35 クライアントWは標準幅-26 Xは13 Yは25 ミュージックパレットのサイズ変更した時は UI総調整 /* タイマー */ ルーパーとはタイマー ルーパーについて 値は500 ルーパーの時満ちた時は 演奏制御 UI更新処理 /* 終了処理 */ 母艦の終了可能はオフ トジルのマウス入った時は トジルの文字色は選択ボタン色 トジルのマウス出た時は トジルの文字色は標準ボタン色 トジルのマウス押した時は トジルの文字色は実行ボタン色 トジルのマウス離した時は トジルの文字色は選択ボタン色 トジルのクリックした時は iとは整数=0 6回 i=i+INT(標準透過度/6) ミュージックパレットの透明度は(標準透過度-i) 0.01秒待つ ミュージックパレットの透明度は0 終わる ミュージックパレットの閉じた時は オリジナルエイリアスをMコン ミュージックパレットの終了可能はオン 終わる 初期化関数 ●初期化関数 フォントリストとは配列 = フォント一覧取得をCSV取得 フォントリストの0から「メイリオ」を配列検索 もしそれが0以上ならば 標準書体=「メイリオ|9|細字」 標準行間=0 違えば フォントリストの0から「Yu Gothic」を配列検索 もしそれが0以上ならば 標準書体=「Yu Gothic|10|太字」 標準行間=-1 UI総調整 UI更新処理 ルーパーの開始 コントロールパレットの可視はオフ ミュージックパレットを中央移動 iとは整数=0 12回 i=i+INT(標準透過度/12) ミュージックパレットの透明度はi 0.01秒待つ ミュージックパレットの透明度は標準透過度 ●演奏制御 時間位置=オリジナルエイリアスを「0」で「位置取得」とMコン もし((時間位置=-1)||(現在状態==「停止」))ならば 現在状態=「停止」 サイセイのテキスト=「4」 違えば 時間=「{(INT((時間位置*0.001)/60))を2でゼロ埋め}:{(INT((時間位置*0.001)%60))を2でゼロ埋め}」 サブテキスト=「{時間}/{最終時間}」 現在状態=「再生」 サイセイのテキスト=「;」 もし(前回位置==時間位置)ならば 「次」の曲セレクト 前回位置=時間位置 もし(ミュージックパレットのポケット<10)ならば メインテキスト=メディア詳細[0]の「{\n}」を「,」へ置換 違えばもし(ミュージックパレットのポケット<20)ならば メインテキスト=「Artist : 」&メディア詳細[1]の「{\n}」を「,」へ置換 違えば メインテキスト=「Album : 」&メディア詳細[2]の「{\n}」を「,」へ置換 ミュージックパレットのポケット=ミュージックパレットのポケット+1 もし(ミュージックパレットのポケット>30)ならば ミュージックパレットのポケット=0 ●曲セレクト({文字列=「今」}Sの) statとは数値=-1 cとは数値=0 eとは数値=0 ルーパーの停止 (stat<0)の間 e = 0 もし(S == 「前」)ならば 再生曲番号=再生曲番号-1 違えばもし(S == 「次」)ならば 再生曲番号=再生曲番号+1 もし(再生曲番号 < 0)ならば 再生曲番号=エントリー数 e = 1 違えばもしエントリー[再生曲番号]が空ならば 再生曲番号=0 e = 1 もし(e == 1)ならば c=c+1 もしc>2ならば 現在状態=「停止」 抜ける stat=再生曲番号のファイル再生 ルーパーの開始 ●UI更新処理 ミュージックパレットのウィンドウレンダリング 文字書体は標準書体 文字色は標準文字色 ミュージックパレットの(((ミュージックパレットのクライアントW)-(メインテキストの文字幅取得))/2),(23+標準行間)へメインテキストを文字表示 ミュージックパレットの(((ミュージックパレットのクライアントW)-(サブテキストの文字幅取得))/2),(23+(メインテキストの文字高さ取得)+(標準行間*2))へサブテキストを文字表示 もしサイセイイチのアクティブが0ならば サイセイイチの最大値は最終時間位置 サイセイイチの値は時間位置 ミュージックパレットの描画処理反映 ミュージックパレットの(コントロールパレットのX),(コントロールパレットのY),(コントロールパレットのW),(コントロールパレットのH)をコントロールパレットの0,0へ画像部分コピー もし(サイセイの可視==1)ならば コントロールパレットに1の画像ボカシ コントロールパレットの描画処理反映 ●UI総調整 サイセイイチについて Xは50 Yは(ミュージックパレットのクライアントH-25)//65 Hは10 Wは(ミュージックパレットのクライアントW-(サイセイイチのX*2)) 値は100 bfとは整数=オンリョウの値 オンリョウについて Xは(ミュージックパレットのクライアントW-11) Yは1 Hは(ミュージックパレットのクライアントH-2) Wは10 値はbf コントロールパレットについて クライアントHは35 クライアントWは標準幅-26 Xは((ミュージックパレットのクライアントW-コントロールパレットのW)/2) Yは(ミュージックパレットのクライアントH-65)//25 UI更新処理 ●ウィンドウレンダリング({グループ=?}OBJの) 線太さは1 線色は標準枠色 塗り色は標準背景色 OBJの0,0から(OBJ→クライアントW),(OBJ→クライアントH)へ四角 ●ファイル登録({参照渡し}Fで) エントリー=FのCSV取得 エントリー数=エントリーの配列要素数 ●ファイル再生(Nの) ミュージックパレットのポケット=0 オリジナルエイリアスを「停止」とMコン オリジナルエイリアスをMコン statとは数値=オリジナルエイリアスを(エントリー[N]の「{\n}」を「,」に置換)で「開く」とMコン もし(stat < 0)ならば //現在状態=「停止」 メディア詳細=「ファイルを読み込めませんでした{\n}no data{\n}no data」をCSV取得 statを戻す もし(stat < 100)ならば メディア詳細=「再生時間が短すぎますす{\n}no data{\n}no data」をCSV取得 -1を戻す 違えば ファイルアドレス=エントリー[N]の「{\n}」を「,」に置換 オリジナルエイリアスを「0」で「シーク」とMコン メディア詳細=ファイルアドレスのMタグ確認 最終時間位置はstat 最終時間=「{(INT((最終時間位置*0.001)/60))を2でゼロ埋め}:{(INT((最終時間位置*0.001)%60))を2でゼロ埋め}」 もし現在状態==「再生」ならば オリジナルエイリアスを「再生」とMコン オリジナルエイリアスを「{オンリョウの値}」で「ボリューム設定」とMコン 現在状態=「再生」 Nを戻す /*タグ関係---------------------------------------------------------------------*/ ●Mタグ確認({参照渡し}Sの) Mタグとは文字列=「」 バッファ1とは文字列=「」 バッファ2とは文字列=「」 詳細タイトルとは文字列=Sのファイル名抽出 詳細アーティストとは文字列=「no data」 詳細アルバムとは文字列=「no data」 詳細ビットレートとは文字列=「」 詳細チャンネルモードとは文字列=「」 エラー監視 Mタグ=Sのメディアタグ取得 Mタグを反復 バッファ1=それ バッファ2=バッファ1の「=」まで切り取る バッファ2で条件分岐 「Title」ならば 詳細タイトル=バッファ1の0から1文字削除 「Artist」ならば 詳細アーティスト=バッファ1の0から1文字削除 「Album」ならば 詳細アルバム=バッファ1の0から1文字削除 「BitRate」ならば 詳細ビットレート=バッファ1の0から1文字削除 「ChannelMode」ならば 詳細チャンネルモード=バッファ1の0から1文字削除 「FileLength」ならば 詳細ファイルサイズ=バッファ1の0から1文字削除 エラーならば 詳細タイトル=Sのファイル名抽出 詳細アーティスト=「no data」 詳細アルバム=「no data」 詳細ビットレート=「」 詳細チャンネルモード=「」 「{詳細タイトル}{\n}{詳細アーティスト}{\n}{詳細アルバム}{\n}{詳細ビットレート}{\n}{詳細チャンネルモード}{\n}{詳細ファイルサイズ}」をCSV取得を戻す /*------------------------------------------------------------- 関数:Mコン MCIの動作をラップしています。 ここでクッションを作ることにより メンテナンス性やカスタマイズ性を向上させることができます。 転載、利用、改造はご自由に 説明:Conは制御、Exは制御オプション、Obは対象(エイリアス)をあらわします。 Sコマンド表 「開く」: open(ObへExを開く、成功すれば開いたファイルのlengthが返ってきます。[ミリ秒]) 「再生」: play(ObにオプションExをつけて再生) 「停止」: pause(Obを一時停止) 「シーク」: Seek(ObをExへシーク) _:close //共通 ex「開く」: 「music」を「{File}」で「開く」とMコン ex「再生」: 「music」を「repeat」で「再生」とMコン ex「停止」: 「music」を「停止」とMコン ex「シーク」: 「music」を「10」で「シーク」とMコン ex「閉じる」: 「music」をMコン //ビデオ専用 ex「ウィンドウ設定」: 「video」を「{Handle}」で「ウィンドウ設定」とMコン ex「サイズ設定」: 「video」を「0 0 100 100」で「サイズ設定」とMコン (c)2007 canot ---------------------------------------------------------------*/ ●Mコン(Obを{参照渡し=「」}Exで{文字列=「」}Conと) mconSとは文字列=1 固有エイリアスとは文字列=「{アプリケーションハンドル}_{Ob}」 エラー監視 Conで条件分岐 「開く」ならば 「{Ex}」が存在 もしそれがはいならば 「open "{Ex[0]}" alias {固有エイリアス} type MPEGVideo {Ex[1]}」をMCI送信 「set {固有エイリアス} time format milliseconds」をMCI送信 mconS=「status {固有エイリアス} length」をMCI送信 違えば mconS=-1 「位置情報フォーマット」ならば 「set {固有エイリアス} time format {Ex}」をMCI送信//milliseconds mconS=「status {固有エイリアス} length」をMCI送信 「再生」ならば "play {固有エイリアス} {Ex}"をMCI送信 「停止」ならば "pause {固有エイリアス}"をMCI送信 「シーク」ならば "seek {固有エイリアス} to {Ex}"をMCI送信 「位置取得」ならば mconS="status {固有エイリアス} position"をMCI送信 「ウィンドウ設定」ならば "window {固有エイリアス} handle {Ex}"をMCI送信 「サイズ設定」ならば "put {固有エイリアス} destination at {Ex[0]}"をMCI送信 「ボリューム設定」ならば "setaudio {固有エイリアス} volume to {Ex}"をMCI送信 「速度設定」ならば "set {固有エイリアス} speed {Ex}"をMCI送信 違えば "close {固有エイリアス}"をMCI送信 エラーならば mconS=-1//「{エラーメッセージ}」という mconSを戻す /*------------------------------------------------------------- グループ:スムーズプログレスバー スムーズに表示されるプログレスバーです。 縦方向、横方向の切り替え、色の変更、文字の表示も可能です。 転載、利用、改造はご自由に last edit : 20110110 (c)2007-2011 canot ---------------------------------------------------------------*/ ■スムーズプログレスバー +イメージ +背景色プロパティ +最大最小プロパティ +値プロパティ +マウスプロパティ +キーボードプロパティ ・{非公開}F値{=0} ・値 ←バー描画処理 →値取得 ・{非公開}値取得〜それはF値 ・クリック位置{=0} ・背景色{=0} ・色{=0} ・アクティブ{=0} ・値位置X{=0} ・値位置Y{=0} ・テキスト位置X{=3} ・テキスト位置Y{=1} ・テキスト{=「」} ・テキスト色{=0} ・テキスト書体{=「System|8|細字」} ・{非公開}F透明{=0} ・{非公開}透明設定(Vを)〜 F透明化はV VCL_COMMAND(オブジェクト, "透明化設定", V) ・{非公開}透明取得〜それはF透明 ・透明 ←透明設定 →透明取得 //オフなら背景表示、オンなら背景透過 ・方向{=「横」} //方向が横なら横に伸び、縦なら横に ・反転{=0} //反転が0ならX,Yにしたがって、1なら逆に ・作る〜 オブジェクトは、VCL_CREATE(自身, 名前, VCL_GUI_IMAGE) 背景色=ウィンドウ背景色 色=アクティブ色 値=0 自身を背景色で画面クリア //透明化=1 ・バー描画処理(HF)〜 F値はHF 自身を背景色で画面クリア 線太さは1 線色は背景色 塗り色は色 もし(方向==「縦」)ならば 値位置Yとは整数=INT(H*(HF/最大値)) もし(反転==1)ならば 値位置Y=H-値位置Y 自身の0,値位置YからW,Hへ四角 違えば 自身の0,0からW,値位置Yへ四角 違えば 値位置Xとは整数=INT(W*(HF/最大値)) もし(反転==1)ならば 値位置X=W-値位置X 自身の値位置X,0からW,Hへ四角 違えば 自身の0,0から値位置X,Hへ四角 文字色はテキスト色 文字書体はテキスト書体 自身のテキスト位置X,テキスト位置Yへテキストを文字描画