@siteed/expo-audio-studio 2.8.0 → 2.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (241) hide show
  1. package/CHANGELOG.md +11 -1
  2. package/app.plugin.cjs +15 -2
  3. package/build/cjs/AudioAnalysis/AudioAnalysis.types.js +4 -0
  4. package/build/cjs/AudioAnalysis/AudioAnalysis.types.js.map +1 -0
  5. package/build/cjs/AudioAnalysis/extractAudioAnalysis.js +205 -0
  6. package/build/cjs/AudioAnalysis/extractAudioAnalysis.js.map +1 -0
  7. package/build/cjs/AudioAnalysis/extractAudioData.js +12 -0
  8. package/build/cjs/AudioAnalysis/extractAudioData.js.map +1 -0
  9. package/build/cjs/AudioAnalysis/extractMelSpectrogram.js +89 -0
  10. package/build/cjs/AudioAnalysis/extractMelSpectrogram.js.map +1 -0
  11. package/build/cjs/AudioAnalysis/extractPreview.js +29 -0
  12. package/build/cjs/AudioAnalysis/extractPreview.js.map +1 -0
  13. package/build/cjs/AudioAnalysis/extractWaveform.js +18 -0
  14. package/build/cjs/AudioAnalysis/extractWaveform.js.map +1 -0
  15. package/build/cjs/AudioDeviceManager.js +500 -0
  16. package/build/cjs/AudioDeviceManager.js.map +1 -0
  17. package/build/cjs/AudioRecorder.provider.js +68 -0
  18. package/build/cjs/AudioRecorder.provider.js.map +1 -0
  19. package/build/cjs/ExpoAudioStream.native.js +8 -0
  20. package/build/cjs/ExpoAudioStream.native.js.map +1 -0
  21. package/build/cjs/ExpoAudioStream.types.js +11 -0
  22. package/build/cjs/ExpoAudioStream.types.js.map +1 -0
  23. package/build/cjs/ExpoAudioStream.web.js +705 -0
  24. package/build/cjs/ExpoAudioStream.web.js.map +1 -0
  25. package/build/cjs/ExpoAudioStreamModule.js +718 -0
  26. package/build/cjs/ExpoAudioStreamModule.js.map +1 -0
  27. package/build/cjs/WebRecorder.web.js +756 -0
  28. package/build/cjs/WebRecorder.web.js.map +1 -0
  29. package/build/cjs/constants.js +17 -0
  30. package/build/cjs/constants.js.map +1 -0
  31. package/build/cjs/events.js +30 -0
  32. package/build/cjs/events.js.map +1 -0
  33. package/build/cjs/hooks/useAudioDevices.js +155 -0
  34. package/build/cjs/hooks/useAudioDevices.js.map +1 -0
  35. package/build/cjs/index.js +50 -0
  36. package/build/cjs/index.js.map +1 -0
  37. package/build/cjs/trimAudio.js +75 -0
  38. package/build/cjs/trimAudio.js.map +1 -0
  39. package/build/cjs/useAudioRecorder.js +453 -0
  40. package/build/cjs/useAudioRecorder.js.map +1 -0
  41. package/build/cjs/utils/BlobFix.js +502 -0
  42. package/build/cjs/utils/BlobFix.js.map +1 -0
  43. package/build/cjs/utils/audioProcessing.js +137 -0
  44. package/build/cjs/utils/audioProcessing.js.map +1 -0
  45. package/build/cjs/utils/concatenateBuffers.js +25 -0
  46. package/build/cjs/utils/concatenateBuffers.js.map +1 -0
  47. package/build/cjs/utils/convertPCMToFloat32.js +124 -0
  48. package/build/cjs/utils/convertPCMToFloat32.js.map +1 -0
  49. package/build/cjs/utils/crc32.js +52 -0
  50. package/build/cjs/utils/crc32.js.map +1 -0
  51. package/build/cjs/utils/encodingToBitDepth.js +17 -0
  52. package/build/cjs/utils/encodingToBitDepth.js.map +1 -0
  53. package/build/cjs/utils/getWavFileInfo.js +96 -0
  54. package/build/cjs/utils/getWavFileInfo.js.map +1 -0
  55. package/build/cjs/utils/writeWavHeader.js +88 -0
  56. package/build/cjs/utils/writeWavHeader.js.map +1 -0
  57. package/build/cjs/workers/InlineFeaturesExtractor.web.js +853 -0
  58. package/build/cjs/workers/InlineFeaturesExtractor.web.js.map +1 -0
  59. package/build/cjs/workers/inlineAudioWebWorker.web.js +184 -0
  60. package/build/cjs/workers/inlineAudioWebWorker.web.js.map +1 -0
  61. package/build/esm/AudioAnalysis/AudioAnalysis.types.js.map +1 -0
  62. package/build/esm/AudioAnalysis/extractAudioAnalysis.js.map +1 -0
  63. package/build/esm/AudioAnalysis/extractAudioData.js.map +1 -0
  64. package/build/esm/AudioAnalysis/extractMelSpectrogram.js.map +1 -0
  65. package/build/esm/AudioAnalysis/extractPreview.js.map +1 -0
  66. package/build/esm/AudioAnalysis/extractWaveform.js.map +1 -0
  67. package/build/esm/AudioDeviceManager.js.map +1 -0
  68. package/build/esm/AudioRecorder.provider.js.map +1 -0
  69. package/build/esm/ExpoAudioStream.native.js.map +1 -0
  70. package/build/esm/ExpoAudioStream.types.js.map +1 -0
  71. package/build/esm/ExpoAudioStream.web.js.map +1 -0
  72. package/build/esm/ExpoAudioStreamModule.js.map +1 -0
  73. package/build/esm/WebRecorder.web.js.map +1 -0
  74. package/build/esm/constants.js.map +1 -0
  75. package/build/esm/events.js.map +1 -0
  76. package/build/esm/hooks/useAudioDevices.js.map +1 -0
  77. package/build/esm/index.js.map +1 -0
  78. package/build/esm/trimAudio.js.map +1 -0
  79. package/build/esm/useAudioRecorder.js.map +1 -0
  80. package/build/esm/utils/BlobFix.js.map +1 -0
  81. package/build/esm/utils/audioProcessing.js.map +1 -0
  82. package/build/esm/utils/concatenateBuffers.js.map +1 -0
  83. package/build/esm/utils/convertPCMToFloat32.js.map +1 -0
  84. package/build/esm/utils/crc32.js.map +1 -0
  85. package/build/esm/utils/encodingToBitDepth.js.map +1 -0
  86. package/build/esm/utils/getWavFileInfo.js.map +1 -0
  87. package/build/esm/utils/writeWavHeader.js.map +1 -0
  88. package/build/esm/workers/InlineFeaturesExtractor.web.js.map +1 -0
  89. package/build/esm/workers/inlineAudioWebWorker.web.js.map +1 -0
  90. package/build/types/AudioAnalysis/AudioAnalysis.types.d.ts.map +1 -0
  91. package/build/types/AudioAnalysis/extractAudioAnalysis.d.ts.map +1 -0
  92. package/build/types/AudioAnalysis/extractAudioData.d.ts.map +1 -0
  93. package/build/types/AudioAnalysis/extractMelSpectrogram.d.ts.map +1 -0
  94. package/build/types/AudioAnalysis/extractPreview.d.ts.map +1 -0
  95. package/build/types/AudioAnalysis/extractWaveform.d.ts.map +1 -0
  96. package/build/types/AudioDeviceManager.d.ts.map +1 -0
  97. package/build/types/AudioRecorder.provider.d.ts.map +1 -0
  98. package/build/types/ExpoAudioStream.native.d.ts.map +1 -0
  99. package/build/types/ExpoAudioStream.types.d.ts.map +1 -0
  100. package/build/types/ExpoAudioStream.web.d.ts.map +1 -0
  101. package/build/types/ExpoAudioStreamModule.d.ts.map +1 -0
  102. package/build/types/WebRecorder.web.d.ts.map +1 -0
  103. package/build/types/constants.d.ts.map +1 -0
  104. package/build/types/events.d.ts.map +1 -0
  105. package/build/types/hooks/useAudioDevices.d.ts.map +1 -0
  106. package/build/types/index.d.ts.map +1 -0
  107. package/build/types/trimAudio.d.ts.map +1 -0
  108. package/build/types/useAudioRecorder.d.ts.map +1 -0
  109. package/build/types/utils/BlobFix.d.ts.map +1 -0
  110. package/build/types/utils/audioProcessing.d.ts.map +1 -0
  111. package/build/types/utils/concatenateBuffers.d.ts.map +1 -0
  112. package/build/types/utils/convertPCMToFloat32.d.ts.map +1 -0
  113. package/build/types/utils/crc32.d.ts.map +1 -0
  114. package/build/types/utils/encodingToBitDepth.d.ts.map +1 -0
  115. package/build/types/utils/getWavFileInfo.d.ts.map +1 -0
  116. package/build/types/utils/writeWavHeader.d.ts.map +1 -0
  117. package/build/types/workers/InlineFeaturesExtractor.web.d.ts.map +1 -0
  118. package/build/types/workers/inlineAudioWebWorker.web.d.ts.map +1 -0
  119. package/package.json +26 -7
  120. package/plugin/build/{index.js → cjs/index.js} +2 -1
  121. package/plugin/build/{index.cjs → esm/index.js} +6 -7
  122. package/plugin/src/index.ts +1 -0
  123. package/plugin/tsconfig.cjs.json +11 -0
  124. package/plugin/tsconfig.esm.json +11 -0
  125. package/build/AudioAnalysis/AudioAnalysis.types.d.ts.map +0 -1
  126. package/build/AudioAnalysis/AudioAnalysis.types.js.map +0 -1
  127. package/build/AudioAnalysis/extractAudioAnalysis.d.ts.map +0 -1
  128. package/build/AudioAnalysis/extractAudioAnalysis.js.map +0 -1
  129. package/build/AudioAnalysis/extractAudioData.d.ts.map +0 -1
  130. package/build/AudioAnalysis/extractAudioData.js.map +0 -1
  131. package/build/AudioAnalysis/extractMelSpectrogram.d.ts.map +0 -1
  132. package/build/AudioAnalysis/extractMelSpectrogram.js.map +0 -1
  133. package/build/AudioAnalysis/extractPreview.d.ts.map +0 -1
  134. package/build/AudioAnalysis/extractPreview.js.map +0 -1
  135. package/build/AudioAnalysis/extractWaveform.d.ts.map +0 -1
  136. package/build/AudioAnalysis/extractWaveform.js.map +0 -1
  137. package/build/AudioDeviceManager.d.ts.map +0 -1
  138. package/build/AudioDeviceManager.js.map +0 -1
  139. package/build/AudioRecorder.provider.d.ts.map +0 -1
  140. package/build/AudioRecorder.provider.js.map +0 -1
  141. package/build/ExpoAudioStream.native.d.ts.map +0 -1
  142. package/build/ExpoAudioStream.native.js.map +0 -1
  143. package/build/ExpoAudioStream.types.d.ts.map +0 -1
  144. package/build/ExpoAudioStream.types.js.map +0 -1
  145. package/build/ExpoAudioStream.web.d.ts.map +0 -1
  146. package/build/ExpoAudioStream.web.js.map +0 -1
  147. package/build/ExpoAudioStreamModule.d.ts.map +0 -1
  148. package/build/ExpoAudioStreamModule.js.map +0 -1
  149. package/build/WebRecorder.web.d.ts.map +0 -1
  150. package/build/WebRecorder.web.js.map +0 -1
  151. package/build/constants.d.ts.map +0 -1
  152. package/build/constants.js.map +0 -1
  153. package/build/events.d.ts.map +0 -1
  154. package/build/events.js.map +0 -1
  155. package/build/hooks/useAudioDevices.d.ts.map +0 -1
  156. package/build/hooks/useAudioDevices.js.map +0 -1
  157. package/build/index.d.ts.map +0 -1
  158. package/build/index.js.map +0 -1
  159. package/build/trimAudio.d.ts.map +0 -1
  160. package/build/trimAudio.js.map +0 -1
  161. package/build/useAudioRecorder.d.ts.map +0 -1
  162. package/build/useAudioRecorder.js.map +0 -1
  163. package/build/utils/BlobFix.d.ts.map +0 -1
  164. package/build/utils/BlobFix.js.map +0 -1
  165. package/build/utils/audioProcessing.d.ts.map +0 -1
  166. package/build/utils/audioProcessing.js.map +0 -1
  167. package/build/utils/concatenateBuffers.d.ts.map +0 -1
  168. package/build/utils/concatenateBuffers.js.map +0 -1
  169. package/build/utils/convertPCMToFloat32.d.ts.map +0 -1
  170. package/build/utils/convertPCMToFloat32.js.map +0 -1
  171. package/build/utils/crc32.d.ts.map +0 -1
  172. package/build/utils/crc32.js.map +0 -1
  173. package/build/utils/encodingToBitDepth.d.ts.map +0 -1
  174. package/build/utils/encodingToBitDepth.js.map +0 -1
  175. package/build/utils/getWavFileInfo.d.ts.map +0 -1
  176. package/build/utils/getWavFileInfo.js.map +0 -1
  177. package/build/utils/writeWavHeader.d.ts.map +0 -1
  178. package/build/utils/writeWavHeader.js.map +0 -1
  179. package/build/workers/InlineFeaturesExtractor.web.d.ts.map +0 -1
  180. package/build/workers/InlineFeaturesExtractor.web.js.map +0 -1
  181. package/build/workers/inlineAudioWebWorker.web.d.ts.map +0 -1
  182. package/build/workers/inlineAudioWebWorker.web.js.map +0 -1
  183. /package/build/{AudioAnalysis → esm/AudioAnalysis}/AudioAnalysis.types.js +0 -0
  184. /package/build/{AudioAnalysis → esm/AudioAnalysis}/extractAudioAnalysis.js +0 -0
  185. /package/build/{AudioAnalysis → esm/AudioAnalysis}/extractAudioData.js +0 -0
  186. /package/build/{AudioAnalysis → esm/AudioAnalysis}/extractMelSpectrogram.js +0 -0
  187. /package/build/{AudioAnalysis → esm/AudioAnalysis}/extractPreview.js +0 -0
  188. /package/build/{AudioAnalysis → esm/AudioAnalysis}/extractWaveform.js +0 -0
  189. /package/build/{AudioDeviceManager.js → esm/AudioDeviceManager.js} +0 -0
  190. /package/build/{AudioRecorder.provider.js → esm/AudioRecorder.provider.js} +0 -0
  191. /package/build/{ExpoAudioStream.native.js → esm/ExpoAudioStream.native.js} +0 -0
  192. /package/build/{ExpoAudioStream.types.js → esm/ExpoAudioStream.types.js} +0 -0
  193. /package/build/{ExpoAudioStream.web.js → esm/ExpoAudioStream.web.js} +0 -0
  194. /package/build/{ExpoAudioStreamModule.js → esm/ExpoAudioStreamModule.js} +0 -0
  195. /package/build/{WebRecorder.web.js → esm/WebRecorder.web.js} +0 -0
  196. /package/build/{constants.js → esm/constants.js} +0 -0
  197. /package/build/{events.js → esm/events.js} +0 -0
  198. /package/build/{hooks → esm/hooks}/useAudioDevices.js +0 -0
  199. /package/build/{index.js → esm/index.js} +0 -0
  200. /package/build/{trimAudio.js → esm/trimAudio.js} +0 -0
  201. /package/build/{useAudioRecorder.js → esm/useAudioRecorder.js} +0 -0
  202. /package/build/{utils → esm/utils}/BlobFix.js +0 -0
  203. /package/build/{utils → esm/utils}/audioProcessing.js +0 -0
  204. /package/build/{utils → esm/utils}/concatenateBuffers.js +0 -0
  205. /package/build/{utils → esm/utils}/convertPCMToFloat32.js +0 -0
  206. /package/build/{utils → esm/utils}/crc32.js +0 -0
  207. /package/build/{utils → esm/utils}/encodingToBitDepth.js +0 -0
  208. /package/build/{utils → esm/utils}/getWavFileInfo.js +0 -0
  209. /package/build/{utils → esm/utils}/writeWavHeader.js +0 -0
  210. /package/build/{workers → esm/workers}/InlineFeaturesExtractor.web.js +0 -0
  211. /package/build/{workers → esm/workers}/inlineAudioWebWorker.web.js +0 -0
  212. /package/build/{AudioAnalysis → types/AudioAnalysis}/AudioAnalysis.types.d.ts +0 -0
  213. /package/build/{AudioAnalysis → types/AudioAnalysis}/extractAudioAnalysis.d.ts +0 -0
  214. /package/build/{AudioAnalysis → types/AudioAnalysis}/extractAudioData.d.ts +0 -0
  215. /package/build/{AudioAnalysis → types/AudioAnalysis}/extractMelSpectrogram.d.ts +0 -0
  216. /package/build/{AudioAnalysis → types/AudioAnalysis}/extractPreview.d.ts +0 -0
  217. /package/build/{AudioAnalysis → types/AudioAnalysis}/extractWaveform.d.ts +0 -0
  218. /package/build/{AudioDeviceManager.d.ts → types/AudioDeviceManager.d.ts} +0 -0
  219. /package/build/{AudioRecorder.provider.d.ts → types/AudioRecorder.provider.d.ts} +0 -0
  220. /package/build/{ExpoAudioStream.native.d.ts → types/ExpoAudioStream.native.d.ts} +0 -0
  221. /package/build/{ExpoAudioStream.types.d.ts → types/ExpoAudioStream.types.d.ts} +0 -0
  222. /package/build/{ExpoAudioStream.web.d.ts → types/ExpoAudioStream.web.d.ts} +0 -0
  223. /package/build/{ExpoAudioStreamModule.d.ts → types/ExpoAudioStreamModule.d.ts} +0 -0
  224. /package/build/{WebRecorder.web.d.ts → types/WebRecorder.web.d.ts} +0 -0
  225. /package/build/{constants.d.ts → types/constants.d.ts} +0 -0
  226. /package/build/{events.d.ts → types/events.d.ts} +0 -0
  227. /package/build/{hooks → types/hooks}/useAudioDevices.d.ts +0 -0
  228. /package/build/{index.d.ts → types/index.d.ts} +0 -0
  229. /package/build/{trimAudio.d.ts → types/trimAudio.d.ts} +0 -0
  230. /package/build/{useAudioRecorder.d.ts → types/useAudioRecorder.d.ts} +0 -0
  231. /package/build/{utils → types/utils}/BlobFix.d.ts +0 -0
  232. /package/build/{utils → types/utils}/audioProcessing.d.ts +0 -0
  233. /package/build/{utils → types/utils}/concatenateBuffers.d.ts +0 -0
  234. /package/build/{utils → types/utils}/convertPCMToFloat32.d.ts +0 -0
  235. /package/build/{utils → types/utils}/crc32.d.ts +0 -0
  236. /package/build/{utils → types/utils}/encodingToBitDepth.d.ts +0 -0
  237. /package/build/{utils → types/utils}/getWavFileInfo.d.ts +0 -0
  238. /package/build/{utils → types/utils}/writeWavHeader.d.ts +0 -0
  239. /package/build/{workers → types/workers}/InlineFeaturesExtractor.web.d.ts +0 -0
  240. /package/build/{workers → types/workers}/inlineAudioWebWorker.web.d.ts +0 -0
  241. /package/plugin/build/{index.d.ts → types/index.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writeWavHeader.js","sourceRoot":"","sources":["../../../src/utils/writeWavHeader.ts"],"names":[],"mappings":"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","sourcesContent":["// packages/expo-audio-stream/src/utils/writeWavHeader.ts\n\n/**\n * Options for creating a WAV header.\n */\nexport interface WavHeaderOptions {\n /** Optional buffer containing audio data. If provided, it will be combined with the header. */\n buffer?: ArrayBuffer\n /** The sample rate of the audio in Hz (e.g., 44100). */\n sampleRate: number\n /** The number of audio channels (e.g., 1 for mono, 2 for stereo). */\n numChannels: number\n /** The bit depth of the audio (e.g., 16, 24, or 32). */\n bitDepth: number\n /** Whether the audio data is in float format (only applies to 32-bit) */\n isFloat?: boolean\n}\n\n/**\n * Writes or updates a WAV (RIFF) header based on the provided options.\n *\n * This function can be used in three ways:\n * 1. To create a standalone WAV header (when no buffer is provided).\n * 2. To create a WAV header and combine it with existing audio data (when a buffer without a header is provided).\n * 3. To update an existing WAV header in the provided buffer.\n *\n * For streaming audio where the final size is unknown, this function sets the size fields\n * to the maximum 32-bit value (0xFFFFFFFF). These can be updated later using the\n * `updateWavHeaderSize` function once the final size is known.\n *\n * @param options - The options for creating or updating the WAV header.\n * @returns An ArrayBuffer containing the WAV header, or the header combined with the provided audio data.\n *\n * @throws {Error} Throws an error if the provided options are invalid or if the buffer is too small.\n */\nexport const writeWavHeader = ({\n buffer,\n sampleRate,\n numChannels,\n bitDepth,\n isFloat = bitDepth === 32, // Default to float for 32-bit\n}: WavHeaderOptions): ArrayBuffer => {\n // For 32-bit float, we use format 3, otherwise format 1 for PCM\n const audioFormat = isFloat ? 3 : 1 // 3 = IEEE float, 1 = PCM\n\n const bytesPerSample = bitDepth / 8\n const blockAlign = numChannels * bytesPerSample\n const byteRate = sampleRate * blockAlign\n\n // Function to write a string to the DataView\n const writeString = (view: DataView, offset: number, string: string) => {\n for (let i = 0; i < string.length; i++) {\n view.setUint8(offset + i, string.charCodeAt(i))\n }\n }\n\n // Function to write or update the header\n const writeHeader = (view: DataView, dataSize: number = 0xffffffff) => {\n // RIFF chunk descriptor\n writeString(view, 0, 'RIFF') // ChunkID\n view.setUint32(4, 36 + dataSize, true) // ChunkSize: 4 + (8 + 16) + (8 + dataSize)\n writeString(view, 8, 'WAVE') // Format\n\n // \"fmt \" sub-chunk\n writeString(view, 12, 'fmt ') // Subchunk1ID\n view.setUint32(16, 16, true) // Subchunk1Size (16 for PCM/Float)\n view.setUint16(20, audioFormat, true) // AudioFormat (3 for float, 1 for PCM)\n view.setUint16(22, numChannels, true) // NumChannels\n view.setUint32(24, sampleRate, true) // SampleRate\n view.setUint32(28, byteRate, true) // ByteRate = SampleRate * NumChannels * BitsPerSample/8\n view.setUint16(32, blockAlign, true) // BlockAlign = NumChannels * BitsPerSample/8\n view.setUint16(34, bitDepth, true) // BitsPerSample\n\n // \"data\" sub-chunk\n writeString(view, 36, 'data') // Subchunk2ID\n view.setUint32(40, dataSize, true) // Subchunk2Size = NumSamples * NumChannels * BitsPerSample/8\n }\n\n if (buffer) {\n // Handle existing buffer\n\n // Check for minimum size\n if (buffer.byteLength < 44) {\n throw new Error('Buffer is too small to contain a valid WAV header')\n }\n\n const view = new DataView(buffer)\n\n // Check if the buffer already has a WAV header by looking for \"RIFF\" at the start\n const existingHeader = view.getUint32(0, false) === 0x52494646 // \"RIFF\" in ASCII\n\n if (existingHeader) {\n // Update the existing header\n writeHeader(view, buffer.byteLength - 44)\n return buffer\n } else {\n // Create a new buffer with header + data\n const newBuffer = new ArrayBuffer(44 + buffer.byteLength)\n const newView = new DataView(newBuffer)\n\n // Write header to new buffer\n writeHeader(newView, buffer.byteLength)\n\n // Copy audio data after header\n new Uint8Array(newBuffer).set(new Uint8Array(buffer), 44)\n return newBuffer\n }\n } else {\n // Create standalone header\n const headerBuffer = new ArrayBuffer(44)\n const view = new DataView(headerBuffer)\n writeHeader(view)\n return headerBuffer\n }\n}\n"]}