Salve,
ho bisogno di realizzare un mixer audio.
Premesso che ogni traccia avrà un thread separato, vorrei provare ad implementare un effetto delay per ogni traccia.
L'idea è quella di usare due SourceDataLine contenenti lo stesso wav e farli partire leggermente sfasati. L'unico problema è che quando utilizzo il buffer per leggerli e riprodurli, vengono eseguiti uno dopo l'altro e non contemporaneamente...
Vi linko il codice:
Qualche idea?codice:final int EXTERNAL_BUFFER_SIZE = 524288; int nBytesRead = 0; int nBytesRead2 = 0; byte[] abData = new byte[EXTERNAL_BUFFER_SIZE]; byte[] abDelay = new byte[abData.length]; try { while (nBytesRead != -1) { nBytesRead = audioInputStream.read(abData, 0, abData.length); nBytesRead2 = audioInputStream2.read(abDelay, 0, abDelay.length); if (nBytesRead >= 0) { auline.write(abDelay, 0, nBytesRead2); auline2.write(abData, 0, nBytesRead); } } } catch (IOException e) { e.printStackTrace(); return; } finally { auline.drain(); auline2.drain(); auline.close(); auline2.close(); }
So che esiste un modo per sincronizzarle dal Mixer, ma ho letto che non funziona e che verrà implementato in futuro.

Rispondi quotando