以前(2010年5月4日の日記を参照)書いた内容の訂正、追加内容です。
Creative Sound Blaster X-Fiの「再生リダイレクト」デバイスは便利なのですが、設定によって特徴的なノイズがのってしまいます。ノイズの乗る状況を調べようと思います。
音源として WaveGene Ver.1.40 を使い、再生リダイレクトの設定を変えながらノイズの有無を確認しました。ASIOで出力するとPCがハングする(2010年4月25日の日記を参照)ので、DirectSoundで出力しています。
結果としては量子化ビット数に関係なく、サンプリング周波数が48kHz、またはその倍数だとノイズが乗るようです。44.1kHzや88.2kHzで使用すれば問題なさそうです。
ノイズの乗った音を録音して調べてみました。するとSin波のはずなのに、突如 +Max→ -Maxへ値が吹っ飛んでいる、波が一部分欠けるなど、 原音とは異なる変な波形が録音されていました。
何かしら規則性がある崩れ方にも思えるのですが、録音された波形を眺めていても特に理由がわからず…うーん。
Windows UpdateにてCreative Sound Blaster X-Fiのドライバがアップグレードできるようなので、早速試してみました。
アップデートという行為自体は成功して何も問題なかったのですが、肝心のドライバの方がなんというかいろいろ残念なことになっています。
惜しむべくは再生リダイレクトの消滅です。この機能はオンボードデバイスなどにはない良い部分だったのになぜ消すのか…。理解できない。復活を求む。
良くなった点は下記のとおり。他にもあるかもしれないけどわからん。
ハングにはほんと困っていたので修正されたのはとてもありがたいです。
Linuxのプログラムはサクラエディタ + gccで作っていますが、ソースファイルが増えてくるとどうも管理がめんどうになってきます。
せっかく先日公開されたVisual Studio 2010(※)を手に入れたので、久しぶりにVisual C++ 2010(以降VC++)のエディタに戻るついでに、Linux/Windows双方でコンパイルできるようにしようと画策しました。
(※)最近はVisual StudioのExpress Editionが無償で手に入ります。商用利用も可能です。
しかし日本語がソースコードに入っていると困ったことがおきます。下記の表をご覧ください。
文字コード | さくら | gcc | VC++ Editor | VC++ compiler | コメント |
---|---|---|---|---|---|
UTF-8/LF | ○ | ○ | ○ | × | VC++ コンパイラで大量のWarningが出る&コメントの次の行を認識せずコンパイルエラー。 |
UTF-8/CR+LF | ○ | ○ | ○ | △ | 古いgccで問題が起きるらしい。VC++ コンパイラで大量のWarningが出る。 |
UTF-8/ZWNBSP | ○ | × | ○ | ○ | gccで先頭に変な文字がある、エラーとなる。個人的にはファイルにゴミを入れるのは嫌い。 |
EUC-JP | ○ | ○ | △ | × | VC++ コンパイラがエラーとなる。 |
Shift-JIS | ○ | △ | ○ | ○ | 文字コード指定しないとgccで問題が起きる。個人的にはShift-JIS嫌い。 |
なお、文字コードの意味は下記の通り。
つまりどのコードを選んでもすべて○になる組み合わせはありません。かなり微妙です。
表を作っていて気づいたのですがVC++ はエディタとコンパイラがセットのくせに、認識する文字コードが全然違います。何でこんな風になっちゃったのか知りたいところですね。
一番嬉しいのはVC++ のコンパイラがUTF-8/LFに対応してくれることですが、ことさらMSにおいてはこんな願いをかなえてくれるはずもないでしょうねえ…。
当方では、
Linux環境: Debian GNU/Linux(Lenny), gcc 4.3.2
Windows環境: Windows 7 Ultimate 64bit, VC++ 2010 Express Edition
で確認しています。
Creative PCI Express SoundBlaster X-Fi Titaniumのドライバから再生リダイレクトが失われてはや一週間(詳細は 2010年5月12日の日記参照。)ですが、いつのまにか再生リダイレクトが復活していました。あれ?なんで??
再生リダイレクトが復活したのは嬉しいですが、その反面ASIOで44.1kHzを再生するとPCがハングする要らないバグまで復活してしまいました。
挙動を見ているとどうもWindows Update以前のドライバと同じような気がするんだが…?いつのまにかドライバをロールバックしてしまったのかなあ?
VirtualBox 3.2.0(リビジョン番号は61806)がリリースされたのでインストールしました。Sun MicrosystemsがOracleに買収されてしまったため、Sunの社名やロゴが無理矢理Oracleに置換されています。
ロゴはさておき、起動するとどういうわけか異常に遅い、何もかもが以前(3.1.8)より遅い。例えばLinuxのブート時には、いくつもデーモンが起動されてログが表示されますよね。そのログが流れるスピードが以前の半分ないし、下手したら半分以下です。
こりゃたまらんってことで、設定をいじっていたら、1つ発見しました。仮想化支援機能(VT-x)をOFFにすることで、以前と同じ程度の速度に戻るようです。
代償として仮想マシン上でマルチプロセッサが使用できなくなりますが、この遅さに比べればそんなものなんてことありません。
ちなみに以上の現象は、会社のマシン(Intel Core i5&Windows XP 32ビット版)で遭遇しました。
まだ家のマシンでは試していません。家のマシンのVirtualBoxでもVT-xを使ってるので、おそらく同じように遅くなるでしょう…。何かわかったらまた書きます。
< | 2010 | > | ||||
<< | < | 05 | > | >> | ||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
- | - | - | - | - | - | 1 |
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 | - | - | - | - | - |
合計:
本日: