投稿

Audacity DC-offset 自作プラグイン Nyquist

イメージ
Audacityなどで録音していると、ある条件で上にような直流ノイズが乗ることがある。ちょうど波形のセンターがズレたようなかたち。これを修正するためにAudacityにはNormaraizeというプラグインが用意されているが、オフセット機能としては0に修正するだけを提供していて、自由にオフセットできない。そこで自作で波形を自由にオフセットするプラグインを作ってみた。 単位はdBではなく-1.00~1.00までのライナーレベル。Audacityの標準の波形レベル。オフセットしたいレベルを拡大して確認にして値を決める。例えば下の例では本来0レベルが0.21となっているので、-0.21オフセットすることで修正できる。 Nyquistのスクリプトは下記のように単純なもの。これをメモ帳で保存。名前は「NAMAGI_DC-offset.ny」こんな感じでOK。 このファイルをwindowsであれば、C:\Program Files\Audacity 1.3 Beta (Unicode)\Plug-Ins このディレクトリに入れれば使えるようになる。 ;nyquist plug-in ;version 1 ;type process ;name "NAMAGI DC-offset" ;action "Performing NAMAGI DC-offset" ;info "" ;control offset "DC-offset" real " " 0.00 -1.00 1.00 (sum s offset) このプラグインで、自由にDCオフセットできるようになる。上記の波形をオフセットしてDCノイズをカットすると以下のようになる。 逆にこのプラグインでDCノイズを作り出すことも出来る。無音ファイルを作って、それをプラグインでオフセットすれば完成。妙な実験するのに便利。この手のプラグインがAudacityに標準で備わっていてもよいと思うのだが、なぜかない。そんな妙なことをするヤツは自分で作れということか。下がDCノイズの例。 sound programming 目次

Audacity Amp 自作プラグイン Nyquist

基本的な音量調整をするプラグイン。標準のAmplifyは、プラスマイナス50dB範囲なので、SN比のテストとかするには何度も適用しないとならないので面倒。 そこで0 ~ -120dBの範囲で調整できるプラグインを作ってみた。これで一気に-90dBとかにできる。 ;nyquist plug-in ;version 1 ;type process ;name "Namagi: Amp dB ver.110518..." ;action "Namagi: Amp dB ver.110518..." ;info "" ;control gain "gain" real "dB" -60 -120 0 (scale-db gain s) プロンプトから直接操作したい場合は、 (scale-db -80 *track*) と打てば-80dBにできる。 こういう、ちょっとしたものを作るにはNyquistは便利。ほとんど電卓感覚なので。 sound programming 目次

Apple iPod Shuffle 4th generation &
ELECOM EHP-SPNBS01GY

イメージ
自分用ではないが、iPodとヘッドフォンを購入した。作業しながら聞けるものということでApple iPod Shuffle & ELECOM EHP-SPNBS01GYの組み合わせになった。通常のiPod+付属インナーフォンでは、ケーブルがブラブラして都合が悪かった。買ったエレコムのヘッドフォンは、本体に直接iPod shuffleをセットして使うためケーブルがなく、引っかかったりする心配がない。またジョギングなどのスポーツシーンで利用することを想定しているので、安定した装着が期待できる。 まずはiPod Shuffleからレビューしてみたい。アップル製品を購入したのは久しぶりだ。改めてプロダクトへのこだわりがすごいなぁと感心させられた。でも見た目重視の比重が大きすぎるようにも思えたが、満足度は高い。 iPod Shuffle 4th generation MC750J/A 定価:4800円 (参考価格 4368円 Amazon) 発売日: 2010/9/2 メモリー容量 : 2GB サイズ: 29x31.6x8.7mm 重量: 12.5g パッケージ パッケージ凝りすぎ。プラケースまで作って凝りまくった結果こうなりましたという感じ。このパッケージは捨てられないなぁ。とりあえず、付属品を入れておこう。 完全にディスプレイだ。店頭での陳列を意識しているのが伺える。 同梱物 シンプルな内容だ。ドックじゃないのがよかった。個人的にドックタイプは嫌い。本当は接続用USBケーブルなんてないほうがよいのだけど。 説明書は小さすぎるでしょ。最小限の記述で、日本製品とは明らかに違う。 本体と箱の固定方法が不思議。 ひっくり返すとテープで止めていた。これで十分ということか。なかなか驚きの固定方法だ。 USBケーブル USBは4芯なので、ミニプラグ形状の4芯を使ってUSB接続を実現している。端子を減らしたい、本体を小さくしたいというのは分かるが、汎用性はなくなるねぇ。 付属インナーフォン これはフォスター電機製かな? 不明だ。音は悪くないと思う。無理していない音は好き。今回の用途では使わないけど。 説明書、ステッカーなど たったこれだけでいいのか?というぐらいの説明書。 本体

Ogg Vorbis と ACC, MP3 位相比較

イメージ
YouTubeがようやく完全WebMになったので、改めて音声コーデックについて考えてみようと思う。WebMは音声にVorbisというコーデックを使っている。従来はAAC だったので、その違いはあるのだろうか。特にYouTubeでは解像度の低い動画をアップすると、低ビットレートでコーデックされたので音質は著しく劣化した。ビットレートは不明だったが、音質とデータ容量から60kbpsもしくはそれ以下と思われる。ここでは57kbpsを基準にしてVorbis、AAC、MP3を比較しようと思う。 http://www.vorbis.com/ Ogg Vorbisについて簡単に紹介 対応フォーマットなどでOggと書いてある場合 Ogg Vorbisを指している場合が多い。本来Oggはコンテナで、Vorbisは音声フォーマット。OggコンテナにはFlacなど他の音声フォーマットが入る場合もある。そうなるとOgg = Ogg Vorbisでは混乱を招き兼ねない。ということで好ましい言い方ではないと思うのだが、すでにこの言い方が普通になってしまっているので慣れるしかないようだ。 ライセンスについて。MP3, AAC, Ogg Vorbisの中で、オープンソース&パブリックドメインはOgg Vorbisだけ。他はライセンスが発生するので、使用する場合は料金を払う必要がある。ユーザーとして利用するだけなら無料であるが、メーカーなどはライセンス料を支払っている。この関係でオープンソフトウェアはMP3,AACを手軽に扱うことは出来ない。Audacityにしても、MP3,AACは別途組み込む必要がある。Chromiumに至ってはmp3,AACをaudioタグで再生することすらできない。 Ogg Vorbisは普及しているのか? メモリオーディオなどのハードはMP3のサポートは当然だが、Ogg Vorbisをサポートしている機種は数えるほどしかない。そういう意味ではハード寄りの普及はメーカーの姿勢が変わらない限り見込めない。 一方ウェブ上ではこれから徐々に普及していくと思われる。知らず知らずの間に使われるようになるのではないかな? やはりライセンスの問題が発生しないというのは強いと思う。このBlogでも音声はOgg Vorbisを使っている。 Ogg V

FIR LPF及びHPFの係数を求めるプログラム

イメージ
前回のFIR LPF(ローパスフィルタ)に加えて、HPF(ハイパスフィルタ)にも対応させてみた。ちゃんとした資料もない中、適当に作っているので問題があるかもしれない。LPFの改造でHPFは実現できるので手軽に作れるかなと思ったら甘かった。少々苦労したが、まぁ結果はそれなりに出たかな。 LPFはタップ数が少ない方向で作れるが、HPFはサンプリング周波数に応じてかなりのタップ数を要求してくる。タップ数が少ないと全くHPFにならないこともあるので注意。またタップ数が増えるとデジタルフィルタの高速化を検討しないとだめだと思った。 FIR LPF/HPF Low-Pass Filter High-Pass Filter Tap N (odd number) Sampling Frequency Hz Cutoff Frequency Hz Rectangular Window Hamming Window Hanning Window Coefficient n Audacityで周波数スペクトル表示 タップ数による違いがどうでるか確認してみた。 ホワイトノイズにHPFをかけてみた。 サンプリング周波数は44100Hz。 150Hz以下をカット。 201タップ 501タップ 1001タップ 201タップでは効きが弱くHPFとしては不十分。501タップはそれなりの効き方をしている。さすがに1001タップもあると理想的な形になってくる。まじめに処理するとなると1000タップ以上は欲しくなる。 さらに低いカットオフ周波数で多めのタップ数で試す HPF カットオフ周波数80Hz 8001タップ これだけのタップを使うとかなりの精度になることが分かった。でも処理に時間がかかるので、デジタルフィルタの効率化をしないとダメだわ。 スクリプト 110727 今までHTMLソースを見れば分かると思って記載しなかったのだけど、そうでもないようなので改めて置いておきます。下記をコピーしてhtmlファイルにして、ブラウザで実行

FIRの係数を求めるプログラム Javascript

イメージ
勉強がてらにデジタルフィルタの係数を求めるプログラムをJavaScriptで作ってみた。信号処理の基本的なローパスフィルタになる。フーリエ級数の単純打ち切り法で得た係数に対して、打ち切りの影響を最小限にするためにハミング窓関数をかけている。直線位相特性を持つデジタルフィルタなのでタップ数は奇数。サンプリング周波数とカットオフ周波数を入力すると、カットオフ周波数よりも上の周波数が滑らかに削られるフィルターになる。位相が乱れない優れたフィルタ。数式はこんな感じで、これを元にプログラムを作ってみた。 FIRの係数を求める式。 n はタップのn 0 , n 1 , n 2 ・・・のこと。ωはカットオフ周波数。 0~π の範囲で設定する。周波数(サンプリング周波数の1/2)の半分なら π/2 。 1/3 であれば π/3 という具合。 下がハミング窓関数を求める式。 -M < n < M M は (N-1)/2 で求めている。この N はタップ総数。 21タップであれば、 M = (21-1)/2 = 10 となる。 これをもとに素直にプログラムにしてみるが、苦労したのはテキストエリアに配列の数値を改行しながら出力する部分だったりした。テキストエリアはマウスでぐぐぐっと広げられるのね。おおっすげ~と思った。作ってからJavaAppletで作ったほうが早かったとも思ったが、まぁJavaScriptの勉強なのでよしとする。 最終的には音の加工を目的にしているので、下のサンプルは音を前提とした数値になってます。 使い方 tap N に作りたいデジタルフィルターのタップ数(奇数)を入力。 Sampling Frequency に処理したいサンプリング周波数を入力。 Cutoff Frequency にカットオフしたい周波数を入力。これ以上の周波数がカットされる。ローパスフィルターなので、低い周波数のみ通過する。 calculate ボタンを押すと計算される。 下のテキストエリアに タップ数分の係数が出力される。タップ数が多くてテキストエリアに表示しきれなかった場合は、スクロールするか、テキストエリア右下をマウスでドラッグするといくらでも広げられます。 FIR LOW PASS Filter hamming w