Sappy 2006 Mod 17.1

◆これは何？
  sappy 2006 作者の Kyoufu kawa さんが sappy のソースを公開されたので、バグフィクスおよび Vista や 7 でも動くようにしたバージョンを作ってみました。
  Win2k でも必要なファイルを用意すれば動くようですが、保証はしません。（Win9x は多言語サポートの影響で動作しなくなりました）
◆ひとこと
  Mod 17.1 になりました。
  一部の環境で特定の機能がエラーとなってしまう問題があったのを修正しました。
◆インストール方法
  まず始めにオリジナルの sappy12.exe をインストールしてください。必要なファイルがコピーされます。
  必ず本家サイト (The Helmeted Rodent) からダウンロードしたものを利用してください。（ sappy12.exe / size: 925,287 bytes)
  その後、インストールしたフォルダに入っている sappy.exe をこのアーカイブに入っている sappy.exe で上書きしてください。
  最後に上書きした sappy.exe を実行して、正しく動作するか確認してください。
◆使い方
  オリジナル版にもある機能は Web を検索して必要な情報を集めてください。
  こちらで追加した機能については、以下の「新規ダイアログについて」の項目を参照ください。
◆新規ダイアログについて
  Sappy2006 Mod version では、オリジナルと比べいくつかのダイアログを変更および新規作成しています。
  それらのダイアログについての説明は、以下のリンクにて確認してください。

1. (変更) メイン画面
2. (新規) Edit Voice table
3. (新規) Import Sample
4. (新規) Edit Sample Map
5. (新規) Edit Wave Memory data
6. (変更) Import Tracks
7. (変更) Settings 内 Playback メニュー
8. (変更) Settings 内 Interface メニュー
9. (追加) Settings 内 Extra メニュー
10. (変更) Assemble Song

2012/3/15 nagona◆DKG4NAGONA

何かあればこちらまで↓
nagona.sappymod{at}gmail.com　　※ "{at}"を"@"に変更してください。
※ nagona◆DKG4NAGONA は、オリジナル Sappy 2006 作者の kyoufu kawa 氏および The Helmeted Rodent とは無関係です。 　なお、ソースの一次配布元は こちら です。

◆更新履歴

- 2012/3/15 Mod17.1
  - エクスプローラ設定の「登録されている拡張子を表示しない」が有効になっていると一部の機能でエラーとなることがあるのを修正
  - 32MB ROM に対して Export Samples を実行した場合に落ちることがあるのを修正
- 2012/3/9 Mod17
  - 再生アルゴリズムの指定の新旧が逆になっていたのを修正、および項目を Playback メニューへ移動した
  - 多少高速化。
  - パンポット時の音量調整が行われていなかったのを修正
  - Assemble Song、Import tracks で Song Group を指定できるようにした
  - 一部のダイアログを拡大した
  - アセンブラのラベルやシンボルに "." を使用できるようにした
  - アセンブラの定数 "."(現在のアドレス) を実装
- 2011/7/21 Mod16
  - 再生アルゴリズムを刷新。ただし旧バージョンも使用可能。
  - ノイズ周波数調整
  - テンポ変更時に音が飛ぶことがあるのを修正
  - KEYSH コマンドの挙動を実機と同等の動作に変更
  - MIDI 出力機能を微調整
  - 一部のダイアログが Esc で閉じないのを修正
  - 内蔵アセンブラを高速化
- 2010/9/13 Mod15
  - 最大フレームレートの指定を追加
  - ボイステーブルのアドレス設定変更が正しく動かなかったのを修正
- 2010/5/4 Mod14
  - 曲再生開始時の曲解析を少しだけ高速化
  - 曲再生処理を少し高速化
  - Edit Wave Memory data ダイアログを実装
- 2010/4/3 Mod13.1
  - Import Tracks で正しくないデータが書き込まれる問題を修正
  - Assemble song である程度エラーチェックを行うようにした
  - Assemble song で Base Distnation Offset の初期値を現在の曲の先頭アドレスにした
- 2010/4/2 Mod13
  - メニュー等を多言語対応化
  - MIDI 出力機能でテンポが正しく処理されないことがあるのを修正
  - Edit Voice table で Base note 値が反映されないのを修正
  - DirectSound 以外の音色に Base note 値を表示しないように修正
    - 値の保持のためだけに表示させる必要はないため
  - トラック表示の3番目の値を LFOS 値から VOL 値へ変更
  - GB Sound Limit Break が off でも同時発音数以上の発音が行われてしまうことがあるのを修正
  - 開けないファイルを極力無くすように改良
  - Direct Sound の同時発音数を設定可能にした
- 11/29 Mod12
  - メイン画面に PATT/PEND 、REPT の情報を表示するようにした
  - Edit Sample map ダイアログを実装
  - Import Tracks を拡張し、マスターリバーブ値と優先度を変更できるようにした
  - ドキュメントを全面的に html に変更した
- 10/4 Mod11
  - REPT 命令のリピート回数が正しくなかったのを修正（n-1）
  - Import Sample を実装
  - Record to MIDI で、最後のノートが短くなることがあるのを修正
- 9/7 Mod10.1
  - アセンブル後に画面が正しく更新されなくなる問題を修正
- 9/6 Mod10
  - Export Samples で出力した .s 形式サンプルのアセンブルに対応
  - トラックが 0 のシーケンスを再生すると落ちてしまう問題を修正
  - パンポットのゲージを表示する設定を追加
  - パンポットを GBA のバランスにあわせた。
  - ・Import Samples メニューを追加。（まだ使えません）
  - Edit Voice table のアイコンを作成
  - Record to MIDI の機能を作成。
  - 画面の描画間隔が 60fps 以上にならないようにした。
  - パンポットを使用したときにプチノイズが乗る問題をさらに軽減。
  - 前回終了したウィンドウ位置とサイズで起動するように変更
  - 再生時無効な領域を再生しようとした場合、そのトラックの再生を中止するように変更
- 8/2 Mod9
  - チャンネルごとの音量メータ表示を、そのチャンネルで鳴っている音のうち最大音量を表示するように変更。
    今まではすべて足し合わせ、音数で割っていたのですが、見た目と音量が一致しないため変更しました。
  - Edit Voice table メニューを追加。
  - DirectSound の減衰時間が半分になっていたのを修正
  - ドラムパートの楽器ごとのパン指定をサポートした
  - Sweep の設定量が大きかったので修正。修正しても大して変わらないorz
  - ボリュームメータの表示をいじくってみた。軽くなってるといいなぁ。
  - ノイズ出力の中央値が変だったので修正
  - トラック終了コードが違うシーケンスデータを見つけたので、それに対応。
  - ステータスバーから Tick 表示を外してみた。少し軽くなったかも。
  - パンポットを使用したときにプチノイズが乗る問題を軽減。
- 7/28 Mod8
  - 負荷が軽くなるように調整
  - EOT 命令の挙動を実機に合わせた。
  - REPT 命令サポート
  - 発音アルゴリズム再調整
  - Extraメニューに項目を2つ追加（GB Sound limit break、Fixed mode frequency）
  - Square1 の Sweep 機能を実装。ただし鳴り方はかなりひどい。
  - Noise をよりノイズっぽくした。
  - PATT 命令を 3 回までネストできるようにした。また、パターン再生中は Location 表示の色が変わるようにした。
    - パターン無し：緑　ネスト１段：黄色　２段：オレンジ　３段：赤
    - なお、ネストが 4 段になるとエラーでデコードエラーになります。（未確認）
  - 音が鳴り終わっていないのに曲が終了することがあるのを修正
  - GB 由来の音源の最低音程を C0 に修正。
  - MODT=mod_tre 時に音量の変更が正しくなかったのを修正
- 7/12 Mod7
  - LFOS LFODL MOD MODT によるモジュレーション動作を実装。
  - 命令解釈が一部間違っていたのを修正。（XCMD、TIE、EOT）
  - マルチサンプルやドラム指定のトラックでパンが左右中央の3方向に固定されていたのを修正。
  - メイン画面の描画タイミングを変更。発音を優先するようにした。
  - DirectSound の Decay 値の扱いを変更した。
  - フォーマット解析ルーチンを変更。いくつかのデータで読み込みエラーが発生していたのを修正
  - 無限ループによるハングアップを防ぐため、シーケンスデータがあまりにも長い場合デコードを中止するようにした。
    - （32768Event/Trackでエラー。ちなみに 8 分以上ある kawajuke 2006 の Zero Wing Medley で最大 6400 程度)
- 7/9 Mod6
  - 負荷が高くなった場合に画面描画を間引くようにしました。
  - マルチサンプルやドラム指定のトラックは出力音源部に"multi" "Drum" と表示するように変更。
    同時に、マルチサンプルやドラムトラックで鳴らない音が指定された場合 "----" と表示するように変更。
  - メイン画面に表示されるノートのオクターブ表示を MPlayDef.s の表記に合わせた（Cm3→C3、Cs3→C#3 等)
  - 出力を 48KHz から 44.1KHz に変更しプチノイズを解消。
  - Settings に Extra メニューを追加しました。今のところ Real Mode チェックボックスがあります。
    Real Mode を有効にすると、通常 44.1KHz で出力するのを 65.535KHz で出力するようになります。
    高音域で折り返し雑音が気になる場合に使用してみてください。
    なお、65KHz は GBA が BIOS シーケンサで演奏する場合（FRなど）に使う出力周波数です。
    （実際には 65.536KHz ですが、仕様上 65.535KHz に設定しています）
- 7/8 Mod 5
  - アドレスを 0x1ffffff まで処理できるように修正。この関係で至る所の桁数が増えています。
  - Location に表示されるアドレスが正しい値を示すように修正（今まではまったく合っていませんでした）
  - トラック表示を開いたときに表示される値を増やした。
    - 左から Voice, Velocity, LFO speed, Modulation depth, Pitch bend
    - ただし Pitch bend は表示される値に Bend range の値を掛け合わしてあります。
    - ※ LFO や Modultaion 関係は値を取るようになっただけでまだ処理はしていません。
  - 一部のシーケンスで不正な音が鳴っていたのを修正。（省略形の処理で抜けがあった）
  - 曲がループした後にエラーで演奏が止まってしまう場合があったのを修正。
    - ループ前とループ後で同じ場所なのに Voice が違う場合に起こっていた
  - .s アセンブル時にアセンブル中に行を表示するようにした。
  - gate+ の値が処理されていなかったのを修正
  - 再生位置を示すバーが正しい位置を示すよう修正
- 7/5 Mod 4
  - GB音色の発音アルゴリズムの修正。オリジナルGBに近くなりました。
  - 再生負荷が高すぎて操作不能に陥った場合強制的に演奏を中止する機能を追加
  - ステータスバー右の時間表示とビートの表示領域を広げ、またビート表示をテンポと合わせた
  - なるべく正確なテンポを維持するよう変更
  - 各所にエラートラップを設定し、なるべく不正な処理で落ちないように変更
  - タイトルバーにファイル名を表示するように変更
- 7/3 Mod 3
  - 音質を改善してみた
  - 再生表示でトラックの出力情報が下のトラックにも表示されてしまう問題を修正
  - 再生時鳴らない音があったのを修正
  - 各ボイスデータの周波数微調整
  - ドラムトラックでDirectSound以外の音色が鳴ってしまう問題を修正
  - 実行すると作られていた pmidi.tmp ファイルを作らないようにした
- 7/2 Mod 2
  - アセンブル時に落ちることがあったようなので修正。（GetFileTitle 関数に渡す値および戻り値の型が間違っていた）
  - 起動時にWindowsのバージョンごとに動作を変更した（Win2k/98で動作可能に）
- 7/1 Mod 1 (改)
  - ファイルを開くダイアログに渡す値を正しくした。
  - sappy.xml の読み込み処理を改善。（宣言と初期化がミスマッチだったのを修正）
  - アセンブル時に微妙におかしな値になる問題(40→16問題)を修正
  - 続けてアセンブルすると重くなって最後には落ちる問題を修正