{"id":21061,"library":"concat-audio-buffers","title":"concat-audio-buffers","description":"A basic audio buffer concatenator that works with Rollup. Version 1.0.0 (last released 2020) is stable but not actively maintained. It combines multiple AudioBuffers into one, with optional stereo conversion. Unlike more complex audio processing libraries, this package is minimal and focused solely on concatenation, making it suitable for simple audio merging tasks in bundlers like Rollup.","status":"maintenance","version":"1.0.0","language":"javascript","source_language":"en","source_url":"ssh://git@github.com/jimkang/concat-audio-buffers","tags":["javascript","audio","browser","utility"],"install":[{"cmd":"npm install concat-audio-buffers","lang":"bash","label":"npm"},{"cmd":"yarn add concat-audio-buffers","lang":"bash","label":"yarn"},{"cmd":"pnpm add concat-audio-buffers","lang":"bash","label":"pnpm"}],"dependencies":[],"imports":[{"note":"Package is ESM-only; CommonJS require may fail","wrong":"const concatAudioBuffers = require('concat-audio-buffers')","symbol":"default","correct":"import concatAudioBuffers from 'concat-audio-buffers'"},{"note":"Exported as default, not named export","wrong":"import { concatAudioBuffers } from 'concat-audio-buffers'","symbol":"concatAudioBuffers","correct":"import concatAudioBuffers from 'concat-audio-buffers'"},{"note":"No TypeScript types included in the package; use ambient AudioBuffer type","wrong":"import { concatAudioBuffers } from 'concat-audio-buffers'","symbol":"type import","correct":"import type { AudioBuffer } from 'web-audio-api-types'"}],"quickstart":{"code":"import concatAudioBuffers from 'concat-audio-buffers';\nimport toWav from 'audiobuffer-to-wav';\n\nconst audioCtx = new AudioContext();\nconst createBuffer = (freq, duration) => {\n  const sampleRate = audioCtx.sampleRate;\n  const buffer = audioCtx.createBuffer(1, sampleRate * duration, sampleRate);\n  const data = buffer.getChannelData(0);\n  for (let i = 0; i < data.length; i++) {\n    data[i] = Math.sin(2 * Math.PI * freq * i / sampleRate);\n  }\n  return buffer;\n};\n\nconst buffers = [createBuffer(440, 1), createBuffer(880, 1)];\n\nconcatAudioBuffers(buffers, 2, (error, combinedBuffer) => {\n  if (error) {\n    console.error(error);\n  } else {\n    const blob = new Blob([toWav(combinedBuffer)], { type: 'audio/wav' });\n    const url = URL.createObjectURL(blob);\n    const audio = new Audio(url);\n    audio.play();\n  }\n});","lang":"javascript","description":"Shows how to create two AudioBuffers, concatenate them with stereo conversion, and play the result as a WAV blob."},"warnings":[{"fix":"Wrap the call in a Promise if async usage is needed: new Promise((resolve, reject) => concatAudioBuffers(buffers, channels, (err, result) => err ? reject(err) : resolve(result)));","message":"Callback-based API; no Promise or async/await support","severity":"breaking","affected_versions":"1.0.0"},{"fix":"Consider using modern alternatives like 'audio-buffer-utils' or implement your own with AudioBuffer.copyToChannel","message":"No updates since 2020; may not work with newer bundlers or Node.js versions","severity":"deprecated","affected_versions":"1.0.0"},{"fix":"Validate buffers array and channel number before calling","message":"The function does not validate input; passing non-AudioBuffer objects or incorrect channel count may cause silent failures","severity":"gotcha","affected_versions":"1.0.0"},{"fix":"Check if error is truthy before using combinedBuffer","message":"The callback receives (error, combinedBuffer) but error is null on success; ensure error-first callback pattern","severity":"gotcha","affected_versions":"1.0.0"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"Run 'npm install concat-audio-buffers' and ensure your bundler supports ESM imports","cause":"Missing installation or incorrect bundler configuration for ESM","error":"module not found: can't resolve 'concat-audio-buffers'"},{"fix":"Change to 'import concatAudioBuffers from 'concat-audio-buffers''","cause":"Using CommonJS require() instead of ESM import","error":"TypeError: concatAudioBuffers is not a function"},{"fix":"Ensure buffers is an array of AudioBuffer objects","cause":"Passing undefined or non-array as first argument","error":"Uncaught TypeError: Cannot read properties of undefined (reading 'length')"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}