[OSASK 6369] playcd0a.

  こんにちは、川合です。

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



ML番号でジャンプ
ML単語検索