投稿

7月, 2015の投稿を表示しています

LADSPA IIR LPF Butterworth 2pole

イメージ
1pole と同じように2poleのLPFをLADSPAで作ってみる。 上記式から2poleのプロトタイプを計算 LPFを作りたいので、上記式 s に次式を代入する。 LPF: ((z-1)/(z+1)) / (2πfc) fcの中はこんなかんじ。ωcはカットオフ周波数で、fsはサンプリング周波数。 ブロック図は下図を採用。 LPF 2pole Butterworth ソースコード 処理部分以外は1poleとほとんど同じ。 /* namagi_lpf_2p.c 2015.07.29 * LPF Butterworth 2pole * compile windows * gcc -shared -o namagi_lpf_2p.dll namagi_lpf_2p.c -ID * * compile Ubuntu * gcc -fPIC -DPIC -shared -nostartfiles -o namagi_lpf_2p.so namagi_lpf_2p.c */ /**********************************************************/ #include &ltstdlib.h&gt #include &ltstring.h&gt #include &ltstdio.h&gt #include &ltmath.h&gt /**********************************************************/ /*LADSPAのヘッダファイルを読み込む*/ #include "ladspa.h" /**********************************************************/ /* マイクロ定数を定義 コントロールと出力 */ #define LPF_CONTROL 0 #define LPF_INPUT1 1 #define LPF_OUTPUT1 2 /**********************************************************/

LADSPA IIR LPF Butterworth 1pole

イメージ
処理が軽くて便利なIIRのLPF(ローパスフィルター)をLADSPAで作成してみる。 IIRとは、無限インパルス応答をもつ再帰型フィルタで、アナログ回路に起源を持つ。 まずは、もっともタップ数が少ない1poleのutterworthを試す。 3年以上前に Javaで作っている ので、その焼き直し。 上記式から1poleのプロトタイプを計算 LPFを作りたいので、上記式 s に次式を代入する。 LPF: ((z-1)/(z+1)) / (2πfc) fcの中はこんなかんじ。ωcはカットオフ周波数で、fsはサンプリング周波数。 ブロック図は下図を採用。 LPF 1pole Butterworth 係数計算 まずは係数を求める部分だけテストしてみた。これはLADSPAではなく、ターミナル上で係数を確認するためのプログラム。 #include &ltstdio.h&gt #include &ltmath.h&gt int main(void){ float m_fSampleRate = 44100; /* サンプリング周波数 */ float fwc = 1000; /* カットオフ周波数 Hz */ /* 配列の作成 */ float a[2]; float b[2]; /* 係数を求める */ float fc = tan(M_PI * fwc / m_fSampleRate) / (2 * M_PI); float A = 2 * M_PI * fc; /* 配列に入れる */ a[0]= A+1.0; /* a0を有効に */ a[1]= -1*(A-1.0)/a[0]; /*フィードバック */ b[0]= A/a[0]; b[1]= A/a[0]; a[0]= 1.0; /* 初期値に戻す 実際は使わない */ /* 各係数を出力 */ printf("a[0]=%f\na[1]=%f\nb[0]=%f\nb[1]=%f",a[0],a[1],b[0],b[1]); return 0; } a.exe を実行 上記

LADSPA ステレオアンプ

イメージ
前回エフェクトを作った時、Audacityそのものを再構築することで、ビルトインエフェクトを作った。しかし開発環境の都合上linuxでしか使えなかった。やはりWindowsでも使いたくなり、大げさなビルトインエフェクトも作らなくなってしまった。 そんな状況の中、Audacityが2.1.0になって事態は急変。 エフェクトの一部では、リアルタイムプレビューができるようになり、さらに設定の保存が出来るようになった。下記のようにエフェクトの種類ごとにできるできないがある。 Audacity2.1.0エフェクト種類による違い ビルトイン : リアルタイムプレビュー不可。設定の保存はできないものが多い。 Nyquist : リアルタイムプレビュー不可。設定の保存はできないものが多い。 VST : リアルタムプレビュー可能 設定の保存可能 ただしlinuxでは利用不可 LADSPA : リアルタムプレビュー可能 設定の保存可能 マルチプラットフォーム 設定保存も初期値も融通が効かず見劣りしてたLADSPAが一気に理想的なエフェクトになってしまった。 LADSPAはC言語で開発でき、開発に必要なSDKもヘッダファイル1個というシンプルな仕様。個人でちょろちょろ開発するにはお手軽なのだ。 またWindowsでもMacでもlinuxでも問題なく使えるマルチぶり。 いろんなOSを並行して使っている場合は、都合が良い。 再びLADSPAで、エフェクトをいろいろ作ってみようかと思い始める。 前回LADSPAでエフェクトを作ったのが2013年なので、すでに2年半経ってしまった。思い出しながら試してないステレオ処理のサンプルを作ってみた。LADSPAの仕様は十分把握していないが、簡単なものであれば作れそうだ。 LADSPA ステレオアンプの概要 試しに作ったものはステレオアンプで、左右独立したボリュームを配置。モノラルトラックに適用する場合は、左チャンネルがモノラル信号を受け持つ。右チャンネルは無効になる。この延長線上で複雑な左右チャンネルの処理もできるだろう。 下スクリーンショットは、linuxのLubuntuで作成したもの。 設定の保存先はlinuxでは以下のところだった。 /home/usr/.audaci

Audacity2.1.0 をLubuntuにインストール

イメージ
ubuntuではAudacityは2.0.4を使っていたが、最新の2.1以降は大きく変わっているので、バージョンアップしてみる。 linuxではいくつものインストール方法が存在する。 一番手軽なPackage Managerでは、まだ2.0.3なので話にならない。 最新の2.1.1は手動でインストールするしかなく、いろいろ面倒なので、 今回はPPA(パーソナル・パッケージ・アーカイブ)からインストールしてみた。この方法では現在のところ、最新バージョンは2.1.0だった。 近々手動で最新2.1.1をインストールするが、PPAでのインストール方法をここに残しておく。 sudo add-apt-repository ppa:ubuntuhandbook1/audacity sudo apt-get update sudo apt-get install audacity 無事インストールが完了。 アンインストール方法は以下のようにする。 sudo apt-get remove audacity

AudacityでMP3ファイルを保存

イメージ
うちにある携帯オーディオプレーヤーの多くはMP3しか再生できない。個人的にはフリーで高音質な Ogg Vorbis が好きなのだが、PCでしか使えないフォーマットでは汎用性がなさすぎる。 1993年に開発されたデファクトスタンダードであるMP3には勝てそうもないので、諦めてMP3を使うしかないのが現状。 個人的にMP3を作成する際には、Audacityを使ってエンコードしている。 主にビットレートは128、192kbpsを使っていたが、改めて各種設定のメリット、デメリットなども含めて検証してみようかと思う。 LAME(レイム) Audacityでは、音質がよいMP3エンコーダーといわれている LAME を使ってエンコードする。現在のバージョンは3.99.3。 ビットレート 圧縮音源の圧縮目安としてよく使われるbpsはビット毎秒のことで、1秒間に何ビットデータを転送したかを表す。 たとえばCDの音は、サンプリング周波数44100Hz、16bit、ステレオ(2ch)なので、 44100 x 16 x 2 = 1411.2kbps となる。 MP3で固定320kbpsといえば、転送量は 1/4.41なので、ファイルサイズは大体比例することになる。主なビットレートとCD(wav)の容量はおよそ以下のような関係になる。 320kbps size 1/4.41 192kbps size 1/7.35 128kbps size 1/11.025 64kbps size 1/22.05 MP3の圧縮方法は聴こえにくい高音域をばっさり切ることで、データ量を減らしている。 ビットレートによって、以下のように削る周波数が違ってくるが、ステレオとモノラルではビットレートが2倍違うので、注意が必要。同じビットレートならばモノラルは、はるかに音がよい。 下はホワイトノイズをサンプリング周波数44100Hz、16bit、stereoで作成したものを、代表的なビットレートごとに周波数スペクトルで見たもの。 まずはオリジナルの周波数スペクトル。ナイキスト周波数の22050Hzまで信号がある。 波形はキレイに整っている。 8kbps これはサンプリング周波数が強制的に24000Hzになった。2

音楽の録音にも対応できるICレコーダー
SONY ICD-PX440C

イメージ
実家の母がレコーダー TASCAM DR-40 を紛失してしまったので、急遽ボイスレコーダーを購入することにした。 紛失も考慮して、今回はエントリーモデルにした。 購入したのはSONY ICD-PX440Cというもので、TASCAM DR-40のような本格的な録音をするものではなく、ボイスメモ向け機種。 用途は、屋外での歌の大会や練習などの録音。 こういう場所では、ちゃんとしたセッティングでの録音は望めないので最近のボイスメモ機でも十分だろうと判断。 重要なのは、音量圧縮をしない自然な録音ができる機能があること。音楽の録音では、これが重要。 ボイスレコーダーの検討 歌の録音で使える安いICレコーダーということで、はじめの候補は音楽用のリニアPCMレコーダーであるZOOM社のH1。仕様もちゃんと公開されていて、それを読む限りばっちりだった。ただ以前は新品で5000円ぐらいだったのに、今は価格が2倍になり馬鹿らしく思って買うのをやめた。ヤフオクの中古品でさえも、かつての新品よりも高額取引されている。これよりも安いリニアPCMレコーダーはないので、ボイスレコーダーを検討しはじめる。 低価格のボイスレコーダーの中から最適な機種を選択するのは難しい。 メーカーも最低限の情報しか載せないし、録音サンプルもない。高級機の録音サンプルはあるので、聞かせるほどの品質ではないということなのだろう。音量圧縮をしているのか、していないのか、そういう記述が見当たらない。 そうなるとユーザーレビューを頼ることになるのだが、低価格商品のレビューはマニア層とは違うので、ロクなレビューがない。困ったものだ。仕方なくメーカーホームページから説明書をダウンロードして、そこから予測して使えるかどうか判断した。一番知りたい情報はなく、結局買ってからいろいろ試してみるしかないようだ。 SONY以外にもパナソニックやオリンパスの低価格ボイスレコーダーも検討。やはり音量圧縮については、あいまいな表現ばかりで、さっぱり不明だった。「おけいこモード」って何?という感じで、その説明は一切ない・・・ 結局一番知りたいことは判らないので、その他の機能的なバランスでSONYにすることにした。 ICD-PX440に決めた理由 音量圧縮をしない、まともな録音ができるかどう