@nice2dev/ui-audio 0.1.0 → 1.0.3

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 (93) hide show
  1. package/CHANGELOG.md +217 -1
  2. package/dist/__benchmarks__/audio-latency.bench.d.ts +2 -0
  3. package/dist/__benchmarks__/audio-latency.bench.d.ts.map +1 -0
  4. package/dist/constants/index.d.ts +6 -0
  5. package/dist/constants/index.d.ts.map +1 -0
  6. package/dist/constants/karaokeScoringConfig.d.ts.map +1 -1
  7. package/dist/core/NiceAudioErrorBoundary.d.ts +28 -0
  8. package/dist/core/NiceAudioErrorBoundary.d.ts.map +1 -0
  9. package/dist/editor/NiceSampleBrowser.d.ts +79 -0
  10. package/dist/editor/NiceSampleBrowser.d.ts.map +1 -0
  11. package/dist/editor/Waveform.d.ts +53 -1
  12. package/dist/editor/Waveform.d.ts.map +1 -1
  13. package/dist/editor/hooks/useProjectCRUD.d.ts.map +1 -1
  14. package/dist/editor/nav/SaveLoadControls.d.ts.map +1 -1
  15. package/dist/editor/useEditorRecording.d.ts.map +1 -1
  16. package/dist/engine/NiceAudioEffects.d.ts +186 -0
  17. package/dist/engine/NiceAudioEffects.d.ts.map +1 -0
  18. package/dist/engine/NiceAudioEffectsRack.d.ts +17 -0
  19. package/dist/engine/NiceAudioEffectsRack.d.ts.map +1 -0
  20. package/dist/engine/NiceAudioWorklet.d.ts +184 -0
  21. package/dist/engine/NiceAudioWorklet.d.ts.map +1 -0
  22. package/dist/engine/NiceMultitrackExport.d.ts +165 -0
  23. package/dist/engine/NiceMultitrackExport.d.ts.map +1 -0
  24. package/dist/engine/audioContext.d.ts.map +1 -1
  25. package/dist/engine/audioKeyboard.d.ts.map +1 -1
  26. package/dist/engine/audioPlaybackEngine.d.ts.map +1 -1
  27. package/dist/index.cjs +373 -34
  28. package/dist/index.d.ts +95 -7
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.mjs +9988 -5652
  31. package/dist/karaoke/AudioPitchAnalyzer.d.ts.map +1 -1
  32. package/dist/karaoke/KaraokeSummaryOverlay.d.ts +22 -0
  33. package/dist/karaoke/KaraokeSummaryOverlay.d.ts.map +1 -0
  34. package/dist/karaoke/rendering/fontCatalog.d.ts.map +1 -1
  35. package/dist/karaoke/rendering/glossyBarRenderer.d.ts.map +1 -1
  36. package/dist/karaoke/rendering/karaokeLyrics.d.ts.map +1 -1
  37. package/dist/karaoke/rendering/karaokeNoteParsing.d.ts.map +1 -1
  38. package/dist/karaoke/rendering/karaokeSettings.d.ts.map +1 -1
  39. package/dist/karaoke/rendering/karaokeTimelineRenderer.d.ts.map +1 -1
  40. package/dist/karaoke/rendering/karaokeTimelineTypes.d.ts.map +1 -1
  41. package/dist/lighting/NiceDMXTimeline.d.ts +226 -0
  42. package/dist/lighting/NiceDMXTimeline.d.ts.map +1 -0
  43. package/dist/models/index.d.ts +16 -0
  44. package/dist/models/index.d.ts.map +1 -0
  45. package/dist/models/modelsAiVideo.d.ts.map +1 -1
  46. package/dist/player/GenericPlayer.d.ts +34 -1
  47. package/dist/player/GenericPlayer.d.ts.map +1 -1
  48. package/dist/playlist/GenericPlaylist.d.ts.map +1 -1
  49. package/dist/playlist/PlaylistBrowser.d.ts.map +1 -1
  50. package/dist/playlist/PlaylistImportWizard.d.ts +42 -0
  51. package/dist/playlist/PlaylistImportWizard.d.ts.map +1 -0
  52. package/dist/playlist/PlaylistList.d.ts.map +1 -1
  53. package/dist/radio/NiceRadioPlayer.d.ts +141 -0
  54. package/dist/radio/NiceRadioPlayer.d.ts.map +1 -0
  55. package/dist/streaming/NiceStreamingVisualizer.d.ts +86 -0
  56. package/dist/streaming/NiceStreamingVisualizer.d.ts.map +1 -0
  57. package/dist/streaming/NiceVoiceChatOverlay.d.ts +97 -0
  58. package/dist/streaming/NiceVoiceChatOverlay.d.ts.map +1 -0
  59. package/dist/streaming/index.d.ts +11 -0
  60. package/dist/streaming/index.d.ts.map +1 -0
  61. package/dist/streaming/liveStreamManager.d.ts +194 -0
  62. package/dist/streaming/liveStreamManager.d.ts.map +1 -0
  63. package/dist/streaming/useLiveStream.d.ts +19 -0
  64. package/dist/streaming/useLiveStream.d.ts.map +1 -0
  65. package/dist/streaming/webrtcAudio.d.ts +111 -0
  66. package/dist/streaming/webrtcAudio.d.ts.map +1 -0
  67. package/dist/ui-audio.css +1 -1
  68. package/dist/utils/BaseStreamClient.d.ts.map +1 -1
  69. package/dist/utils/audioDragDrop.d.ts +72 -0
  70. package/dist/utils/audioDragDrop.d.ts.map +1 -0
  71. package/dist/utils/crepeStreaming.d.ts.map +1 -1
  72. package/dist/utils/index.d.ts +40 -0
  73. package/dist/utils/index.d.ts.map +1 -0
  74. package/dist/utils/latencyEstimate.d.ts +1 -1
  75. package/dist/utils/latencyEstimate.d.ts.map +1 -1
  76. package/dist/utils/midiCCMapping.d.ts +93 -0
  77. package/dist/utils/midiCCMapping.d.ts.map +1 -0
  78. package/dist/utils/musicPlayerUtils.d.ts.map +1 -1
  79. package/dist/utils/pianoRollUtils.d.ts +58 -0
  80. package/dist/utils/pianoRollUtils.d.ts.map +1 -0
  81. package/dist/utils/sanitize.d.ts +24 -0
  82. package/dist/utils/sanitize.d.ts.map +1 -0
  83. package/dist/utils/shortcutManager.d.ts +81 -0
  84. package/dist/utils/shortcutManager.d.ts.map +1 -0
  85. package/dist/utils/undoRedoUtils.d.ts +45 -0
  86. package/dist/utils/undoRedoUtils.d.ts.map +1 -1
  87. package/dist/workers/audioWorkletProcessor.d.ts +92 -0
  88. package/dist/workers/audioWorkletProcessor.d.ts.map +1 -0
  89. package/dist/workers/useAudioWorklet.d.ts +82 -0
  90. package/dist/workers/useAudioWorklet.d.ts.map +1 -0
  91. package/dist/workers/useWorker.d.ts +1 -0
  92. package/dist/workers/useWorker.d.ts.map +1 -1
  93. package/package.json +64 -19
@@ -0,0 +1,17 @@
1
+ import { default as React } from 'react';
2
+ import { EffectType, EffectParams, EffectInstance, NiceAudioEffectsChain } from './NiceAudioEffects';
3
+ export interface NiceAudioEffectsRackProps {
4
+ audioContext?: AudioContext;
5
+ chain?: NiceAudioEffectsChain;
6
+ effects?: EffectInstance[];
7
+ onChange?: (effects: EffectParams[]) => void;
8
+ onChainUpdate?: (chain: NiceAudioEffectsChain) => void;
9
+ maxEffects?: number;
10
+ availableEffects?: EffectType[];
11
+ showPresets?: boolean;
12
+ compact?: boolean;
13
+ className?: string;
14
+ }
15
+ export declare const NiceAudioEffectsRack: React.FC<NiceAudioEffectsRackProps>;
16
+ export default NiceAudioEffectsRack;
17
+ //# sourceMappingURL=NiceAudioEffectsRack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NiceAudioEffectsRack.d.ts","sourceRoot":"","sources":["../../src/engine/NiceAudioEffectsRack.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAiD,MAAM,OAAO,CAAC;AACtE,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACZ,cAAc,EAWf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAYL,qBAAqB,EACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,4BAA4B,CAAC;AAGpC,MAAM,WAAW,yBAAyB;IACxC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,KAAK,CAAC,EAAE,qBAAqB,CAAC;IAC9B,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;IAC7C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,UAAU,EAAE,CAAC;IAChC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA0bD,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CAuKpE,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
@@ -0,0 +1,184 @@
1
+ export interface AudioWorkletProcessorOptions {
2
+ numberOfInputs?: number;
3
+ numberOfOutputs?: number;
4
+ outputChannelCount?: number[];
5
+ parameterData?: Record<string, number>;
6
+ processorOptions?: Record<string, unknown>;
7
+ }
8
+ export interface AudioWorkletMessage {
9
+ type: string;
10
+ data?: unknown;
11
+ }
12
+ export interface MeterData {
13
+ peak: number;
14
+ rms: number;
15
+ clip: boolean;
16
+ }
17
+ export interface RecorderChunk {
18
+ channelData: Float32Array[];
19
+ timestamp: number;
20
+ }
21
+ /**
22
+ * Base processor with gain control
23
+ */
24
+ export declare const GAIN_PROCESSOR_CODE = "\nclass GainProcessor extends AudioWorkletProcessor {\n static get parameterDescriptors() {\n return [\n { name: 'gain', defaultValue: 1, minValue: 0, maxValue: 2, automationRate: 'a-rate' }\n ];\n }\n\n process(inputs, outputs, parameters) {\n const input = inputs[0];\n const output = outputs[0];\n const gain = parameters.gain;\n \n if (!input || !input[0]) return true;\n \n for (let channel = 0; channel < output.length; channel++) {\n const inputChannel = input[channel] || input[0];\n const outputChannel = output[channel];\n \n if (gain.length === 1) {\n // Static gain\n const g = gain[0];\n for (let i = 0; i < outputChannel.length; i++) {\n outputChannel[i] = inputChannel[i] * g;\n }\n } else {\n // Per-sample gain (automation)\n for (let i = 0; i < outputChannel.length; i++) {\n outputChannel[i] = inputChannel[i] * gain[i];\n }\n }\n }\n \n return true;\n }\n}\nregisterProcessor('nice-gain-processor', GainProcessor);\n";
25
+ /**
26
+ * Level meter processor
27
+ */
28
+ export declare const METER_PROCESSOR_CODE = "\nclass MeterProcessor extends AudioWorkletProcessor {\n constructor() {\n super();\n this.sampleCount = 0;\n this.peakHold = 0;\n this.decayRate = 0.9995;\n this.reportInterval = 1024; // ~21ms at 48kHz\n }\n\n process(inputs, outputs) {\n const input = inputs[0];\n const output = outputs[0];\n \n if (!input || !input[0]) return true;\n \n // Pass through\n for (let ch = 0; ch < output.length; ch++) {\n const inputChannel = input[ch] || input[0];\n output[ch].set(inputChannel);\n }\n \n // Calculate levels for first channel (or sum)\n let peak = 0;\n let sumSquares = 0;\n const data = input[0];\n \n for (let i = 0; i < data.length; i++) {\n const abs = Math.abs(data[i]);\n if (abs > peak) peak = abs;\n sumSquares += data[i] * data[i];\n }\n \n const rms = Math.sqrt(sumSquares / data.length);\n \n // Peak hold with decay\n if (peak > this.peakHold) {\n this.peakHold = peak;\n } else {\n this.peakHold *= this.decayRate;\n }\n \n this.sampleCount += data.length;\n \n if (this.sampleCount >= this.reportInterval) {\n this.port.postMessage({\n type: 'meter',\n data: {\n peak: this.peakHold,\n rms: rms,\n clip: peak >= 1.0\n }\n });\n this.sampleCount = 0;\n }\n \n return true;\n }\n}\nregisterProcessor('nice-meter-processor', MeterProcessor);\n";
29
+ /**
30
+ * Recorder processor - captures audio to ring buffer
31
+ */
32
+ export declare const RECORDER_PROCESSOR_CODE = "\nclass RecorderProcessor extends AudioWorkletProcessor {\n constructor(options) {\n super();\n this.recording = false;\n this.bufferSize = options.processorOptions?.bufferSize || 4096;\n this.channels = options.processorOptions?.channels || 2;\n this.buffer = [];\n \n for (let i = 0; i < this.channels; i++) {\n this.buffer.push(new Float32Array(this.bufferSize));\n }\n \n this.writeIndex = 0;\n \n this.port.onmessage = (event) => {\n if (event.data.type === 'start') {\n this.recording = true;\n this.writeIndex = 0;\n } else if (event.data.type === 'stop') {\n this.recording = false;\n this.flush();\n }\n };\n }\n\n flush() {\n if (this.writeIndex === 0) return;\n \n const channelData = [];\n for (let ch = 0; ch < this.channels; ch++) {\n channelData.push(this.buffer[ch].slice(0, this.writeIndex));\n }\n \n this.port.postMessage({\n type: 'chunk',\n data: {\n channelData,\n timestamp: currentTime\n }\n }, channelData.map(d => d.buffer));\n \n this.writeIndex = 0;\n }\n\n process(inputs, outputs) {\n const input = inputs[0];\n const output = outputs[0];\n \n if (!input || !input[0]) return true;\n \n // Pass through\n for (let ch = 0; ch < output.length; ch++) {\n const inputChannel = input[ch] || input[0];\n output[ch].set(inputChannel);\n }\n \n if (!this.recording) return true;\n \n // Record\n const frameSize = input[0].length;\n \n for (let ch = 0; ch < Math.min(this.channels, input.length); ch++) {\n for (let i = 0; i < frameSize; i++) {\n this.buffer[ch][this.writeIndex + i] = input[ch][i];\n }\n }\n \n this.writeIndex += frameSize;\n \n if (this.writeIndex >= this.bufferSize) {\n this.flush();\n }\n \n return true;\n }\n}\nregisterProcessor('nice-recorder-processor', RecorderProcessor);\n";
33
+ /**
34
+ * Pitch analyzer processor
35
+ */
36
+ export declare const PITCH_ANALYZER_CODE = "\nclass PitchAnalyzerProcessor extends AudioWorkletProcessor {\n constructor(options) {\n super();\n this.bufferSize = options.processorOptions?.bufferSize || 2048;\n this.buffer = new Float32Array(this.bufferSize);\n this.writeIndex = 0;\n this.minFreq = options.processorOptions?.minFreq || 60;\n this.maxFreq = options.processorOptions?.maxFreq || 1000;\n }\n\n // Simple autocorrelation pitch detection\n detectPitch(buffer, sampleRate) {\n const minPeriod = Math.floor(sampleRate / this.maxFreq);\n const maxPeriod = Math.floor(sampleRate / this.minFreq);\n \n let bestCorr = 0;\n let bestPeriod = 0;\n \n for (let period = minPeriod; period <= Math.min(maxPeriod, buffer.length / 2); period++) {\n let corr = 0;\n for (let i = 0; i < buffer.length - period; i++) {\n corr += buffer[i] * buffer[i + period];\n }\n \n if (corr > bestCorr) {\n bestCorr = corr;\n bestPeriod = period;\n }\n }\n \n if (bestPeriod === 0) return 0;\n \n return sampleRate / bestPeriod;\n }\n\n process(inputs, outputs) {\n const input = inputs[0];\n const output = outputs[0];\n \n if (!input || !input[0]) return true;\n \n // Pass through\n for (let ch = 0; ch < output.length; ch++) {\n const inputChannel = input[ch] || input[0];\n output[ch].set(inputChannel);\n }\n \n // Accumulate samples\n const data = input[0];\n for (let i = 0; i < data.length && this.writeIndex < this.bufferSize; i++) {\n this.buffer[this.writeIndex++] = data[i];\n }\n \n if (this.writeIndex >= this.bufferSize) {\n const freq = this.detectPitch(this.buffer, sampleRate);\n \n this.port.postMessage({\n type: 'pitch',\n data: {\n frequency: freq,\n note: freq > 0 ? this.freqToNote(freq) : null,\n cents: freq > 0 ? this.freqToCents(freq) : 0\n }\n });\n \n this.writeIndex = 0;\n }\n \n return true;\n }\n\n freqToNote(freq) {\n const notes = ['C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B'];\n const midi = Math.round(12 * Math.log2(freq / 440) + 69);\n const note = notes[midi % 12];\n const octave = Math.floor(midi / 12) - 1;\n return note + octave;\n }\n\n freqToCents(freq) {\n const midi = 12 * Math.log2(freq / 440) + 69;\n return Math.round((midi - Math.round(midi)) * 100);\n }\n}\nregisterProcessor('nice-pitch-analyzer', PitchAnalyzerProcessor);\n";
37
+ /**
38
+ * All processors combined
39
+ */
40
+ export declare const ALL_PROCESSORS_CODE: string;
41
+ /**
42
+ * Create a blob URL for worklet code
43
+ */
44
+ export declare function createWorkletBlobURL(code: string): string;
45
+ /**
46
+ * Register all Nice Audio processors
47
+ */
48
+ export declare function registerNiceAudioWorklets(audioContext: AudioContext): Promise<void>;
49
+ /**
50
+ * Register a single processor
51
+ */
52
+ export declare function registerWorkletProcessor(audioContext: AudioContext, code: string): Promise<void>;
53
+ /**
54
+ * Gain processor node with parameter control
55
+ */
56
+ export declare class NiceGainWorkletNode extends AudioWorkletNode {
57
+ constructor(audioContext: AudioContext);
58
+ get gain(): AudioParam;
59
+ setGain(value: number): void;
60
+ fadeIn(duration: number): void;
61
+ fadeOut(duration: number): void;
62
+ }
63
+ /**
64
+ * Level meter node
65
+ */
66
+ export declare class NiceMeterWorkletNode extends AudioWorkletNode {
67
+ private _onMeter;
68
+ constructor(audioContext: AudioContext);
69
+ set onMeter(callback: ((data: MeterData) => void) | null);
70
+ get onMeter(): ((data: MeterData) => void) | null;
71
+ }
72
+ /**
73
+ * Recorder node
74
+ */
75
+ export declare class NiceRecorderWorkletNode extends AudioWorkletNode {
76
+ private _onChunk;
77
+ private _recording;
78
+ constructor(audioContext: AudioContext, options?: {
79
+ bufferSize?: number;
80
+ channels?: number;
81
+ });
82
+ get recording(): boolean;
83
+ set onChunk(callback: ((chunk: RecorderChunk) => void) | null);
84
+ start(): void;
85
+ stop(): void;
86
+ }
87
+ /**
88
+ * Pitch analyzer node
89
+ */
90
+ export interface PitchData {
91
+ frequency: number;
92
+ note: string | null;
93
+ cents: number;
94
+ }
95
+ export declare class NicePitchAnalyzerNode extends AudioWorkletNode {
96
+ private _onPitch;
97
+ constructor(audioContext: AudioContext, options?: {
98
+ bufferSize?: number;
99
+ minFreq?: number;
100
+ maxFreq?: number;
101
+ });
102
+ set onPitch(callback: ((data: PitchData) => void) | null);
103
+ }
104
+ /**
105
+ * Hook for registering and using AudioWorklet
106
+ */
107
+ export declare function useAudioWorklet(audioContext: AudioContext | undefined, processorName: string, processorCode: string, options?: AudioWorkletProcessorOptions): {
108
+ node: AudioWorkletNode;
109
+ ready: boolean;
110
+ error: Error;
111
+ };
112
+ /**
113
+ * Level meter hook
114
+ */
115
+ export declare function useMeter(audioContext: AudioContext | undefined): {
116
+ node: NiceMeterWorkletNode;
117
+ meterData: MeterData;
118
+ ready: boolean;
119
+ };
120
+ /**
121
+ * Recorder hook
122
+ */
123
+ export declare function useWorkletRecorder(audioContext: AudioContext | undefined, options?: {
124
+ bufferSize?: number;
125
+ channels?: number;
126
+ }): {
127
+ node: NiceRecorderWorkletNode;
128
+ ready: boolean;
129
+ recording: boolean;
130
+ chunks: RecorderChunk[];
131
+ start: () => void;
132
+ stop: () => void;
133
+ getAudioBuffer: () => AudioBuffer | null;
134
+ };
135
+ /**
136
+ * Pitch detection hook
137
+ */
138
+ export declare function usePitchDetection(audioContext: AudioContext | undefined, options?: {
139
+ bufferSize?: number;
140
+ minFreq?: number;
141
+ maxFreq?: number;
142
+ }): {
143
+ node: NicePitchAnalyzerNode;
144
+ pitchData: PitchData;
145
+ ready: boolean;
146
+ };
147
+ /**
148
+ * Helper to migrate from ScriptProcessorNode to AudioWorklet
149
+ *
150
+ * This provides a compatibility layer that mimics onaudioprocess
151
+ */
152
+ export declare const COMPAT_PROCESSOR_CODE = "\nclass CompatProcessor extends AudioWorkletProcessor {\n constructor(options) {\n super();\n this.bufferSize = options.processorOptions?.bufferSize || 256;\n }\n\n process(inputs, outputs) {\n const input = inputs[0];\n const output = outputs[0];\n \n if (!input || !input[0]) return true;\n \n // Copy input to output (pass through)\n for (let ch = 0; ch < output.length; ch++) {\n const inputChannel = input[ch] || input[0];\n output[ch].set(inputChannel);\n }\n \n // Send to main thread for processing\n this.port.postMessage({\n type: 'process',\n inputBuffer: input.map(ch => ch.slice()),\n outputBuffer: output.map(ch => ch.slice())\n });\n \n return true;\n }\n}\nregisterProcessor('nice-compat-processor', CompatProcessor);\n";
153
+ export interface AudioProcessingEvent {
154
+ inputBuffer: Float32Array[];
155
+ outputBuffer: Float32Array[];
156
+ playbackTime: number;
157
+ }
158
+ /**
159
+ * Compatibility node that mimics ScriptProcessorNode API
160
+ */
161
+ export declare class NiceCompatWorkletNode extends AudioWorkletNode {
162
+ private _onaudioprocess;
163
+ constructor(audioContext: AudioContext, bufferSize?: number);
164
+ set onaudioprocess(callback: ((event: AudioProcessingEvent) => void) | null);
165
+ }
166
+ /**
167
+ * Create compatibility worklet node from ScriptProcessorNode callback
168
+ */
169
+ export declare function createCompatWorkletFromScriptProcessor(audioContext: AudioContext, bufferSize: number, onaudioprocess: (event: AudioProcessingEvent) => void): Promise<NiceCompatWorkletNode>;
170
+ declare const _default: {
171
+ registerNiceAudioWorklets: typeof registerNiceAudioWorklets;
172
+ registerWorkletProcessor: typeof registerWorkletProcessor;
173
+ createWorkletBlobURL: typeof createWorkletBlobURL;
174
+ NiceGainWorkletNode: typeof NiceGainWorkletNode;
175
+ NiceMeterWorkletNode: typeof NiceMeterWorkletNode;
176
+ NiceRecorderWorkletNode: typeof NiceRecorderWorkletNode;
177
+ NicePitchAnalyzerNode: typeof NicePitchAnalyzerNode;
178
+ useAudioWorklet: typeof useAudioWorklet;
179
+ useMeter: typeof useMeter;
180
+ useWorkletRecorder: typeof useWorkletRecorder;
181
+ usePitchDetection: typeof usePitchDetection;
182
+ };
183
+ export default _default;
184
+ //# sourceMappingURL=NiceAudioWorklet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NiceAudioWorklet.d.ts","sourceRoot":"","sources":["../../src/engine/NiceAudioWorklet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,165 @@
1
+ /**
2
+ * NiceMultitrackExport — Multitrack audio export system
3
+ *
4
+ * Features:
5
+ * - Export to WAV, MP3, FLAC formats
6
+ * - Per-track volume, pan, and effects control
7
+ * - Bounce to stereo or multi-channel
8
+ * - Progress tracking with cancellation
9
+ * - Worker-based encoding for non-blocking operation
10
+ */
11
+ export type ExportFormat = 'wav' | 'mp3' | 'flac' | 'ogg';
12
+ export type BitDepth = 16 | 24 | 32;
13
+ export type SampleRate = 44100 | 48000 | 96000;
14
+ export interface TrackExportSettings {
15
+ trackId: string;
16
+ name: string;
17
+ enabled: boolean;
18
+ volume: number;
19
+ pan: number;
20
+ mute: boolean;
21
+ solo: boolean;
22
+ effects: AudioEffectNode[];
23
+ }
24
+ export interface AudioEffectNode {
25
+ type: 'gain' | 'panner' | 'compressor' | 'reverb' | 'delay' | 'eq' | 'filter';
26
+ params: Record<string, any>;
27
+ enabled: boolean;
28
+ }
29
+ export interface ExportOptions {
30
+ format: ExportFormat;
31
+ bitDepth: BitDepth;
32
+ sampleRate: SampleRate;
33
+ channels: 1 | 2;
34
+ normalize: boolean;
35
+ dither: boolean;
36
+ fadeIn?: number;
37
+ fadeOut?: number;
38
+ startTime?: number;
39
+ endTime?: number;
40
+ mp3Bitrate?: 128 | 192 | 256 | 320;
41
+ mp3Quality?: number;
42
+ flacCompressionLevel?: number;
43
+ metadata?: ExportMetadata;
44
+ }
45
+ export interface ExportMetadata {
46
+ title?: string;
47
+ artist?: string;
48
+ album?: string;
49
+ year?: number;
50
+ track?: number;
51
+ genre?: string;
52
+ comment?: string;
53
+ }
54
+ export interface ExportProgress {
55
+ phase: 'preparing' | 'rendering' | 'encoding' | 'writing' | 'complete' | 'error' | 'cancelled';
56
+ progress: number;
57
+ currentTrack?: string;
58
+ message?: string;
59
+ error?: Error;
60
+ }
61
+ export interface ExportResult {
62
+ success: boolean;
63
+ blob?: Blob;
64
+ duration: number;
65
+ fileSize: number;
66
+ format: ExportFormat;
67
+ error?: Error;
68
+ }
69
+ export interface MultitrackExportConfig {
70
+ tracks: TrackExportSettings[];
71
+ masterVolume: number;
72
+ masterEffects: AudioEffectNode[];
73
+ options: ExportOptions;
74
+ }
75
+ /**
76
+ * Calculate the maximum peak amplitude in an audio buffer
77
+ */
78
+ export declare function calculatePeak(buffer: Float32Array): number;
79
+ /**
80
+ * Normalize an audio buffer to a target peak level
81
+ */
82
+ export declare function normalizeBuffer(buffer: Float32Array, targetPeak?: number): Float32Array;
83
+ /**
84
+ * Apply a fade in/out to an audio buffer
85
+ */
86
+ export declare function applyFade(buffer: Float32Array, sampleRate: number, fadeInMs: number, fadeOutMs: number): Float32Array;
87
+ /**
88
+ * Apply dithering to reduce quantization noise
89
+ */
90
+ export declare function applyDither(buffer: Float32Array, bitDepth: BitDepth): Float32Array;
91
+ /**
92
+ * Mix multiple audio buffers together with volume/pan
93
+ */
94
+ export declare function mixBuffers(buffers: {
95
+ buffer: Float32Array;
96
+ volume: number;
97
+ pan: number;
98
+ }[], length: number, channels: 1 | 2): Float32Array[];
99
+ /**
100
+ * Convert Float32Array to Int16Array for WAV export
101
+ */
102
+ export declare function float32ToInt16(buffer: Float32Array): Int16Array;
103
+ /**
104
+ * Convert Float32Array to Int24 (stored in Int32Array)
105
+ */
106
+ export declare function float32ToInt24(buffer: Float32Array): Int32Array;
107
+ /**
108
+ * Encode audio data to WAV format
109
+ */
110
+ export declare function encodeWav(channels: Float32Array[], sampleRate: SampleRate, bitDepth: BitDepth): ArrayBuffer;
111
+ export declare class NiceMultitrackExporter {
112
+ private config;
113
+ private audioContext;
114
+ private abortController;
115
+ private onProgress;
116
+ constructor(config: MultitrackExportConfig);
117
+ /**
118
+ * Set progress callback
119
+ */
120
+ setProgressCallback(callback: (progress: ExportProgress) => void): void;
121
+ /**
122
+ * Report progress to callback
123
+ */
124
+ private reportProgress;
125
+ /**
126
+ * Cancel the current export
127
+ */
128
+ cancel(): void;
129
+ /**
130
+ * Encode audio via OfflineAudioContext + MediaRecorder for MP3/OGG/FLAC
131
+ */
132
+ private encodeViaMediaRecorder;
133
+ /**
134
+ * Apply per-track effects chain using OfflineAudioContext
135
+ */
136
+ private applyTrackEffects;
137
+ /**
138
+ * Create a Web Audio node from an AudioEffectNode descriptor
139
+ */
140
+ private createEffectNode;
141
+ /**
142
+ * Export all tracks to a single mixed file
143
+ */
144
+ exportMixed(audioBuffers: Map<string, AudioBuffer>): Promise<ExportResult>;
145
+ /**
146
+ * Export each track as a separate file
147
+ */
148
+ exportSeparate(audioBuffers: Map<string, AudioBuffer>): Promise<Map<string, ExportResult>>;
149
+ }
150
+ export interface UseMultitrackExportOptions {
151
+ onProgress?: (progress: ExportProgress) => void;
152
+ onComplete?: (result: ExportResult) => void;
153
+ onError?: (error: Error) => void;
154
+ }
155
+ export interface UseMultitrackExportReturn {
156
+ isExporting: boolean;
157
+ progress: ExportProgress | null;
158
+ exportMixed: (config: MultitrackExportConfig, audioBuffers: Map<string, AudioBuffer>) => Promise<ExportResult>;
159
+ exportSeparate: (config: MultitrackExportConfig, audioBuffers: Map<string, AudioBuffer>) => Promise<Map<string, ExportResult>>;
160
+ cancel: () => void;
161
+ downloadBlob: (blob: Blob, filename: string) => void;
162
+ }
163
+ export declare function useMultitrackExport(options?: UseMultitrackExportOptions): UseMultitrackExportReturn;
164
+ export default NiceMultitrackExporter;
165
+ //# sourceMappingURL=NiceMultitrackExport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NiceMultitrackExport.d.ts","sourceRoot":"","sources":["../../src/engine/NiceMultitrackExport.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"audioContext.d.ts","sourceRoot":"","sources":["../../src/engine/audioContext.ts"],"names":[],"mappings":"AAEA,wBAAgB,eAAe,IAAI,YAAY,CAS9C;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAKxD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C"}
1
+ {"version":3,"file":"audioContext.d.ts","sourceRoot":"","sources":["../../src/engine/audioContext.ts"],"names":[],"mappings":"AAIA,wBAAgB,eAAe,IAAI,YAAY,CAS9C;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAKxD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C"}
@@ -1 +1 @@
1
- {"version":3,"file":"audioKeyboard.d.ts","sourceRoot":"","sources":["../../src/engine/audioKeyboard.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,aAAa,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAA;CAM1D,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAIhD,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAchF,CAAC;AAEF,eAAO,MAAM,cAAc;;;GAQ1B,CAAC;AAEF,eAAO,MAAM,WAAW,UAA0D,CAAC;AAGnF,eAAO,MAAM,eAAe,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,SAE1D,CAAC;AAGF,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,WAE5C,CAAC;AAEF,eAAO,MAAM,iBAAiB,eAM7B,CAAC;AAGF,eAAO,MAAM,SAAS,GAClB,MAAM,MAAM,EACZ,YAAY,MAAM,EAClB,eAAe,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAChE,WAAW;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAC/E,SAAQ,MAAY,KACrB,WAAW,GAAG,IA6ChB,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,EAAE,eAAe,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,SAS/G,CAAC"}
1
+ {"version":3,"file":"audioKeyboard.d.ts","sourceRoot":"","sources":["../../src/engine/audioKeyboard.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,aAAa,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAA;CAM1D,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAIhD,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAchF,CAAC;AAEF,eAAO,MAAM,cAAc;;;GAQ1B,CAAC;AAEF,eAAO,MAAM,WAAW,UAA0D,CAAC;AAGnF,eAAO,MAAM,eAAe,SAAU,MAAM,SAAS,MAAM,SAE1D,CAAC;AAGF,eAAO,MAAM,gBAAgB,SAAU,MAAM,WAE5C,CAAC;AAEF,eAAO,MAAM,iBAAiB,eAM7B,CAAC;AAGF,eAAO,MAAM,SAAS,SACZ,MAAM,cACA,MAAM,iBACH,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,aACrD;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,WACvE,MAAM,KACf,WAAW,GAAG,IA6ChB,CAAC;AAEF,eAAO,MAAM,YAAY,SAAU,MAAM,iBAAiB,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,SAS/G,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"audioPlaybackEngine.d.ts","sourceRoot":"","sources":["../../src/engine/audioPlaybackEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"audioPlaybackEngine.d.ts","sourceRoot":"","sources":["../../src/engine/audioPlaybackEngine.ts"],"names":[],"mappings":"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"}