Javaによる録音:内部の音を録音する(1)

スポンサーリンク

ここまでで外の音を録音する事が出来るようになりました。PCでなっている音、つまりスピーカーから出ている音と同じものを録音するには工夫が必要です。

Macの場合

OSによって設定することが全く異なります。MacではSoundlowerというアプリケーションをインストールします。ただしオフィシャルのアプリケーションではないのでインストールは自己責任で行ってください。

https://soundflower.en.softonic.com/mac

インストールして再起動すると以下のようにスピーカー以外にSoundflowerという項目が出力先に選択出来るようになります。

Soundflowerを選択すると音が聞こえなくなってしまうのでAU Labを使ってSoundflowerに送られたデータをスピーカーに流すように設定します。こちらはAppleのサイトからダウンロードできます。

http://www.apple.com/jp/itunes/mastered-for-itunes/

このアプリケーションを立ち上げ入力にSoundflowerを出力にデフォルトのビルトイン出力を選ぶと音が聞こえるようになります。ここでイコライザーで音を加工することもできます。さらに録音もできるのでJavaで作る必要も実のところなくなります。

Windowsの場合

今のところ最良の方法はわかりません。機種によってはドライバーの更新や、サウンドマッパーの更新で出力先にサウンドミキサーが選択できるようになるものもあるようです。こちらわかり次第更新します。

Javaで利用できる入力元の確認

簡単なコードを書きます。

for(Mixer.Info mi :AudioSystem.getMixerInfo()){
  System.out.println("name        : " + mi.getName());
  System.out.println("description : " + mi.getDescription());
  System.out.println("version     : " + mi.getVersion());
  System.out.println("vendor      : " + mi.getVendor());
  Mixer mixer = AudioSystem.getMixer(mi);
  System.out.println("target data : " + mixer.isLineSupported(new Line.Info(TargetDataLine.class)));
  System.out.println();
}

システム上で利用できる入出力の情報を取得して全ての情報を書き出しています。入力元として使えるかはそのミキサーにTargetDataLineがサポートされているかをisLineSupportedメソッドを使って問い合わせます。以下Macで実行したところです。名前がSoundflower (2ch)となっていてtargetがtrueになっているものを入力元として指定すれば音を拾うことができます。

name        : Default Audio Device
description : Direct Audio Device: Default Audio Device
version     : Unknown Version
vendor      : Unknown Vendor
target      : true

name        : Built-in Microphone
description : Direct Audio Device: Built-in Microphone
version     : Unknown Version
vendor      : Apple Inc.
target      : true

name        : Built-in Output
description : Direct Audio Device: Built-in Output
version     : Unknown Version
vendor      : Apple Inc.
target      : false

name        : Soundflower (2ch)
description : Direct Audio Device: Soundflower (2ch)
version     : Unknown Version
vendor      : ma++ ingalls for Cycling '74
target      : true

name        : Soundflower (64ch)
description : Direct Audio Device: Soundflower (64ch)
version     : Unknown Version
vendor      : ma++ ingalls for Cycling '74
target      : true

name        : Port Built-in Microphone
description : Built-in Microphone
version     : Unknown Version
vendor      : Apple Inc.
target      : false

name        : Port Built-in Output
description : Built-in Output
version     : Unknown Version
vendor      : Apple Inc.
target      : false

name        : Port Soundflower (2ch)
description : Soundflower (2ch)
version     : Unknown Version
vendor      : ma++ ingalls for Cycling '74
target      : false

name        : Port Soundflower (64ch)
description : Soundflower (64ch)
version     : Unknown Version
vendor      : ma++ ingalls for Cycling '74
target      : false

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

%d人のブロガーが「いいね」をつけました。