@waveform-playlist/spectrogram 9.5.0 → 9.5.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.
package/dist/index.d.mts CHANGED
@@ -74,26 +74,12 @@ interface SpectrogramSettingsModalProps {
74
74
  }
75
75
  declare const SpectrogramSettingsModal: React.FC<SpectrogramSettingsModalProps>;
76
76
 
77
- interface SpectrogramWorkerComputeParams {
78
- channelDataArrays: Float32Array[];
79
- config: SpectrogramConfig;
80
- sampleRate: number;
81
- offsetSamples: number;
82
- durationSamples: number;
83
- mono: boolean;
84
- }
85
- interface SpectrogramWorkerRenderParams extends SpectrogramWorkerComputeParams {
86
- render: {
87
- canvasIds: string[][];
88
- canvasWidths: number[];
89
- canvasHeight: number;
90
- devicePixelRatio: number;
91
- samplesPerPixel: number;
92
- colorLUT: Uint8Array;
93
- frequencyScale: string;
94
- minFrequency: number;
95
- maxFrequency: number;
96
- };
77
+ /**
78
+ * Error thrown when a spectrogram computation is aborted due to a generation change.
79
+ * Use `instanceof SpectrogramAbortError` instead of string matching on error messages.
80
+ */
81
+ declare class SpectrogramAbortError extends Error {
82
+ constructor();
97
83
  }
98
84
  interface SpectrogramWorkerFFTParams {
99
85
  clipId: string;
@@ -107,6 +93,8 @@ interface SpectrogramWorkerFFTParams {
107
93
  start: number;
108
94
  end: number;
109
95
  };
96
+ /** If set, compute only this channel index (used by worker pool). */
97
+ channelFilter?: number;
110
98
  }
111
99
  interface SpectrogramWorkerRenderChunksParams {
112
100
  cacheKey: string;
@@ -125,16 +113,15 @@ interface SpectrogramWorkerRenderChunksParams {
125
113
  channelIndex: number;
126
114
  }
127
115
  interface SpectrogramWorkerApi {
128
- compute(params: SpectrogramWorkerComputeParams): Promise<SpectrogramData[]>;
129
- computeFFT(params: SpectrogramWorkerFFTParams): Promise<{
116
+ computeFFT(params: SpectrogramWorkerFFTParams, generation?: number): Promise<{
130
117
  cacheKey: string;
131
118
  }>;
132
- renderChunks(params: SpectrogramWorkerRenderChunksParams): Promise<void>;
119
+ renderChunks(params: SpectrogramWorkerRenderChunksParams, generation?: number): Promise<void>;
120
+ abortGeneration(generation: number): void;
133
121
  registerCanvas(canvasId: string, canvas: OffscreenCanvas): void;
134
122
  unregisterCanvas(canvasId: string): void;
135
123
  registerAudioData(clipId: string, channelDataArrays: Float32Array[], sampleRate: number): void;
136
124
  unregisterAudioData(clipId: string): void;
137
- computeAndRender(params: SpectrogramWorkerRenderParams): Promise<void>;
138
125
  terminate(): void;
139
126
  }
140
127
  /**
@@ -151,11 +138,15 @@ interface SpectrogramWorkerApi {
151
138
  */
152
139
  declare function createSpectrogramWorker(worker: Worker): SpectrogramWorkerApi;
153
140
 
141
+ declare function createSpectrogramWorkerPool(createWorker: () => Worker, poolSize?: number): SpectrogramWorkerApi;
142
+
154
143
  interface SpectrogramProviderProps {
155
144
  config?: SpectrogramConfig;
156
145
  colorMap?: ColorMapValue;
146
+ /** Number of Web Workers for parallel FFT computation. Defaults to 2 (one per stereo channel). */
147
+ workerPoolSize?: number;
157
148
  children: ReactNode;
158
149
  }
159
150
  declare const SpectrogramProvider: React.FC<SpectrogramProviderProps>;
160
151
 
161
- export { type FrequencyScaleName, SpectrogramMenuItems, type SpectrogramMenuItemsProps, SpectrogramProvider, type SpectrogramProviderProps, SpectrogramSettingsModal, type SpectrogramSettingsModalProps, type SpectrogramWorkerApi, type SpectrogramWorkerRenderParams, type TrackMenuItem, computeSpectrogram, computeSpectrogramMono, createSpectrogramWorker, getColorMap, getFrequencyScale };
152
+ export { type FrequencyScaleName, SpectrogramAbortError, SpectrogramMenuItems, type SpectrogramMenuItemsProps, SpectrogramProvider, type SpectrogramProviderProps, SpectrogramSettingsModal, type SpectrogramSettingsModalProps, type SpectrogramWorkerApi, type TrackMenuItem, computeSpectrogram, computeSpectrogramMono, createSpectrogramWorker, createSpectrogramWorkerPool, getColorMap, getFrequencyScale };
package/dist/index.d.ts CHANGED
@@ -74,26 +74,12 @@ interface SpectrogramSettingsModalProps {
74
74
  }
75
75
  declare const SpectrogramSettingsModal: React.FC<SpectrogramSettingsModalProps>;
76
76
 
77
- interface SpectrogramWorkerComputeParams {
78
- channelDataArrays: Float32Array[];
79
- config: SpectrogramConfig;
80
- sampleRate: number;
81
- offsetSamples: number;
82
- durationSamples: number;
83
- mono: boolean;
84
- }
85
- interface SpectrogramWorkerRenderParams extends SpectrogramWorkerComputeParams {
86
- render: {
87
- canvasIds: string[][];
88
- canvasWidths: number[];
89
- canvasHeight: number;
90
- devicePixelRatio: number;
91
- samplesPerPixel: number;
92
- colorLUT: Uint8Array;
93
- frequencyScale: string;
94
- minFrequency: number;
95
- maxFrequency: number;
96
- };
77
+ /**
78
+ * Error thrown when a spectrogram computation is aborted due to a generation change.
79
+ * Use `instanceof SpectrogramAbortError` instead of string matching on error messages.
80
+ */
81
+ declare class SpectrogramAbortError extends Error {
82
+ constructor();
97
83
  }
98
84
  interface SpectrogramWorkerFFTParams {
99
85
  clipId: string;
@@ -107,6 +93,8 @@ interface SpectrogramWorkerFFTParams {
107
93
  start: number;
108
94
  end: number;
109
95
  };
96
+ /** If set, compute only this channel index (used by worker pool). */
97
+ channelFilter?: number;
110
98
  }
111
99
  interface SpectrogramWorkerRenderChunksParams {
112
100
  cacheKey: string;
@@ -125,16 +113,15 @@ interface SpectrogramWorkerRenderChunksParams {
125
113
  channelIndex: number;
126
114
  }
127
115
  interface SpectrogramWorkerApi {
128
- compute(params: SpectrogramWorkerComputeParams): Promise<SpectrogramData[]>;
129
- computeFFT(params: SpectrogramWorkerFFTParams): Promise<{
116
+ computeFFT(params: SpectrogramWorkerFFTParams, generation?: number): Promise<{
130
117
  cacheKey: string;
131
118
  }>;
132
- renderChunks(params: SpectrogramWorkerRenderChunksParams): Promise<void>;
119
+ renderChunks(params: SpectrogramWorkerRenderChunksParams, generation?: number): Promise<void>;
120
+ abortGeneration(generation: number): void;
133
121
  registerCanvas(canvasId: string, canvas: OffscreenCanvas): void;
134
122
  unregisterCanvas(canvasId: string): void;
135
123
  registerAudioData(clipId: string, channelDataArrays: Float32Array[], sampleRate: number): void;
136
124
  unregisterAudioData(clipId: string): void;
137
- computeAndRender(params: SpectrogramWorkerRenderParams): Promise<void>;
138
125
  terminate(): void;
139
126
  }
140
127
  /**
@@ -151,11 +138,15 @@ interface SpectrogramWorkerApi {
151
138
  */
152
139
  declare function createSpectrogramWorker(worker: Worker): SpectrogramWorkerApi;
153
140
 
141
+ declare function createSpectrogramWorkerPool(createWorker: () => Worker, poolSize?: number): SpectrogramWorkerApi;
142
+
154
143
  interface SpectrogramProviderProps {
155
144
  config?: SpectrogramConfig;
156
145
  colorMap?: ColorMapValue;
146
+ /** Number of Web Workers for parallel FFT computation. Defaults to 2 (one per stereo channel). */
147
+ workerPoolSize?: number;
157
148
  children: ReactNode;
158
149
  }
159
150
  declare const SpectrogramProvider: React.FC<SpectrogramProviderProps>;
160
151
 
161
- export { type FrequencyScaleName, SpectrogramMenuItems, type SpectrogramMenuItemsProps, SpectrogramProvider, type SpectrogramProviderProps, SpectrogramSettingsModal, type SpectrogramSettingsModalProps, type SpectrogramWorkerApi, type SpectrogramWorkerRenderParams, type TrackMenuItem, computeSpectrogram, computeSpectrogramMono, createSpectrogramWorker, getColorMap, getFrequencyScale };
152
+ export { type FrequencyScaleName, SpectrogramAbortError, SpectrogramMenuItems, type SpectrogramMenuItemsProps, SpectrogramProvider, type SpectrogramProviderProps, SpectrogramSettingsModal, type SpectrogramSettingsModalProps, type SpectrogramWorkerApi, type TrackMenuItem, computeSpectrogram, computeSpectrogramMono, createSpectrogramWorker, createSpectrogramWorkerPool, getColorMap, getFrequencyScale };