Last update: Saturday, 04-Jun-2011 17:29:50 JST |
_ インターネットライブ中継を録音してくれと友人から頼まれたので、いろいろ試してみる。さすがにストリームの生録りはできないので、音声だけでも・・・ということで調査の結果、CMI8738のループバック録音機能を使ってやるのがもっともいいようだ。
_ ただしこれにもちょいと問題がある。今回RealAudioから出てくるストリームのFsは11025Hz。CMI8738はループバック録音のときにもまったく波形データの加工を行なわずSample/Holdなデータが記録される。つまりFs=11025Hzの出力をFs=44100Hzで録音すると、同じデータが4つずつ並ぶことになる。
_ これのどこに問題があるか・・・録音データを聴いてみるとわかる。4つずつ同じデータが並ぶということは、すなわちエイリアスが大量に発生しているのと同じこと。つまりエイリアシングノイズが乗りまくって聴くに耐えないのであった(汗)。
_ 解決には2つ方法がある。ひとつはFs=11025Hzで録音すること。最近のサウンドカードは低サンプリングレートの音を再生するときはちゃんと補間処理をするので、それに任せてしまえばいい。問題はあくまでFs=11025Hzとして処理しなければならないこと。CD-Rに焼いたり、MP3にしようとしたりすれば、これでは済まない。
_ ということでもうひとつの方法がローパスフィルタ。どっかにツールあるかなぁ・・・資料はあるから自分で書いてみてもいーけど・・・。
_ TWEは試したんですが、レート変換にはダメです。FIRパラメータが調整できるもののローパスフィルタとしてちゃんと効いていない*1ようで、エイリアシングノイズは大量に発生します。なお、Time Compress/ExpandもFFT/IFFTを使っているわけではないようで、結果は芳しくないです。
*1: Fs=11025Hzでサンプリングしたファイルを用意し、TWEでFs=44100Hzに引き伸ばしてWaveSpectraで見るとわかります。元がFs=11025Hzということは、5512.5Hz以上の成分は含まれないはずですが、TWEで処理したデータにはそれ以上の成分が発生しているはずです。
_
この手のツールの定番としてCoolEditとかGoldWaveとかがあるのはもちろん知っています。実際これらでやるときれいに処理できるんですが・・・やっぱFreeなものを探したいじゃないですか。
_ 夕飯のお買い物ついでにヨドバシをのぞく・・・フライングしちゃだめじゃ〜ん。
_ さっそく劇場版視聴。ソースの質があまりよくないのか、S/N比の低い画。でもノイズリダクションでの努力のあとはみえるし、エンコードもがんばっていて圧縮の瑕疵は感じさせない。当然スクイーズ・プログレッシブ。
_ 音声はDD5.1とドルサラ。サラウンドは控えめ・・・というか、効果音が回ってたり回ってなかったりするのが少々気になった。もっと回してもいいと思う。BGMのサラウンド配置は概ね満足・・・劇パトみたいに遊んでたりはしないけど^^;。声はTVよりきれいに録れているような気がする。
_ チャプターメニューは必見。完全動画で、カーソルが網目になっていてチャプター画像の上に重なってセピア調の動画に切り替わったように見せる。ここまでできるならDVDスクリプトだけで完全動画ゲーム作れるなぁ・・・とか思ったり。
_ でも、正直9800円はちと高いなぁ・・・7800円なら安心しておすすめできるんだが。
_ でもやっぱり、劇場よりリラックスして観られるのはいいです。ヘタな劇場よりずっと音はいいし^^。
_ WDBもPerl4だったりするし、GNSなんてawkですがな・・・^^;。
_ Internet watchからe-nikki。ん〜、コミュニケーションを主題にしているのは新しいっちゃ新しいが、単位は「人」どまりか。「文章」を単位にコミュニケーションをはかる日記はまだまだメジャーではないのか・・・。
_ 自分でも読めないソースを簡単に書けるかどうかはともかく、どんな言語だって読みやすくも読みにくくも書けるもので、読みやすく書けるようになるということが「レベルが上がる」というものではないかと思うのです*1。
_
うささんとこの更新時刻取得用ファイル、HEADリクエストのLast-Modified:
がLast-Modifiedじゃないのね・・・数時間SDBのトップに居座り続けてました(汗)。
_ awkがわからないからperlをとか、perlのほうが読みにくいというのは、わし的にはどうも理解できない。というか、わしの場合はどんな言語を使ったとしてもしょせんはC、もっと遡ってBASICやアセンブラの頃と何も変わりはしないから。
_ もちろんOOP手法が確立してからの言語は、構造化時代の言語とはアルゴリズムの設計方法が大きく変わってはいるが、だからといってOOP手法が構造化時代の言語に適用できないわけではない。わしの場合はBASIC・ASM・C・awk・C++・perlくらいの順序で使用する言語を増やしているが、後に覚えた言語で培った設計や実装の手法は必ず前の言語に生かせるから。
_ どんな言語もC的に書いてしまうなら、なぜ全部Cでなくawkやperlを使うのか。awkは文字列処理機能がCより柔軟だからで、perlは正規表現によるより細かな文字列処理とOSに依存した処理の機能がawkより充実しているからで、それだけでしかない。機能優先で「まず言語ありき」ではないのだ。*1
*1: そういった意味では、機能的理由、あるいは「使用しなければならない理由」(Rubyで書かれたプログラムに手を入れたいとか)ができるまで、わしはRubyを使うことはないような気がする・・・^^;。
_ ひとつの言語にある程度精通すると、どんな言語も文法書さえ見ればとりあえず「読める」ものだと思っていますが、違うでしょうか。わしはRubyで書いたことはないが、プログラムは読める*2し。同じことはFORTRANやPASCAL(Delphi)にもいえる。
*2: もちろん、アルゴリズムとして読めるかどうかとは別の話。
_ いんちきFIRフィルタって・・・(笑)。画像ツール系の用語からすると「ぼかしフィルタ」そのもの*3だと思うんですが、そういう風に表示ドライバ側に仕込む手法もあるんだなぁと驚いてみたり。しかし、5x5だとかなり重くないですか?
*3: この手の資料をちゃんと読んだことはないんですが、高速なぼかしフィルタというとこんなパラメータか。以下、Photoshopのカスタムマトリックスフィルタで試せます。
| 0 0 0 0 0 | 0 0 1 0 0 | 1 2 4 2 1 | | 0 0 1 0 0 | 0 1 4 1 0 | 2 4 8 4 2 | | 0 1 4 1 0 | 1 4 8 4 1 | 4 8 16 8 2 | | 0 0 1 0 0 | 0 1 4 1 0 | 2 4 8 4 2 | | 0 0 0 0 0 | 0 0 1 0 0 | 1 2 4 2 1 | | scale=8 | scale=32 | scale=100 |
_ T2U終了。あちこちで評判いいけど、わし的にはどうもダメみたい。
_
健とル子は可愛らしかったけど・・・^^;。
_ う〜、アンプ欲しい・・・と思ったひととき。車の修理代を返済するまではさすがに買えないよなぁ・・・^^;。しかも今年車検なんだよなぁ・・・^^;。*1
*1: わし程度の所得で車とAV(とPCとまんがとetc.)に注ぐのは、どーみてもヤバい気がしないでもない^^;。
_ 世界で一番醜いプログラムコンテスト並・・・って、それは酷い^^;。
_ MDとかDATとかを繋いで遊ぶなら「SRCを通さない」という点でSB Live!よりCMI8738搭載カードがおすすめ。「WinFast 4Xsound」がアキバで比較的楽に入手できます。
_ T2Uの1stENDがル子が多いのって、単純に「雅史endだから」じゃないかと思うんですが・・・^^;。
_ ぱぱんださんのT2U雑感。わしとよく似ているような・・・。
_ 禁句。この泡盛はesuさんが正月に持ってきたものだったりする・・・。:-)
_ awkはストリームエディタ。わしは始まりがgawkと「プログラミング言語AWK」(トッパン・ISBN4-8101-8008-5)。でもやはりこの本*1によるとやはり名前通りの「awkはプログラミング言語」だと思うんですよね・・・。
*1: AWKはこの本の著者(Aho, Weinberger, Kernighan)の頭文字であることはおなじみ。
_ この本によると、開発動機は「どうやったらgrepとsedで数を扱えるようにするか」だそうです。ある意味「sed+α」ではあるけれども、最初からCをもとにしたif・while・for・{}などの制御構造と変数・関数、文字列処理に便利な連想配列などは実装されていたようで、パターン→アクションという形式をとりながらもやはり「言語」だったのではないかと思います。ユーザー定義関数構文がいつ頃実装されたかが書かれていないのが残念。
_ なお、この本が書かれたときのawkは、SysV R3.1に含まれたものだそうです。
_ IOCCCなんてものがあるですか。・・・ふむ。でも、こうなるとある種の「汚く書くためのエレガントさ」が出てくる・・・というか出てこないと評価されないですよね^^。
_ あちこちで話題になっている1万円シェアウェア。いーじゃん・・・価値を決めるのは買うほう。買う輩がバカを見て、vectorが見本誌1冊分損するだけのこと。そのうち荒らされてみんながバカを見ることにもなりかねないが・・・^^;。
_
はちさんとこからmallocの実装の話。そのへんを知るにはソースを読んだりsbrk()
を知っていたりしないといけないわけで。sbrk()
なんて今や自動*2だし、高速化のためにfreeした領域は一時保存されて再度mallocするときにそこから割り当てられる実装が多いことなんかも、知らなくても動きますから。
*2:
といっても、わしは自動でない実装はX68のXCライブラリしか知りません。
メールはこちらへ...[後藤浩昭 / Hiroaki GOTO / GORRY / gorry@hauN.org]