現在、複数のオーディオ入力にアクセスする必要がある Processing スケッチを作成していますが、Processing ではデフォルトのライン入力にしかアクセスできません。Java ミキサー (Processing 内でアクセス) からラインを直接取得しようとしましたが、まだ信号しか取得できません。私のマシンで現在デフォルトに設定されている行から。
ここで推奨されているように、SuperCollider から OSC 経由でサウンドを送信することを検討し始めました。ただし、私は SuperCollider に非常に慣れておらず、そのドキュメントとサポートは入力へのアクセスよりもサウンドの生成に重点を置いているため、次のステップは、ここで提案されているように、ビーズとジャックをいじることになるでしょう。
(1) 他の提案、または (2) SuperCollider または Beads/Jack から Processing への複数の入力を取得する具体的な例はありますか?
前もって感謝します!
編集: サウンドは、カスタムの音楽ビジュアライゼーションを強化するために使用されます (iTunes ビジュアライザーを考えてください。ただし、より曲固有のものです)。これは複数の mp3 で動作します。今私が必要としているのは、各マイクから float[] バッファを取得できることです。9 種類のマイクがあることを望んでいますが、それが可能であれば 4 つで解決します。
ハードウェアについては、現時点ではマイクと XLR から USB へのケーブルのみを使用しています。(プリアンプも検討しましたが、今のところこれで十分です。) 現在は Windows ですが、最終的には Mac に切り替えると思います。
これがビーズだけでの私の試みでした(ラップトップでは問題なく動作します。最初にビーズを実行するためですが、ヘッドセットバッファーにはすべて0があります。それらを切り替えてヘッドセットを最初に配置すると、ヘッドセットバッファーは正しくなりますが、ラップトップすべての 0 が含まれます):
void setup() {
size(512, 400);
JavaSoundAudioIO headsetAudioIO = new JavaSoundAudioIO();
JavaSoundAudioIO laptopAudioIO = new JavaSoundAudioIO();
headsetAudioIO.selectMixer(5);
headsetAudioCon = new AudioContext(headsetAudioIO);
laptopAudioIO.selectMixer(4);
laptopAudioCon = new AudioContext(laptopAudioIO);
headsetMic = headsetAudioCon.getAudioInput();
laptopMic = headsetAudioCon.getAudioInput();
} // setup()
void draw() {
background(100,0, 75);
laptopMic.start();
laptopMic.calculateBuffer();
laptopBuffer = laptopMic.getOutBuffer(0);
for (int j = 0; j < laptopBuffer.length - 1; j++)
{
println("laptop; " + j + ": " + laptopBuffer[j]);
line(j, 200+laptopBuffer[j]*50, j+1, 200+laptopBuffer[j+1]*50);
}
laptopMic.kill();
headsetMic.start();
headsetMic.calculateBuffer();
headsetBuffer = headsetMic.getOutBuffer(0);
for (int j = 0; j < headsetBuffer.length - 1; j++)
{
println("headset; " + j + ": " + headsetBuffer[j]);
line(j, 50+headsetBuffer[j]*50, j+1, 50+headsetBuffer[j+1]*50);
}
headsetMic.kill();
} // draw()
Jack を追加しようとすると、次の行が含まれます。
ac = new AudioContext(new AudioServerIO.Jack(), 44100, new IOAudioFormat(44100, 16, 4, 4));
しかし、私はエラーが発生します:
Jun 22, 2016 9:17:24 PM org.jaudiolibs.beads.AudioServerIO$1 run
SEVERE: null
org.jaudiolibs.jnajack.JackException: Can't find native library
at org.jaudiolibs.jnajack.Jack.getInstance(Jack.java:428)
at org.jaudiolibs.audioservers.jack.JackAudioServer.initialise(JackAudioServer.java:102)
at org.jaudiolibs.audioservers.jack.JackAudioServer.run(JackAudioServer.java:86)
at org.jaudiolibs.beads.AudioServerIO$1.run(Unknown Source)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.UnsatisfiedLinkError: Unable to load library 'jack': Native library (win32-x86-64/jack.dll) not found in resource path ([file:/C:/Users/...etc...)
また、Jack にいるときは、自分のマイクが表示されません (Jack はまったくの初心者ですが、これは大きな危険信号のように思えます)。この AudioContext は Jack の入力として表示されますか? またはその逆 -- まずマイクを見つけてから、Jack から Processing に渡しますか?
(私の経験不足をお許しください。またよろしくお願いします。Jack に関する知識が不足しているため、代わりに SuperCollider を再検討する必要があるかどうか疑問に思います...)