Advertisement
Guest User

Untitled

a guest
Jan 20th, 2020
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.85 KB | None | 0 0
  1. package com.company;
  2.  
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.FileOutputStream;
  6. import java.io.InputStream;
  7. import java.nio.file.Files;
  8. import java.nio.file.Path;
  9. import java.nio.file.Paths;
  10. import java.util.ArrayList;
  11. import java.util.Arrays;
  12. import java.util.List;
  13.  
  14. public class Main {
  15.  
  16. public static void main(String[] args) throws Exception{
  17. Path path = Paths.get("abc.wav");
  18. Bytes bytes = new Bytes();
  19. byte[] allFileBytes = Files.readAllBytes(path);
  20.  
  21. byte[] newFileWAV = new byte[44 + (allFileBytes.length - 44) * 2];
  22.  
  23. byte[] newFileWAVData = Arrays.copyOfRange(allFileBytes, 44, allFileBytes.length);
  24. byte[] doubleData = new byte[(allFileBytes.length - 44) * 2];
  25. int d = -1;
  26. int j = 0;
  27. for(int i = 0; i < doubleData.length; i++){
  28. doubleData[j] = newFileWAVData[i];
  29. doubleData[j + 1] = newFileWAVData[i];
  30. j += 2;
  31. }
  32. int h = 0;
  33. for(int i = 0; i < doubleData.length){
  34. doubleData[i] = newFileWAVData[h];
  35. doubleData[i]
  36. }
  37.  
  38.  
  39. int oldChunkSize = bytes.fromMSB(Arrays.copyOfRange(allFileBytes, 4, 8));
  40. int oldNumChannels = bytes.fromMSB(Arrays.copyOfRange(allFileBytes, 22, 24));
  41. int oldByteRate = bytes.fromMSB(Arrays.copyOfRange(allFileBytes, 28, 32));
  42. int oldBlockAlign = bytes.fromMSB(Arrays.copyOfRange(allFileBytes, 32, 34));
  43. int oldBitsPerSample = bytes.fromMSB(Arrays.copyOfRange(allFileBytes, 34, 36));
  44. int oldSubchunk2Size = bytes.fromMSB(Arrays.copyOfRange(allFileBytes, 40, 44));
  45. int oldSampleRate = bytes.fromMSB(Arrays.copyOfRange(allFileBytes, 24, 28));
  46.  
  47. System.out.println("ChunkSize " + oldChunkSize);
  48. System.out.println("MONO " + oldNumChannels);
  49. System.out.println("ByteRate " + oldByteRate);
  50. System.out.println("blockAlign " + oldBlockAlign);
  51. System.out.println("bitsPerSample " + oldBitsPerSample);
  52. System.out.println("Subchunk2Size " + oldSubchunk2Size);
  53. System.out.println("SampleRate " + oldSampleRate);
  54.  
  55. int newNumChannels = 2;
  56. int newByteRate = oldSampleRate * newNumChannels * (oldBitsPerSample/8);
  57. int newBlockAlign = newNumChannels * (oldBitsPerSample/8);
  58. int newSubchunk2Size = (allFileBytes.length - 44) * 2;
  59. int chunkSize = newSubchunk2Size + 36;
  60.  
  61. byte[] newNumChannelsByte = bytes.getMSB(newNumChannels, 2);
  62. byte[] newByteRateByte = bytes.getMSB(newByteRate, 4);
  63. byte[] newBlockAlignByte = bytes.getMSB(newBlockAlign, 2);
  64. byte[] newSubchunk2SizeByte = bytes.getMSB(newSubchunk2Size, 4);
  65. byte[] chunkSizeByte = bytes.getMSB(chunkSize, 4);
  66.  
  67. for(int i = 0; i < 44; i++){
  68. newFileWAV[i] = allFileBytes[i];
  69. }
  70.  
  71. newFileWAV[4] = chunkSizeByte[0];
  72. newFileWAV[5] = chunkSizeByte[1];
  73. newFileWAV[6] = chunkSizeByte[2];
  74. newFileWAV[7] = chunkSizeByte[3];
  75.  
  76. newFileWAV[22] = newNumChannelsByte[0];
  77. newFileWAV[23] = newNumChannelsByte[1];
  78.  
  79. newFileWAV[28] = newByteRateByte[0];
  80. newFileWAV[29] = newByteRateByte[1];
  81. newFileWAV[30] = newByteRateByte[2];
  82. newFileWAV[31] = newByteRateByte[3];
  83.  
  84. newFileWAV[32] = newBlockAlignByte[0];
  85. newFileWAV[33] = newBlockAlignByte[1];
  86.  
  87. newFileWAV[40] = newSubchunk2SizeByte[0];
  88. newFileWAV[41] = newSubchunk2SizeByte[1];
  89. newFileWAV[42] = newSubchunk2SizeByte[2];
  90. newFileWAV[43] = newSubchunk2SizeByte[3];
  91.  
  92. for(int i = 44; i < newFileWAV.length; i++){
  93. newFileWAV[i] = doubleData[i - 44];
  94. }
  95.  
  96. FileOutputStream out = new FileOutputStream("test.wav");
  97. out.write(newFileWAV);
  98. out.close();
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105. }
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement