SAPpz Help SAPpzは SDIY(Software D.I.Y.) Audio Player by PlaylistsNET, Zhaobang.Xspf の略です。 サップズィ と読んでください。 ソフトウェアの分類としてはAudioよりMusicやMediaを使う方が一般的だと思いますが 読み方を考慮してAudioにしました。 .NETの標準機能で再生しているので、Windows Media Playerで再生できる形式ならSAPpzでも再生できるはずです。 再生可能なファイルの拡張子は同梱の SAPpzEnumExtensions.exe で確認できます。 Windows Media Playerが対応しているwpl以外のプレイリスト(asx,wmxなど)は非対応です。 SAPpzのツールチップやメッセージは英語のみです。 プレイリストの読込、保存にPlaylistsNET、Zhaobang.Xspfを使用しています。 使用しているリソースの詳細はSAPpz.About.txtを参照してください。 これらのリソースを公開していらっしゃる方々に深く感謝いたします。 1.ライセンス A.免責事項 本ソフトウェアは「現状のままで」で提供され、明示的/暗黙的に拘らずあらゆる保証はありません。 作成者は、本ソフトウェアに起因または関連する事項、本ソフトウェアの使用、またはその扱いによって生じる一切の請求、損害、その他の義務について責任を負いません。 B.配布制限 一次配布サイトは http://sdiy.rdy.jp/ です。 作成者(S.D.I.Y.)が許諾したサイトを除き、インターネット上での再配布を禁止します。 許諾サイトは 一次配布サイトで公開します。 再配布する場合、一次配布サイトに掲載しているファイルの名称、内容を変更することを禁止します。 また、自動アップデートツール等の対象とすることも禁止します。 但し、イントラネットや家庭内LANにおける共有や自動アップデートツールの提供は制限しません。 この条項の目的はマルウェア、アドウェアなどが添付されたり、悪意ある改変がなされた配布物が流通することを防止することです。 C.無償使用 本ソフトウェアは本来の目的(音楽/映像ファイルの再生、プレイリストの編集等)に使う限りにおいて、個人・商用目的を問わず無償で使用できます。 本ソフトウェア自体を販売することはできません。 無償で取得、使用できることを説明したうえで有償サポートサービスの対象とすることは妨げません。 D.リバースエンジニアリング等の禁止 本ソフトウェアに対しリバースエンジニアリング等の解析行為を行うことを禁止します。 2.インストール、アンインストール .Net Framework 4.7.2.2 以上を必要とします。(ビルド時の指定。但し動作確認は4.8のみ行っています。) zipファイルを適当なディレクトリに解凍してください。レジストリは使用しません。 3.特徴 A. プレイリストの文字コードを自動判定 Hnx8.ReadJEnc を使用しています。 B. 複数形式のプレイリストの読込/保存に対応 PlaylistsNET,Zhaobang.Xspfを使用しています。 対応しているフォーマットは以下の通りです。 m3u(m3u8) :ファイルパスのみ pls :ファイルパス,タイトル名,(曲の長さ) wpl :ファイルパスのみ xfps :ファイルパス,タイトル名,タイトルアーティスト,アルバム名,(曲の長さ) プレイリストに記載のない項目はファイルのプロパティから下記の項目を取得します。 タイトル名,タイトルアーティスト,アルバム名,曲の長さ C.タスクバーのサムネイル、タスクトレイのアイコンからの操作 タスクバーのサムネイル、またはタスクトレイのアイコンから 再生、一時停止、停止、曲頭/前曲、次曲の操作が行えます。 D. その他基本機能 ・終了時の再生位置を保持、次回起動時にレジューム再生 ・リピート(Off,One,All)の切替ボタンがわかりやすい位置にある(つもり) ・リストのシャッフルボタンがわかりやすい位置にある(つもり) ・プレイリストの編集が容易(なつもり) 4.使用方法 A.操作方法の概要 テキストのみの説明は無理があるので、 http://sdiy.rdy.jp/contents/SAPpz/SAPpz-WindowDescription.html を参照してください。 B.設定ファイル、起動パラメータ、多重起動制御 a.設定ファイル デフォルトの設定ファイルはありません。 起動パラメーターに -cfg=PathToConfigrationFile の形式で設定ファイルを指定することが可能です。 設定ファイルには1行に1つずつ起動パラメータを書くことが可能です。 b.多重起動制御 デフォルトでは1つのインスタンスのみ起動可能です。 "-mi"オプションを指定するか、すでに起動しているSAPpz.exeとは別のkeyvalueを "-Key=keyvalue"の形式で指定すると多重起動が可能です。 c.起動パラメーター -mi 多重起動を可能にする("-Key"は無視する) アプリケーション起動時のデフォルトリスト読込は無効になる アプリケーション終了時のデフォルトリスト保存機能は無効になる -Key=keyvalue 多重起動用のインスタンス識別用の文字列 (大文字小文字は区別しない、'\' 等のファイル名に使えない文字は使用不可) 音楽を2つ同時に再生してもしょうがないのですが、 公開している他のプログラムと平仄を合わせるために存在するオプションです。 想定する用途は下記ぐらいでしょうか。 ・再生用、プレイリスト再生作業用に2つSAPpzを起動する ・レジューム位置を複数のリストに対して保持する keyvalueが異なるとデフォルトリストの保存ファイルが別になります。 通常使っているリストのResume再生の位置を保持したまま、別のリストを 再生したい場合は異なるkeyvalueを指定して起動するとよいでしょう。 (Exportで保存したプレイリストにはResume位置は保存されません。) -AddExt=FileExtension FileExtension:ファイルの拡張子 例 -AddExt=".asx" -AddExt=".flac" "."(ピリオド)は省略可 コーデックをインストールしてWindows Media playerで再生できるようにしたが、SAPpzでは対象外と判定されるような場合に使用する。 (SAPpzはWindows media playerのレジストリを読んで拡張子で再生対象を判定している。) また、asxを対象に含めた場合、asx内の初めの一曲のみ再生することは可能。 -Fntfmly=FontFamilyName FontFamilyName:フォントファミリーの名称 -FntSzIdx=IntValue IntValue:フォントサイズの指定番号 0<= IntValue <= 17 0:8.0pt 1:9.0pt ...中略... 17:72.0pt -PnOnTp/-NoPnOnTp -PnOnTp:ウィンドウを最前面にピン止め -NoPnOnTp:上記を行わない(デフォルト設定) -MnmzOnEsc/-NoMnmzOnEsc -MnmzOnEsc:[Esc]キーでウィンドウを最小化 (但しメッセージが表示されている場合はメッセージを消去) -NoMnmzOnEsc:上記を行わない(デフォルト設定) -MnmzToTskTry/-NoMnmzToTskTry -MnmzToTskTry:タスクトレイへ最小化 -NoMnmzToTskTry:上記を行わない(デフォルト設定) -CnfrmExtApp/-NoCnfrmExtApp -CnfrmExtApp:アプリケーション終了時に確認メッセージを表示 -NoCnfrmExtApp:アプリケーション終了時に確認メッセージを表示しない(デフォルト設定) -AutoPly/-NoAutoPly -AutoPly:起動後、ファイル等読込後、リスト編集終了後に演奏開始(デフォルト設定) -NoAutoPly:上記を行わない -Rpt=[Off|One|All] Off:リピートしない(デフォルト設定) One:現在の曲のみをリピート再生 All:リストの最後まで再生後に最初の曲に戻って再生 -ShfflOnLd/-NoShfflOnLd -ShfflOnLd:ファイル等を開く動作を行う都度、リストをシャッフルする。 -NoShfflOnLd:上記を行わない(デフォルト設定) -ClrWhnOpn/-NoClrWhnOpn -ClrWhnOpn:ファイル等を開く動作を行う都度、それ以前のリストをクリアする。 -NoClrWhnOpn:上記を行わない(デフォルト設定) -TpFldrOnly/-NoTpFldrOnly -TpFldrOnly:[Add From Folder]を実行した際に、指定したフォルダー内のファイルのみを読み込む。 -NoTpFldrOnly:[Add From Folder]を実行した際に、指定したフォルダー内のサブフォルダ内のファイルも読み込む(デフォルト設定) -EdtMd/-NoEdtMd -EdtMd:リストを編集するモードで起動する -NoEdtMd:上記を行わない(デフォルト設定) -DspPlyMsg/-NoDspPlyMsg -DspPlyMsg:Play, Stop等の曲操作に対するメッセージを表示する(デフォルト設定) -NoDspPlyMsg:上記を行わない -SpdRtIdx=IntValue IntValue:スピードレシオ(再生速度比)のインデックス 0 : 0 1 : 0.5 2 : 1.0 (デフォルト設定、通常の再生速度) 3 : 1.5 4 : 2.0 5 : 4.0 -Vlm=DoubleValue DoubleValue:ボリュームの設定 0.0 <= DoubleValue <= 1.0 の範囲で設定する デフォルト設定は0.5 -Mtd/-NoMtd -Mtd:ミュートする -NoMtd:上記を行わない(デフォルト設定) -ShwPlyLst/-NoShwPlyLst -ShwPlyLst:プレイリストを表示する(デフォルト設定) -NoShwPlyLst:上記を行わない -DfltLstFldr=PathOfDefaultList PathOfDefaultList:デフォルトリストを保存するフォルダーのパス -AutoLd/-NoAutoLd -AutoLd:起動時にデフォルトリストを読込む(デフォルト設定) -NoAutoLd:上記を行わない -AutoSv/-NoAutoSv -AutoSv:終了時にデフォルトリストを保存する(デフォルト設定) -NoAutoSv:上記を行わない 以下は Ver 1.1.22 で追加 -ShwPlyClmn/-NoShwPlyClmn -ShwSkpClmn/-NoShwSkpClmn -ShwLngthClmn/-NoShwLngthClmn -ShwArtstClmn/-NoShwArtstClmn -ShwAlbmClmn/-NoShwAlbmClmn -ShwInfClmn/-NoShwInfClmn -ShwAnnttnClmn/-NoShwAnnttnClmn PlayListグリッドの列の表示/非表示 -TxtEdtrPth=TextEditorPath TextEditorPath:Annotationの表示/編集に使用するテキストエディターのパス デフォルトはブランク、ブランクの場合は内部エディターを使用する。 (同一ディレクトリにSTEaが存在する場合、STEaのコンポーネントを利用する。) -WbSrchUrl=WebSearchUrlString WebSearchUrlString:Web検索用のURL文字列 デフォルトはブランク、ブランクの場合Googleで検索を行う。 上記のほか、ファイル名やディレクトリ名を指定可能です。 5.雑記 一応Androidのスマホを持っていて、Clean Music Player で散歩時に音楽を聴いています。 https://play.google.com/store/apps/details?id=com.myskyspark.music Clean Music Playerとプレイリストを共有する目的で Windows用の音楽プレイヤーを ・m3u(ファイルパスのみ、文字コードはUTF-8)が扱える ・シャッフル再生、リピート再生の操作が容易 ・コーデックはOSの機能を使っている(Windows Updateだけでコーデックの脆弱性対策) という条件のソフトを探したのですが、うまく見つからず、 例によって自分で作りました。 当初の目的だけならPlaylistsNETだけでよかったのですが、 途中から曲のタイトルやアーティストを編集/保存しようと思い、 PlaylistsNETではどうしようもなくなくなりました。 追加でXspf使用するためにZhaobang.Xspfを使うことにしました。 Zhaobang.XspfもXspf仕様のごく一部しか対応していないのでソースを弄って拡張しました。 S.D.I.Yの考える各フォーマットの欠点は以下の通りです m3u: #EXTINF に 曲名とアーティストを " - " でつなげて記述する慣習が使い難い (曲名やアーティスト名に " - " が含まれている場合はどうすればいい?) pls:ファイルパス、曲名と曲長しか属性がない(独自仕様を書き込める拡張項目もない) wpl:フォーマットは複雑だが、タイトルごとで見るとファイルパスくらいしか使える項目がない (PlaylistsNETのwplは仕様が公式のもの https://docs.microsoft.com/en-us/windows/win32/wmp/windows-media-playlist-elements-reference と異なる?) xspf:仕様が複雑、メジャーなソフトではvlcくらいしか対応していない?(https://xspf.org/applications/) PlaylistsNETはzplも対応しているようですが、zplを利用できる他のプログラムが入手できず、 かつPlaylistsNETのソースではファイル形式はwplと同じなのでSAPpzでは対応無しにしました。 以上