なたで日記

いろいろな思ったこと書きますヽ(^▽^ゞ) by natade

Posts Tagged ‘音声信号処理

指定した秒数で区切るツール Simple Wave Splitter

leave a comment »


Simple Wave Splitter

wavファイルを指定した秒数で区切るツールを公開しました。
JRE がインストールされた環境で利用できます。

デフォルトは、10秒+モノラルになっています。
sws_sc_1_1

使い方

1. 一番上の「ここにファイルをドラッグ&ドロップ」に、wavをドラッグ&ドロップします。うまくいくとファイル名が記入されます。
※wavファイルは、CD音質(44100Hz, 16bit, 2ch)がいいです。それ以外はテストしてません。
2. 「出力ファイル名」というのは、雰囲気が分かる人は設定してください。デフォルトのままでいいと思います。
3. 「区切りたい秒数」は単位は「秒」で秒数を指定してください。小数点も可能です。区切るときはこの秒数「以下」になります。
4. 出力ファイルはモノラルがいい方は、「出力ファイルをモノラル化」にチェック
5. 「カット開始」で、wavファイルがあるディレクトリに、カットされたファイルが作られます。

 

おまけとして、技術がたくさん詰まった素晴らしいプレイヤーで「試曲」ができます。

スーパーかっこいいビジュアライザーと、ハイクオリティなエフェクターを体感セヨ!
sws_sc_1_2

直接ダウンロード
他にこれまで作ったスバラシイソフトとかはこちら


裏話(技術ポイント)
・ビジュアライザーはソフトウェアレンダリングで実装してます!
・リバーブは反射音を自動作成後に、FFTで畳み込みの実装することで超高品質なリバーブを実現!

Written by なたで

2015年5月24日 at 20:52

カテゴリー: music, program

Tagged with , , ,

オーディオ用語を音響信号処理に置き換える

leave a comment »


2ちゃんねるで有名な「電力会社の違いでも味付けに差がでる」と呼ばれるテキストがある。
これは、コピペと呼ばれている。同一文章をコピー&ペーストで張ることから呼ばれている。
なぜ、張られるのかというと、目的の一つにレスをもらいやすいというのがある。
まあそういう話はおいておいて、このテキストとはどんなものだろうか。
有名なので知っている人も多いかと思うが引用。

>電源コードを変えると音が変わるのはピュア界では常識です。
>私は発電所から専用線で我が家まで電力を引っ張り込んでいます。
>電線の材質は無酸素銅が最高ですよ。
>おかげで、ウチはミニコンですが、ハイエンドよりいい音がしますよ。
>
>ちなみに電力会社の違いでも味付けにサがでるよ。
>
>電力会社     長所      短所   お奨め度
>——————————————————————
>東京電力     バランス   モッサリ遅い    C
>中部電力    低域量感   低域強すぎ   A+
>関西電力    高域ヌケ   特徴薄い    B
>中国電力    透明感     低域薄い    B+
>北陸電力  ウェットな艶   低域薄い     A-
>東北電力    密度とSN   低域薄い    A+
>四国電力  色彩感と温度   低域薄い    A
>九州電力     バランス   距離感      C
>北海道電力   低域品質   音場狭い     B-
>沖縄電力    中高域艶   モッサリ遅い     A
>
>
>で、上は発電所から5Km地点での特徴。
>それより自宅~発電所間の距離が長いと上記特徴+マイルドの味付け
>短いと上記特徴+刺激的な味付けが加わるよ。

これが本当なのかどうか。
そういうことはここでは議論しない。
今回こういう長所・短所にかいてあるオーディオ用語を
DSPで再現できるならどうやって設計すればいいか考えたいと思う。
というわけで、まずは下調べとしてオーディオ用語
音響信号処理に置き換えたらどうなるんだろうかという観点から調べていきたい。


艶のある音

Sound Field ~オーディオのまとめ~音の艶 -つや- とはいったいなににまとめられた
超初心者のための質問スレッド★スピーカー編 46★より
>493 名前: 名無しさん@お腹いっぱい。 [sage] 投稿日: 2011/03/25(金) 00:08:03.80 ID:+oWIAQCQ
>音の艶とは言葉でいうとどのような事なのでしょうか?
>このスピーカーは艶っぽい音がでるとかって表現があったりしますが
>ぜんぜんわからなくて・・・・。
>例えば女性ボーカルの声でいうとどんな感じのものをいうのでしょうか??
>
>494 名前: 名無しさん@お腹いっぱい。 [sage] 投稿日: 2011/03/25(金) 00:29:20.62 ID:aVfXF9Ko
>音の艶を言葉で言うとおとのつやだと思うけど。
>極弱いエコーに近い感じだと私は思ってる、
>皆が皆単語に対して同じ内容を言ってるかは自信無い。
>
>
>495 名前: 名無しさん@お腹いっぱい。 投稿日: 2011/03/25(金) 00:35:22.85 ID:fD54j/Q2
>>>493
>「艶」ねえ。なんとなくわかるんだが説明しにくいわなあ。
>たとえば♪I’m issinng you~とか歌ったとき、
>①艶のない音・・・やっぱり、貴方がいなくて寂しいなあ(以前はすべて楽しかったのに・・・)
>②艶のある音・・・貴方がいない、すごく寂しい(考えただけで濡れてしまうの・・・)
>というふうに聞こえるような違いかなあ。
>
>再生音の特徴としては中音に特徴(的なピーク)があるんだろうねw
他には、動画として「艶のある音
音を聞いてみると、たしかに495の匿名希望さんの書き込み
中音(1000Hz~8000Hz?)を強調した感じなのだろうか。
他に調べてみたが、これ以上の情報は見つからなかった。
とりあえず、艶のある音とは、1000Hz~8000Hzぐらいの周波数帯域を強調した音とする。
ピーキングフィルタに通すことで実装可能。


ウェットな音

言葉通りに解釈すると、ウェットというのは濡れた音。
濡れているということは、文字が滲んだりする。
滲んだ文字は、画像信号処理で言えば、低域強調フィルタ(平均値フィルタ・ガウシアンフィルタなど)に相当する。
音声信号処理で言えば、低音が強い音だということだろうか。
と解釈したが調べてみると違うみたい。
DTM初心者の方の為の作曲講座ドライとウェットによれば
>DTMの現場ではよく【ドライ】と【ウェット】という言葉が使われます。
>
>【ドライな音】というのは、エフェクトがあまりかかっていない音、
>もしくは全くエフェクトがかかっていない音のことを表します。
>
>【ウェットな音】というのは逆に、
>エフェクトがたっぷりかかっている音のことを表します。
>この場合のエフェクトというのは、主にリバーブの場合が多いですね。
>
>つまり、リバーブをほとんどかけてない音が【ドライな音】で、
>リバーブをかけている音が【ウェットな音】と考えていいと思います。
ということだそうだ。
ちなみに、昔私が購入したZOOMのマルチエフェクタRFX-300説明書にも
「Wet Mute」「Dry Thru」などの単語が使われており、
企業でも使用しているしっかりとした専門用語であるといえる。
よって、ウェットな音はリバーブ処理をかけた音とする。
所で、もしもウェットな音からドライな音に変更したい。
と思った場合は、リバーブを消さないといけないので、
リバーブのインパルス応答を推定して、逆畳み込み処理を行う必要がある。
よって、非現実的な処理が必要であるため、無理な話だと考えよう。


特徴が薄い音

「薄い音」だけならば、
▼ピック総合スレ part11▲より引用
>202 : ドレミファ名無シド : 2008/07/23(水) 21:21:17 ID:m6yhtgw3 [4回発言]
>>>200亀か・・・俺には薄い音って言うかなんか均一な音に聞こえるから余り好きじゃないな。
>今思ったんだけど鳴り=アッタクっていう認識?
「均一な音」って画像信号処理で言えば、ヒストグラムの平坦化処理
音声信号処理で言えば振幅値ヒストグラムの平坦化なので、
薄い音とはコンプレッサー処理をかけたような音で代用できるのだろうか。
ただ、今回は「特徴が薄い音」である。
これは、音声に「何らかの特徴を付ける」というのが一般的(?)だが、これはそれを行わないという意味だろうか。
だとしたら、何も信号処理を行わなければ再現できると考えられる。


透明感のある音

CRAZY HALさんのサイト浸食HAL脳耳(みみ)通信 Vol.4/音の表現用語によれば
>透明感・S/N感・歪感・雑味:音の透明感は高いほど澄んだクリアな音ということになる。
>S/N感はシグナル(Signal)とノイズ(Noise)と割合で分母のノイズ(N)が
>低いほど全体として数値が高くなるからS/N感は高いほど一般的に音質は良好とされる。
>歪感は音の歪み具合でこれは低いほど元の音に近い正確な音(原音忠実)ということになる。
>歪みが負に目立つ場合は<雑味がある>などともいう。
>スピーカーの存在感の無化は透明感とは違うが、
>様々な音像がハッキリとクリアにきこえる音の場合は<音離れが良い>などともいう。
上記のことから透明感がある音は、S/N比が大きい音と考えられる。
ノイズを削除するために簡単な方法としてスペクトルサブトラクション法がある。
これは、あらかじめ音が含まれていないノイズ部分の音を、
楽曲の流れている区間の音に対して減算処理を行うことで実装する。
実際には、振幅スペクトル部分のみに減算を行い、位相スペクトルは原音のを利用する。
これは、常に同一の音量レベルとノイズが含まれているときに効力を発揮する。
これとは違いベイズ推定を利用した音声強調に、MMSE-STSA法があり、これは携帯電話で広く使われている。
なお、透明感のある音を簡単に楽しみたい場合は、
周囲の雑音を低減させるノイズキャンセラがついたイヤホンを使用すればよいと考えられる。

もう一つの参考として、芯が強くて透明感のある音を奏でる一押しスピーカー ELAC「180シリーズ」によれば
>透明感があり、音のレンジ感が広く軽快な音
>ELACの良さの一つは「透明感」です。音のレンジ感が広く、中高域がクリアです。
>低域が重々しくなく、軽快にリズムを刻みます。
>全体にわたってきわめて透明でありながら、芯がしっかりしているので、クラシックだけでなくポップス、現代曲にもマッチします。
透明感が、中高域の音量レベルのダイナミックレンジが広いことを指すようにも見える。
これはスピーカーの話なので、小さな音から大きな音まで、
低い周波数帯域以外では、再現性が優れている。
つまり低い周波数帯域以外では、周波数特性がフラットであるということなのだろうか。
逆に言えば、透明感がある音は、スピーカーの周波数特性がフラットならば、
低い周波数帯域の音量を下げたりすれば作れるのかもしれない。

他にもギターについての質問です。JAYWALKのような音(透明感のある音?)を出すにはによれば
透明感のある音とはコーラス処理をかけた音
などと、いろいろ揺れている。
ここは、真ん中のを採用したいと思う。
しっかりとした大学講師が言っているということで。
ローシェルビングフィルタに通すことで実装可能。
コーラス、スペクトルサブトラクションなど全てを実装するのも面白いかもしれない。


もっさりとした音

OTAKU-MOTIONさんの【オーバーヘッド型ヘッドホン】 PHILIPS SHL9500 レビューから引用
>音のバランスはおおよそフラット。細かく言えば低音寄りのかまぼこ。
>派手なドンシャリではないため全体的にもっさりとした音。
もっさりした音とは、低域の周波数帯域が他の帯域に比べて強調されているような音とする。
もっさりという言葉自体、重たいイメージがあり、
重たいものは固有振動の式でMが大きいため
低い周波数帯域という関連があると考えられます。
音声信号処理ではローシェルビングフィルタに通すことで実装可能。


エッジのある音

きんたこさんのデジタルでもアナログの音が楽しめる!から引用
>当時使っていたCDP(DENON DCD1650AL)の音に不満(良く言えばエッジのきつくない音、悪く言えばもっさりした音
先ほどのもっさりした音との関連で、
エッジのある音とは、低い周波数帯域に比べて、高い周波数帯域の音が大きな音とする。
エッジという言葉は、英語の鋭さであるため、速い周波数と関連があると考えられる。
画像信号処理では、鮮鋭化処理(ラプラシアンフィルタなど)に相当する。
音声信号処理ではハイシェルビングフィルタに通すことで実装可能。


色彩感と温度がある音

これは、四国電力の長所に書いてあるものである。
色彩感と、色温度のことだろうか。

色彩感とは、色の彩度を表してると考える。
彩度は、HSV色空間HLS色空間のSaturationであり、RGBの色から計算で求められる。
彩度大きいための条件には、他の色の交わりがないと考えられる。
これは白色雑音、つまりノイズが少ないと考えられないだろうか。

色温度とは、光の色を表していると考える。
色温度が大きいとするならば、青色っぽい感じを表すと考えられる。
可視光線で青色の波長は、赤色に比べて短い。つまり高い周波数を持っている。
よって、高い周波数成分が大きいことを表すのだろうか。
四国電力の短所の「低域薄い」もこのためだと考えれば納得がいく。

色彩感と温度が良いとはS/N比が大きく、さらに低域の周波数成分が抑えられているような音とする。

Written by なたで

2011年8月18日 at 00:13

カテゴリー: memo, music

Tagged with , , ,

Java の Sound API を使用すると文字化けする問題について

with 3 comments


Windows環境で、javax.sound.sampledを使用した以下のコード。

Mixer.Info[] mixerinfo = AudioSystem.getMixerInfo();
for(int i=0;i<mixerinfo.length;i++) {
	System.out.println("****\t"+i+"\t***");
	System.out.println(mixerinfo[i].getName());
}

上記のコードを利用すると、
ヘルプによれば

getName

public final String getName()
ミキサーの名前を取得します。
戻り値:
ミキサーの名前を表す文字列

と、名前を取得できるはずです。
しかし、日本語環境の場合、ミキサーの名前に全角文字があると、文字化けした名前を取得してしまいます。


「Port スピーカー」 → 「Port ?X?s?[?J?[」
「Port ライン入力」 → 「Port ???C??????」
「Port マイク」 → 「Port ?}?C?N」
「Port SPDIF出力」 → 「Port SPDIF????」
「Port SPDIF入力」 → 「Port SPDIF?o??」
「Port 再生リダイレクト」 → 「Port ??¶???_?C???N?g」

ネットでこの問題を探してみると、
Java の Sound API を使用した際に文字化けが起こってしまう問題に関しての質問です。
のように困っている人もいたりします。

なぜこういう自体が起こっているかというと、
多分内部で文字コードの変換が適切に行われていないためだと考えられます。
海外では話題が見つからなかったことから、誰か教えにいかないと多分治らないです。

解決策として、例えば。
「Port ???C??????」
これに関して、

for(int i=0;i<x.length();i++) {
	System.out.println((int)x.charAt(i));
}

を実行すると

「 80 111 114 116 32 131 137 131 67 131 147 147 252 151 205」

となることから、?の部分でも、しっかりコードが取得できていることが分かるので、

一度byte[]に変換した後に、
ByteArrayInputStream で、このバイト列を入力ストリームとして、

ByteArrayInputStream is = new ByteArrayInputStream(binary);
String charsetName = "JISAutoDetect";
InputStreamReader inputreader = new InputStreamReader(is, charsetName);
BufferedReader br = new BufferedReader(inputreader);

みたいな形で文字を読みこめば、文字化けを治すことができます。
ByteBufferと、CharsetDecoderでも出来るかも。

ただ一つだけ問題があって分からないことがありました。
再生リダイレクト」が「??¶???_?C???N?g」のように文字化けをしていて、
実際の文字コードは、

「141 196 144 182 131 138 131  95 131  67 131 140 131  78 131 103」

となるはずが、charAtで取得すると

「141 272 182 131 138 131  95 131  67 131 140 131  78 131 103」

となってしまうのです。

「再生」が「141 196 144 182」のはずなのに「141 272 182」

196 0b11000100 0xC4
144 0b10010000 0x90

がなぜ

272 0b0000000100010000 0x0110

となってしまうのか。
誰か分かった方いたら教えてください。

Written by なたで

2011年7月24日 at 19:08

カテゴリー: program

Tagged with , , ,

Google音声認識で流れる音

leave a comment »


iPod touchのグーグル音声認識を利用出来るアプリケーション

ここで、話した内容が認識されるんだけどたまに変な怪音が流れる。
録音した音

なんだろこれ。色々な子音が流れているみたいだけど。

Written by なたで

2011年4月10日 at 20:45

カテゴリー: memo

Tagged with

最近のプログラミング状況

leave a comment »


先月はかなり忙しく、これからも忙しくなりそう。(_Σ_)
というか去年の年末より忙しい。
ひどいときは1週間の内に2回お泊りしたし。
本当にどうしてこうなった状態です。。。。゛(ノ><)ノ 

日記の方も書くネタがたまっていっていく一方で、
書く元気とか、やる気が中々でない状況。

そこで休みを利用して、作ったけど、事情で公開出来ないものとか、
公開するまでもないものとか、製作中なものとかの紹介で、消化していきます。
いつも通り全部Javaです。

A

よくあるwavプレーヤー。
とある理由で波形を取得したかったので、
wavファイルの解析から、出力デバイスへの出力まで1から制作。
一応、チャンネル数やサンプリング周波数は、2ch、44100Hz、16ビット以外でも再生できるようになっています。
いや、もしかしたら量子化ビット数は対応させてなかったかな。
もう作ってからひと月以上経つので、忘れ気味。
本当は、mp3とかも対応させたいけど、Javaだったら一度ライブラリ使ってwavに変換するしかないかな。
JavaのLGPLとかはよく分からないので、好きじゃないです。
GUIは、以前作ったsmfプレーヤー を流用。
あと波形から、FFTを利用した解析機能もついています。

B

剛体球の運動のシミュレーション。
簡易型ゲームに使用するような、めり込みを利用した当たり判定ではなくて、
速度ベクトルを持った球同士が、何秒後にぶつかるかを方程式を解いて判定しています。
(この方程式については、「実例で学ぶゲーム3D数学」が役に立ちました。)
そのため、速度をすごい速くしてもめり込んだり、通過することはほぼ絶対ありません。
衝突後に、球をどのように動かすかが、結構大変で3日間近くかかりました。
attochipさんに色々とお世話になりつつ、完成。
片方の球を止まった球だと考えるというのは、当たり判定も、衝突後の動きに関しても、同じですね。
これについては、いつか解説したいです。

シミュレーションということで、色々設定を変えたりしなきゃいけないです。
ですが、GUI作るのは面倒なので、HSP風な言語?で右側から指定するという形にしました。
凝ったものではないので、REPEAT文・GOTO文・IF文・変数・計算など使えません。
いわゆる指定された命令のみ使えるというものです。

こだわり機能として、左側の画面を、自由に拡大・縮小・回転・移動が出来ます。
ここは3D処理ではお馴染みのアフィン変換を利用してます。
ところで、Graphics2Dで線の太さを、実数で指定できるのは驚きました。
0.5とかに指定した場合は、色が薄くなり細くなります。

C

重さを持つ粒子同士にバネがついていると考えた場合のシミュレーション。
4次のルンゲクッタ法で多変数の2階微分方程式を解いています。
多変数はできたけど、2階っていうのが難しかったです。
上のは、境界が自由端になっています。
固定端は、両端の重さを無限大として考えればいいのかな。
適当に考えたので、違う可能性大だけど。うん。

GUIは、作品Bを流用。
拡大・縮小・回転・移動のオマケ機能もそのままついています。

D

ゲーム制作ツールと、3Dソフトウェアレンダリング関連。
3D描写に関しては、以前のバージョン(1月1日のブログ)から
・メタセコイアのデータインポート機能追加
・独自3Dモデル形式のインポート・エクスポート機能追加
・複数のデータのパッケージ化追加
・それにともなって、使い易いI/O関連のライブラリを作った。
・ハードグラウンド機能(90度のデコボコ)の追加
・バンプマップからの法線マップ生成の高速化(DirectX9シェーダプログラミングを参考)
・パーティクル描写の最適化(高速化)
・3D上の線と、表示画面とのクリッピングの追加(3各ポリゴンのクリッピングは未対応)
・反射マッピングの追加。(法線を0.5ずらしたものをテクスチャのUVに利用する例の方法。これを参考)
・水の表現の追加。(2つのノイズを一定時間ごとにずらし重ねたものを、UVに利用したり、法線に利用したり)
・なんかGUIに利用できるようなアイコン制作とその配置。
・簡易型のテクスチャの生成言語(以前作った画像処理ツールオレンジビューアを利用)
・パーリンノイズを利用して、2つのテクスチャを自然に合成とかできる。(SSの緑とレンガの中間のテクスチャ)

順調に進んでいる?ように見えますが、3月中旬から進んでません。
マップエディタには魔物が潜んでいます。気をつけてください。ヽ(^o^)丿

それはおいておいて、水の表現なのですが、
最初、次の用な感じで実装しました。
・ 2次元のパーリンノイズを2つ生成しておいて、それをずらし重ねて、波を表現。
※ずらし重ねるときに、小数点の場合も考えて補間法を用意しておく。
・ 上記で生成した波みたいなものを高さマップと考え、各頂点の法線を生成。(頂点の位置は固定)
・ 法線から、反射マッピング用のUV生成。
・ あとは、半透明で描写。

で、この方法。正直640×480じゃ30fpsはきついです。
最近のPCだといけると思いますが、その他のPCじゃかなり危険です。
描写部分のみをマルチスレッドで動かしてもです。
というわけで、結局妥協して、
テクスチャを利用しない(反射マッピングを行わない)、上記のSSのような感じになりました。

でもなんか、動作速度上の都合での妥協っていうのは自分的には悲しい感じがして、
グラフィックがもっと綺麗なのがいいなあって思ってきて、開発停滞中。
この先、オブジェクトの配置・描写とかの表示とかも考えると、いけるかなとか。
立ち絵的なものは、「g.drawImage」を使えばJavaの機能で、高速に描写できるから問題ないと思うけど。
とにかく、こういう事考えたりしていて、なかなか進まなかったりする。

JOGL使っておけばよかったかも。
シェーダ言語とか使ってみたいし。自影が表現できるシャドウマッピングとかやってみたいなあ。
その前に、やる気出したり時間を作ったり、という根本的な課題が。

話が変わりますが、saharanさんの「Jhun」がすごすぎる。

Written by なたで

2010年5月5日 at 11:43

音の高さの表示ソフト drawwaveの紹介2

leave a comment »


音の高さの表示ソフト drawwaveの紹介」の続きです。

前回はバージョン0.035の紹介でしたが、
あれからバージョンアップしたので新しい機能とかを紹介していきます。p(´∇`)q

まずは、いつも通りのメイン画面です(^o^)

ボタンの配置と色が前と変わっています。
「Wave」というボタンが追加されたみたい……。

これを押すと……。

音声波形が表示されました(。>ω<)
以前、drawwaveとwaveが名前にあるのに、音声は波形が見られない><
とか言ったやさきに、機能追加です。

他に、音高のキーボード表現もついてました。
メニューバーの 表示(V) → キーボード(K) です

以前消化した↓のように線表示もいいけど、やっぱりキーボードの方が直感的で分かりやすいです(。>ω<)
押したところも赤くなるから、分かりやすいですし。

キーボードの設定は、こんな感じでした。

なんと、MIDI出力がついています。
これでマイクから喋った声をMIDI信号に変換できますね。

音声波形の表示設定は、無難にこんな感じ。

キーボードの表示設定はこんな感じ。

1オクターブのみ表示にチェックを入れると、低いドも高いドも同じ鍵盤に表示されるモードになります。
鍵盤の大きさは0.5倍~10倍まで設定できます。

10倍に設定するとこんな感じ。Σ(・ω・`|||)でかっ!

ところで、drawwaveのOUTとシーケンサのINを、MIDI Yokeなど仮装デバイスでつなげると、
喋った声で、*.midを作成できます。あんまり、うまくいかないけどね。(。・ε・。)ムー

ところで、音の高さを正確に出すおすすめ設定をここで紹介しておきます。
↓以前のスクリーンショットを使って説明。

シフト長を0.001ぐらいにして、メディアンフィルタの大きさを12ぐらいに設定する。
これで結構、音の高さを正確に拾えると思います。

これでdrawwaveの紹介2を終わります!
ちなみにこのdrawwave、まだまだ調整中です。

drawwaveのダウンロードページへ

Written by なたで

2009年11月4日 at 23:44

音の高さの表示ソフト drawwaveの紹介

with one comment


音の高さを調べるソフトといえば、「おんかいくん」などが上げられますが、
今日はJavaで製作された「drawwave」というソフトを紹介します。(*^U^*)

何をするソフトかというと、リアルタイム(実時間)で音声を目で見るソフトです。
音声の波形を描く ということで draw wave というわけです。

まずは、メイン画面です。(o^∇^o)ノ

赤いボタンは、おなじみの録音ボタンです。これを押すと解析が始まります。
(現在、解析中なので赤く光ってます!!)
緑のボタンは、音圧レベルを解析するときのキャリブレーションを行うためのボタンです。
(アイコンが分かりづらい上、このボタンは消える可能性も。)
青いのは、設定ボタンです。色々いれます。
SPLは、「Sound Pressure Level」の略で音圧レベルの表示ウィンドウを表示します。
Pitchは、音高基本周波数)の表示ウィンドウを表示します。

つまり、「音圧レベル」と「音高」を調べることができます。
(将来機能増えることもあると思いますが)
ということは、drawwave と言う名前なのに、音声波形の表示はサポートしていないのです。εミ(っ>_<)っ

言語機能で、日本語を選べます。
←解析していない場合は、赤いボタンが点灯していません!
辞書ファイルはxmlで、
決められた書式にのっとって作成した辞書ファイルを
同ディレクトリに置けば対応言語を増やすことが出来ます。

では早速、解析中のウィンドウを紹介していきます。

これが音圧レベルです。

音の大きさをデシベルで表示します。目盛りがついていて分かりやすいですね。
時間軸もあるので、どんな感じで音圧レベルが変わっていくか分かります。
また、騒音計のように動特性があります。

次は、音の高さの表示ウィンドウです。

音の高さは、1音のみに対応しています。
表示形式は色々と設定できて、上のやつはMIDIノートナンバーで高さを表現しています。
ピアノでC4(60)を鳴らしているのですが、60.2と大体あっていますね。
周波数からMIDIノートナンバーへの変換は、
SMFプレイヤーをつくろう!リベンジ「出力ポート、MIDIと周波数の関係」」で紹介しています。
ちなみに音の高さなのですが、1オクターブの間違いが結構あったりする。

次は設定の紹介です。

デバイス→波形入力です

デバイスは、使用する音声入力用デバイスを変えることが出来ます。
チャンネルでは、そのデバイスの両チャンネル(モノラル)、Lチャンネル、Rチャンネルと選ぶことが出来ます。
FireFace 800とか大きなオーディオインターフェイスだと「Analog (9+10) (RME Fireface 800)」など、
LとRとで別々の入力があるので、こういう設定は助かります。

音圧レベルの設定ウィンドウです。

動特性は、騒音計と同じように、FAST(=125[ms])とSLOW(=1000[ms])とで変更が可能です。
同じく騒音計と同じように、A特性高域強調IIRフィルタを通した後に表示しています。
といっても、マイクの周波数特性は考慮していないので、騒音計代わりに使う場合は、考慮する必要があります。
さらに、周波数別感度が±0[dB]である1[KHz]のサイン波で、キャリブレーションする必要があります。

音の高さの設定です。

アルゴリズムは、基本ケプストラムを利用しているのですが、
FFTからケプストラムを求める方法と、LPCから求める方法の2種類選択できます。
メディアンフィルタの大きさを変えることで、誤表示を減らすことも出来ます。

最後に、表示の設定

結構いろいろと設定できます。
音の高さの表現では、MIDIノートナンバー以外に、
基本周波数表示や、オクターブセントメルスケールでの表示が可能です。

続く「音の高さの表示ソフト drawwaveの紹介2

drawwaveのダウンロードページへ

Written by なたで

2009年10月15日 at 23:51