[NEZpocket::CloverIcon]

ついiPodっぽいコピーで煽ってしまった。悪気はなかった、今は反省している。


[NEZpocket::なにこれ?]

znsfに引き続き、PocketPC用chiptune演奏プログラムです。
とはいえ、またNEZplugのフロントエンドです。
せっかくなので、Windows2000とソースをコンパチにしてみました。

[NEZpocket::プレイリスト]

nsfコンペディション"Famicompo mini 3"の楽曲を試聴する為のNEZpocket用プレイリストを作成してみました。

[ダウンロード] - 06/07/15 02:50

Cover / Original 両フォルダと同じフォルダ(*.nsfファイルのあるフォルダの上です)に置いてください。
zipでまとめて置こうかと思ったんですが、マメに更新しそうなのでバラで置いています。
ご了承ください。


[NEZpocket::ダウンロード]

ダウンロードはこちらから。

アーカイブの内容は、実行ファイルNEZ.EXEとReadMeと雑多ドキュメントが少々。
任意の場所から実行してください。

<< お詫び >>
現在、開発環境を Visual Studio 2005(VS2K5) に移行しています。
2006/07/06現在、以降の途中です。
VS2K5では、Win32/PPC2K3/WM5の開発を効率的に進められます。
ただ、コンパイル対象からPPC2K2が漏れています。
今後PPC2K2をリリース対象に含めるか検討中です(決めかねています)。
ご意見・ご要望・「打ち切るだとぉぉ!!」といった声がありましたらご連絡ください。
検討の参考にします。


<< お願い >>
0.6.7までのNEZpocketにおいて、デッドロックが生じる致命的なバグがありました。
従来のバージョンをお使いの皆様は速やかに0.6.7.1以降に更新をしてください。


[NEZpocket::外観]

こんな感じです・・・ってわかるかな?
ジャケット・曲情報はプレイリストから取得しています。 FileOpenDlg.dll(mGetOpenFileName)を使用すると、システム中のファイルを指定可能になります。
画面下部のクローバーのアイコンがNEZplugです。
アイコンをタップ(Windows版は右クリック)すると、ポップアップメニューが表示されます。

  • [Open...]
    選択すると、演奏するファイルを選択でできます。
    PocketPC標準のファイル選択ダイアログを使用しているので、ファイルの選択範囲は、
    • メモリ上のMy Documents
    • 外部ストレージカード(SDカード、CFカード)

    (0.6より)拙作DLL「FileOpenDlg.dll」(アーカイブに同梱)を使用することで、上述の範囲以外のファイルを選択できます。

  • [Stop]
    演奏中の曲を停止します。
  • [Show Popup]
    画面下部にポップアップを表示します。
    演奏曲に関する情報が表示されます。
    また、ポップアップにフォーカスがある状態でカーソルの左右キーを押すとソングの移動ができます。
  • [Setting...]
    設定ダイアログを表示します。
  • [Exit]
    プログラムを終了します。

演奏時間、無音監視時間は設定ファイルで変更できます(Readme参照)。

また、0.6.7から、操作パネルがつきました。

左から順に、

  • プレイリストの前の曲を再生
  • 前のソングを再生
  • 再生(データが読み込まれていない場合は、ファイル選択) もしくは 一時停止
  • 停止
  • 次のソングを再生
  • プレイリストの次の曲を再生
  • 表示切替(楽曲情報・操作パネル)

となっています。

0.6.9からプレイリストがTrackタグをサポートするようになりました。
Trackタグは、複数ソングのchiptunesファイルの中で、ソングごとの演奏時間や無音監視を設定するタグです。
hws.nsf等のファイルで効果を発揮します。
# ・・・といってもXMLタグに関する資料を作っていないので。そろそろ書かないとorz

[NEZpocket::曲情報の表示について]

上述のスクリーンショットでは、曲のタイトルが表示されていますが、これはプレイリストに記述されたタイトルを表示しています。
mckはバージョンの派生が激しく、曲情報を使用していない(デフォルトの名前で埋められている)データがあります。
また、曲情報が有効なファイルでもデータ領域が32バイト(半角文字32文字)しかありません。
これらの制限・仕様を回避する為にプレイリストから曲情報を取得しています。
メニューの[Open...]もしくは、曲情報の無いファイルを演奏する場合は、ファイルのパスが表示されます。
これは不具合では無く仕様です(Windows/PocketPC共通)。
# mck wiki様で指摘されていましたので言い訳させていただきました・・・解決策を模索しているところなんですけど


[NEZpocket::今後の展望]

  • 母艦PCとの連携(超野望) ... cTunes→公開しました
  • プレイリストの管理
  • 演奏終了後フェードアウト対応(2006/07/06: 新規要望)
  • [0.3対応] 演奏停止コマンドの実装(急務!!)
  • [0.3対応] ソングナンバー対応
  • [0.6対応] ファイル選択ダイアログの自作(標準ダイアログは使いにくいです)
  • [0.6.9.8対応] カレントパス記憶
  • [0.5対応] 設定ファイル
  • [0.5.5対応] 設定ダイアログ
  • [0.5対応] [ポップアップエリア]操作ボタン実装(再生、一時停止、ソング移動、ファイル移動など)
  • [0.5対応] [ポップアップエリア]曲情報表示、ジャケット表示(プレイリストに連動)
  • [0.3対応] waveOut*APIのメッセージ処理をスレッドに移行(現在は、CALLBACK_WINDOWである為、他のUI操作が入ると音が途切れる事がある) → スレッドにしました
  • [0.5対応] サスペンド対応



[NEZpocket::免責事項]

このプログラムはフリーウェアです。
このプログラムを運用した結果につきまして、作者は一切責任を負いませんのでご注意ください。

<!!>ご注意<!!>
デバッグの際に、ハードリセットを余儀なくされる事が何度かありました。
外部ストレージに余裕のある方は、定期的にバックアップを取ることをお勧めします。



[NEZpocket::諸情報・おしえてせんせいさん]

  • waveOutOpenにてCALLBACK_FUNCTIONを使用した場合、デバイスクローズ時に、
    - weveOutReset
    - weveOutClose
    の呼び出しでロックがかかります。
    原因・対処方法をご存知の方がいましたら、教えていただけると嬉しいです。
    (0.3にてCALLBACK_FUNCTIONを使うのをやめましたが、後学の為に教えていただけると嬉しいです)
  • 長時間演奏をしていると、waveOutOpenにて、デバイスとスレッドの結びつきがうまくいかなくなるケースがあります(現在Windows版のみで現象を確認)。
    何か心当たりになる情報をお持ちの方がいましたらご一報ください。
  • オリジナルのNEZplugにおいて、HESの再生に不具合がある、といった情報を見かけました。
    不具合の内容、修正対応版(ソースコード)が存在するのであれば、それらの情報が欲しいです。
  • HESやKSSなど、有効なトラックの取得方法が不確定なフォーマットに関する情報を判断する方法を探しています。
    ご存知の方がいましたら教えてください。非常に助かります。
  • 8000Hz / 8Bits / Mono の設定で曲が正常に再生されません。
    waveデバイス側が悪いのか、NEZplug側が悪いのか切り分けをしたいです。
    情報をお持ちの方がいましたらご一報ください。
    # 軽くソースをトレースしたけどなんとも・・・へっぽこですいません
  • PocketPCでスタンバイ?(電源断、電源入による中断・再開)のイベントを取得したいです。
    これらの情報を探しています。
    →解決しました
  • 電源管理によるスタンバイ機能を一時的に無効にしたいです。
    これも探しています。
    →解決しました
  • iPodなどのCMをパロディしたNEZpocketの広告画像を募集します(このページのトップに展示します)。
    腕に覚えのあるドット職人さん、ネタに事欠かない笑えるコピーを思いついた方、ご一報ください。



[NEZpocket::謝辞]

[*]

[0.6.9から]

  • レンダリングエンジンを0.948+*(Ru^3)に変更しました。(05/12/05)
    # ・・・昨日、+2が出ましたorz
[0.6.7.3まで]
  • znsfに引き続き、nsfplayのソースコードを参考にしました。
    NEZplugは、0.948を使わせて頂いています。
  • オリジナルのNEZplugには、HES周りの再生に不具合があるという情報を見かけました。
    そのためkm6502周りは、某吉氏の"km6502 for GCC"を勝手に取り込んでいます。