Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.company;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.InputStream;
- import java.nio.file.Files;
- import java.nio.file.Path;
- import java.nio.file.Paths;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.List;
- public class Main {
- public static void main(String[] args) throws Exception{
- Path path = Paths.get("abc.wav");
- Bytes bytes = new Bytes();
- byte[] allFileBytes = Files.readAllBytes(path);
- byte[] newFileWAV = new byte[44 + (allFileBytes.length - 44) * 2];
- byte[] newFileWAVData = Arrays.copyOfRange(allFileBytes, 44, allFileBytes.length);
- byte[] doubleData = new byte[(allFileBytes.length - 44) * 2];
- int d = -1;
- int j = 0;
- for(int i = 0; i < doubleData.length; i++){
- doubleData[j] = newFileWAVData[i];
- doubleData[j + 1] = newFileWAVData[i];
- j += 2;
- }
- int h = 0;
- for(int i = 0; i < doubleData.length){
- doubleData[i] = newFileWAVData[h];
- doubleData[i]
- }
- int oldChunkSize = bytes.fromMSB(Arrays.copyOfRange(allFileBytes, 4, 8));
- int oldNumChannels = bytes.fromMSB(Arrays.copyOfRange(allFileBytes, 22, 24));
- int oldByteRate = bytes.fromMSB(Arrays.copyOfRange(allFileBytes, 28, 32));
- int oldBlockAlign = bytes.fromMSB(Arrays.copyOfRange(allFileBytes, 32, 34));
- int oldBitsPerSample = bytes.fromMSB(Arrays.copyOfRange(allFileBytes, 34, 36));
- int oldSubchunk2Size = bytes.fromMSB(Arrays.copyOfRange(allFileBytes, 40, 44));
- int oldSampleRate = bytes.fromMSB(Arrays.copyOfRange(allFileBytes, 24, 28));
- System.out.println("ChunkSize " + oldChunkSize);
- System.out.println("MONO " + oldNumChannels);
- System.out.println("ByteRate " + oldByteRate);
- System.out.println("blockAlign " + oldBlockAlign);
- System.out.println("bitsPerSample " + oldBitsPerSample);
- System.out.println("Subchunk2Size " + oldSubchunk2Size);
- System.out.println("SampleRate " + oldSampleRate);
- int newNumChannels = 2;
- int newByteRate = oldSampleRate * newNumChannels * (oldBitsPerSample/8);
- int newBlockAlign = newNumChannels * (oldBitsPerSample/8);
- int newSubchunk2Size = (allFileBytes.length - 44) * 2;
- int chunkSize = newSubchunk2Size + 36;
- byte[] newNumChannelsByte = bytes.getMSB(newNumChannels, 2);
- byte[] newByteRateByte = bytes.getMSB(newByteRate, 4);
- byte[] newBlockAlignByte = bytes.getMSB(newBlockAlign, 2);
- byte[] newSubchunk2SizeByte = bytes.getMSB(newSubchunk2Size, 4);
- byte[] chunkSizeByte = bytes.getMSB(chunkSize, 4);
- for(int i = 0; i < 44; i++){
- newFileWAV[i] = allFileBytes[i];
- }
- newFileWAV[4] = chunkSizeByte[0];
- newFileWAV[5] = chunkSizeByte[1];
- newFileWAV[6] = chunkSizeByte[2];
- newFileWAV[7] = chunkSizeByte[3];
- newFileWAV[22] = newNumChannelsByte[0];
- newFileWAV[23] = newNumChannelsByte[1];
- newFileWAV[28] = newByteRateByte[0];
- newFileWAV[29] = newByteRateByte[1];
- newFileWAV[30] = newByteRateByte[2];
- newFileWAV[31] = newByteRateByte[3];
- newFileWAV[32] = newBlockAlignByte[0];
- newFileWAV[33] = newBlockAlignByte[1];
- newFileWAV[40] = newSubchunk2SizeByte[0];
- newFileWAV[41] = newSubchunk2SizeByte[1];
- newFileWAV[42] = newSubchunk2SizeByte[2];
- newFileWAV[43] = newSubchunk2SizeByte[3];
- for(int i = 44; i < newFileWAV.length; i++){
- newFileWAV[i] = doubleData[i - 44];
- }
- FileOutputStream out = new FileOutputStream("test.wav");
- out.write(newFileWAV);
- out.close();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement