更新日: 2011 年 11 月 15 日
X68000 LIBRARY > ソフトウェアライブラリ > サウンド > ステレオ PCM 再生 > S44PLAY.X / FMPPLAY.X > S44PLAY.X / FMPPLAY.X の更新履歴
S44PLAY.X / FMPPLAY.X の更新履歴
説明
S44PLAY.X / FMPPLAY.X の添付ドキュメントです。
HISTORY.DOC
S44PLAY.X の歴史 ──────────────────────────────────── S44PLAY.X v0.60 (1999.02.01) 激光電脳倶楽部 Vol.6 の企画として開発、掲載。経緯については激光電脳倶 楽部の該当記事を参照すべし。 ──────────────────────────────────── S44PLAY.X v0.61 (1999.02.14) -preconv のみに変更。DYNAMIC_ENDIAN は無効。-preconv スイッチは無視扱 い。 mpu_check を machine_check に変更。 本体が X68000 のときだけ opm_wait を有効にする。x68000_flag が未使用だ った。 ソースの中の left と right の記述が逆になっていたので修正。 ループ再生スイッチ -loop を追加。 ──────────────────────────────────── S44PLAY.X v0.62 (1999.02.14) -s44/-m44 を以降に指定したファイルに対して有効になるように変更。 stricmp がバグっていたの修正。 strnicmp/strncmpi を追加。 スイッチの大文字と小文字の区別をしない。 ──────────────────────────────────── S44PLAY.X v0.63 (1999.02.15) Timer-D 割り込みルーチンを 68000 用に最適化。 ──────────────────────────────────── S44PLAY.X v0.64 (1999.02.15) WAVE に対応。 ──────────────────────────────────── S44PLAY.X v0.65 (1999.04.01) 68000 のとき WAVE のエンディアン変換に movep を使う。 -reverse のスペルが間違っていた。 ──────────────────────────────────── S44PLAY.X v0.66 (1999.04.04) 矩形波に近い波形のパラメータを変更(フィードバックなし)。 ──────────────────────────────────── S44PLAY.X v0.67 (1999.04.05) キーオンの間隔をより正確にする。 PCM→OPM 変換テーブルの生成アルゴリズムを変更(-reverse/-drama/-tl は無効)。 小さい音を疑似的に再現するモード(-weigh)を追加。 ページフォーマットの変更に失敗した場合もページフォーマットの復元を試みる。 ──────────────────────────────────── S44PLAY.X v0.68 (1999.04.06) -l のとき CD 名と曲名を CDC に問い合わせる。 TRAP#14 をフックして白帯が出ないようにした。 ──────────────────────────────────── S44PLAY.X v0.69 (1999.04.08) 演奏のときも CD 名と曲名を CDC に問い合わせる。 ──────────────────────────────────── S44PLAY.X v0.70 (1999.04.13) SCSI まわりを再構築。 -force を新設。 ──────────────────────────────────── S44PLAY.X v0.71 (1999.04.15) .fmp フォーマットへの変換と再生を追加。 -silent を新設。 -z<n> を新設。 inquiry が 'SONY ','TOSHIBA ' で始まっていれば種別を確定。 ──────────────────────────────────── S44PLAY.X v0.72 (1999.04.17) CTRL+C でも強制終了する。 -id<n> で LUN を指定可能。 -tl を完全に廃止。 nxttop,pointer,dummy_opm_data の配置を変更して割り込みルーチンを最適化。 ステレオ再生時、チャンネル遷移直後は必ず発音する。 ──────────────────────────────────── S44PLAY.X v0.73 (1999.04.20) トラック情報とトラック名を最初にまとめて取得する。 [F] でフェードアウトする。まだ稀に特定のチャンネルのフェードアウトに失 敗するようだ。 ──────────────────────────────────── S44PLAY.X v0.74 (1999.04.21) Timer-A の代わりに Timer-C を使う。_VDISPST で垂直帰線割り込みを使用中 でも再生できるようになった。 POWER OFFをアボート処理にして、アボート後に 10 秒待ってから電源を切る。 -fi と -fo を追加。 ──────────────────────────────────── S44PLAY.X v0.75 (1999.04.22) 波形の + 側と - 側の使用チャンネルを分離して 0 付近の分解能を大幅にア ップ。音質が劇的に良くなった。S44L16(CD や WAV)のモノラル再生のみ対応。 ステレオ再生やボリュームの変更には未対応。 -fo の処理がバグっていて -force が効かなくなっていたので修正。 ──────────────────────────────────── S44PLAY.X v0.76 (1999.04.24) S44 と M44 のモノラル再生に対応。ボリュームの変更に対応。ステレオ再生 には未対応。 v0.75 で音質が改善したので、存在意義の無くなった -weigh と -z を完全に 廃止。 ──────────────────────────────────── S44PLAY.X v0.77 (1999.04.26) モノラル再生のチャンネル遷移を符号反転が出てくるまで遅延することでプチ ノイズを除去。 ──────────────────────────────────── S44PLAY.X v0.78 (1999.04.29) ステレオ再生のプチノイズも除去。鳴っている音の中で低音が最も大きい場合 を除けば、プチノイズはほとんど除去される。 ──────────────────────────────────── S44PLAY.X v0.79 (1999.05.01) 割り込み間隔と再生速度のずれを従来は整数補間で調整していたが、これを線 形補間で行う。この機能は 060 専用になるだろう。 ──────────────────────────────────── S44PLAY.X v0.80 (1999.05.06) 割り込み間隔を 20μs にしてみるテスト。ステレオ再生は 22.05kHz→25kHz ではなくて 44.1kHz→25kHz。特にリアルタイム再生は 68060 のみ。 バッファエンドコードを 負数+$00/$01 から 負数+$00+$00/$01 に変更。割り 込みルーチン側の cmpi.b #$01,〜 が tst.b で済むので 68000 のとき少し速い はず。 ──────────────────────────────────── S44PLAY.X v0.80_4 (1999.05.12) 補間はすべて変換側で行うものとし、割り込みルーチン側の補間コードを完全 に削除。 PCM の 1 データあたりの変化量を制限するコードを削除。 ──────────────────────────────────── S44PLAY.X v0.80_5 (1999.05.21) 補間アルゴリズムを変更。線形補間で、瞬間値ではなく、折れ線グラフの面積 を使う(とりあえずモノラルのみ)。 ステレオの面積補間を実現するために、3 バッファ方式に変更。 47.619kHz でテスト。 ──────────────────────────────────── この間に PCM2FMP.X と FMPPLAY.X と満開製作所のゲーム『あの、素晴らしい をもう一度』の OPENING.X(Oh!X 1999 年夏号掲載用)を作成。 PCM2FMP.X は C で記述して面積補間を実現。明らかに音質がよい。 FMPPLAY.X は OPENING.X の元にするべく作成した FMP 再生専用プログラム。 OPENING.X では Timer-A 割り込みを併用してグラフィック表示やパッドやマ ウスの操作に反応する機能を加えた。 ──────────────────────────────────── S44PLAY.X v0.81 (1999.06.04) 割り込み間隔を任意にするため、Timer-D 割り込みルーチンの自己書き換えコ ードを追加。 MPU を厳密に判別。 -mac と -mpu を追加。 AIFF に対応。 ──────────────────────────────────── S44PLAY.X v0.82 (1999.06.05) Timer-D 割り込みルーチンの自己書き換えを使って FMP ファイルのサンプリ ング周波数に自動追従。X68030 で X68000 用の FMP ファイルを再生できる。 ──────────────────────────────────── S44PLAY.X v0.83 (1999.06.06) 拡張操作モード(-extra)を追加。ANOS の OPENING.X で使った Timer-A 割 り込みルーチンなどを流用。 ──────────────────────────────────── S44PLAY.X v0.84 (1999.06.15) 音質指定(-lq/-hq/-sq)を追加。ただし -sq(面積補間)は未完成。preconv ルーチンが巨大化した。 ──────────────────────────────────── S44PLAY.X v0.85 (1999.06.15) 入力データと出力データの大きさの違いに柔軟に対応するために、3 バッファ 方式から 4 バッファ方式に変更。 ──────────────────────────────────── S44PLAY.X v0.86 (1999.06.15) 激光電脳倶楽部 Vol.7 に高音質化バージョンとして掲載。-sq の動作がまだ 不完全。 ──────────────────────────────────── S44PLAY.X v0.87 (1999.06.26) machine_check で user が足りないバグを修正。 ──────────────────────────────────── S44PLAY.X v0.88 (1999.07.16) Timer-D 割り込み間隔のデフォルトが本体の種類(X68000/X68030)だったと ころを MPU の種類(68000/68030/68040/68060 に変更)。 ステレオ再生時に左右の位相が反転してしまうバグの原因が、バッファに充填 された 1 回分の入力データに対して左右の出力データの個数が一致しない場合 があることが考慮されていなかったためであることが判明。修正。-sq が完成。 ──────────────────────────────────── S44PLAY.X v0.89 (1999.07.19) .s44 以外の .s22 などに対応。使用法の表示が長くなった。 ──────────────────────────────────── S44PLAY.X v0.90 (1999.07.19) CURRENT_TIME を追加。再生時間を表示するようになった。 -b の単位を n/7 MB から n/6 MB に変更。 ──────────────────────────────────── S44PLAY.X v0.91 (1999.07.19) 出力側のサンプリング周波数を表示。 入力側と出力側の周波数が同じときは強制的に -lq にする。 ──────────────────────────────────── S44PLAY.X v0.92 (1999.07.21) ADPCM デコーダを追加。ノイズが多いので仮対応。 満開ネットで公開。 ──────────────────────────────────── この間に満開製作所のゲーム『あの、素晴らしい をもう一度』が完成、発 売。オープニング曲がボーカル入りで内蔵音源でステレオで鳴るゲームは X68k 史上初に違いない。 ──────────────────────────────────── S44PLAY.X v0.93 (1999.10.17) ソースを分割。ライブラリ部分を libkt に統合。 setup_timerd_routine の自己書き換え処理のループカウンタの初期値が間違 っていて最悪の場合ハングアップする可能性があった大バグを発見、修正。ソー スの分割でリンク時のコードの順序が変わったために不具合が露顕した。自己書 き換えコードを追加した v0.81 からずっとバグっていたらしい。これでよく動 いていたものだ。 ADPCM デコーダのノイズを改善(PCM8.X と同じにした)。ADPCM に正式対応。 ついでに .p16 にも対応。 CDU-561/CDU-55S の転送速度の設定を分離して他の種類のドライブで余計なエ ラーメッセージが出ないようにした(つもりだが他の種類のドライブでの動作は 未確認)。 -normal/-fast/-ultra を追加。当然だが -normal ではリアルタイム再生は間 に合わない。 TOSHIBA 以外のドライブはデフォルトで SONY 系のコマンドを使う。 [F] でフェードアウトしたとき自動的に再生を終了する(懸案だった)。この 変更で current_time の結果が単調に増加していないことが判明したがこちらは 未修正。 -fi12 をデフォルトにすることで -sq の再生開始時のノイズを軽減(根本的 な解決にはなっていない)。 ──────────────────────────────────── S44PLAY.X v0.94 (1999.11.17) (1999.10.21) CDXA なファイルの検索エンジンがほぼ完成。後はデコーダ本体 と CDDA の初期化や読み込みのルーチンとの摺り合わせ(パラメータに CDDA と CDXA が混在していた場合に誤動作させないため)を経て CDXA を再生できるよ うになる予定。 (1999.10.23) CDXA のデコーダ(68000 用最適化版)が完成。音はクリアだが 特定の箇所で強いプチノイズが出ることがあり、デコーダの問題かデータのノイ ズかは今のところ不明。m19,m38,s19,s38 の自動判別を追加。 (1999.10.24) PRECONV_ADPCM_HQ_DOWNの@bakが呼び出し側ではd4,内部ではa4 になっていたバグを修正。 (1999.10.28) CDXA デコーダの実装に伴って必要になった PCM→TL 変換マク ロの再構築が完了。preconv.s を元にして作った preconv.mac が稼働。とりあ えず ADPCM デコーダを新しい preconv.mac ベースに移行。一発 OK。これに伴 って、従来はレジスタが足りなかったためできなかった ADPCM の -sq での再生 が可能になった。 (1999.10.28) CDXA ファイルの再生エンジンが稼働。どきポヤの MOVIE\OPEN_256.STR のモノラルとステレオ再生および VOICE\CHN\000.X16 のモ ノラル再生に成功。 (1999.10.29) CDXA デコーダの高精度ルーチンが稼働。強いプチノイズがなく なった。テストはカードキャプターさくら。 今後の予定。CD-ROM アクセスの整備。特に終了時に CD-ROM のモードが変更 されたままになっているは困る。通常のファイルや CDDA を新しい preconv.mac へ移行したい。 (1999.11.09) convert_endian_68000 のバグを修正。 (1999.11.15) CDDA と CDXA の CD-ROM まわりのコードを融合・整備。 (1999.11.16) 周波数変換をすべて preconv.mac ベースに移行。 ──────────────────────────────────── S44PLAY.X v0.95 (1999.12.02) (1999.11.24) バスブースターとハイカットフィルタの実験。共通のルーチン を使用。 (1999.12.01) read_cdda にバグ発見。FMP データのサイズの最下位バイトが 壊れていた。 (1999.12.01) バスブースターとハイカットフィルタのルーチンを分離。 (1999.12.01) global.mac と preconv.mac から .global 宣言を除去。 (1999.12.02) Timer-C の割り込み間隔を 16μs から 50μs に変更。デバッ グオプションを有効にした。MIN_INT=16、MAX_INT=80 に設定 ──────────────────────────────────── S44PLAY.X v1.00 (1999.12.03) CD-ROM になった月刊電脳倶楽部での公開に合わせて、バージョンを v1.00 に 格上げ。 ──────────────────────────────────── S44PLAY.X v1.01 (2000.01.24) (1999.12.19) -xx を追加。 (1999.12.19) -extra でないとき、フェードアウト中に [TAB] でスキップす ると次のデータが先頭からフェードアウトしてしまう不具合を修正。 (1999.12.19) ファイル名のワイルドカードに対応(CDXA は未対応)。 (2000.01.10)モノラルのファイル 1 個を FMP に変換するときは -mono スイ ッチを指定しなくてもモノラルの FMP ファイルを出力する(要望:佐俣さん)。 (2000.01.10) X68000 で -bass または -hicut を指定すると little-endian のデータ(WAV ファイルや CDDA)を正しく変換できなくなる不具合を修正(報 告:佐俣さん)。 (2000.01.23) -extra のとき SCSI バスリセットのメッセージに対して Y/N のキーが効かない不具合を修正。 (2000.01.23) POWER OFF で止めたときすぐに電源が切れてしまうことがある 不具合を修正。 (2000.01.23) POWER OFF で止めたとき電源を切るまでの時間を 10 秒から 20 秒に変更。 (2000.01.23) N- の形式でトラック番号を記述すると、トラック番号と見なさ れなかったり、68000 ではアドレスエラーが出ることがある不具合を修正。 (2000.01.23) -b<n> を指定しなかったとき、デフォルトのサイズの領域を確 保できなければ(エラーにせずに)確保できる最大のサイズを確保して動作する。 (2000.01.24) CDXA ファイルにもワイルドカードが使えるようにした。 ──────────────────────────────────── S44PLAY.X v1.02 (2000.03.11) (2000.03.03) Unsigned-8bit WAVE に対応。 (2000.03.03) -freq を追加。 (2000.03.03) 標準入力を指示する - が使えなくなっていた不具合を修正。 (2000.03.03) ファイルの種類の自動認識に失敗したとき、そのファイルの再 生だけ諦めて次のファイルを再生する(要望:たけべえさん)。 (2000.03.03) v1.01 のマニュアルに v1.00 の既知の不具合の記述が残ってい たので削除した。 (2000.03.04) CDDA の読み込みエラーで ! を書いたとき、再生時間の先頭の 数字がダブって表示される不具合を修正。 (2000.03.04) -left,-right,-diff を追加。ただし、Signed-16bit のデータ に対して -bass,-hicut を指定していない場合に限って有効。-diff は中央の音 を消す効果がある。 (2000.03.05) FMP ファイルの再生専用の FMPPLAY.X を make できるようにし た。 (2000.03.05) scsi_hard_soft_off にローカルラベルの記述ミスがあったので 修正。 (2000.03.05) データ変換モードで先頭のデータがモノラルならばデータ数に 関係なく -mono に切り換える。 (2000.03.05) データ変換モードで自動的に -mono に切り替えたとき FMP フ ァイルのヘッダがステレオのままになっていた不具合を修正。 (2000.03.05) データ変換モードで変換済みデータサイズの表示の改行位置が おかしかったので修正。 (2000.03.05) データ変換モードでワイルドカードを使用した場合の挙動がお かしかったので修正。 (2000.03.05) Mach-2 および mach2p を使用しているとローカルメモリ上で正 常に動作しない場合がある症状を回避するため、_S_INQUIRY,_S_MODESENSE, _S_MODESELECT,_S_REQUEST をすべて scsi_hard_soft_on〜scsi_hard_soft_off で挟んだ。 (2000.03.05) -? を指定すると無条件に使用法を表示する。 (2000.03.05) CDDA のトラック番号の指定が範囲外だったとき「トラック番号 の指定が異常」というエラーメッセージが出ていた不具合を修正。 (2000.03.05) trap14 のアボートメッセージが 2 回表示される不具合を修正。 (2000.03.08) 31250Hz でのステレオ再生実験。060turbo で 1/3 くらいの確 率で再生開始時にコケる。原因は不明。コケたときは、毎回異なる複数のチャン ネルが動作していないと思われる音が出る。個体によらず同じ症状が出るので、 再生開始直後の何かのタイミングに不確定要素が含まれているものと思われる。 コケなければ最後まで奇麗に再生できるので、安定させたい。 (2000.03.08) MFP のタイマ動作中のタイマデータレジスタへの書き込みはカ ウンタがオーバーフローしたときに反映されるが、この点が考慮されていなかっ たので一応修正した。音質などに変化はない模様。 (2000.03.11) PS2 のあるゲームのステレオの BGM データの再生に成功。 (2000.03.11) -h または -help を指定すると無条件に使用法を表示する。 (2000.03.11) キーを離したときの割り込み処理が重かったので修正。 ──────────────────────────────────── S44PLAY.X v1.03 (2005.12.15) (2005.11.17) データの再生が終わる前に次のデータを先読みしてデータ間の バッファ充填の時間を減らす。 (2005.11.17) 仮公開。 (2005.11.18) 最後のデータの再生を正常終了すると固まる不具合を修正。 (2005.11.18) Makefileの不備を修正。 (2005.11.18) 仮公開。 (2005.11.20) TABキーの動作を修正。 (2005.11.20) 仮公開。 (2005.12.15) ワイルドカードの終了処理が不完全だったので修正。 ──────────────────────────────────── 現在に至る。