DATE : 2006/08/28 (Mon)
「Chrono Trigger: Resurrection」の旧サイトで配布されている音楽ファイルを、CD-DA として CD-R に焼いてみました。
すると、なぜかテンポが遅くなってしまい、まったりとした雰囲気に変わってしまいました(;´Д`)
そのとき、他の音楽も一緒に焼いていたのですが、他の音楽ファイルのサンプリングレートが 44.1 kHz だったのに対し、上のファイルは 48 kHz でした。
どうも、CD Manipulator は WAV データをそのまま CD-DA 形式として焼いてしまうようです。そのため、48 kHz が強制的に 44.1 kHz になり、テンポが遅くなるのでしょう。
( ゚д゚)ハッ! この方法を応用すると、CD-R に CD-DA として書き出すと平井堅になったり一青窈になったりする音楽ファイルが作れる予感(平井堅⇔一青窈のガイドライン)
(;´∀`)まあ、他のソフトをちょっと使ってみたところ、44.1 kHz でないとエラーが出ましたが。ソフトによっては、きちんとリサンプリングしてくれるものもありそうです。
とりあえず、CD Manipulator で CD-DA を作るときには、あらかじめ全ファイルを 44.1 kHz にしておかないと大変なことになる……ということで。
DATE : 2006/08/27 (Sun)
ネットを巡回していたら、このような記事を見つけました。(2006/08/26 産経新聞朝刊)
ビール1杯で顔が赤くなる人は、普通に酒が飲める人と比べ、食道がんになるリスクが少なくとも8倍以上にのぼることが、国立病院機構大阪医療センター(大阪市中央区)の辻仲利政・外科科長らの研究グループの調査で明らかになった。
(中略)
辻仲科長は平成14年、国立療養所久里浜病院(当時)などの医師らと、東京と大阪の食道がん、頭頸部がん患者約400人、健常者約1400人を調査。その結果、正常型の人が少量飲酒した場合に比べ、8.84倍もの食道がんの発生リスクがあり、さらに1日3合以上飲酒すると、実に114倍ものリスクがあることが判明した。
辻仲科長が、経験から指摘する「食道がんにかかる典型的な例」は、営業職などに配属され、酒が弱いのに、接待など付き合いで無理に飲むようになり、次第に普通に飲めるようになるケースという。
((((;゚Д゚))))ガクガクブルブル
(;´Д`)私、このケースに見事に当てはまる人間のようです。
(;´Д`)だいたい、紙コップ1杯分のビールを飲んだだけでまわりから心配されるほど赤くなりますしね……(缶ビール1杯にもなると半分くらいで飲む気がなくなってきます)。もちろん、アルコールパッチテストもダメでした。
最初の一口ぐらいはおいしいのですが、その後は
- 顔が火照りだす
- 脳が萎縮するような頭痛
- テンション、食欲ともに大幅ダウン
と、ロクなことがありません(;´Д`)それでも二口、三口、四口と進めてしまうのは、アルコールのせいでしょうか
ちなみに、2chのスレも覗いてみたのですが、食道がんになると発見の時点で手遅れなことが多いようですね。ある日突然、食べ物が咽喉を通らなくなったので医者に見てもらったら余命半年とか……・゚・(つД`)・゚・ (Wikipedia では、『診断の時点で既に50%は切除不能』だそうで)
ちなみに、2002年の発表によると、日本酒では60倍とか……
(;^ω^)飲酒するときは気をつけようと思います。
参考文献
DATE : 2006/08/26 (Sat)
8月24日の午前、NTT (正確には NTT グループの会社だと思います)から電話がかかってきました。
( ´∀`)「回線の工事をしますので、1時間ぐらいインターネットが不通になります」
( ^ω^)「はい。わかりました」
( ´∀`)「終わりましたら係りの者が装置のスイッチを切り替えに伺いますのでよろしくお願いいたします」
しばらくして、NTT の方がお見えになりました。
( ・∀・)「装置のスイッチを切り替えに来ました」
( ^ω^)「どうぞどうぞ」
NTT の方が、装置のスイッチを入れなおし(一応、家に備え付けられている装置は「NTT 設備扱い」らしいです)、手持ちの PC から接続を確かめました。
(;・∀・)「……つながりませんね」
Σ(^ω^;)
いろいろと会社の方と連絡を取り合った後、午後からも来るということで NTT の方は去っていきました。
(;^ω^)NTT が1時間でやってくれました
午後になると、別の方がやってきました。
(,,゚Д゚)「とりあえず、装置を取り替えてみますね」
装置は ONU とルータ(的な役割を果たすもの)のうち、NTT の方はルータを取り替えました。
そして、手持ちの PC で接続を確かめます。
(;゚Д゚)「つながりませんね……」
(;^ω^)……
(,,゚Д゚)「装置の故障だと聞いたんですけど、これは……」
(;^ω^)「いえ、何か工事があったらしくて、その後に全然通信できなくなったんです」
(;゚Д゚)「長年やってますが、めずらしいケースですねぇ……」
その方も会社といろいろとやりとりを行いましたが、結局今日中の解決はできず、明日(8/25)に持ち越されることになりました。
翌日、午後からまた他の人がやってきました。
しかし、結局進展はしませんでした。
( ´Д`)「これは、局内の問題かもしれませんね……」
(;´Д`)「家の設備に問題はないので、後は局内の方で対処してみます」
そして、同日中に再び来るという言葉を残して、去っていきました。
夕日が沈みかけた頃、約束どおり先程の方がやってきました。
(;´Д`)「どうも、あるユニットにつながっている家がみんなダメのようで、いま、全力を挙げて対処しているところです」
話を聞いたところによると、私の家の光ケーブルがつながっているユニットには他に数件接続されているようで、その数件ともに同じ症状が出ているとのことでした。
その後、一応の目処は立ったらしく、NTT の人は帰っていきました。復旧した場合、電話で連絡があるそうです。
そしてしばらくした後、電話がかかってきました。
( ´∀`)「もしもし」
( ^ω^)「はい」
( ´∀`)「装置の初期化ボタンを押してみていただけませんか?」
( ^ω^)「押してきました」
( ´∀`)「今度は、電源を入れなおしてみていただけませんか?」
( ^ω^)「入れなおしてみました」
(;´Д`)「まだ調子が良くないみたいです」
(;^ω^)「……」
結局のところ、再び明日(8/26)に持ち越しとなりました。
(;^ω^)急にインターネットに繋げなくなると、とてもウズウズしてきますよね
8月26日の朝、電話がかかってきました。
( ´∀`)「もしもし」
( ^ω^)「はい」
( ´∀`)「装置の電源を入れなおしてみていただけませんか?」
( ^ω^)「入れなおしてきました」
( ´∀`)「……それでは、インターネットに接続できるか試してみていただけませんか?」
( ^ω^)「!(キタコレ!)」
インターネット断絶から3日目、ようやく接続再開できました。
しかしどうも話を聞くと、ユニットの機械を取り替えたら、そのユニットにつながっている家が接続不可になってしまったようです。そこで、取り替えた機械を元のものに戻したところ、うまく動作するようになったとか。
(;^ω^)一時はどうなるかと思いましたが、なんとか復旧できてよかったです。
( ^ω^)幸いにして、GyaO の「MUSASHI -GUN道-」も見逃すことなく視聴できましたしね(いつも次の話に切り替わる直前に視聴しているので、午前中に復旧できたのは不幸中の幸いでした)
DATE : 2006/08/23 (Wed)
java.awt.image.BufferedImage などの java.awt.image.RenderedImage にアルファチャンネルを追加した BufferedImage を作るには、次のような手順で処理を行います。
以下の手順では、「RenderedImage」がアルファチャンネルを追加する対象の画像オブジェクト、「BufferedImage」がアルファチャンネルを追加した画像オブジェクトとします。
- BufferedImage 用に、アルファチャンネル付きの java.awt.image.ColorModel を生成する。
- BufferedImage 用に、上の ColorModel が扱える java.awt.image.WritableRaster を生成する。
- BufferedImage 用の WritableRaster の色成分(アルファチャンネルを除いた成分)部分に、RenderedImage の画素値をコピーする。
- BufferedImage 用の WritableRaster にアルファチャンネル部分の値を設定する。
- BufferedImage 用に生成した ColorModel と WritableRaster から、BufferedImage を生成する。
サンプルコードは少々長いので、次の記事に掲載しようと思います。
(つづきます)
DATE : 2006/08/22 (Tue)
java.awt.image.BufferedImage のあるコンストラクタが少々わかりづらいのでメモしておきます。
BufferedImage には、BufferedImage(java.awt.image.ColorModel, java.awt.image.WritableRaster, boolean, java.util.Hashtable) というコンストラクタがあります。
初めの ColorModel や WritableRaster は画像内のデータの解釈方法(ColorModel)と画像のデータ(Raster)であることは分かります。しかし、その後の boolean と Hashtable が謎です。
ちなみに、日本語版 API ドキュメントには、次のように書かれています。
public BufferedImage(ColorModel cm, WritableRaster raster, boolean isRasterPremultiplied, Hashtable,?> properties)
ColorModel および Raster を指定して、新しい BufferedImage を構築します。Raster の SampleModel のバンドの数および型が、色成分およびアルファ成分を表すために ColorModel によって要求される数および型と一致しない場合は、 RasterFormatException がスローされます。このメソッドは、ColorModel の alphaPremultiplied 状態と一致させるために色 Raster データをアルファで乗算または除算できます。この BufferedImage のプロパティは、String と Object のペアの Hashtable を渡すことによって確立できます。
- パラメータ:
- cm - 新しいイメージの ColorModel
- raster - イメージデータの Raster
- isRasterPremultiplied - true の場合、ラスタのデータはアルファによってあらかじめ乗算されている
- properties - String と Object のペアの Hashtable
この引用によると、boolean は『true の場合、ラスタのデータはアルファによってあらかじめ乗算されている』ことを、Hashtable は『BufferedImage のプロパティ』を表すようです。
Hashtable については、ドキュメントを調べるうちに解決できました。BufferedImage のスーパークラスである java.awt.Image を見る(Image#getProperty(String, java.awt.image.ImageObserver))と、次のように書かれていました。
プロパティ名「comment」を使用すると、イメージ、そのソース、またはその作成者の記述としてアプリケーションに提示できるオプションのコメントを格納できます。
どうも、画像に対する付加情報が Hashtable で設定できるようです。例えば、javax.swing.ImageIcon では、「comment」と設定したプロパティをアイコンの説明に使用するようです。(ImageIcon(java.awt.Image)
しかし、この付加情報はあくまでも「画像オブジェクト」に対するものであり、「画像ファイル」の付加情報ではありません。「画像ファイル」に対して、作者やコメントなどの付加情報を付ける場合は、ImageIO であれば javax.imageio.metadata.IIOMetadata を使わなければなりません。
次に boolean です。正直なところ、ドキュメントからはいまひとつ意味がつかめません。『ColorModel の alphaPremultiplied 状態と一致させるために色 Raster データをアルファで乗算または除算できます』という部分から、ColorModel#isAlphaPremultiplied() との関係がうかがえます。しかし、『Raster の SampleModel のバンドの数および型が、色成分およびアルファ成分を表すために ColorModel によって要求される数および型と一致しない場合は、RasterFormatException がスローされます。』という部分には、Raster と ColorModel とが対応しない場合は例外が発生すると書かれているので、alphaPremultiplied 状態が合っていないと例外が発生するようにも受け取れます。しかし、ColorModel#isAlphaPremultiplied() から alphaPremultiplied 状態は取得できるので、あえて引数として alphaPremultiplied を受け取る理由が分かりません。
そこで、BufferedImage(ColorModel, WritableRaster, boolean, Hashtable) のソースコードを調べてみました。すると、次の1行が見つかりました。
coerceData(isRasterPremultiplied);
上のコードは、次のメソッドを呼び出しています。(BufferedImage#coerceData(boolean))。
public void coerceData (boolean isAlphaPremultiplied) { if (colorModel.hasAlpha() && colorModel.isAlphaPremultiplied() != isAlphaPremultiplied) { // Make the color model do the conversion colorModel = colorModel.coerceData ( raster, isAlphaPremultiplied); } }
コンストラクタで指定された ColorModel (フィールドの colorModel)のalphaPremultiplied 状態と isAlphaPremultiplied とを比較して、異なる場合は引数に指定されたものと同じ状態の ColorModel を生成しています。また、ラスタのデータの計算も行っています。
ここから、BufferedImage(ColorModel, WritableRaster, boolean, Hashtable) の boolean は、BufferedImage の ColorModel の alphaPremultiplied 状態を設定する引数と言えます。