Un tipico file WAV è costituito da un'intestazione di 44 byte seguita dai valori di esempio effettivi. La dimensione di un "frame" dipende dalle proprietà del file WAV: un file stereo e 16 bit per campione avranno una dimensione di frame di 4 byte (due byte per il campione sinistro e due byte per l'esempio corretto).).
Quindi nel codice, si creerebbe un secondo file WAV creando un array di byte della stessa dimensione complessiva dell'originale. Copiate l'intestazione di 44 byte dall'originale nella copia, quindi iterate attraverso i fotogrammi originali iniziando dall'ultimo e lavorando in avanti fino al primo. Copiate ciascun fotogramma nella posizione inversa nell'array di copia (vale a dire l'ultimo fotogramma originale viene copiato nell'array di copia immediatamente dopo l'intestazione, il penultimo fotogramma viene copiato dopo il primo fotogramma ecc.). Quindi riproduci il file invertito.
Quindi non è necessaria la libreria javax.sound per eseguire questa operazione, è sufficiente essere in grado di copiare e manipolare i byte. Per vostra informazione, non tutti i file WAV sono "canonici" come questo (canonico significa intestazione di 44 byte più valori di esempio e nient'altro). Il formato WAV è in realtà un formato RIFF, il che significa che in teoria è necessario eseguire un'estrazione più complessa dei valori del campione. In pratica (specialmente se si stanno creando i file WAV da soli) di solito si può ottenere un approccio molto più semplice come ho descritto qui.
NOTA: se i suoni sono file MP3, l'operazione di inversione è più complessa, poiché i dati di esempio non vengono memorizzati come campioni in un file MP3. Se stai usando MP3, un modo per invertirli è convertirli in WAV e quindi invertire il file WAV.
Ciao @SamRowley Raggiungi il tuo obiettivo con l'algoritmo descritto? Copio esattamente la prima intestazione da 44 byte dall'originale per invertire il file audio e non riesco a riprodurre l'audio wav? Io uso sox e inverso l'audio e controllo che l'intestazione da 44 byte non sia esattamente? Per favore, se potessi aiutarmi con qualche consiglio, lo apprezzerò –