2006年8月31日木曜日

カレンダーガジェット nDigiCalendar.gadget リリース

カレンダーを表示するガジェット nDigiCalendar.gadget をリリースした。
ほかのガジェットとともに次のURLからダウンロードできる。http://www6.plala.or.jp/nyk/files/gadgetsbynyk.zip 
[追記] 9月1日になって早速バグを発見したので修正した。今日の日付の赤色着色処理がおかしかった。



ガジェット2つ追加

Windows Vista 用サイドバー・ガジェットを二つ追加した。



  • nDigiYear.gadget  年号を表示するガジェット

  • nDigiFeed.gadget RSSフィードを定期的に受信し表示するガジェット

 


http://www6.plala.or.jp/nyk/files/gadgetsbynyk.zip から、上記の2つを含む7つのガジェットをまとめてダウンロードすることができる。なお SunCal.gadget に保存した設定(緯度・経度)を次の起動時に読み出せていないバグがあったので修正した。


[追記] nDigiFeed.gadget による RSS フィードの受信だが、RSS2.0 ではうまくいかない。よって goo や livedoor の天気予報は受信できなかった。これは明日にでも直すとして、天気予報のガジェットは別に作ったほうがよさそうだ。とりあえず、




  • 単一機能


  • 設定項目が少ない、あるいは存在しない


  • 占有ピクセル数がなるべく少ない

というようなガジェットをたくさん作りたいと思っている。


2006年8月29日火曜日

nDigiMem.gadget と nDigiLoad.gadget をリリース

Windows Vista 用サイドバー・ガジェットを二つリリースする。



  • nDigiMem.gadget は、物理メモリ残容量をデジタル表示するガジェット。

  • nDigiLoad.gadget は、CPU 負荷をデジタル表示するガジェット。

http://www6.plala.or.jp/nyk/files/gadgetsbynyk.zip より、これまで作ったガジェットとともにダウンロードすることができる。



SunCal.gadget nDigiClock.gadget nDigiDate.gadget 修正

SunCal.gadget nDigiClock.gadget nDigiDate.gadget のデザインを修正。
角を丸め、ドロップシャドウを追加した。
http://www6.plala.or.jp/nyk/files/gadgetsbynyk.zip からダウンロード可能。Windows Vista 専用。



2006年8月28日月曜日

nDigiClock.gadget / nDigiDate.gadget をリリースした

nDigiClock.gadget / nDigiDate.gadget をリリースした。シンプルな時計のガジェット。Vistaのサイドバーガジェット。


ところで、いつも Firefox を使っているので気がつかなかったのだが、IEから*.gadgetファイルをダウンロードしようとすると *.zip に名前が勝手に書き換わるようだ。確かに中身は ZIP ファイルなのだが、拡張子が .gadget のままでないとインストールできない。昔からこういう仕様だったのだろうか。ちなみに Picea では問題なくダウンロードできた。


というわけで、IEでガジェットをダウンロードして名前が *.zip になってしまったら *.gadget に戻してほしい。さもないとダブルクリックによるインストールができない。IEのせいにしているが自分のパッケージングのミスかもしれない。


IEでうまくいかない人用に http://www6.plala.or.jp/nyk/files/gadgetsbynyk.zip を置いた。3種類のガジェットが入っている。



 


SunCal.gadget 0.01 リリース

SunCal.gadget 0.01 を公開した。


http://www6.plala.or.jp/nyk よりダウンロードが可能。


SunCal.gadget は日の出入り時刻を計算する Windows Vista Beta2 専用のサイドバーガジェット。デジタル時計ガジェットとしても使える。
天文演算はローカルでおこなわれる(この手のツールでは普通はサーバーからデータを拾ってくる)
x86ネイティブ版 SunCal の計算コードをそのまま JavaScript に移植している。


x64版Vistaでしか動作確認していないが、多分x86版でも問題ないと思う。もしかするとx86版では重いかもしれない。


Vista用サイドバーガジェットを作ってみての感想:
(注:自分はBeta2しか持っていない。この後の版がどうなっているかは知らない)



  • サイドバーガジェットは、単なる Web アプリで作りはじめるのは簡単。しかし奥深くもある。

  • 時刻を求めるような天文計算では、それの方程式を解くのに漸化式を使うことが多い。SunCal では、収束時間を短くする工夫をほとんどしていないが、特に遅いと思わない。JavaScriptおそるべしだ。 

  • 英語キーボード使用時に「言語=日本語入力、IME=OFF」の状態だと、JIS配列と見なされる。これによりコーディング効率が40%くらい落ちている。これではVista上で何かを作る気には、なかなかなれない。なにかいい回避方法があればよいのだが。

  • RADEON X1600 PRO のドライバのせいかもしれないが、ツールチップの表示がおかしい。


アイコン



作者アイコン



スクリーンショット


2006年8月24日木曜日

DXPresentation 0.51 リリース

ビデオのリピート再生機能などの追加とミラーの細かい修正をした。



  • .videor [filename] コマンドを追加した。ビデオを繰り返し再生する。

  • .videoc [filename] コマンドを追加した。ビデオを再生し、再生終了時に次のスライドに移行する。

  • ミラーウィンドウ出現中のビデオ再生において、映像と音のずれが発生することがあったので修正した。

  • ミラーウィンドウ出現中のビデオ再生において、ミラー側のツールバーに.subtextで指定されたテキストを表示するようにした。

  • ビデオのコントロールボタンのデザインを修正した。

  • ミラーウィンドウ出現中の Web スライドにおいてツールバー部分がミラー側で真っ黒になっていて見苦しかったので修正した。

  • サンプルスライドの細かい修正

2006年8月23日水曜日

DXPresentation 0.50 リリース


  • ビデオ再生機能を追加した。

  • .video コマンドを追加した。WMV、ASF、MPG ファイルなどビデオを再生することができる。ただし、ライン書き込み、クローズアップなどはできない(DirectX.AudioVideoPlayback.Video のバグのため、あきらめた)

  • コマンドラインからの起動において、第1引数に読み込むファイルを指定できるようにした

  • Web の表示機能において、Web1 -> テキストスライド -> Web2 と再生していくと、Web2 に移動したときナビゲートが終わるまで Web1 が表示されたままになっていたので修正した。

  • メニューバーのカラーを再度調整した

  • 細かい修正


ビデオ再生中の画面(デジタルカメラによるキャプチャ)


やっとビデオの再生機能を追加した。DirectX.AudioVideoPlayback.Video のテクスチャに対するレンダリングは、Dispose時に例外が発生するバグがあるためあきらめて、コントロールに対する描画とした。このためエフェクト要素は全くない。ミラーは別個に同期をとりながら再生し見かけ上おかしくないようにするという強引な方法で実現した。
プレゼン中のビデオの使い方としてはインタビュー映像と、何かの瞬間およびその前後が重要な映像を想定している。


2006年8月21日月曜日

Managed DirectX の AudioVideoPlayBack がおかしい

Managed DirectX の AudioVideoPlayBack 名前空間の Video がいろいろとおかしい。ここ一週間ほど、DXPresentationでビデオの再生を実現させるため、いろいろ作業したのだが、いちばん悩んだのはターゲットをテクスチャにしている場合、Dispose()するとよくわからないタイミングで停止バグが発生することだ。ターゲットをコントロールにしている場合は停止はしないが、プロパティが謎の値を示す。調べた結果これは、Managed DirectX のバグであると結論した。直してほしいが直るのだろうか。


Web上で参考になるリンクを以下に示す。


Problems in the AudioVideoPlayback namespace of managed DirectX9
http://www.codeproject.com/cs/media/DirectX9_media_playback.asp


コントロールに対して AudioVideoPlayback でビデオを再生するとこんなに問題がありますよ、という投稿。コントロールに対する描画の場合はここに書いてある対処法でなんとかなる。


Fun with AudioVideoPlayback
http://blogs.msdn.com/toub/archive/2004/04/16/114630.aspx



AudioVideoPlayback のさまざまなおかしなところを指摘する記事。


Wrapping up Managed DirectX AudioVideoPlayback
http://www.codeproject.com/useritems/AudioDX.asp



ここにあるサンプルでは、ムービーテクスチャをポリゴンに張っている。Dispose時の問題は、なんとDisposingイベントのハンドラで無限ループさせることにより解決している。このため一度しかビデオを読みこまないプログラムとなっている。


Requested: Video texture in MDX
http://hundev.blogspot.com/2006/07/requested-video-texture-in-mdx.html



この記事では私と全く同じ場所ではまっている。






disposing of Video class in MDX1
http://www.gamedev.net/community/forums/topic.asp?topic_id=380330&forum_id=58&gforum_id=0



この投稿でも私と全く同じ場所ではまっている。


disposing of video when using "RenderToTexture"
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=267957&SiteID=1



私が悩んでいた Video.Dispose() の悩みに対して、It is a bug, but we have no plans to update this API.とマイクロソフトの人?が書いている。


Managed DirectX (その 2 AudioVideoPlayback) ~ Cutting Edge DX 9 - 第 3 回目 ~http://www.microsoft.com/japan/msdn/directx/japan/dx9/AVCS.aspx#AVCS1



日本語で書かれた記事。ムービーテクスチャのサンプルが置いてある。試してないがきちんと動くのだろうか。


Fun with DVR-MS
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnxpmce/html/dvr-ms.asp



コントロールに対してビデオを再生している。ほかに WMP、Quartz を使った再生を示している。







で、DXPresentation ではどうするのか?


選択肢はいくつかある。




  1. AudioVideoPlayback が直るのを待つ


  2. DirectShow を使って気合でなんとかする


  3. WMP を使う


  4. ビデオの再生自体をあきらめる

1.は多分時間の無駄。3.は簡単に実現できると思うのでとりあえず実装するかもしれないが、ビデオのスポットライト、ライン書き込み、クローズアップができないしミラーリングのパフォーマンスが悪そうなのでよくない。4.は選択したくない。


というわけで 2. が真っ当な方法であるが、C#+.NET に慣れすぎてしまい、なんだかやる気がでない。
ちなみに、
Managed DirectShow というプロジェクトがあるようだが、これについてはよく調べていない。これを選択した場合は GPL による配布に切り替える。


 


DXPresentation 0.47 リリース

BGMやナレーションの再生ができるように、オーディオストリーム(MP3、WMA等)をサポートした



  • 単独のオーディオストリームの再生に対応した。.startaudio、.stopaudio コマンドにより BGM などに対応する。

  • .startaudio [audio file] コマンドを追加した。オーディオストリームの再生を開始する。[audio file] には MP3、WMA ファイルなどを指定する。演奏終了後に .stop しない限りスライド切り替え時に自動的に再演奏する

  • .startaudiorepeat [audio file] コマンドを追加した。オーディオストリームを自動リピート再生する。

  • .stopaudio コマンドを追加した。そのとき演奏しているストリームの再生を終了する。

  • スライド移行時にワンショット SE を演奏する .audio コマンドを .sound コマンドに改名した。.audio も残す。

  • .noaudio コマンドを .stopsound コマンドに改名した。.noaudio も残す。

  • メニューバーのカラーを調整した

オーディオに関しては、スライドをまたぐことが可能なオーディオストリーム機能(MP3、WMA等に対応)と、スライド移動時にワンショットで鳴るサウンド機能(WAVに対応)の2系統が独立して利用することができるようになった。


ところで Web に掲載している、サンプルビデオが内容的に古くなったので更新したい。クローズアップ、WEB、オーディオなどが追加されている。あとビデオ再生の対応だがあいかわらず、どこかではまっている。多分単純なところでつまっている。