音の高さを調べるソフトといえば、「おんかいくん」などが上げられますが、
今日は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のダウンロードページへ

関連記事

  • 音の高さの表示ソフトdrawwaveの開発 part2 「音の高さの表示ソフト […] Posted in ツール制作
  • Javaで3Dの音声視覚エフェクトを作った part4Javaで3Dの音声視覚エフェクトを作った part4 いままで、SO2、SO2と言ってきましたが、 (SO2=1998年に発売したスターオーシャン2というテレビゲーム) 多分普通の人は知らないので、 しまってあったPS2を出してスクリーンショットを撮ってきました。 ボイスコレクション画面 […] Posted in ツール制作
  • Javaで3Dの音声視覚エフェクトを作った part2Javaで3Dの音声視覚エフェクトを作った part2 なんとなく3Dっぽさがないのと、スペクトルが分かりづらいということで、改良?してみました。 点ライト3つで豪華さアップ! 以前の仕様 サンプリング周波数 22050Hz FFT フレーム長1024、シフト長512、8スレッド 3DCG […] Posted in ツール制作
  • SMFプレイヤーをつくろう!リベンジ「出力ポート、MIDIと周波数の関係」SMFプレイヤーをつくろう!リベンジ「出力ポート、MIDIと周波数の関係」 追加した機能 ・Sequencerのインターフェースにメソッド名を似させる。 入れ替えとか、いつかクラスを公開時に役立ちそう。 ・Sequencerにあった、ティック単位の位置調節の追加 内部では、ms単位で処理しているので、ティックから時間に変更するようなメソッドを追加で。 ・メイタベント0x59の調情報取得 この調の情報。最初はノートオン時に反映させる […] Posted in ツール制作
  • SMFプレイヤーをつくろう!リベンジ「拍子とタイムベース」SMFプレイヤーをつくろう!リベンジ「拍子とタイムベース」 今回は、現在再生中のSMFが、何分の何拍子のときに、何泊目を演奏しているか。 そういう情報を表示させる時の計算方法のメモです。 これらを計算するためには次のような情報を知る必要があります。 ・d 分の n 拍子の1拍は、デルタタイムでいうといくつになるか。 ・d 分の n […] Posted in ツール制作
  • Javaで3Dの音声視覚エフェクトを作った part1Javaで3Dの音声視覚エフェクトを作った part1 SO2のサウンドプレイヤーっぽいのを作ってみたかった! まあ、それはおいておいて、Java1.6が入っている方は、こちらで実際に試せますヽ(^o^)丿 遊び方は、音声デバイスの録音をマイクからミックス(自分が再生している音)にして、 実際に音楽を聴きながら、グラフィックを楽しむという形になります。 Youtubeの3Dエフェクト紹介動画へ […] Posted in ツール制作
  • SMFプレイヤーをつくろう!リベンジ「セットテンポと分解能」SMFプレイヤーをつくろう!リベンジ「セットテンポと分解能」 以前(2007/4/30)、HSPでMCI(Media Control Interface)を利用せずに SMF(スタンダードMIDIファイル .mid)を再生するためのモジュールを作ってSMFプレーヤーを作りました。(ここ) しかし実はこれには色々と問題が山積みになっていたりする。 1. なんかメタイベント,SysExイベントが正常に送れていないっぽい? 2. […] Posted in ツール制作
  • SMFプレイヤーをつくろう!リベンジ「完成した」SMFプレイヤーをつくろう!リベンジ「完成した」 実は、昨日のうちにあっけなく完成。ワ――ヾ(o・ω・)ノ――イ SMFプレイヤーをつくろう!リベンジ「セットテンポと分解能」の問題もいつのまにか全部解決してました。 というわけで、デバイスの設定とかできるようにして、とりあえずうん。 こんな感じ。 白い欄には、曲名・著作権情報・再生時間/長さ・拍:拍子・BPM・歌詞が表示されます。 シンセサイザーの一番の上のは、「Mic […] Posted in ツール制作
  • SMFプレイヤーをつくろう!リベンジ「ボリューム調節をつけよう」SMFプレイヤーをつくろう!リベンジ「ボリューム調節をつけよう」 ボリューム調節をつけました。 MIDIでボリュームをいじる時はどうすればいいでしょうか。 1、デバイスのMIDIボリュームをいじる。 2、チャンネル全部にVolume(コントロールチェンジの0x07番)を送信。 3、チャンネル全部にExpression(コントロールチェンジの0x0B番)を送信。 4、SysExメッセージでマスターボリュームを制御。 5、ノートオンのベロ […] Posted in ツール制作
  • SMFプレイヤーをつくろう!リベンジ「言語の設定とキーボードの表示」SMFプレイヤーをつくろう!リベンジ「言語の設定とキーボードの表示」 久しぶりにSMFプレイヤーの更新。 といっても前回の段階でSMFの再生の最低限の機能は実装されているので、 今回は表示関連を中心に。 まずは、言語の設定。 生まれて初めて、言語の設定を行えるような機能追加をしました。(=o・ω・o) ほら、これからは日本以外にも視野を広げる時代ですから。はい。 実装としましては、言語の設定は、辞書式にしました。 辞書ファイルはカレントディ […] Posted in ツール制作