■注意事項 本ドキュメント記載のデータ等を使用した結果、いかなる不利益が発生しても当方は その責は負わない。各自の責任において利用すること。また、メーカーや店舗に問い 合わせることも禁止する。 ■『おけこん』制御方法 『おけこん』の制御用コマンドは、1 バイトの制御コード、2 バイトの ID コードに 続き、任意長(1 から 13 バイト)のデータ列から成る。つまり、コマンド列の最短は 4 バイト、最長は 16 バイトとなる。 ID コードは接続機器によって異なる固有値である。家電製品では混信を避けるため (同会社のビデオデッキを複数台並べている場合等) 2〜3 個の ID を切り替えられる ものもあるが、通信カラオケ機器は基本的には密室に 1 台だけで使われるためか、 特に切り替えられるようにはなっていないのが一般的だ。 ○制御コード コマンド列の先頭 1 バイトは制御コードであり、上位 4 ビットで送信形式(機種)を 指定し、下位 4 ビットで後続のデータ列の長さ(ID コード部分を含み、制御コード 自身は含まない, 0 は禁止)を指定する。 ・上位 4 ビット: 赤外線送信形式(機種) コード| T 幅 | 連続送信間隔| 機種例 ------+----------+------+------+---------------------------------------- 0x1 | 562.5μs | 高速 | 88T | GIGA, セガカラ, DAM, Σシステム, B-kara 0x2 | 530.0μs | 中速 | 384T | BeMAX's(T) 0x3 | 562.5μs | 中速 | 384T | X2000, U-kara, Mac21, ALISA3, (他多数) 0x4 | 530.0μs | 低速 | 0.5s | JOYSOUND, カラオケの鉄人 0x5 | 562.5μs | 低速 | 0.5s | - 0x7 | 562.5μs |超高速| T+2T | U-kara2 0x6 | 530.0μs | Victor方式 | 孫悟空, Syncom その他| (reserved) | - ○ハードウェア種別による違い ・RS-232C 版 PC と『おけこん』との接続は 9600bps, 8bit, Non-parity, CTS/RTS flow とする。 実際には『おけこん』から PC へはデータが送出されることはなく、PC からの下り 一方通行であり、フロー制御も厳密なものではない。 『おけこん』は、消費電源削減のため待機時はスリープモードに入っている関係上、 コマンド発行に先だってスリープモードから起こす必要がある。RS-232C の TXD (PC からの送信データ)の動きを検知するとスリープモードから抜けるようになっている が、スリープモードに入っているか否かは PC からは検知できないため、ここで使用 できるダミーコードは 0x80 に限られる(コマンドとしては無効で、かつ下位ビット から順に見て 0→1 遷移のみのデータ)。なお、スリープモードからの復帰にはやや 時間がかかる(50ms 程度の待ち時間が必要)ので注意。 電源を RS-232C の信号線から確保しているため、使用時はまず DTR をアクティブに し、内部のコンデンサを充電する必要がある(条件にもよるが、最大で数十秒程度)。 その後、充電完了を示す CTS がアクティブになるまでは『おけこん』はコマンドを 受け付けない。また、赤外線送出時には充電したエネルギーを放出してしまうため、 コンデンサの再充電が必要になる。初回起動時と同様、充電完了(CTS がアクティブ になるの)を待ってから次のコマンドを発行すること。 なお、充電中は『おけこん』内部の電源電圧が安定せずに制御チップが暴走すること があるので、コマンド送出直前に制御チップをリセットすることを推奨する。RTS が 制御チップのリセット入力に繋がっており、RTS をインアクティブにするとリセット がかかるようになっている。 ・USB 版 規格的には USB 1.1 の Low-speed デバイス(1.5Mbps)である。HID(Human Interface Device)クラスとして扱われるため、HID クラスを実装している OS (最近の FreeBSD や Windows 等)では特別なデバイスドライバ等は不要で、全てアプリケーション側の 処理として実装できる。詳細については、別途文献を参照のこと。 USB の規格より、Low-speed デバイスにおいては 1 パケットは最大 8 バイトである ので、その制限を超えるものは分割して転送する必要がある。分割されたパケットの 前半・後半を識別する方法はないので、必ず連続して送信すること。 『おけこん』から PC への転送は、USB のプロトコル的に最低限必要なもの(ACK/NAK パケットや、Descriptor を返すもの)以外には存在しない。 なお、Vendor ID および Product ID は、(資)モルフィー企画より割り当てを頂きま した。 ■機種ごとのデータ構成 通信カラオケ各メーカーごとのデータ列の詳細を示す。これらの情報は当方が独自に 収集したものであり、内容については間違い無きよう努力はするが、保証はしない。 ・対応システム一覧 rcctl 送信方式 システム名称 略号 T 幅 速度 ID(hex) 備考 東映 BeMAX'S B 530.0, 中速 AC,53 JHC, BMB 版は未確認 DAM D 562.5, 高速 D1,2D GIGA G 562.5, 高速 84,10 JOYSOUND J 530.0, 低速 81,16 →HyperJOY 以降 H 530.0, 中速 81,16 JOYSOUND 互換でも問題無し B-kara K 530.0, 高速 2E,D1 NET7000 N 562.5, 中速 84,05 Prologue21(セガカラ) P 562.5, 高速 81,B0 孫悟空/Syncom S 530.0,Victor C3 U-kara U 562.5, 中速 98,67 →U-kara2 以降 U2 562.5,超高速 98,67 U-kara との互換性無し X2000 X 562.5, 中速 2E,D1 ALISA III A,L,Z 562.5, 中速 87,56 シーケンスにより細分化 Σシステム C 562.5, 高速 55,AA カラオケの鉄人 I 530.0, 低速 AE,51 独自本タイプのみ? Mac21 M 562.5, 中速 80,00 TOEI system T 562.5, 中速 00,FF ・キーコード表 リモコンの数字キーや各種制御キーのデータのバイトデータへの変換は、以下に示す キーコード表によって行なわれる。本表は 16 進数表記であり、- の場合は対応する 機能が存在しないことを示す。 0 1 2 3 4 5 6 7 8 9 A B SE KU KD SP ST CL 80 81 82 83 84 85 86 87 88 89 - - 9d cc ca 96 dc 9a BeMAX's 30 31 32 33 34 35 36 37 38 39 3a 3b 09 04 05 00 01 07 DAM f0 60 70 80 90 a0 b0 c0 d0 e0 - - - 04 05 0f 01 - GIGA 00 07 0a 58 03 06 50 01 0e 5d - - 1f 54 0b 1d 5c 1c JOYSOUND/HyperJOY 40 41 42 43 44 45 46 47 48 49 - - 4c 35 33 4f 4e 4d B-kara 1c 10 11 12 14 15 16 18 19 1a - - 0f 0e 0c 07 - 1e NET7000 00 08 04 0c 02 0a 06 0e 01 09 - - 33 d3 b3 93 13 - Prologue21 0f 06 07 08 09 0a 0b 0c 0d 0e - - 05 2c 2d 04 c7 02 孫悟空/Syncom 09 00 01 02 03 04 05 06 07 08 - - 0c 13 12 0f 0e 0d U-kara/U-kara2 13 10 14 18 11 15 19 12 16 1a - - 17 02 03 0c 1c 0d X2000 0d 04 05 06 07 08 09 0a 0b 0c 0e 0f 12 43 47 11 - 42 ALISA III 13 0f 4f 4e 07 47 46 03 43 42 53 52 3e 08 09 5c - - Σシステム 80 81 82 83 84 85 86 87 88 89 da db dc 03 02 96 - dd カラオケの鉄人 00 0c 0d 0e 08 09 0a 04 05 06 01 02 03 18 14 1e - 07 Mac21 13 0f 4f 4e 07 47 46 03 43 42 53 52 41 08 09 4c 45 44 TOEI system 表中の略号は、次の通り。メーカーにより一部表記が異なる場合がある。 SE: セット (メーカーにより「曲送信」「スタート」等) KU: キーアップ KD: キーダウン SP: ストップ (演奏停止) ST: スタート (メーカーにより「歌い直し」等) CL: クリア (未セットの入力バッファの取り消し) 説明文中、''で囲まれた数字や文字列はリモコンのボタン名称を表わし、0xFF のような 16 進値は送出されるコードのバイトを表わす。 ○データ送出シーケンス 一般的に曲番号は複数桁からなり、曲番号の後ろに'SET'を付加するなど、その転送 シーケンスはメーカーによって異なる。 ただし、ストップ・クリアなど、単発で機能するキーについては一部の例外を除き、 そのコードのみを送出する。例外は B-kara と U-kara2 であり、曲番号の送出時と 同様、当該キーコードの前に 0xf0、後に 0xf7 を付加した計 3 バイトを送出する。 以下、各メーカーそれぞれのパターンについて説明する。 ・基本パターン 単純に曲番号を上位桁から順に送った後、'SET'を送出する。 次項以降で示すメーカー別パターンに該当しない、BeMAX's/JOYSOUND(HyperJOY を 含む)/NET7000/孫悟空/Syncom が採用。 ・DAM 以下の通り、9 バイト固定のコードを送出。 1 バイト目: 0x08 (コード名称不明) 2〜5 バイト目: 曲番号の'-'より前の数字部(右寄せ, 上位桁は'0'詰め) 6 バイト目: 0x3c ('-') 7〜8 バイト目: 曲番号の'-'より後の数字部(右寄せ, 上位桁は'0'詰め) 9 バイト目: 0x09 ('SET') ・GIGA 基本パターンと同様、単純に曲番号を上位桁から順に送るだけだが、曲番号の桁数が 6 桁に満たない場合、後ろに'0'を詰める(つまり、左寄せ)。数字が 6 桁揃った時点 で自動的に入力完了と見做されるので、'SET'に対応するコードは存在しない。 ・B-kara 以下の通り、10 バイト固定のコードを送出。 1 バイト目: 0xf0 (コード名称不明) 2〜5 バイト目: 曲番号の'-'より前の数字部(右寄せ, 上位桁は'0'詰め) 6 バイト目: 0x3d ('-') 7〜8 バイト目: 曲番号の'-'より後の数字部(右寄せ, 上位桁は'0'詰め) 9 バイト目: 0x09 ('SET') 10 バイト目: 0xf7 (コード名称不明) ・Prologue21 (セガカラ) 最大 6 桁の曲番号は 3 バイトにパックされて送られ、その 3 バイトに続いて'SET' を送出する。曲番号のパックは、6 桁分の曲番号(桁数不足の場合は右寄せ, 上位は '0'詰め)をキーコード表で変換した下位 4 ビットを、先頭バイトから上位、下位の 順に埋めて行なう。 ちなみに、各ビットのビット送信順を、他メーカーとは逆に MSB first だと考える と、曲番号部分は、いわゆる「packed BCD 形式」だと説明できる。 ・U-kara 初代 U-kara は基本パターンの通りであるが、U-kara2 以降では、そのシーケンスの 前に 0xf0 を、後ろに 0xf7 を付け加える。なお、初代 U-kara と U-kara2 以降の 機種との互換性はない(ID やコード表は共通)。 ・X2000 基本パターンに類似しているが、純正リモコンの操作と同様、曲番号の'-'より前の 数字部を順に送った後に一旦'SET'を送出し、続けて残り 2 桁を送出後、再度'SET' を送出する。 ・ALISA III メーカーの指定方法は店舗により 3 種類の存在が確認されている。便宜的に A,L,Z と呼称し(rcctl コマンドでの機種指定略号と同じ)して、そのパターンを列挙する。 なお、以下の解説中の'SET'は、純正リモコンでは'スタート'と表記されている。 A) 曲番号 → 'SET'or'オプション#(1〜4)' 独自番号を採用している店舗等で確認。最大 5 機種の統合。 L) メーカー番号('0'〜'9') → 'メーカー' → 曲番号 → 'SET' 統合機種数の多い店舗等で確認。最大 10 機種の統合。 Z) 'オプション#(1〜4)' → 曲番号 → 'SET' 新宿ゼニス等で確認。最大 4 機種の統合。 ※上記パターンが複合した店舗もあるらしいので注意。 なお、ALISA III 独自のキーコード番号は以下の通り。 メーカー: 0x10 オプション1: 0x13 オプション2: 0x14 オプション3: 0x15 オプション4: 0x16 ・Σシステム 以下の通り、10 バイト固定のコードを送出。 1〜2 バイト目: メーカー指定(通常は'00') 3〜6 バイト目: 曲番号の'-'/'A'/'B'より前の数字部(右寄せ, 上位桁は'0'詰め) 7 バイト目: '-'(0x51)or'A'or'B' 8〜9 バイト目: 曲番号の'-'/'A'/'B'より後の数字部(右寄せ, 上位桁は'0'詰め) 10 バイト目: 0x3e ('SET') メーカー指定は、通常'00'で使用(独自本の曲番号)。それ以外の数値については店舗 依存(設定次第)となる。 曲番号の右から 3 文字目に'A'/'B'も'-'も入らない形式の場合でも、7 バイト目は 必ず'-'となる。その場合、数字部は 7 バイト目を跨いで(数字部を計 6 桁とみなし て)右寄せして送出される。 ・カラオケの鉄人 最初にメーカー指定コードを送出後、以降は基本パターンに従って曲番号、'SET'の 順に送出。メーカー指定番号は以下の通り(上段がメーカー番号、下段がコード)。 0 1 2 3 4 5 6 7 8 9 d5 d6 d7 d8 d9 de d0 d1 d2 d3 なお、メーカーに X2000 を指定して送信する場合は、X2000 純正リモコンの操作と 同様、曲番号の途中の'-'ところで一旦'SET'を送信する。 ・Mac21 先頭に'リクエスト1'(コード 0x10)を送出後、以降は基本パターンに従って曲番号、 'SET'の順に送出(独自本タイプの場合)。 独自本(独自曲番号)でないタイプも存在するそうだが、詳細は不明。 ・TOEI system 最初にメーカー指定コードを送出後、以降は基本パターンに従って曲番号、'SET'の 順に送出。メーカー指定番号は以下の通り(上段がメーカー番号、下段がコード)。 1 2 3 4 5 6 7 8 00 04 0c 10 01 05 0d 11 ■送信波形の詳細 赤外線は約 38kHz で変調して出力し、その ON/OFF のデューティにより各ビットの 1/0 を表わす。基準時間(T 幅)は 530μs または 562.5μs であり(制御コードの項 参照)、ビットのデータが'0'のときは 1T 幅の ON 期間の後に 1T 幅の OFF 期間、 '1'のときは同じく 1T 幅の ON 期間の後に 3T 幅の OFF 期間を持った赤外線信号と なる。受信側では ON と ON の間隔を見て 1/0 を判断することになっている。 基本的に、各ビットは LSB first (時間経過と共にビット 0,1,2,... の順)で送信さ れる。送信データの各バイトごと(リモコンのボタン押下 1 回分に相当)に、前部に リーダ・ID コード、後部にトレーラが付加されたものを、送信データのバイト数分 だけ繰り返す。この繰り返しの間隔は、機種によって異なる(制御コードの項参照)。 早過ぎると受信側でデータを取りこぼすことがあるので注意。逆に遅過ぎる場合には 問題がないことが多いが、タイムアウトでエラーとなる場合もある。 ○ほとんどの機種(NEC フォーマット) ・タイミング図 - 下から 2 行目が、赤外線の ON/OFF のパターン('#':ON, '_':OFF)を示す。 - leader: 16T の連続発光と、それに続く 8T の休止 - trailer: 1T の発光と、指定された長さの休止 - ID-L: ID コードの第 1 バイト - ID-H: ID コードの第 2 バイト - code: 送信データ - cRev: code をビット反転(1's compliment)したもの - 受信側では code と cRev を比較して受信エラーを検出している <----------------- 1 button -------------------><----------------- | leader |ID-L|ID-H|code|cRev| trailer | leader |ID-L| +----------+----+----+----+----+--------- - - - +----------+----+- | |8bit|8bit|8bit|8bit| | |8bit| | \ \ | \ | +--------+ +------+ | +---- | \ \ | ################________#___#_#_#___#_....#_..._################__ <------16T-----><--8T--> 1 0 0 1 <間隔><------16T-----><- [memo] code と cRev の合計(16 ビット)で考えると、ビットの 1 の個数と 0 の 個数は共に 8 個なので、その送信に必要な時間は、送信されるデータによらず 48T で一定となる。ID-L と ID-H の合計についても、ビットの 1/0 の個数が 等しいものが多いようだが、必ずしもそうなっているわけではない。 ○孫悟空/Syncom(Victor フォーマット) ・タイミング図 - ID は 8bit のみであり、コマンド列中の ID の 2 バイト目は使用されない - 1 回の送出につき、ID・データは 2 回繰り返して送られる(反転はされない) <---------------------- 1 button ------------------><------------- <--------------112T------------><---------88T-------><------------ | leader | ID |code| trailer1 | ID |code| trailer2 | leader | ID +----------+----+----+----------+----+----+----------+--------+--- | |8bit|8bit| |8bit|8bit| | | | \ +----+ \ \ | \ | +--------+ \ +-----+ \ | +- | \ +------\ \ \ | ################________#___#_#_....#_..._#_..#__..._############# <-----16T------><--8T--> 1 0 STOP STOP <-----16T---- $Id: TECHNOTE.txt,v 1.2 2002/12/16 09:39:11 tosy Exp $