こんにちは、川合です。 機種依存の駄目なアプリを突発的に作ったので紹介します。AT互換機 専用です。 その名もplaycd0aなんですが、これは要するにATAPIのCD-ROMドライ ブを使って、音楽再生をやってみようという、それだけのものです。ベ ータリリースです。ベータリリースならではの危険さもあると思うので そのへんはご注意を。 [はじめに] 今回は試作版で、いろいろ不便だったり不自然だったりするところが あります。まずは操作のしやすさよりも、どのくらいのハードウェアに 対応できているか確認しないとどうしようもないと思ったので、こんな 状態でもリリースしているわけです。 なお、サウンドカードを制御していないので、音が出ません。CD-ROM の前面にイヤホン端子があると思います。そこにイヤホンを付けて、つ いでに音量もそこでいじって、聴いてください。イヤホン端子がないド ライブを使っている場合は「ひょっとしたら」サウンドカードの設定が うまくいっていて音が出るかもしれないことに期待してみるか、もしく はいさぎよくあきらめてください。 CD/DVD兼用ドライブではどうなるかさっぱりわかりません。最悪の場 合ドライブが壊れるかもしれない覚悟でやってください(まあ壊れない とは思いますが)。チャンレンジした場合は、結果がどうあれ、ドライ ブのメーカと正式な型番を報告するのを忘れずに(笑)。 [守らなければいけないこと] まず、このアプリはdrvata状態で利用してはいけません。もしdrvata したくなったら、音楽演奏をstopで停止させてCD-ROMアクセスをやめさ せて、その上でこのアプリを終了し、それからdrvataしてください。OS ASK本体は、まさかATA/ATAPIバスをアプリが使うなんて想像もしていま せんし、アプリ側もシステムが設定を途中で勝手にいじってくるなんて 想定していないのです。同じ理由で、このアプリの複数起動もやめまし ょう。 drvfdやdrvcfの状態で、このアプリを起動してください。 後述のdrvコマンドで、ATA-HDDのあるデバイスを選択してはいけませ ん。 [概要] アプリを起動すると、コンソールっぽい画面&画面下部にステータス 欄がでます。ステータス欄は今のところ十分には機能していないのです が、まあ参考にはなります。コンソールにコマンドを打ち込んで、CDを 制御します。終了はウィンドウを閉じてください。 [コマンド] ・drv : ATAPIのCD-ROMデバイスのありかをアプリに教えます。 パラメータが必要で、0〜3が指定できます。 0 : プライマリのマスタ。 1 : プライマリのスレーブ。 2 : セカンダリのマスタ。 3 : セカンダリのスレーブ。 一般的に言って、0にはATA-HDDが付いているでしょう。だから、0 を指定してはいけません。他のドライブにもCD-ROM以外がくっついて いるのなら、それは絶対に選んではいけません。何もつながっていな い部分を誤って選んでしまうのはOKです。もしこのコマンドがATAPI デバイスを無事に見付けると、ステータスが「no-disc」に変わりま す。再生可能なCDが既に入っていれば、「ready」になるでしょう。 ・list : プレイリスト一覧を表示します。 パラメータはいりません。全部の曲の情報が出ます。 例:01 [--a2] 12:34 この最初の部分はトラック番号で、最後は演奏時間です。なお演奏 時間は本来のものよりも0〜5秒ほど長く検出されます。さらに最後の 曲の演奏時間は本来のものよりもかなり長いです。 これはですね、まだ正確な曲の長さを獲得する方法が分からなくて 次の曲の開始位置から逆算するという方法をとっているからです。も っと研究しないと分かりません。 [〜]の部分は左からこんな意味です。 -/e : eだったら、pre-emphasisあり (要するにエフェクトがかかっているという意味です) -/c : cだったらデジタルコピー許可 a/d : aならオーディオトラック、dならデジタルトラック (デジタルトラックを再生してはいけませんよ) 2/4 : 2chオーディオ/4chオーディオ ・play : 通常演奏します。 指定した曲からCDの最後までを演奏します。演奏中にステータスを 刻々と変化させて、どのトラックのどこを演奏しているか表示しよう と思っていたのですが、まだそこまでできていません。演奏が終わっ ても、「playing」のままです。内部ではつじつまが合っているので これは「ready」だと思ってください。 演奏中に(=stopしないで)playコマンドを実行しても問題はない ようです(ドライブによるかもしれませんが)。 ステータスが「pause」の時に限って、パラメータ無しのplayが実 行できます。これは演奏再開ですね。なお、表示が「pause」であっ ても、たとえばCDを入れ替えるとかをすると、内部のステータスは「 no-disc」や「ready」に変化します。だからパラメータ無しのplayは できなくなります。当然ですね。 ・sply : 1曲だけ演奏します。 指定した曲だけを演奏します。それ以外はplayと同じです。なお、 パラメータなしのsplyはありません。stopで止めた演奏の再開は、常 にplayコマンドでやってください。 ・stop : 演奏を中断します。 パラメータはいりません。演奏が止まります。アプリを終了すると きやマシンを再起動するときは、是非stopしてください。CD-ROMを交 換するときもstopしてください。もちろん、表示が「playing」でも 演奏が終わって終了しているのならわざわざstopさせる必要は全くあ りません。演奏再開はパラメータ無しのplayです。 ・help : コマンド一覧表示 コマンドが多すぎて覚えられなくなったので、つけました。 [ステータス] ・no-drive : drvコマンドでATAPIデバイスの指定がされるのを待って いる状態。このときはdrvコマンドとhelpコマンドしか使えない。 ・no-disc : ドライブを見つけたが、CDが入っていない状態。CDさえ 入れれば、listやplay、splyなども利用可能。 ・no-list : CDが入っていることは確認したが、プレイリストが取得 できていない状態。この状態でもlistやplay、splyなどは利用可能 。もちろん、がんばってもリストが取得できなければ、エラーにな る。プログラムの改良が進んだため、このno-list表示がでること は滅多にないと思われる。 ・ready : プレイリストも取得できて、準備完了。 ・playing : 演奏中。演奏が終わってもplayingのままだったりする。 ・pause : stopで演奏を一時中断している状態。 [さいごに] ということで、トラブルが起きても自分で解決できる人は、好きなよ うに遊んでみてください。安全対策は結構やっているつもりですが、そ れでも実験を通過したのはうちのCD-ROMドライブだけです。ATAPIのCD- ROMはかなり個体差があるらしいので、常にある程度は警戒して、そな えを十分にしてチャンレンジして楽しんでください。 このアプリですが、ベータテストがすすんで安定するようになったら 、もうちょっとだけ機能を増やして(ステータスのリアルタイム取得& CDのID取得など)、ドライブコントロール関数の使い方のドキュメント をつけたいと思っています。そしてあとはやりたい人がかっこよくて使 いやすいCDプレイヤアプリを作る、という展開を考えています。 それでは。 -- 川合 秀実(KAWAI Hidemi) OSASK計画代表 / システム設計開発担当 E-mail:kawai !Atmark! imasy.org Homepage http://www.imasy.org/~kawai/