Play sound direkt aus dem byte-array - Java
Ich versuche einen sound Abspielen, gespeichert als ein byte-array mit der folgenden Methode:
byte[] clickSamples = getAudioFileData("sound.wav");
ByteBuffer buffer = ByteBuffer.allocate(bufferSize*2);
int tick = 0;
for (int i = 0; i < clickSamples.length; i++) {
buffer.putShort((short) clickSamples[i]);
tick++;
if (tick >= bufferSize/SAMPLE_SIZE) {
line.write(buffer.array(), 0, buffer.position());
buffer.clear();
tick = 0;
}
}
Es ist irgendwie schwer zu erklären, was falsch läuft. Ich bin immer ein Ton aber es ist nur ein "swoosh"-Geräusch.
Ich möchte diese Methode verwenden, mit der byte-buffer und so weiter, weil meine ganze Anwendung, ist um ihn herum gebaut. Mit Clip-oder AudioInputStream ist nicht wirklich eine option.
Also ich denke, meine Frage ist:
Wie kann ich den Ton direkt von meinem byte-array mit einem byte-buffer?
Danke für Eure Hilfe!
Durch Zufall: was passiert, wenn Sie Ihre ByteBuffer, um die little-endian?
Ich habe auch bemerkt, dass der sound, den ich bekommen irgendwie klingt mein sound Datei rückwärts abgespielt wird, sondern verzerrt und mit viel white noise. Durch drehen Puffer, um die little-endian-alles wird lauter.
Die Methode, die ich verwenden für das erhalten der audio-Daten, ist dieses hier: snippi.com/s/ndi3f4x
1) Für besser zu helfen, schneller zu veröffentlichen, SSCCE. 2) "ich möchte diese Methode verwenden, mit der byte-buffer und so weiter, weil meine ganze Anwendung, ist um ihn herum gebaut." Manchmal ist es notwendig, drastische Maßnahmen ergreifen, mit core-Funktionalität, funktioniert nicht.
Hey Andrew. Vielen Dank für die Kommentare. 1) Sicher, ich habe mein bestes gegeben. Wenn Sie darauf hinweisen, welche Informationen fehlen, ich werde froh sein, um es hinzuzufügen. 2) ich bin ok mit, dass. Aber mit der Methode, die ich versuche zu verwenden (^^) Nähte ideal für meine Anwendung, so dass ich lieben würde, es zu schaffen.
Ich habe auch bemerkt, dass der sound, den ich bekommen irgendwie klingt mein sound Datei rückwärts abgespielt wird, sondern verzerrt und mit viel white noise. Durch drehen Puffer, um die little-endian-alles wird lauter.
Die Methode, die ich verwenden für das erhalten der audio-Daten, ist dieses hier: snippi.com/s/ndi3f4x
1) Für besser zu helfen, schneller zu veröffentlichen, SSCCE. 2) "ich möchte diese Methode verwenden, mit der byte-buffer und so weiter, weil meine ganze Anwendung, ist um ihn herum gebaut." Manchmal ist es notwendig, drastische Maßnahmen ergreifen, mit core-Funktionalität, funktioniert nicht.
Hey Andrew. Vielen Dank für die Kommentare. 1) Sicher, ich habe mein bestes gegeben. Wenn Sie darauf hinweisen, welche Informationen fehlen, ich werde froh sein, um es hinzuzufügen. 2) ich bin ok mit, dass. Aber mit der Methode, die ich versuche zu verwenden (^^) Nähte ideal für meine Anwendung, so dass ich lieben würde, es zu schaffen.
InformationsquelleAutor Macks | 2013-01-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich es geschafft, damit es funktioniert. Hier ist mein neuer code:
Dies mag wie eine komplizierte Art zu spielen, die genauso klingen wie mit AudioInputStream aber jetzt kann ich Berechnungen anstellen bei jedem tick++ und dadurch, dass ich eingreifen kann, um die genauen Zeiten, wenn ich muss.
Wenn das klingt dumm und es gibt einen einfacheren Weg, dies zu tun, lassen Sie es mich bitte wissen.
Auch der Grund, warum es Klang so verzerrt, dass es scheint, wie ByteBuffer drastisch verändert mein Beispiel-Werte. Aus welchem Grund weiß ich nicht. Wenn jemand weiß, bitte lassen Sie mich wissen!
Danke. 🙂
InformationsquelleAutor Macks