@nice2dev/ui-audio 1.0.3 → 1.0.5

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.
@@ -0,0 +1,277 @@
1
+ /**
2
+ * DAW-Grade Waveform Editor — Non-destructive editing, multi-track,
3
+ * crossfades, time stretch, pitch shift, spectral editing, etc.
4
+ *
5
+ * PRO-3.1 — 16 items
6
+ *
7
+ * @module @nice2dev/ui-audio/engine/daw-core
8
+ */
9
+ export interface DawEditOperation {
10
+ id: string;
11
+ type: 'cut' | 'copy' | 'paste' | 'trim' | 'split' | 'move' | 'gain' | 'fade' | 'crossfade' | 'timeStretch' | 'pitchShift' | 'reverse' | 'normalize';
12
+ clipId: string;
13
+ timestamp: number;
14
+ params: Record<string, unknown>;
15
+ /** Undo data — enough to reverse the operation */
16
+ undoData?: Record<string, unknown>;
17
+ }
18
+ export interface NonDestructiveSession {
19
+ id: string;
20
+ originalFileRef: string;
21
+ /** Ordered list of operations applied to the original */
22
+ operations: DawEditOperation[];
23
+ /** Pointer into operations for undo/redo */
24
+ undoIndex: number;
25
+ }
26
+ export declare function pushOperation(session: NonDestructiveSession, op: Omit<DawEditOperation, 'id' | 'timestamp'>): NonDestructiveSession;
27
+ export declare function undoOperation(session: NonDestructiveSession): NonDestructiveSession;
28
+ export declare function redoOperation(session: NonDestructiveSession): NonDestructiveSession;
29
+ export type DawTrackType = 'audio' | 'midi' | 'bus' | 'aux' | 'master' | 'video' | 'marker';
30
+ export interface DawTrack {
31
+ id: string;
32
+ name: string;
33
+ type: DawTrackType;
34
+ color: string;
35
+ /** Track height in pixels */
36
+ height: number;
37
+ muted: boolean;
38
+ solo: boolean;
39
+ armed: boolean;
40
+ /** Volume (0-1) */
41
+ volume: number;
42
+ /** Pan (-1 left to +1 right) */
43
+ pan: number;
44
+ /** Group ID (for grouping tracks) */
45
+ groupId?: string;
46
+ /** Folded (collapsed) */
47
+ folded: boolean;
48
+ /** Frozen (rendered to audio cache) */
49
+ frozen: boolean;
50
+ clips: DawClip[];
51
+ /** Automation lanes */
52
+ automationLanes: AutomationLane[];
53
+ }
54
+ export interface DawClip {
55
+ id: string;
56
+ trackId: string;
57
+ /** Source file or MIDI data reference */
58
+ sourceRef: string;
59
+ /** Start position in ticks/samples */
60
+ startTime: number;
61
+ /** Duration in ticks/samples */
62
+ duration: number;
63
+ /** Offset within source (for slip editing) */
64
+ sourceOffset: number;
65
+ /** Clip gain (dB) */
66
+ gain: number;
67
+ /** Fade in duration */
68
+ fadeIn: number;
69
+ /** Fade out duration */
70
+ fadeOut: number;
71
+ /** Fade curve type */
72
+ fadeCurve: 'linear' | 'logarithmic' | 'exponential' | 's-curve' | 'equal-power';
73
+ color?: string;
74
+ /** Time stretch ratio (1.0 = original) */
75
+ stretchRatio: number;
76
+ /** Pitch shift (semitones) */
77
+ pitchShift: number;
78
+ /** Is this a comp take? */
79
+ isTake: boolean;
80
+ takeIndex?: number;
81
+ }
82
+ export type CrossfadeShape = 'linear' | 'equal-power' | 's-curve' | 'exponential' | 'logarithmic';
83
+ export interface Crossfade {
84
+ id: string;
85
+ clipAId: string;
86
+ clipBId: string;
87
+ duration: number;
88
+ shape: CrossfadeShape;
89
+ /** Custom curve points for advanced fades */
90
+ customCurve?: Array<{
91
+ x: number;
92
+ y: number;
93
+ }>;
94
+ }
95
+ export type StretchAlgorithm = 'elastique' | 'paulstretch' | 'wsola' | 'phase-vocoder' | 'granular';
96
+ export interface TimeStretchParams {
97
+ ratio: number;
98
+ algorithm: StretchAlgorithm;
99
+ preserveFormants: boolean;
100
+ quality: 'preview' | 'standard' | 'high';
101
+ }
102
+ export interface PitchShiftParams {
103
+ semitones: number;
104
+ cents: number;
105
+ preserveFormants: boolean;
106
+ algorithm: StretchAlgorithm;
107
+ }
108
+ export interface AutomationPoint {
109
+ time: number;
110
+ value: number;
111
+ curve: 'linear' | 'bezier' | 'step';
112
+ /** Bezier handles (optional) */
113
+ handleIn?: {
114
+ x: number;
115
+ y: number;
116
+ };
117
+ handleOut?: {
118
+ x: number;
119
+ y: number;
120
+ };
121
+ }
122
+ export interface AutomationLane {
123
+ id: string;
124
+ parameter: string;
125
+ points: AutomationPoint[];
126
+ visible: boolean;
127
+ bypassedState: boolean;
128
+ }
129
+ export interface CompLane {
130
+ id: string;
131
+ trackId: string;
132
+ takeIndex: number;
133
+ label: string;
134
+ clips: DawClip[];
135
+ /** Selected regions within this take */
136
+ selectedRegions: Array<{
137
+ start: number;
138
+ end: number;
139
+ }>;
140
+ }
141
+ export interface BatchProcessPreset {
142
+ id: string;
143
+ name: string;
144
+ operations: Array<{
145
+ type: 'normalize' | 'fade' | 'trim-silence' | 'convert' | 'effect' | 'loudness';
146
+ params: Record<string, unknown>;
147
+ }>;
148
+ /** Output format */
149
+ outputFormat: 'wav' | 'mp3' | 'flac' | 'ogg' | 'aac';
150
+ outputSampleRate: number;
151
+ outputBitDepth: 16 | 24 | 32;
152
+ /** Output naming pattern */
153
+ namingPattern: string;
154
+ }
155
+ export interface SpectralSelection {
156
+ /** Frequency range (Hz) */
157
+ freqMin: number;
158
+ freqMax: number;
159
+ /** Time range (seconds) */
160
+ timeStart: number;
161
+ timeEnd: number;
162
+ }
163
+ export type SpectralTool = 'brush' | 'lasso' | 'rectangle' | 'magic-wand';
164
+ export interface SpectralEditAction {
165
+ tool: SpectralTool;
166
+ selection: SpectralSelection;
167
+ action: 'attenuate' | 'boost' | 'silence' | 'clone' | 'replace';
168
+ /** Amount in dB for attenuate/boost */
169
+ amount?: number;
170
+ }
171
+ export interface RestorationProfile {
172
+ id: string;
173
+ name: string;
174
+ /** Click/Pop removal */
175
+ clickRemoval: {
176
+ enabled: boolean;
177
+ sensitivity: number;
178
+ strength: number;
179
+ };
180
+ /** Hum removal (50/60 Hz + harmonics) */
181
+ humRemoval: {
182
+ enabled: boolean;
183
+ frequency: 50 | 60;
184
+ harmonics: number;
185
+ reduction: number;
186
+ };
187
+ /** Broadband noise reduction */
188
+ noiseReduction: {
189
+ enabled: boolean;
190
+ threshold: number;
191
+ reduction: number;
192
+ };
193
+ /** Clip repair */
194
+ clipRepair: {
195
+ enabled: boolean;
196
+ threshold: number;
197
+ };
198
+ }
199
+ export interface PodcastProcessing {
200
+ autoLeveling: {
201
+ enabled: boolean;
202
+ targetLufs: number;
203
+ };
204
+ noiseGate: {
205
+ enabled: boolean;
206
+ threshold: number;
207
+ attack: number;
208
+ release: number;
209
+ };
210
+ compression: {
211
+ enabled: boolean;
212
+ ratio: number;
213
+ threshold: number;
214
+ attack: number;
215
+ release: number;
216
+ };
217
+ deEsser: {
218
+ enabled: boolean;
219
+ frequency: number;
220
+ threshold: number;
221
+ };
222
+ /** Auto-remove silence longer than this (ms) */
223
+ silenceRemoval: {
224
+ enabled: boolean;
225
+ minDuration: number;
226
+ threshold: number;
227
+ };
228
+ }
229
+ export interface AudiobookChapter {
230
+ id: string;
231
+ title: string;
232
+ startTime: number;
233
+ endTime: number;
234
+ /** Metadata for chapter */
235
+ metadata?: Record<string, string>;
236
+ }
237
+ export interface AudiobookProcessing {
238
+ silenceTrimming: {
239
+ enabled: boolean;
240
+ maxSilenceMs: number;
241
+ };
242
+ chapters: AudiobookChapter[];
243
+ /** Target loudness per ACX spec (-18 to -23 LUFS) */
244
+ targetLufs: number;
245
+ /** Max peak (-3 dBTP for ACX) */
246
+ maxPeak: number;
247
+ /** Noise floor target (-60 dB for ACX) */
248
+ noiseFloor: number;
249
+ }
250
+ export type StemType = 'vocals' | 'drums' | 'bass' | 'piano' | 'guitar' | 'other';
251
+ export interface StemSeparationConfig {
252
+ /** Stems to extract */
253
+ stems: StemType[];
254
+ /** Model quality */
255
+ quality: 'fast' | 'standard' | 'high';
256
+ /** Output format */
257
+ format: 'wav' | 'flac';
258
+ }
259
+ export interface PitchCorrectionConfig {
260
+ /** Target scale */
261
+ scale: string;
262
+ /** Correction speed (ms) — 0 = hard tune, >100 = subtle */
263
+ speed: number;
264
+ /** How strongly to correct (0-1) */
265
+ strength: number;
266
+ /** Formant preservation */
267
+ preserveFormants: boolean;
268
+ /** Vibrato handling */
269
+ vibrato: {
270
+ preserve: boolean;
271
+ depth: number;
272
+ rate: number;
273
+ };
274
+ /** Per-note overrides (note name → target pitch in Hz) */
275
+ noteOverrides?: Record<string, number>;
276
+ }
277
+ //# sourceMappingURL=daw-core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daw-core.d.ts","sourceRoot":"","sources":["../../src/engine/daw-core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,287 @@
1
+ /**
2
+ * Professional Effects Chain — EQ, compressor, reverb, delay,
3
+ * modulation, distortion, de-esser, noise reduction, metering,
4
+ * multiband, limiter, stereo imager, exciter, transient shaper,
5
+ * vocoder, auto-wah, ring modulator.
6
+ *
7
+ * PRO-3.2 — 18 items (extends existing NiceAudioEffects)
8
+ *
9
+ * @module @nice2dev/ui-audio/engine/effects-pro
10
+ */
11
+ export interface ProAudioEffect {
12
+ id: string;
13
+ type: string;
14
+ name: string;
15
+ enabled: boolean;
16
+ /** Mix (dry/wet) 0-1 */
17
+ mix: number;
18
+ params: Record<string, number | boolean | string>;
19
+ }
20
+ export type PluginFormat = 'vst3' | 'au' | 'lv2' | 'clap';
21
+ export interface ExternalPlugin {
22
+ id: string;
23
+ format: PluginFormat;
24
+ name: string;
25
+ vendor: string;
26
+ path: string;
27
+ /** Plugin category */
28
+ category: 'effect' | 'instrument' | 'analyzer';
29
+ /** Preset list */
30
+ presets: string[];
31
+ /** Current preset */
32
+ currentPreset?: string;
33
+ /** Parameter map from plugin */
34
+ parameters: Array<{
35
+ id: number;
36
+ name: string;
37
+ value: number;
38
+ min: number;
39
+ max: number;
40
+ unit: string;
41
+ }>;
42
+ /** Latency in samples */
43
+ latency: number;
44
+ }
45
+ export type EqBandType = 'low-shelf' | 'high-shelf' | 'peak' | 'notch' | 'low-pass' | 'high-pass' | 'band-pass' | 'all-pass';
46
+ export type EqMode = 'standard' | 'linear-phase' | 'minimum-phase' | 'mixed';
47
+ export interface EqBand {
48
+ id: string;
49
+ type: EqBandType;
50
+ frequency: number;
51
+ gain: number;
52
+ q: number;
53
+ enabled: boolean;
54
+ /** Slope for shelves/passes (dB/oct) */
55
+ slope?: 6 | 12 | 18 | 24 | 48;
56
+ }
57
+ export interface EqProConfig extends ProAudioEffect {
58
+ type: 'eq-pro';
59
+ mode: EqMode;
60
+ bands: EqBand[];
61
+ /** Spectrum analyzer */
62
+ analyzer: {
63
+ enabled: boolean;
64
+ resolution: number;
65
+ smoothing: number;
66
+ };
67
+ }
68
+ export type CompressorEmulation = 'vca' | 'opto' | 'fet' | 'vari-mu' | 'digital';
69
+ export interface CompressorConfig extends ProAudioEffect {
70
+ type: 'compressor';
71
+ emulation: CompressorEmulation;
72
+ threshold: number;
73
+ ratio: number;
74
+ attack: number;
75
+ release: number;
76
+ knee: number;
77
+ makeupGain: number;
78
+ /** Auto makeup gain */
79
+ autoMakeup: boolean;
80
+ /** Sidechain */
81
+ sidechain: {
82
+ enabled: boolean;
83
+ hpf: number;
84
+ lpf: number;
85
+ externalSource?: string;
86
+ };
87
+ /** Lookahead (ms) */
88
+ lookahead: number;
89
+ }
90
+ export type ReverbAlgorithm = 'algorithmic' | 'convolution' | 'spring' | 'plate' | 'hall' | 'room' | 'chamber' | 'shimmer';
91
+ export interface ReverbConfig extends ProAudioEffect {
92
+ type: 'reverb';
93
+ algorithm: ReverbAlgorithm;
94
+ /** Decay time (seconds) */
95
+ decay: number;
96
+ /** Pre-delay (ms) */
97
+ preDelay: number;
98
+ /** High-frequency damping */
99
+ damping: number;
100
+ /** Diffusion */
101
+ diffusion: number;
102
+ /** Room size (0-1) */
103
+ size: number;
104
+ /** Early reflections level */
105
+ earlyLevel: number;
106
+ /** Late tail level */
107
+ tailLevel: number;
108
+ /** Convolution IR URL */
109
+ irUrl?: string;
110
+ }
111
+ export type DelayMode = 'simple' | 'ping-pong' | 'multi-tap' | 'tape' | 'analog' | 'reverse';
112
+ export interface DelayTap {
113
+ id: string;
114
+ delayMs: number;
115
+ feedback: number;
116
+ pan: number;
117
+ level: number;
118
+ /** Filter on feedback path */
119
+ hpfFreq: number;
120
+ lpfFreq: number;
121
+ }
122
+ export interface DelayConfig extends ProAudioEffect {
123
+ type: 'delay';
124
+ mode: DelayMode;
125
+ /** Sync to tempo? */
126
+ tempoSync: boolean;
127
+ taps: DelayTap[];
128
+ /** Tape modulation (wow & flutter) */
129
+ modulation: {
130
+ depth: number;
131
+ rate: number;
132
+ };
133
+ }
134
+ export type ModulationType = 'chorus' | 'flanger' | 'phaser' | 'tremolo' | 'vibrato' | 'rotary' | 'uni-vibe';
135
+ export interface ModulationConfig extends ProAudioEffect {
136
+ type: 'modulation';
137
+ modType: ModulationType;
138
+ rate: number;
139
+ depth: number;
140
+ feedback: number;
141
+ /** Number of voices (chorus) or stages (phaser) */
142
+ stages: number;
143
+ stereoWidth: number;
144
+ }
145
+ export type DistortionType = 'tube' | 'tape' | 'transistor' | 'bitcrusher' | 'fuzz' | 'overdrive' | 'waveshaper';
146
+ export interface DistortionConfig extends ProAudioEffect {
147
+ type: 'distortion';
148
+ distType: DistortionType;
149
+ drive: number;
150
+ tone: number;
151
+ /** Bit depth (for bitcrusher) */
152
+ bitDepth?: number;
153
+ /** Sample rate reduction (for bitcrusher) */
154
+ sampleRateReduction?: number;
155
+ /** Output level */
156
+ outputLevel: number;
157
+ }
158
+ export interface DeEsserConfig extends ProAudioEffect {
159
+ type: 'de-esser';
160
+ frequency: number;
161
+ /** Bandwidth (Hz) */
162
+ bandwidth: number;
163
+ threshold: number;
164
+ /** Amount of reduction (dB) */
165
+ reduction: number;
166
+ /** Split-band or wideband */
167
+ mode: 'split' | 'wideband';
168
+ }
169
+ export type NoiseReductionMode = 'spectral' | 'gate' | 'expander' | 'adaptive';
170
+ export interface NoiseReductionConfig extends ProAudioEffect {
171
+ type: 'noise-reduction';
172
+ mode: NoiseReductionMode;
173
+ threshold: number;
174
+ reduction: number;
175
+ /** Noise profile reference (for spectral mode) */
176
+ noiseProfile?: Float32Array;
177
+ /** Attack / release for gate/expander */
178
+ attack: number;
179
+ release: number;
180
+ }
181
+ export type MeterType = 'peak' | 'rms' | 'lufs-momentary' | 'lufs-short-term' | 'lufs-integrated' | 'true-peak' | 'spectrum' | 'phase-correlation' | 'stereo-scope' | 'loudness-range';
182
+ export interface MeterConfig {
183
+ id: string;
184
+ type: MeterType;
185
+ /** Update rate (ms) */
186
+ refreshRate: number;
187
+ /** Current value(s) */
188
+ value: number | number[];
189
+ }
190
+ export interface MultibandBand {
191
+ id: string;
192
+ /** Crossover frequency — lower bound from previous band */
193
+ crossoverFreq: number;
194
+ threshold: number;
195
+ ratio: number;
196
+ attack: number;
197
+ release: number;
198
+ gain: number;
199
+ enabled: boolean;
200
+ solo: boolean;
201
+ }
202
+ export interface MultibandCompressorConfig extends ProAudioEffect {
203
+ type: 'multiband-compressor';
204
+ bands: MultibandBand[];
205
+ /** Crossover slope (dB/oct) */
206
+ crossoverSlope: 12 | 24 | 48;
207
+ }
208
+ export interface LimiterConfig extends ProAudioEffect {
209
+ type: 'limiter';
210
+ ceiling: number;
211
+ release: number;
212
+ /** True-peak mode */
213
+ truePeak: boolean;
214
+ /** Lookahead (ms) */
215
+ lookahead: number;
216
+ }
217
+ export interface StereoImagerConfig extends ProAudioEffect {
218
+ type: 'stereo-imager';
219
+ /** Width (0 = mono, 1 = original, 2 = wide) */
220
+ width: number;
221
+ /** M/S balance (-1 = side only, 0 = balanced, 1 = mid only) */
222
+ msBalance: number;
223
+ /** Frequency-dependent widening bands */
224
+ bands?: Array<{
225
+ freq: number;
226
+ width: number;
227
+ }>;
228
+ }
229
+ export interface ExciterConfig extends ProAudioEffect {
230
+ type: 'exciter';
231
+ /** Harmonic drive */
232
+ drive: number;
233
+ /** Frequency above which to excite */
234
+ frequency: number;
235
+ /** Mix of harmonics */
236
+ harmonicMix: number;
237
+ /** Even/odd harmonic balance */
238
+ harmonicType: 'even' | 'odd' | 'both';
239
+ }
240
+ export interface TransientShaperConfig extends ProAudioEffect {
241
+ type: 'transient-shaper';
242
+ /** Attack enhancement (dB) — positive = more attack */
243
+ attack: number;
244
+ /** Sustain enhancement (dB) — positive = more sustain */
245
+ sustain: number;
246
+ /** Detection sensitivity */
247
+ sensitivity: number;
248
+ }
249
+ export interface VocoderConfig extends ProAudioEffect {
250
+ type: 'vocoder';
251
+ /** Number of bands */
252
+ bands: number;
253
+ /** Band range */
254
+ minFreq: number;
255
+ maxFreq: number;
256
+ /** Attack/release for envelope followers */
257
+ attack: number;
258
+ release: number;
259
+ /** Carrier source: internal synth or external */
260
+ carrierSource: 'internal' | 'external';
261
+ /** Internal carrier settings */
262
+ carrierWaveform?: 'saw' | 'square' | 'noise' | 'pulse';
263
+ }
264
+ export interface AutoWahConfig extends ProAudioEffect {
265
+ type: 'auto-wah';
266
+ /** Sensitivity to input level */
267
+ sensitivity: number;
268
+ /** Center frequency range */
269
+ minFreq: number;
270
+ maxFreq: number;
271
+ /** Q factor */
272
+ q: number;
273
+ /** Direction — up or down sweep */
274
+ direction: 'up' | 'down';
275
+ /** Rate for LFO-based mode */
276
+ lfoRate?: number;
277
+ }
278
+ export interface RingModulatorConfig extends ProAudioEffect {
279
+ type: 'ring-modulator';
280
+ /** Carrier frequency (Hz) */
281
+ frequency: number;
282
+ /** Carrier waveform */
283
+ waveform: 'sine' | 'square' | 'triangle' | 'saw';
284
+ /** Depth (0-1) */
285
+ depth: number;
286
+ }
287
+ //# sourceMappingURL=effects-pro.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effects-pro.d.ts","sourceRoot":"","sources":["../../src/engine/effects-pro.ts"],"names":[],"mappings":"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"}