Domanda

Mi sono reso conto che questo potrebbe essere relativamente di nicchia, ma forse è per questo che è bene chiederlo comunque. Sto guardando una console di registrazione a più ingressi hardware (come Alesis IO 26) per ricevere un ingresso Adat Lightpipe a 8 canali per eseguire l'elaborazione del segnale. Dato che non ho ancora acquisito il dispositivo e ho bisogno di capire se questo è fattibile (preoccupazioni di bilancio), vorrei chiedere se qualcuno ha esperienza toccando tutti questi 8 input per i dati in Java? Ho visto tonnellate di esempi di registrazione del suono utilizzando le librerie Javax.sound.sampled ma non sono riuscito a trovare alcuna informazione sul multicanale che sia superiore a 2. Quello che mi interessa è campionare gli 8 canali individuali come sorgente mono in esegui alcuni semplici DSP su di essi. Il dispositivo hardware sarebbe trattato come un mixer? E gli 8 canali sono rappresentati come 8 linee? Spero di aver corretto la mia terminologia.

Gradirei se qualcuno potesse indicarmi qualsiasi informazione pertinente. Grazie!

È stato utile?

Soluzione

L'audio multicanale dovrebbe essere possibile in Java a seconda della versione di Java in esecuzione, della piattaforma su cui si esegue e del tipo di scheda audio in esecuzione. Vedi l'eccellente Java Audio Faq per maggiori dettagli. Non sono mai stato in grado di usarlo in modo affidabile su tutte le piattaforme.

Se ti interessa davvero fare un audio multicanale affidabile, ti consiglio di usare un'API C, come PortAudio , Juce o PulseAudio .

Ho avuto un'ottima fortuna con PortAudio e Juce entrambi.

Per usarli in Java, devi creare un'interfaccia JNI per le API C .

Ovviamente questo è più lavoro che usare semplicemente javax.sound, ma ti dà molto più controllo sull'hardware audio che stai usando. Nella mia esperienza con i dispositivi audio, essere troppo lontano dall'hardware (ovvero 4 strati di astrazione anziché 2) spesso rimuove la tua capacità di realizzare audio multicanale, profondità di bit elevata e frequenza di campionamento elevata.

Altri suggerimenti

Ho implementato qualcosa di simile con le schede Terratec collegate a 32 input, l'unica libreria al momento era Jsyn.

È davvero un'ottima libreria una volta che lo conosci.

http://www.softsynth.com/jsyn

Non sono sicuro che ci sia qualcos'altro che può aiutare.

Ho appena aggiunto un wrapper JNI Java per PortAudio. Il piano è di mantenerlo insieme alla fonte PortAudio. PortAudio supporta l'audio multicanale in cui N > 2.

Oggi, 03/09/12, JPortAudio è ancora in modalità alfa. Quando leggi questo potrebbe essere stabile.

http://www.portaudio.com/docs/v19-doxydocs/ java_binding.html

Non posso darti una risposta direttamente al fatto che l'API javax.sound funzioni con più canali (ma secondo il documento API dovrebbe).

Tuttavia, sono andato in un altro modo per l'elaborazione audio multicanale con Java, che potrebbe funzionare anche per te. Ho usato Jack (Jack Audio Connection Kit) per incanalare i segnali da e verso il dispositivo audio e quindi la libreria JJack per eseguire l'elaborazione del segnale. Non hai menzionato il tuo sistema operativo di destinazione. Ho usato questo approccio con successo sotto Linux. AFAIR stava arrivando una porta Windows per Jack.

Ciao, olmo

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top