{"_id":"@audiowave/core","_rev":"3-69c42a35a32951464118f331fb26c59b","name":"@audiowave/core","dist-tags":{"latest":"0.3.1"},"versions":{"0.2.0":{"name":"@audiowave/core","version":"0.2.0","keywords":["audio","visualization","waveform","core","processing"],"author":{"name":"AudioWave Team"},"license":"MIT","_id":"@audiowave/core@0.2.0","maintainers":[{"name":"teomyth","email":"teomyth@gmail.com"}],"dist":{"shasum":"4f1fc71c746874c8c20a7b337c3a2a719443d6be","tarball":"https://registry.npmjs.org/@audiowave/core/-/core-0.2.0.tgz","fileCount":8,"integrity":"sha512-CdtQo2ROGT+xbWkS7ItmoNvIOkEgP5Navr4AXderUAS0fkMc34Sb7/6ApSdLZV0gz09v1BDBkfekTHLGqsSFMA==","signatures":[{"sig":"MEUCIQCBcV5i9QIlFt2NTWHs8Rdhna32DvGxlbN/246vMuSBJwIgWgQb84KDq7rw4zgocPD7DrQd6SbLYLGtXKTJhMMZz8E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43945},"main":"dist/index.js","_from":"file:audiowave-core-0.2.0.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","clean":"rm -rf dist"},"_npmUser":{"name":"teomyth","email":"teomyth@gmail.com"},"_resolved":"/tmp/c4d5851661d1848bce2041855bcdb650/audiowave-core-0.2.0.tgz","_integrity":"sha512-CdtQo2ROGT+xbWkS7ItmoNvIOkEgP5Navr4AXderUAS0fkMc34Sb7/6ApSdLZV0gz09v1BDBkfekTHLGqsSFMA==","_npmVersion":"10.8.2","description":"Core audio processing utilities and interfaces for AudioWave","directories":{},"_nodeVersion":"18.20.8","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.0.0","@types/node":"^24.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.2.0_1754061566093_0.5930944018193922","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@audiowave/core","version":"0.3.0","keywords":["audio","visualization","waveform","core","processing"],"author":{"name":"AudioWave Team"},"license":"MIT","_id":"@audiowave/core@0.3.0","maintainers":[{"name":"teomyth","email":"teomyth@gmail.com"}],"dist":{"shasum":"a9ae9fd2d31a6b32cab7d17358bacaab67d12899","tarball":"https://registry.npmjs.org/@audiowave/core/-/core-0.3.0.tgz","fileCount":8,"integrity":"sha512-bQewuW0Z0lVy18iCY1qwgEk3pEXd0uYW8fQ22855LX0GQvpVQwxBepzn51F1U4RpPXHEpQEE2qiJZtOuGWDoOQ==","signatures":[{"sig":"MEUCIEOzue0b7vPIeAgHcVj6/MxiQExdno9Vx+CLZrFyOpS3AiEA0NPzbDbjmrJwE6kxYOhaBO1aKpwvSXXGE2dEAk8t0ow=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50087},"main":"dist/index.js","_from":"file:audiowave-core-0.3.0.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"teomyth","email":"teomyth@gmail.com"},"_resolved":"/tmp/2ca1cf366f43826b835800cc9e03a8c0/audiowave-core-0.3.0.tgz","_integrity":"sha512-bQewuW0Z0lVy18iCY1qwgEk3pEXd0uYW8fQ22855LX0GQvpVQwxBepzn51F1U4RpPXHEpQEE2qiJZtOuGWDoOQ==","_npmVersion":"10.8.2","description":"Core audio processing utilities and interfaces for AudioWave","directories":{},"_nodeVersion":"18.20.8","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^2.0.0","typescript":"^5.0.0","@types/node":"^24.1.0","@vitest/coverage-v8":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.3.0_1754131894912_0.27156962704487486","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@audiowave/core","version":"0.3.1","description":"Core audio processing utilities and interfaces for AudioWave","main":"dist/index.js","module":"dist/index.mjs","types":"dist/index.d.ts","exports":{".":{"import":"./dist/index.mjs","require":"./dist/index.js","types":"./dist/index.d.ts"}},"keywords":["audio","visualization","waveform","core","processing"],"author":{"name":"AudioWave Team"},"license":"MIT","devDependencies":{"@types/node":"^24.9.2","@vitest/coverage-v8":"^4.0.5","tsup":"^8.5.0","typescript":"^5.9.3","vitest":"^4.0.5"},"publishConfig":{"access":"public"},"scripts":{"build":"tsup","dev":"tsup --watch","clean":"rm -rf dist","test":"vitest run","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_id":"@audiowave/core@0.3.1","_integrity":"sha512-KtC2MTWKp6Orkedty3I8IklVBVQ2IFaFWDJ1cz+UsACpX2x1gINwZGTRZT7bw/dx8KazNSMuVK5lm1jL67KQkQ==","_resolved":"/tmp/d14ed7c601aff9b3c75be49d1df74271/audiowave-core-0.3.1.tgz","_from":"file:audiowave-core-0.3.1.tgz","_nodeVersion":"22.20.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-KtC2MTWKp6Orkedty3I8IklVBVQ2IFaFWDJ1cz+UsACpX2x1gINwZGTRZT7bw/dx8KazNSMuVK5lm1jL67KQkQ==","shasum":"7a251d38b23dc3521fffc182a5e617dceb13f44a","tarball":"https://registry.npmjs.org/@audiowave/core/-/core-0.3.1.tgz","fileCount":8,"unpackedSize":50087,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCWFwIx+jD8ULbVLKvXnGjVz6hdOGi/ttzGx688VBQX+wIhAI1RGTC07fAU/691DqSM/pwx54QAYU3KLnnvjrO/Sf9Q"}]},"_npmUser":{"name":"teomyth","email":"teomyth@gmail.com"},"directories":{},"maintainers":[{"name":"teomyth","email":"teomyth@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/core_0.3.1_1761895409376_0.8977382839894048"},"_hasShrinkwrap":false}},"time":{"created":"2025-08-01T15:19:26.005Z","modified":"2025-10-31T07:23:29.865Z","0.2.0":"2025-08-01T15:19:26.285Z","0.3.0":"2025-08-02T10:51:35.117Z","0.3.1":"2025-10-31T07:23:29.634Z"},"author":{"name":"AudioWave Team"},"license":"MIT","keywords":["audio","visualization","waveform","core","processing"],"description":"Core audio processing utilities and interfaces for AudioWave","maintainers":[{"name":"teomyth","email":"teomyth@gmail.com"}],"readme":"# @audiowave/core\n\nCore audio processing utilities and types for AudioWave.\n\n## Features\n\n- **One-Step Processing**: Direct Buffer to visualization data conversion\n- **Multi-Format Support**: 8, 16, 24, 32-bit audio with multi-channel support\n- **Type Safety**: Comprehensive TypeScript type definitions\n- **Platform Agnostic**: Works with any audio data source (Electron, Node.js, Web)\n- **Zero Dependencies**: Lightweight with no external dependencies\n- **Performance Optimized**: 67% fewer processing steps than traditional approaches\n\n## Installation\n\n```bash\nnpm install @audiowave/core\n```\n\n## Usage\n\n### Audio Processing with Multi-Format Support\n\n```typescript\nimport { AudioProcessor } from '@audiowave/core';\n\n// Create configuration with audio format specification\nconst processor = new AudioProcessor({\n  bufferSize: 1024,\n  skipInitialFrames: 2,        // Skip first 2 frames to avoid initialization noise\n  inputBitsPerSample: 16,      // 8, 16, 24, or 32-bit audio\n  inputChannels: 2,            // Stereo input (will be mixed to mono for visualization)\n});\n\n// Process Buffer data (from Electron, Node.js audio capture)\nconst audioPacket = processor.process(audioBuffer);\nif (audioPacket) {\n  // timeDomainData is ready for visualization (Uint8Array)\n  console.log('Processed audio data:', audioPacket.timeDomainData);\n}\n\n// Process Float32Array data (from Web Audio API)\nconst webAudioPacket = processor.process(float32AudioData);\n\n// Reset when starting new stream\nprocessor.reset();\n```\n\n### Stateless Audio Processing\n\n```typescript\nimport { process } from '@audiowave/core';\n\n// For simple processing without skip frames\nconst config = {\n  bufferSize: 1024,\n  inputBitsPerSample: 32,  // Specify input format\n  inputChannels: 1,        // Mono input\n};\n\nconst audioPacket = process(rawAudioData, config);\n```\n\n### Direct Buffer Conversion\n\n```typescript\nimport { convertBufferToWaveData } from '@audiowave/core';\n\n// Convert audio buffer directly to visualization data\nconst waveData = convertBufferToWaveData(\n  audioBuffer,    // Buffer from audio source\n  16,            // 16-bit audio\n  2,             // Stereo\n  1024           // Target visualization size\n);\n\n// waveData is Uint8Array ready for visualization\nconsole.log('Wave data:', waveData); // [128, 145, 112, ...]\n```\n\n### Custom Audio Data Provider\n\n```typescript\nimport type { AudioDataProvider } from '@audiowave/core';\n\nconst myProvider: AudioDataProvider = {\n  setupStream: async (config) => {\n    // Your setup logic\n  },\n  onData: (callback) => {\n    // Your data subscription logic\n    return () => { /* cleanup */ };\n  },\n  onError: (callback) => {\n    // Optional error handling\n    return () => { /* cleanup */ };\n  }\n};\n```\n\n### Utility Functions\n\n```typescript\nimport { \n  isPowerOfTwo, \n  getNearestPowerOfTwo, \n  isValidAudioBuffer,\n  validateAudioConfig \n} from '@audiowave/core';\n\n// Check if buffer size is optimal for FFT\nconsole.log(isPowerOfTwo(1024)); // true\n\n// Get nearest power of 2\nconsole.log(getNearestPowerOfTwo(1000)); // 1024\n\n// Validate buffer format\nconsole.log(isValidAudioBuffer(buffer)); // true/false\n\n// Validate configuration\nconsole.log(validateAudioConfig(config)); // true/false\n```\n\n## API Reference\n\n### Types\n\n- `AudioConfig` - Configuration for audio processing\n- `AudioDataProvider` - Interface for audio data sources\n- `AudioDataPacket` - Processed audio data\n- `AudioDataInput` - Raw audio data input types\n- `AudioDeviceInfo` - Audio device information\n\n### Classes\n\n- `AudioProcessor` - Stateful audio processor with skip frames support\n  - `process(rawData)` - Process audio with skip frames\n  - `reset()` - Reset frame counter\n  - `updateConfig(config)` - Update configuration\n\n### Functions\n\n- `process()` - Stateless audio processing\n- `convertBufferToWaveData()` - Direct Buffer to visualization data conversion\n- `validateAudioConfig()` - Configuration validation\n\n### Constants\n\n- `DEFAULT_AUDIO_CONFIG` - Default configuration values\n- `COMMON_BUFFER_SIZES` - Common buffer sizes array\n- `AUDIO_CONSTANTS` - Audio processing constants\n\n## License\n\nMIT\n","readmeFilename":"README.md"}