.何か薄暗い地下鉄の階段を上ると宴会してて、 (う)の人からイチゴ酒なるよくわからんものを振る舞われたら轟沈、 気づくと見知らぬ裸の女の人の柔らかいものに手のひらを乗せてる、 という洒落になってない初夢。 .目が覚めると喉が痛い。風邪みたい。 あと、腰も痛い。腰はそろそろ病院行ったほうがよさそう…。 .ふらふらしながら家族と初詣。秋葉と浅草寺と神田明神。 神田明神は .石丸ソフト 1 で、再版期限切れ CD 3 枚買うと 20% 引きとかやってたので 3 枚買った:
.帰宅。 |
.ユーザランドを 2000.12.31 な -current に入れ換えた。 libc がまだ localemod 対応してないので、 iso-2022 とかが全部リンクされた libc を作った。 .んで、原稿書かなきゃいけないのだが、現実逃避にこんなものを書いてる途中: umidi0 at uhub0 port 1 configuration 1 interface 0: YAMAHA Corp. UX256 MIDI I/F, rev 1.00/1.00, addr 2 umidi0: (YAMAHA MIDI I/F class) umidi0: in=8, out=16困ったことに、UX256 は interface descriptor が broken なので、 うまく MIDI Jack 数が取れなかったりする。 もともと YAMAHA の MIDI I/F は仕様を見ても quirky で、 「一見 USB MIDI Device によく似てるのだが、実は結構違う」 ものだったりするし、 実際 class ID は Vendor specific になってたりするのだが、 そういうわけでなかなか厄介。 この辺の quirk をどう扱うのか、ちょいと悩ましい。 もっとも、USB MIDI も、かなり undefined なところが多くて、 仕様書読んでても、「こんな仕様で一般性のあるデバドラ書けるかいっ」 とか思うので悩ましい限りなのだが。 .まあ、とりあえず UX256 で動くもんを作って、 quirk の仕組みを作るんだろうな…。 |
.4.3BSD の黒い奴はもはや英語版も日本語版も見つかりませんけど (うちの会社には両方あるが)、 4.4BSD 本ならアキバいけば腐るほど売ってます。 |
.ますます逃避に拍車がかかっているらしいぞ: .つーわけで、MIDI IN はできてますな :D .インチキ臭いが、MIDI OUT もできてるぞ: hina% cat /dev/rmidi3 > /dev/rmidi4 & hexdump -C < /dev/rmidi5 ~ [1] 198 00000000 90 2d 1f 80 2d 40 90 2b 1e 80 2b 40 90 2d 2a 80 |.-..-@.+..+@.-*.| 00000010 2d 40 90 2f 21 80 2f 40 90 30 29 80 30 40 90 32 |-@./!./@.0).0@.2| 00000020 25 80 32 40 90 34 29 80 34 40 90 2d 2b 80 2d 40 |%.2@.4).4@.-+.-@| hina% .ちなみに、MIDI4(rmidi3)の in に Trinity つないで、 MIDI5(rmidi4)の out と MIDI6(rmidi5) の in をつないだ状態で 適当に鍵盤叩いたアルヨ。 |
.それは NetBSD の cmpci のリファレンスカードでござる :D 。 単にあのデバドラ書いた当時にヲレマシンに刺さってたってだけだが。 音が小さいのは、デフォルトのミキサー値を低めに設定してあるからかも。 mixerctl -w outputs.dac=255 とかするとよさげ。 |
.つーわけで活線挿抜にも対応。 最近の current に対するパッチ。 UX256 以外では動く保証はありません :D .TODO:
.…やっぱり「正しい」USB MIDI I/F 必要だな… |
.NetBSD では CMI8x38 の joy と MIDI は使えませんので念のため 。 たぶんデュアルブートしてて Win で joystick 使ってるという話だと思うが。 このへんは NetBSD のもつ美しいバスアーキテクチャゆえ、 実装自体は mpu/joy バックエンドへのバスインターフェース 用意するだけだから非常に簡単なのだが、 オレ使わんしテストもできんから実装してないのだ。 |
.それはちょっと誤解を生む表現のような 。 SEGA of America のスタッフの一人 (とはいえ「開発テクニカルサポート部門のマネージャ」なのでそれなりの 地位の人)が(非公式ながら)関心を寄せている、という話ですね。 .Game Console 向けの NetBSD のキラーポイントは、 「IPv6」と「BSD ライセンス」ですな。もう一つ。「SCE は Linux だ :-)」 |
.ところで、「普通の帽子」ってどういうのだろ。 私の家の前にある小学校では、 たしかナイトキャップみたいな形状(ただし布製)だったが。 もちろん覗いて見たわけじゃなくて、 「はるか昔の話」ですが :D |
.そうえば忘れていたが、 void 氏のそのページの 「HTML から xhtml への移行」はいまひとつ。 せっかくなら XHTML 1.0 の 「Appendix C. HTML Compatibility Guidelines」に触れてほしかったところ。 |
.あう、何か mew でメール出すと Date に 「(火) , 09 1 2001 18:36:16 +0900 (JST)」 とか入るので調べたら、XPG4DL のせいだった。 mew 的には system-time-locale を設定してるつもりになってるのだけれど、 少なくとも emacs-20.6 ではソース grep してもそんなものないぞ。 .そもそも LANG=ja_JP.eucJP とか設定してる時点で敗北なので、 LC_CTYPE=ja_JP.eucJP に修正。 |
.NetBSD の mididev はOSS のまねっこなんだが、 いろんな意味で今ひとつなんだな。 例の umidi デバイスの probe でも、midi0 から midi15 まで ボロボロと生えちゃうのはダサいから、 サブデバイスみたいなものがあったほうがいい。 それに、MIDI IN と MIDI OUT は別々にしたほうがいい。 .で、前者を解決するのはさほど難しくない。今は minor 8bit を フルに使って midi0 〜 midi255 まで用意できるようになってるけど、 これを 4bit+4bit に分割する。 で、デバイスノードは /dev/rmidi0.0, ... , /dev/rmidi0.15, /dev/rmidi1.0 ... とかしておいて、後方互換性のために、 /dev/rmidi? を /dev/rmidi?.0 へと symlink すればおっけー。 下位 4bit をメインデバイス番号、上位をサブデバイス番号にしておいて、 従来の midibus のインターフェース(midi_attach_mi) で attach された場合は /dev/rmidi?.0 に 振るようにすれば、現在使用中の MIDI デバイスが 16 個までなら MAKEDEV しなおす必要も、mpu その他のデバドラを変更する必要もない。 もちろん、umidi みたいな潜在的なマルチポート MIDI デバイスへは、 あたらしい MI attach ルーチン(たとえば midi_attach_mi_multiport ?)を 用意する。 .問題は後者だな。私としては、新しいメジャーデバイス作って しきりなおすべきだと思う。minor を 4+3+1 に分割して、 /dev/midiin0.0 ... /dev/midi0.16, ... /dev/midiout0.0 ... /dev/midiout0.16 なんてする。で、従来の OSS ドライバのために、 muxmidi デバイスと muxmidictl コマンドを用意して、 任意の midiin と midiout の組み合わせを任意の /dev/rmidi?.? へと振れるようにするわけね。 .この辺のアイディアは Jigoku 氏の助言も大きい。感謝。 原稿書きおわったら取り掛かってみよう。 .ただ、個人的には、NetBSD パッチベイ化計画が最終的な野望なんだよな。 loopback mididev とか作って userland で処理できるようにすると、 ソフトウェア MIDI アプリでも使えてうれしいかもしれない。 .補足。8bit なのは major でした。minor は 8+12 = 20bit 。 従ってはるかに余裕がある。なお、今の mididev は 8bit しかデコードしてない。 12bit でやりくりすれば、新しく major number を割り当てる必要もないかな。 .ああん、さらにボケボケ。major は 12bit やんけ。 |
.日本語にはさほど違和感は感じなかったが 、 クリッカブルマップのリンク先のファイル名が maruch3.html なのに脱力。 maruch って…。ドイツ語風に「まるひ」とか。 |