こんにちは、川合です。
機種依存の駄目なアプリを突発的に作ったので紹介します。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/