ここまでで外の音を録音する事が出来るようになりました。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