FC2ブログ

foobar2000七変化

12/05/20初稿
19/11/24全面改訂

 現在メインプレーヤとして活躍中の≪foobar2000≫についてまとめておきます。
 奥深いソフトですねぇ。

 「オーバーサンプリング」「アップサンプリング」などの用語定義については、メインメニューからまとめをご参照いただきたく、よろしくお願いします。


■リアルタイムアップサンプリングして聴く

 せっかくですので、「リアルタイムUpSampling」機能は欲しいところです。事前に変換しておくのもメンドクサイですので(苦笑)。

・≪foobar2000≫の24/192 
 一応、現時点では24bit/192kHzまで再生できればオールマイティでしょう。ということで、まずは24/192の再生環境を確保します。
 排他WASAPIの設定で出力bit数を24bitにしてPCMや以下に記すDSD→PCM変換で192kHzや176.2kHz再生すると

「Unrecoverable Playback error:この操作を完了するのに十分な記憶域がありません(0x8007000E)」

なるエラーが出ます。DSD→PCMでもネイティブ24/192のwavでも同じくダメですので、排他WASAPI動作の部分と推定されます。
 メインメモリを2GB→4GBにしてもダメです。
 96kHzや88.2kHzなら大丈夫です。bit数の方を「16bitディザ」にすれば192のままでもokです。なんか単純にどっかの容量の問題ような。

 結局、排他WASAPI設定のBufferサイズ(デフォルト1000ms)を680ms以下にするとOKでした。690ms以上にするとNGです。96kHzにすると2倍の1360ms以下でok、1370ms以上NG。じゃあ176.4kHzなら192÷176.4で680msの1.088倍あたりにスレッシュがあるのではと思ってやってみると実際740msでok、750msでNG。
 つまり、192x24x2x0.68/8=783360Byte=765KBくらい(つまり768KB?)のバッファ容量を持っているということでしょうか。
 VRAM512MB固定で調べましたが、256MB固定にしても680と690の間にスレッシュがあることは変わりませんでした。

・「SoX Resampler」の導入と設定
 本稿以下に詳細を記していますが、導入その他に関しては以下の通り(E-350環境にて)。
 もちろんAPIは排他WASAPI。
 プラグインを使うにはDLLを入手してインストールする必要がありますが、インストールと言っても、≪foobar2000≫の「components」フォルダにDLLをコピーすればいいだけです。
 ということで、以下のソフトウェアをインストールしました。

  ・≪foobar2000≫本体:v1.1.7
  ・WASAPI:foo_out_wasapi … 2.1, released on 2009-05-19
  ・DSD Decorder:foo_input_dsdiff … 1.4, released on 2011-05-19
  ・Sox Resampler:foo_dsp_resampler_0.7.0

 同じくResamplerのfoo_dsp_ssrc_057はv1.1.7ではバージョンが合わないって言われちゃいました。

 パラメータの意味はあまり理解できていないのでとりあえず以下設定にて。デフォルトのまま、のはずです。
   Quality:Best
   Passband:95%
   Allow aliasing:ノーチェック
   Phase response:50%

 こちらも24/192が通る設定さえしてあれば大丈夫のようです。x4の176.4kHz、同じくDSP-Z7表示で確認できました。
 ウチの現在の環境だと、x4だとちょっと柔らかくなりすぎ(特に低域が不明瞭に)でしょうか。x2でも16/44.1とは違う音が聴けます。うれしいですね。心地よくて眠くなっちゃいますけど(笑)。

・SoX Resamplerを調べる
 SoXとは「Sound eXchange」の略称のようですね。各種フォーマット変換やエフェクトやフィルタなどを開発しているプロジェクトのようです。詳しくは判りませんが(苦笑)。

http://sox.sourceforge.net/SoX/Resampling

 「SoX Resampler」は、そのプロジェクトの中で開発されているサンプリングレート変換アルゴリズムを用いてlvqclさんが作られたDSPプラグイン、ということになるのでしょう。

 ということで、パラメータの意味を知るには上記ページやプラグイン作者lvqclさんのBBSなどを読み込むしかなさそうです。もちろん、web上の先達の方々の記事を参考にしながらなのは言うまでもありません。
 以下、私の理解ですので間違ってる可能性も(すごく)ありますことご承知おきください。私的な備忘録ということで。

 聴感上の評価による設定は、(少なくとも自分なりには)理屈上の変化は何かを知った上で行いたいと思いますが、それにはSoX本家サイトにありますインパルス応答におけるエコー発生を示した「Impulse Graphs(from 44.1kHz to 96kHz)」(*)を見ていくしかなさそうです。

*:http://sox.sourceforge.net/rate-44k1-96k.png

 エコーは本来元の音の後=ポストに付くものですので、前に付くプリエコーは不自然な音として音質に影響するであろうとのこと。ただし、あくまでも上記グラフは「インパルス応答」であって自然音声ではないことは意識しておくべきでしょう。

 本家SoXはパラメータスイッチを付けて制御するCUIらしいので、GUIたる「SoX Resampler」のパラメータと対照させながら考える必要があります。
 順に見ていきたいと思います。
 ちょっとうろ覚えですが、本体1.1.11、SoXは0.7.9だったと思います。


foobar2000.jpg

・Quality
 Resampling品質でしょう。Normal/Good/Bestが選択できます。おそらく処理負荷と精度がバーターだと思われます。
 Version 0.6.6から名称と内容が変更されているようです。

・Best -- the same as old 'Very high' mode
・Good -- old 'Very high' mode but with single precision (instead of double precision in 'Best' mode)
・Normal -- old 'High' mode with single precision

 「single precision=単精度」「Double precision=倍精度」のようです。PCにおける数値表現方式の違いですが、前者が32bit、後者が64bitという理解でもよいかも知れません。
 つまり、「倍精度処理のVery high=Best」「単精度処理のVery high=Good」「High(単精度処理のみ)=Normal」ってことでしょうか。

 また、SoXの基本的考え方として以下のようになっている模様です。

SW Quality  Band  Rej[dB]   Typical Use
        -with
-q  quick    n/a ≈30@Fs/4 playback on ancient hardware
-l  low    80%  100   playback on old hardware
-m  medium   95%  100   audio playback
-h  high    95%  125   16-bit mastering(use with dither)
-v very high  95%  175   24-bit mastering

 quickとlowは当プラグイン作者さんも「そんな古いハードを使うことは考えてない」と仰ってるように、気にしなくてよさそうです。というかお言葉通りVersion 0.6.6以降は「High(Normal)」と「Very High(Good,Best)」しか選択の余地ないし。

 省略すると「-m」と推定されます。

 作者登場のBBSによると、Jul 30 2011, 16:54付けのコメントで「多くの人がVery Highを使ってるけど“much point”とは思わない」とおっしゃってます。

Since there's no difference between 0.6.0 'Very high' and 0.7.0 'Best' and most people use this resampler in 'Very high' mode, I don't think there is much point in doing this.

 これと上記のモード解説とあわせて考えると、もしかすると16bit/44.1kHzソースの場合は「Normal」が(理屈上は)最適なのかも知れません。
 SoX本家FAQ5番(*)を見ても、16bitより深い場合は-v、そうでない場合は-hを使え、とありますので。

Quality setting: if resampling (or changing speed, as it amounts to the same thing) at/to > 16 bit depth (i.e. most commonly 24-bit), use VHQ (-v), otherwise, use HQ (-h, or don't specify).

*:http://sox.sourceforge.net/Docs/FAQ

 エコーについては、「Impulse Graphs」で「-v/-h/-m/-l」を比較する限り、-lを除いてそれほど違いはなさそうです。SoX Resamplerでは-vか-hに相当するモードしか選択できませんので、この点では悩む必要はなさそうです。

 May 7 2011, 14:32のコメントで「ditherは持ってない」とあります。プラグインとしてのInput・Outputは32bitFloatのようですね。

The plugin doesn't dither. It receives 32-bit float samples and sends 32-bit float samples back to foobar2000 core.

 上記モード解説によると「16bit masteringのソースの場合はditherを使え」と読めますが、当プラグインはditherを持ってないということですから、Output側のdither(WASAPIだと出てくる)をONした方がよいのかも知れません。
 FAQ5番を見ても、16bitではditherをONするのが推奨されてるっぽいですし。

If you're mastering to 16-bit, you also need to add 'dither' (and in most cases noise-shaping) after the rate.

 なお、Jan 3 2010, 13:12のコメントで「LPFは持ってない」とありますが、正確な意味は解りません。

That's because it doesn't have lowpass filter.

・Passband
 文字通り「通過帯域」で、90%~99.0%まで選択できます。「ナイキスト周波数」に対する比率のようですね。帯域を広くとる(ナイキストに近づける)と負荷が上がってエコーが増えるデメリットがありますが、Resampling精度は上がるというバーターのようです。
 オリジナルSoXは-bオプションで帯域を74~99.7%まで指定できるようですが、エコーが酷いので99.0%以上は推奨されないとのこと(これがプラグインで99.0%までしか設定できない理由でしょう)。

The -b option allows the band-width to be set to any value in the range 74-99.7%, but note that band-width values greater than 99% are not recommended for normal use as they can cause excessive transient echo.

 比率が高いということは「通過を許可する帯域」が「通しちゃいけない帯域」に近づいていきデジタルフィルタでのカットオフがどんどん急峻になっていくため、過激なフィルタリングする結果エコー(リンギング)が多くなるってイメージかな?(理屈は解りません!)

 Feb 17 2011, 20:00付けで以下のコメントがありますので、-sは「-b 99」と同じだそうです。実際には「steep filter」というオプションのようですが。

Yes, -s is the same as -b 99.

 という理解で「Impulse Graphs」の「-v(おそらく95%)」と「-vs(おそらく99%)」と「-vb 99.7」を比較すると、いかにも99.7%は問題ありそうに見えますね。また、medium品質になりますが「-mb 90」と「-m(おそらく95%)」との比較では前者の方が半分くらいに見えます。エコー増加は95%を越えるあたりから急峻になるのでしょうか。
 上記FAQ5番ではデフォルトの95%から変えるな、とありますね。

・Allow aliasing
 Aliasingとは「折り返し歪(雑音)」のようです。サンプリング理論によるナイキスト周波数(サンプリング周波数の1/2)より高い周波数成分がナイキスト周波数で折り返してそれ以下の周波数に出現するもの。
 それをAllow(許可)するしない、ということです。
 オプションSWとしては「-a」のようなので、「-vM」と「-vMa」を比較すればよいようです。

 許可する(チェックする)と処理負荷低下とエコーが減る(約半減だとか)メリットがあるようですが、折り返し雑音は増えるハズ。しかし、そもそもこれが“アップサンプリング”時にどんな影響があるのかはよく解りません。ダウンサンプリングする場合はターゲットのナイキスト周波数が下がるので新たな雑音が発生するのは解る気もするのですが…
 一応、許可した方が負荷とエコーが減るが歪は増える、というイメージでしょうか。

 14/10/18追記:その後いろいろ経験した中で、ダウンサンプリングもアップサンプリングも基本原理はLPFみたいだと思うようになりました。

・ダウンサンプリング・・・例として96kHzを48kHzにする場合
     折り返し歪み(エイリアシングノイズ)が発生しないよう、
     24kHz以上の成分をカットするLPFかけてから間引き。

・アップサンプリング・・・例として48kHzを96kHzにする場合
     ひとつおきにゼロサンプルを挿入。
     それによって発生してしまう「存在してはならない周波数成分
     (イメージングノイズ)」を除去するため、24kHz以上をカットオフする
     LPFかける。
     するとそれが補間フィルタ(インターポレーションフィルタ)になる。

 だとすると、この設定は要するにLPF特性を変化させるということでいいのかな。「許可する・しない」とか言われるとゼロイチっぽいですけどそうじゃないみたい。
 実際の波形を稿末に示しましたので、詳しくはそちらで。
 ちなみに、だとするとPassbandの設定もズバリLPFの通過帯域をナイキスト周波数の何%にするかってことでよさそうな。

 さらに後日、実際のスぺクトルで動作確認しました。以下に別項として記しました。

・Phase response
 デジタルフィルタの位相応答を調整できる、ということですが私のような素人には理解できません。
 パラメータSWは以下の意味のようです。

  -L・・・Linear Phase、50%だと思います。省略するとこれのようですね
  -I・・・Intermediate Phase、つまり中間点の25%のことでしょう
  -M・・・Minimum Phase、つまり一番低い0%のことだと思います

 そのつもりで「Impulse Graphs」の「-v/-vI/-vM」や「-vs/-vsI/-vsM」を比べてみると、そのまんまパーセンテージがエコー成分を前につけるか後ろにつけるかの違いになっていると理解すればよさそうです。
 50%に近づけるほど位相応答がよくなるのがメリットのようですが、エコー成分が「プリエコー」に回ってくるのがデメリットになるようです。リニア(50%)だとポストとプリの比率が50:50になるようです。
 上記FAQ5番では40kHzを越える場合はLinearにしろとあります。

・SoX Resamplerの“邪道な?”使い方
 「SoX Resampler」でx4にするにはふたつ方法があることを思いつきました。「x4設定で1段」が普通ですが、foobar2000ってDSP処理を重ねられるので「x2設定で2段」という方法もあり得ます(後者でもDSP-Z7が176.4kHzで受けているのを確認)。

 試してみると「x2設定で2段」の方が解像感などアップしたみたいな。Convert機能で出力した2種類のファイルをWaveCompareで比較するとすべてではなくかなり飛び飛びですが「1」程度異なるサンプルが出現しています。バッチリ音質変化として聴きとれる違いとは思えませんので、データ自体が変化しているからと言うよりfoobar2000の再生動作の違いが効いてるということになるでしょうか。

 “x2x2”はおそらくプレーヤソフトの負荷は増える方向=一般論としては悪い方向だと思いますが、変化を楽しむソフトウェアチューンのひとつということで。
 ちなみに「Passband」を変化させるとほぼすべてのサンプルの値が異なるようです。また、「44.1x4」と「176400指定」のConvert出力結果はWaveCompareで一致しました。

 さて、パラメータについていろいろ調べていて、ふと思い立ったことが。
 44.1kHz→88.2kHzと88.2kHz→176.4kHzの2段に分けるだけでなく、それぞれパラメータを変えて処理したら意味があるのではないかと。邪道かも知れませんが…

・アップサンプリングによる音質変化効果が高いと推定される44.1kHz→88.2kHzでは「品質重視」
・どちらかと言うとDACの前段で上げておくことに意味がありそうな88.2kHz→176.4kHzでは「エコー抑制重視」

 そういうコンセプトで設定で2段重ねにしてたみたところ、なんだかどえらくいいカンジというか何とも言えない魅力がある音に(fb2k1.1.11&SoX0.7.9にて)。
 まだまだいろいろ確認してみる必要はありそうですが、こんな「自分なりの理屈を付けて音の変化を楽しむ使い方」もアリかなということで。

 15/02/16追記。「トランジスタ技術2013年12月号」P.124によると、ΔΣ型DACチップのデジタルフィルタは2段または3段構成になっているそうです。1段目は急峻な減衰特性、2段目以降は高周波数帯の処理なので甘くなっているとのこと。
 上の設定、あながちハズレじゃなかったスかね?

・もうひとつのSoX「Resampler-V」
 本項15/02/10追記。
 「Resampler-V」なるプラグイン(*)が登場しているのですね。リサンプリングアルゴリズム自体ウリではなく既存のSSRCまたはSoXを用いており、PassBandやStopBand、Attenuationなどのパラメータを「処理特性を視覚的に確認しながら調整できるGUI」がミソのようです。Impulse応答の変化も確認できます。VはVisualのVかな?
 本家SoX ResamplerにはないStopBandパラメータがあるなど調整にも便利ですが、まさに「アップサンプリングすると(LPFかけると)どうなるのか」をイメージするのにも役立つと思います。

*:http://www.hydrogenaud.io/forums/index.php?showtopic=107779

 これもDSD変換再生でいろいろ弄りました。

 アルゴリズムはSoXかSSRCを使っており、どちらか選べるようになっています。それぞれのプラグインが無くても動作しましたので≪Resampler-V≫が内蔵しているようです。とりあえずこれまで使っていたSoXの方でちょっと弄ってみます。
 設定項目は以下の通りです。

・PassBand・・・LPFの減衰開始周波数でしょう
・StopBand・・・LPFの遮断周波数でしょう
・StopBandAttenuation・・・遮断帯域での減衰レベルでしょう(*)
・PhaseResponse・・・フィルタ特性と理解しておけばよいかと

*:SoXなら-96dB~-198dB、SSRCだと-240dBまで調整可です

 ≪SoX Resampler≫では、「aliasing/imaging」をAllowするとStopbandが高周波数に移動するようです。比率で設定しているためPassbandも一緒に移動しますので、Vではそれを独立させたというカンジですね。
 逆にPhaseResponseはスライダじゃなくて3種類の選択にしたようです。それはそれでいいかも。
 Attenuation設定があるのはいいですね。減衰特性を強くすると演算対象のサンプルが増えてエコーが拡散するデメリットがあるようですから、あまり欲張らない方がいいと思いますので。

 ちょっと弄っていたら面白い仕掛け(?)を発見しました。PassBandとStopBandの組み合わせでメッセージが出るんですね。Gentleは「ゆるゆる」、Mediumは「フツー」、Steepは「きっつぅ」かな? 作者さんの推奨値なのでしょうか。
 以下発見した組み合わせをメモしておきます。

 StopBand/PassBand
   100.0% 98.2%(Steepest) -144dB以下にしないと出てこない
   100.1% 選択できず
   100.2% 83.4%(Medium)  StopBand最低(100%だとメッセージはない)
   100.3% 93.4%(Steep)
   100.4% 選択できず
   100.5% なし
   100.6% 93.7%(Steep)
   100.6% 83.8%(Medium)
   100.6% 66.9%(Gentle)
   101.7% 68.0%(Gentle)
   102.0% 95.1%(Steep)
   102.3% 68.6%(Gentle)
   102.7% 95.8%(Steep)
   102.7% 69.0%(Gentle)
   103.0% 96.1%(Steep)
   103.0% 86.2%(Medium)
   103.0% 69.3%(Gentle)
   106.4% 89.6%(Medium)
   106.8% 90.0%(Medium)
   108.8% 92.0%(Medium)
   110.5% 93.7%(Medium)
   111.9% 95.1%(Mesdium)
   116.1% 82.4%(Gentle)
   115.0% 98.2%(Medium)

・資料
・SoX Resampler専用BBS(配布,解説)
http://www.hydrogenaudio.org/forums/index.php?showtopic=67373

・SoX Resamlper作者さん登場の議論BBS
http://www.hydrogenaudio.org/forums/index.php?showtopic=67376&hl=

・14/11/03追記:SoXの日本語訳ページのリサンプリング関連項目(rate項)
http://www.hcn.zaq.ne.jp/___/unix/sox-ja.html#E-rate

・Resamlper-Vのページ
https://sourceforge.net/projects/resamplerv/


■エイリアシング/イメージングを可視化する

 本項14/10/12追記。

・Aliasingの正体
 以下の手法で「許可するしないによるエイリアシングノイズのスペクトル」をとってみました。

 再生ソフト・・・foobar2000 1.2.9
 リサンプラ・・・SoX 0.8.3
 ソース・・・e-onkyoのハイレゾ無料サンプル 24bit96kHz版
       “【無料サンプル音源】 SOUVENIR part II_01_
       【無料サンプル音源-WAV-96 24】SOUVENIR de Florence op. 70
        I. Allegro con spiri.wav”
 SoX設定・・・「Allow aliasing/imaging(*)」のチェックなしとありで
        「Downsample x2」を実施、24bit48kHz化
         Quality=Normal、Passband=95.0%、Phase response=50%
 波形生成・・・Sound Engine Free 5.02で反転mix

*:以前のバージョンではなかった「imaging」って表示が出現しています。ANALOG DEVICES社などの資料では、どうもDA変換時に発生する折り返しノイズのことを「imaging」と言ってるようですが、統一用語ではなさそう?
 もしかするとSoXではダウン時は(ADC動作に対比させて)aliasing、アップ時は(DAC動作に対比させて)imagingと言っているのかも知れません。

 なお、本調査はリサンプリング結果を見るのが目的ですので、スペクトル表示見やすさのためのリサンプリングは行っていません。
 以下すべて10秒目です。

0.元スペクトル(2496)
続きアリ⇒
Souvenir2496.png

 20kHz以上にも有意と思われる周波数成分が出現しています(どんな機器で録音したのかはワカリマセンが…特にマイク?)。
 ところで、このソースには48kHz付近のLPFによるカットが見られません。そのあたりにエイリアシングノイズが発生したとしても問題ないのであえてLPFかけてないってことでしょうか。ハイレゾってそういうモンなんでしょうかね?

1.「Allow aliasing/imaging」チェックなし(エイリアシングノイズ出現を許可しない)

Souvenir2448.png

 24kHz手前でLPF帯域カットが見られます。チェックしない=許可しない=事前にカット、ということでいいようです。

2.「Allow aliasing/imaging」をチェックする(エイリアシングノイズ出現を許可する)

Souvenir2448 Allow aliasing

 こちらは急峻なカットはしてません。24kHz以下にエイリアシングノイズ=「折り返し雑音」が発生しているハズです。

3.反転mix

Souvenir2448mix.png

 エイリアシングノイズの発生を可視化するため、チェックありなしの音声ファイルを反転mixしたスペクトルが上記です。
 およそ23kHz以上の部分はLPFによる差分が大半だと思います(もちろんそこ以外にもフィルタ演算による影響は出ているでしょうけれど)。
 ですので、22~23kHzあたりの成分がエイリアシングノイズでしょうか。
 チェックをどうするかは、この周波数帯の「このレベルの歪み発生」と「エコー量」とのバーターをどう考えるか、ということですね(リアルタイムでやる時はCPU負荷も考慮対象になるでしょうけれど)。
 もちろん、この音声ファイルは再生しても聞こえません。

 このチェック有無による「エイリアシングノイズ(折り返し雑音(歪み))」音質悪化はもっと酷いものだと思ってましたが、どうも「許可するしない」というゼロイチの設定ではなく、「LPF特性差」のようです。

 なお、≪Wavosaur≫で24kHzをカットオフ周波数にしたLPFかけてから≪WAVEフォーマット変換プラス≫で48kHz化したものとSoXの「許可しない」変換との差分は、「許可する」との差分に非常に似ていました。

・Imagingの正体
 本項14/10/12~14/11/08追記。
 本稿では、アップサンプリング時の除去すべきノイズを「イメージングノイズ」と呼ぶことにしています。

 上記の「Downsample x2」で得たサンプルを「Upsample x2」で元に戻したのが以下のスペクトルです(設定はDown時と同じ。Aliasingはチェックなし)。ちょっと変則的かも知れませんが、一般的なアップサンプリング結果と見て問題ないと思います。

1.許可しない
続きアリ⇒
Souvenir2496→2448→2496

 増えた高域には何もないみたいですね(笑)。これが「アップサンプリングで増えた高域の正体」と言っていいでしょう。
 アップサンプリングの基本原理は上述の通りLPFがキモみたいなので、“ないのは当然”なのでしょうね。
 SoX Resamplerは高域を新たに生成しているワケではないということです。

 「許可する」は以下のスペクトルになります。

2.許可する
続きアリ⇒
Souvenir2496→2448→2496 AllowAliasing

 「Aliasingの正体」と同じ手法で採った差分スペクトルは以下の通りです。

3.反転mix
続きアリ⇒
Souvenir2496→2448→2496 許可するしないmix

 こちらもLPF特性の差とみていいと思います。ちっちゃい山は“LPFでカットされなかったイメージングノイズの裾野”でしょうね。
 SoXはリアルタイムアップサンプリングとして使われることが大半ですよね。「このレベルのノイズ出現」と「CPU負荷&エコー」とのバーターをどう判断するか、というところでしょうか。
 「半減」とか言われちゃうと、エコー少ない方がいいような気もしますね。

・LPF特性
 本項15/03/03追記。
 「aliasing/imaging許可するしない」はLPF特性の差と判断したワケですが、そのスペクトルを添付します。

 2448-3dBのホワイトノイズファイルをSoXでx2したものを、SB-DM-PHDのS/PDIFループバックキャプチャすることで採取したものです。この方法については、PCM→DSD変換再生について考えた記事に詳述しています。

1.許可しない

SoX aliasing許可しない

2.許可する

SoX aliasing許可する

 高域側にスライドするイメージみたいですね。


メインメニューへ

テーマ : オーディオ
ジャンル : 趣味・実用

最新記事
ERIへようこそ

Author:らかせ
「最新記事」または
「メインメニュー」からどうぞ

・ファイルへの直接リンク以外はリンクフリー(連絡不要)です

・一応、拍手にコメント(非公開)付けられるようにしてあります

・DB的に利用しており、過去記事もガシガシ書き換えています。特に「最新記事」は初稿から一週間くらいは直してることが多く、大幅に変わっちゃうことも。ご了承ください

・ということもありますし、記すまでもないですが無断転載(ファイル含む)はご遠慮ください

・引用の考え方については「007:諸事」をご参照ください

・ハイパーリンクは当Blog記事のみです(054:節電記事のみ例外)

・Amazonアソシエイトに参加しています(アフィリエイトはAmazonのみです)

カテゴリ
検索フォーム
FC2カウンター