2007/05/29(火)進化し続ける春M

2007/05/29 18:00 PC(全般)
http://homepage3.nifty.com/k-takata/mysoft/springm.html
フォーカスが移るとファイル選択が外れる挙動は、春Mの仕様とあきらめていたけど解決したらなんと便利な! もう足を向けて眠れませんな。

個人的にはFindのひどいワイルドカードの実装が解決されれば(あるいはFind->Markとか正規表現とか)、あと20年は使えます(笑)。

2007/05/29(火)cygwinがらみの削除できないファイル

2007/05/29 17:53 PC(全般)
cygwinフォルダのlnkの削除方法に関して。

起動ドライブ変更後に旧ドライブのcygwinフォルダが消せなくなった。どうやら、.lnkファイルで引っかかっているようだ。

消そうとすると、

「ファイルまたはフォルダの削除エラー」ダイアログが表示され、


hogehogeを削除できません。アクセスできません。

ディスクがいっぱいでないか、書き込み禁止になっていないか、

またはファイルが使用中でないか確認してください。


というメッセージが表示される。

さて、原因はよくわからなかったが対処方法は発見した。

リンクがあるフォルダのプロパティを開き、セキュリティタブから、

詳細設定->所有者->所有者の変更->サブコンテナとオブジェクトの所有者を置き換えるにチェック->OK->OKで一度プロパティを閉じる。
もう一度、セキュリティタブから、

(*)詳細設定->アクセス許可->「子オブジェクトに適用するアクセス許可エントリを親から継承し、それらをここで明示的に定義されているものに含める」のチェックを「外す」->ダイアログが出たら「コピー」を選択
詳細設定->アクセス許可->「子オブジェクトすべてのアクセス許可エントリを、ここに表示されているエントリで子オブジェクトに適用するもで置換する」にチェック


  • >適用->OK->OKでプロパティを閉じる


これでフォルダ側にアクセス権を持っていれば、このショートカットも削除できるようになる。

セキュリティタブがない場合は、

エクスプローラ->フォルダオプション->簡易ファイルの共有を使用するのチェックを外す。
なお上記すべてWinXP Proの場合。

うーんWindowsのショートカットの実装がどうなってるかなんて考えたことなかった。相対リンクじゃないときにドライブレターが変わったところで、アクセスできないなんて馬鹿な話はないだろうし、となるとcygwinが結構特殊な方法でlnkを作ってるんじゃないだろうか。あるいは私が所有権やWindows Administratorのファイル管理権限についてあまり理解してないのか。

それにしてもオプション項目の日本語が細かいとこにいくにつれおかしくなってくるなあ。

(*)このステップは不要かも

2007/05/28(月)PCastTV2の衛星放送に関するiEPG情報

我が家ではマンション上部のコンバータによってUHF帯に衛星放送が流れてきているという特殊な事情がある。従って、特別なチューナーなしにUHF対応のアナログキャプチャボードで衛星放送が見られたりする。

さて、PC-MV5DX/PCIというキャプチャボードを愛用しているのだが、これの視聴ソフトPCastTV2が、EPGで衛星放送を扱えるようにできていない。PCastTV2はBuffaloブランドのキャプチャ製品共通のソフトであるが、対応機器に衛星チューナー搭載のものがないのが原因である。

そこで今回のミッションは、なんとかしてPCastTV2でUHF33,35チャンネルをNHK BS1,BS2のEPG情報に割り当て、GUIや録画ファイル名に反映させて幸せになるというもの。

[1]PcastTV2のインストール

そもそもPCastTV2はPC-MV5DX/PCIにインストールできるようになっていない。しかし動いてしまえばMV5DXに対応しているようである。従って、インストール時にレジストリをいじってやる。
[HKLM\SYSTEM\ControlSet*(使っているコントロールセット)\Control\DeviceClasses\{65E8773D-8F56-11D0-A3B9-00A0C9223196}##?#PCI#VEN_14F1&DEV_8800&SUBSYS_051E1154&REV_05#4&CF81C54&0&10F0#{65e8773d-8f56-11d0-a3b9-00a0c9223196}#GLOBAL\Device Parameters

]の値
BUFFALO PC-MV5DX/PCI Video Capture



BUFFALO PC-MV52DX/PCI Video Capture

に書き換え、PCastTV2をインストール。
インストール後、文字列を元に戻しPCastTV2を起動。

このままだとPCastTV2がMV5DXを認識していない場合があるので、その場合はPCastTVを立ち上げる必要がある。

さらに録画しても容量0のファイルができる場合はドライバをインストールし直す。ここまでやればたぶんOK。

[2]pcast_iepgloc.datの設定

受信するEPG情報を決めているファイルは、

C:\PROGRAM FILES\BUFFALO\PCastTV_2\EPG\pcast_iepgloc.dat

である(標準のインストール先の場合)。
このファイル中の受信放送エリアの行は、



Lct=東京(東京)

7001=NHK総合<001>,7002=NHK教育<003>, ...



となっている。自分の受信エリアのLctを探し、その下の行を書き換える。

=の前の4桁の数字は、SO-NET TV王国

http://www.so-net.ne.jp/tv/bangumi/

中の放送局コード。
PCastTV2はEPG情報をここ決めうちでダウンロードしているようだ(EPGサイト設定できるけど、リンククリックしたときに開くだけっぽい)。

上記サイトで地域選び、番組表から番組名をクリックしアドレスをみたときに、?st_cd=となっている部分が放送局コードになる。
放送局名はTV王国にあわせる。<>は自分が設定したチャンネル。たとえば、9002=NHK衛星第2<035>と追記してやると、衛星第2の情報がダウンロードされ、PCastTV2のGUIに衛星第2の列が追加される。
[3]でも番組名が出てこないんですが・・・・・・

列が追加され、情報もダウンロードしているのに、なぜか番組タイトルが表示されない。どういうこっちゃ!? と思って調べた。
ダウンロードしたEPG情報は、

C:\PROGRAM FILES\BUFFALO\PCastTV_2\EPG

内の

SEPG.txt(は日付)

に記録される。これがTV王国が提供してる生データか、PCastがパースし直したものかは謎だが、それをさらに加工して表示用のデータ、

EEPG.txt(は日付)

に直している。
調べてみると、先の例でいう衛星第2=放送局コード9002の番組はSEPGの方には記録されているが、EEPGには記録されていない。そこで放送局コードの数字をいじって、PCastがどういう挙動をしているのか確認してみた。放送局リストみたいなものを持っていて、一致しないものを捨てているのかと思いきや、シンプルに、

放送局コードが、

・8999以下->通し

・9000以上->捨て
という挙動であるようだ(8999と9000の境界以外は適当にしか確認していない)。

TV王国のサイトを眺めてみると、9000以上はWOWOWやNHK衛星にしか使われていないようで、地上派オンリーだからそれでいいということらしい。

となってくるとこの判定部分を探せばいいということになる。ついにOllyDbgの出番が来た、それ解析解析~と・・・・・・思ったのだが、使用許諾確認したら逆アセンブル、書き換え禁止となっている。とはいえしゃくに障るので、バイナリ読むのだったら問題ないと考え、それらしい名前のCEpgDll.dllをバイナリエディタで開いてみた。

さて、一文字目を検査して8,9の場合分けだと探しづらい。この際、このコードを書いた人間が一番単純にやっていると考えて、パースしたあと、atoiで数値変換->比較という流れであると想定。

ねらいが正しければ、8999(0x2327)か9000(0x2328)がどこかに見つかるはず。

・・・・・・1カ所あった、28230000が(リトルエンディアン)。あれその前が、0x3Dになってる。3Dってたしか・・・

C・M・P

ここでほぼ確定。アドレス0x2C32からの、3D 28 23 00 00の部分をいじってやればいいっぽい。たとえば、9999(=3D F0 27 00 00)とかに。とはいえ使用許諾があるので書き換えはできないわけで。

Buffalo様何とかしてください。

2007/05/23(水)imgburnが凄い

2007/05/23 8:08 PC(全般)
フリーのライティングソフトではダントツで日本語の扱いが自由。

特にUDFオンリーにしたときが強く、UDFの規格ギリギリまで使える感じ。

2.3.2.0を軽く試してみたが、

,を含むファイル名:○

「ポ」「ソ」などSJISで引っかかりやすいファイル名:○

日本語ボリュームラベル:○(127byteくらいまでは確実)

ベリファイ機能:○
インターフェースがちょっと分かりづらいが、マスタリングも出来るしダイレクトに焼けるし動作も軽快。

今のところダメなのが、

・255文字のファイル名が127文字に切りつめられる
といった点。ただこれは「ファイル名」であって「パスの合計長」でないので大して問題にならないだろう。またbyteではなく文字数であるので日本語を含めばより安全になる(切りつめられる可能性が下がる)。

個人的にはWinCDRは,を含むファイル名がダメなのでフォルダのバックアップにはこっちを使っていこうかと思っている。Unicodeがらみで著しく怪しいファイル名なんかもImgBunnだとイメージ作れたりしてすばらしい(いいこと?)。Windows上のファイルをそのままメディアにバックアップするということでは最もファイル名を維持して焼けるソフトなんじゃないかな。

2007/05/23(水)RADEON系デュアルディスプレイ

2007/05/23 7:40 PC(全般)
インターフェースが分かりづらかったのでメモ。

RADEON+WinXPのデフォルトでは、

http://homepage3.nifty.com/amachi/md/guide/desktop.html

にあるような拡張(マルチ)デスクトップになる。
これをビッグやクローンにするときのやり方が分からなくて悩んでいたのだがやっとやり方が分かった。

Catalyst Control Centerのディスプレイマネージャからデスクトップ2のモニタ部分を「右クリック」することでクローンやビッグ(水平方向の拡張)に出来るらしい。止めてくれ右クリックしかインターフェース。

さてどれが使い易いか考えてみたが、拡張デスクトップだとオーバーレイを切れない動画で問題が出る。しかし、ビッグだと全画面表示が2画面一杯になってしまってこれはこれでめげる。まあ今の我が家の構成(ディスプレイのサイズが違う)ではとりあえず拡張かな。

その他、ソフト=maxivista(http://www.vector.co.jp/magazine/softnews/040904/n0409043.html)やUSB経由でデュアルディスプレイを構築出来たり=サインはVGA(http://plusd.itmedia.co.jp/pcupdate/articles/0406/22/news100.html)と今は色々できんだねえ。

2007/05/18(金)ACDIRあれこれ

2007/05/17 24:06 PC(全般)
全壊の設定ではいくつかエラーが出るときがあるので再考。

調べてみると文字化けがらみが原因らしい。

エンコードファイル名が化けるのは大した問題ではないのだが、エンコードできていないことがあるのがまずかった。ということで、エンコードで失敗する事例を中心に解決法を確定。原因は!,<などのWindows不正文字が使われているトラック名からファイル名を算出しているパターンと、ジャンルがID3v1の規定リストになかったのが原因らしい。

[文字化け問題]

SJISでは毎度のことだがACDIRでは「ソ」や「ポ」を含むファイル・ディレクトリ名で問題が出る。またcueシート上の名前からファイル名を算出する場合、",!等の不正文字問題が出る。
不正文字対策はACDIRの変数につける~を上手く使う。

文字化けは、EACでも同じだし気にしないのがベスト。タグが正確なら、Super Tag Editorとかで一括して修正した方がよい。出来うる限りRubyで処理すれば軽減することは出来るが、やりすぎるとcueシートを解析するソフトを自作する羽目になる。本末転倒もいいところ。

[ID3タグに関して]

これはlameの問題だが、lameでエンコードする際にコマンドラインオプションでジャンルを指定すると、オプションに関わらず(ID3v2タグのみを付けるようにしても)ID3v1のナンバリング形式で命名しようとする。
結果、Id3v1のジャンルリストにないジャンル名を入れようとすると(freedbとかにたくさんある)、



Unknown genre: 'Japanese Pop'. Specify genre name or number



となってエンコードされない。

結局lameではジャンルを貼らないのが正解のようだ。

http://anonymousriver.hp.infoseek.co.jp/CD-rippers.html
ここの説明にあるように、id3.exeを使う。当然lameではID3v2タグを付けてやらなければいけないから、--add-id3v2 --pad-id3v2は入れておく。

2007/05/15(火)mp3エンコードあれこれ

2007/05/14 27:18 PC(全般)
[エンコードtool]
CD->mp3 : Exact Audio Copy
CD->cue+wav, cue+ape : Exact Audio Copy
cue+wav, cue+ape->mp3 : acdir
エンコードエンジン : lame

でとりあえず良し。ただし、EACは時間がかかる(高速読みも出来るがそちらを基本設定とすべきでない)ので単にぱっとmp3にしたいだけならCDex+午後とか。

[EAC設定]
EACはV0.95b2を使う。現在入手可能な最新版V0.95b4は日本語入力すると二重化する問題有り。
とりあえずBenq DW1640を所有しているのでこれを読みドライブにする(CD-R実験室を信じるなら超優秀)。

http://homepage2.nifty.com/yss/eac/eac3.htm
http://musicpc.fc2web.com/eacoption.htm
を参考に、

・Error Recovery Quality : High
・Read sample offset correction : +588
・Write samples offset : +96
・Overread into Lead-In and Lead-Outのチェックを外す
くらいで調整すれば良し。あとはオプション項目でだいたい分かる。

APEにするときはMonkey's Audioをあらかじめインストールしておく。

cue+wav化はIMGアイコンを。
mp3化はMP3アイコンを。

cue+ape化はアクション -> イメージをコピーしCUEシートを作成 -> 圧縮。

[ACDIR]
cue+wav, cue+apeをmp3化するときはACDIRを使う。EACでも何でも手順を踏めば出来るのだが、ACDIRを使うのが一番簡単(?)。
http://nyaochi.sakura.ne.jp/xoops/modules/mysoftwares/tc_2.html
上記サイトからダウンロード。簡易チュートリアルしかないが、コマンドラインヘルプでだいたいわかる。acdir自身にcue+ape, cue+wavを読む力があるので、あとは出力の設定とlameに渡すオプションをbatなんかに書いてやるだけ。

自分の腕ではbatだけでやるのが苦しかったので今回はRubyを使った。エクスプローラ+D&Dでやらせたかったので、まずはRuby Script FileがD&Dを受け付けられるようにする。

http://homepage3.nifty.com/yamakox/DropOnScript/index.html
上記サイトのDrop on Scriptを使えば良し。何をやっているかは、

http://devadjust.exblog.jp/4673772/
に書いてある。

で、Rubyで以下のように書いた。
ENV['PATH'] = 'c:\online\lame;c:\online\acdir;' + ENV['PATH']

dir_name = File.dirname(ARGV[0]) + "\" + File.basename(ARGV[0], ".*")

`acdir.exe --output "#&#123;dir_name&#125;\$n.$t.mp3" --pipe "lame -b 256 --replaygain-accurate --clipdetect -T --tt $#t --ta $#a --tl $#T --tn $#n --tg $#r&#123;GENRE&#125; --ty $#r&#123;DATE&#125; $x - $#o" "#&#123;ARGV&#125;"

print "\a\a"
Rubyを使ってる理由はファイル名から書き出しディレクトリを作りたかったから。

lameとacdirにPATHを通す必要がある。Ruby上で環境変数をいじるなら、ENVオブジェクトを使えば良し。

最後のダブルBEEPはおまけ。なんか怪しいけどとりあえずこれでいいや。

最後にcueをD&Dしてmp3化することを確認。なおACDIRはcue+apeから直接wavの単曲切りも出来る。eacで解体した物と当然バイナリは一緒。やりたいことに合わせてbatなりrbなり作っておくも良し、簡易GUIを作るも良し。

[lameオプション]
オプションの機能は、

http://www001.upp.so-net.ne.jp/yama-k/codec/lame3.95option.html

ここら辺を参照。
3.97でいくつかオプションの挙動を知りたく調べてみた。

某所の推奨設定が、
 --clipdetect : LAMEタグに音量ピーク値を保存する。メッセージ表示。

 --replaygain-accurate : より正確にリプレイゲイン情報を計算する

 -T : lameタグを強制的に書き込む。
をつけることになっている。

さて調査結果。

CBR(-b 256)とVBR(-V 2)どちらでも結果が同じで、
・--clipdetectだけの場合

・--replaygain-accurateだけの場合

・--clipdetect, --replaygain-accurate両方つけた場合
の3パターンではバイナリが同一。

どちらもつけない場合のみ、lameタグと思われる部分に5バイト分相違あり

(最大音量が記録されてない?)。
 --clipdetect をつけると、このソースではエンコード後にこんな感じのメッセージが出た。
WARNING: clipping occurs at the current gain. Set your decoder to decrease
the gain by at least 0.8dB or encode again using --scale 0.91
or less (the value under --scale is approximate).
 -T の有無にかかわらず常にlameタグは書き込まれた。

ということで結論としては、ここら辺のオプションは全てlameタグにのみ影響を与えるような物であり、あってもなくても大して変わらないらしい。とりあえずつけておいて損はないし大きな問題もないようだが、調べている途中でこんなのを見つけた。

http://www.faireal.net/articles/9/18/#d51109
mp3作って動画と合成する場合は、-tをつけてlameタグを付加しないようにしないと音ズレが拡大する可能性があるという話。うわ知らなかった。

ところで個人的にはだが、lameはCBRのほうが間違いがないと思っている。自分で使うなら当面CBR 192kかCBR 256kの2択?

最近のlameは高めのbitrateだとpsytuneとかsafejointをデフォルトで入れてくるようだ(K5 MP3 lametag viewerで確認)。いちいちキラーソースを探すのも面倒だし、ここら辺はもうオフィシャル設定を信用するしかない。

2007/05/13(日)foobar2000でエンコードが出来ない問題

2007/05/13 21:27 PC(全般)
foobar2000からLameを使ってConvertする際に、
Error flushing file (Unsupported format or corrupted file) : ファイル名
というエラーが出るので困っていた。原因はlameのバージョン違いで一応解決。

最初はパラメータが怪しいのだと考えて、色々試してみたのだが上手くいかない。

parameters指定を入力ファイルと出力ファイルだけの、
%s %d
としても上記エラー。ということで、どうもパラメータが原因ではないらしい。

結局Lameが余りに古すぎたのがいけなかったようだ。
stable最新の3.97に入れ替えたら成功。

ちなみに失敗していたバージョンは、3.88 MMX (beta1 Mar 27, 2001)。
せいぜい受け入れられるオプションが変わる程度かと思っていたが、コンパイル方法が違うのか、はたまたfoobar2000が変なことをやっているのか(勝手に3.97でしかとおらないオプションを付加してる?)。

解決したけど釈然としない。
OK キャンセル 確認 その他