@nice2dev/ui-audio 0.1.0 → 1.0.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.
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 +1 -1
package/CHANGELOG.md CHANGED
@@ -1,4 +1,78 @@
1
- # Changelog
1
+ # @nice2dev/ui-audio — Changelog
2
+
3
+ All notable changes to the audio/music editor package.
4
+
5
+ ## [Unreleased] — OmniVerk Professional Roadmap
6
+
7
+ ### Planned — DAW-Grade Waveform Editor (PRO-3.1)
8
+
9
+ - **Non-Destructive Editing** — pełny undo, zachowanie oryginalnych plików
10
+ - **Multi-Track Timeline** — nieograniczona liczba ścieżek z grupowaniem
11
+ - **Time Stretch/Pitch Shift** — profesjonalna jakość élastique
12
+ - **Comp Lanes** — workflow dla nagrań wielu take'ów
13
+ - **Batch Processing** — automatyczne przetwarzanie z presetami
14
+
15
+ ### Planned — Professional Effects Chain (PRO-3.2)
16
+
17
+ - **VST3/AU Plugin Host** — ładowanie zewnętrznych pluginów
18
+ - **Built-in EQ Pro** — parametric, graphic, linear phase
19
+ - **Compressor Suite** — emulacje VCA, Opto, FET
20
+ - **Metering Suite** — LUFS, true peak, spektrum, korelacja fazy
21
+
22
+ ### Planned — Karaoke Editor Professional (PRO-3.4)
23
+
24
+ - **AI Waveform-to-Lyrics Alignment** — automatyczne dopasowanie timing
25
+ - **Syllable-Level Sync** — precyzyjne timing sylab
26
+ - **Pitch Guide Track** — wyświetlanie oczekiwanej wysokości dźwięku
27
+ - **Gold Note System** — notatki bonusowe z własnym scoringiem
28
+ - **Duet Support** — wiele partii wokalnych
29
+ - **Backing Track Separation** — izolacja wokalu przez AI
30
+ - **Multiplayer Mode** — system pojedynków i duetów
31
+
32
+ ### Planned — Sound Design Tools (PRO-3.5)
33
+
34
+ - **Synthesizer Engine** — analog, FM, wavetable, granular
35
+ - **Wwise/FMOD Integration** — eksport do middleware gier
36
+ - **Spatial Audio** — binaural, ambisonics, HRTF
37
+
38
+ ---
39
+
40
+ ## [0.2.0] — 2026-03-25
41
+
42
+ ### Added (FAZA 7.2)
43
+
44
+ - **Multitrack export** — bounce to WAV/MP3/FLAC with per-track volume/pan/effects
45
+ - **Audio effects rack** — reverb, delay, chorus, compressor, EQ chain with drag & drop, presets
46
+ - **Sample browser** — built-in browser with waveform preview, BPM detect, key detect
47
+ - **MIDI controller mapping** — learn mode: press knob → assign to parameter
48
+ - **DMX lighting integration** — timeline DMX channels, fixture library, Art-Net/sACN output
49
+ - **Spotify/Apple Music import** — playlist import from API, fallback to manual paste
50
+
51
+ ### Added (FAZA 3.1 — Streaming)
52
+
53
+ - **WebRTC P2P audio** — peer-to-peer audio chat (ICE, offer/answer, mute, multi-peer)
54
+ - **RTMP/HLS ingest** — live stream audio reception
55
+ - **AudioWorklet migration** — full AudioWorklet pipeline with ScriptProcessorNode fallback
56
+ - **NiceStreamingVisualizer** — real-time frequency/waveform from microphone
57
+ - **NiceVoiceChatOverlay** — embeddable widget with mic toggle, participant avatars, speaking indicators
58
+
59
+ ### Tests
60
+
61
+ - 24 tests: karaoke scoring, AudioWorklet, multitrack export, effects rack, sample browser, shortcut manager, DMX timeline
62
+ - Audio latency benchmark (mic → effect → output)
63
+
64
+ ---
65
+
66
+ ## [0.1.0] — 2025-06-01
67
+
68
+ Initial beta release — DAW editor, karaoke engine, player, playlist, visualizers, MIDI, DMX.
69
+
70
+ - DAW-style multitrack editor (tracks, clips, timeline, piano roll)
71
+ - Karaoke engine (UltraStar format, pitch detection, scoring, leaderboard)
72
+ - Audio player with playlist and waveform visualization
73
+ - 5 visualizer modes (bars, waveform, circle, mirror bars, spectrum)
74
+ - MIDI input/output with Web MIDI API
75
+ - Vocal effects engine (reverb, pitch shift, harmonizer)
2
76
 
3
77
  All notable changes to `@nice2dev/ui-audio` will be documented in this file.
4
78
 
@@ -7,6 +81,148 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
81
 
8
82
  ---
9
83
 
84
+ ## [0.2.0] — 2026-06-16
85
+
86
+ ### 🎶 Massive Expansion — Playlists, Radio, Visualizers & Production Tools
87
+
88
+ ### Radio
89
+
90
+ - **NiceRadioPlayer** — internet radio player with stream metadata, station presets, and buffering indicator
91
+
92
+ ### Karaoke Editor
93
+
94
+ - **KaraokeEditorManager** — full karaoke project editor with timeline, word sync, and preview
95
+ - **KaraokePhaserRenderer** — Phaser.js-based karaoke rendering with visual effects
96
+ - Extended karaoke sub-components: `AudioPitchAnalyzer`, `BarFillEditor`, `KaraokeLyrics`, `KaraokeTimeline`
97
+ - Rendering pipeline with scene management and real-time scoring display
98
+
99
+ ### Playlist System (`playlist/`)
100
+
101
+ - **PlaylistBrowser** — browse and discover playlists with search and filters
102
+ - **PlaylistDualPane** — dual-pane playlist manager with drag-and-drop between lists
103
+ - **PlaylistGridView** — card grid layout for playlist browsing
104
+ - **PlaylistImportWizard** — import playlists from multiple sources (Spotify, YouTube, files)
105
+ - **PlaylistList** — compact list view with inline editing
106
+ - **PlaylistOverview** — playlist detail view with cover art, stats, and controls
107
+ - **PlaylistSearchBar** — search and filter bar for track finding
108
+ - **PlaylistSidebar** — sidebar with playlist navigation and categories
109
+ - **PlaylistTagEditor** — tag management for playlist organization
110
+ - **PlaylistTrackList** — track listing with sorting, reordering, and metadata
111
+ - **GenericPlaylist / GenericPlaylistItem** — base playlist components
112
+ - **DynamicRuleEditor** — smart/dynamic playlist rule builder (genre, BPM, mood, date, etc.)
113
+ - `useLocalPlaylists` — local storage playlist persistence hook
114
+
115
+ ### Visualizer Modes (21 modes)
116
+
117
+ - **BarsMode** — classic equalizer bars
118
+ - **BlobFlowMode** — organic blob flow animation
119
+ - **ColorRipplesMode** — rippling color waves
120
+ - **CoverMode** — album art with audio-reactive effects
121
+ - **CozyFireplaceMode** — fireplace visualization
122
+ - **EqualizerCircleMode** — circular equalizer
123
+ - **GridMode** — frequency grid display
124
+ - **ImageTornadoMode** — spinning image tornado
125
+ - **LavaLampMode** — lava lamp fluid simulation
126
+ - **NeonTrianglesMode** — neon triangle geometry
127
+ - **OrbitalsMode** — orbital particle system
128
+ - **PaletteMode** — palette-based color visualization
129
+ - **ParticlesMode** — audio-reactive particles
130
+ - **PlasmaBallMode** — plasma ball effect
131
+ - **RadialMode** — radial spectrum display
132
+ - **RaysMode** — light rays visualization
133
+ - **RiftMode** — dimensional rift effect
134
+ - **RingsMode** — concentric ring display
135
+ - **SpectrumMode** — full spectrum analyzer
136
+ - **StarfieldMode** — star-field warp effect
137
+ - **WaveformMode** — waveform display
138
+ - `ModeSwitcher`, `StageVisualizer`, `VuOverlay` — visualizer infrastructure
139
+
140
+ ### DAW Editor — New Panels
141
+
142
+ - **ArpeggiatorPanel** — MIDI arpeggiator with pattern modes (up, down, random, etc.)
143
+ - **CCAutomationLaneEditor** — CC automation lane editing with curves
144
+ - **LFOPanel** — low-frequency oscillator for modulation
145
+ - **StepSequencerPanel** — 16/32-step drum machine sequencer
146
+ - **AdvancedEditingPanel** — advanced MIDI editing tools
147
+ - **DisplayModeSelector** — switch between piano roll, drum, score views
148
+ - **ProjectPanel** — project settings and metadata
149
+ - **SectionPanel** — arrangement section management
150
+ - **LayerTrack** — multi-layer audio track component
151
+ - `AudioLayersNav`, `AudioProjectSectionNav`, `AudioTimelineNav` — navigation components
152
+ - `SaveLoadControls` — save/load project controls
153
+
154
+ ### DAW Editor — New Hooks
155
+
156
+ - `useAutoSave` — automatic project saving with interval and change detection
157
+ - `usePlaybackEngine` — audio playback engine with transport controls
158
+ - `useProjectCRUD` — project create/read/update/delete operations
159
+ - `useRecording` — audio/MIDI recording with input selection
160
+
161
+ ### DAW Editor — Sub-components
162
+
163
+ - `AudioClipBox`, `AudioClipInfo` — clip display and info
164
+ - `AudioLayerDetails`, `AudioSourceDetails` — detail panels
165
+ - `AudioMiniMap` — project overview minimap
166
+ - `AudioTimeline` — timeline ruler with markers
167
+ - `PianoRoll` — MIDI note editing with velocity
168
+ - `Waveform` — audio waveform rendering
169
+ - `CCLane`, `CCLaneSelector` — CC lane components
170
+
171
+ ### Visual Effects
172
+
173
+ - **NoteParticles** — particle effects triggered by MIDI notes
174
+ - **NoteRiver** — continuous note river visualization
175
+ - `noteThemeColors` — theming for note-based visual effects
176
+
177
+ ### Audio Engine
178
+
179
+ - `audioContext.ts` — Web Audio context management
180
+ - `audioKeyboard.ts` — MIDI keyboard input mapping
181
+ - `audioPlaybackEngine.ts` — multi-track playback engine
182
+ - `audioProject.ts` — project data model
183
+ - `audioSource.ts` — audio source management
184
+ - `audioTimeline.ts` — timeline and transport
185
+ - `instrumentPresets.ts` — built-in instrument presets (piano, strings, synth, drums)
186
+ - `simpleSynth.ts` — basic synthesizer engine
187
+ - `recording.ts` — recording pipeline
188
+ - `pitch-worklet-processor.ts` — AudioWorklet for real-time pitch detection
189
+
190
+ ### Audio Utilities (~50 modules)
191
+
192
+ - `arpeggiator.ts` — arpeggiator engine
193
+ - `chordScale.ts` — chord and scale detection/generation
194
+ - `clipLauncher.ts` — Ableton-style clip launcher
195
+ - `envelopeFollower.ts` — envelope follower for sidechain
196
+ - `grooveTemplates.ts` — swing/groove templates
197
+ - `lfoEngine.ts` — LFO modulation engine
198
+ - `stepSequencer.ts` — step sequencer engine
199
+ - `vocalEffectsEngine.ts` — vocal processing effects (autotune, harmonizer, vocoder)
200
+ - `vocalPerformanceMetrics.ts` — vocal performance analysis
201
+ - `macroSystem.ts` — macro control system
202
+ - `gameAudio.ts` — game audio integration utilities
203
+ - And many more utility modules
204
+
205
+ ### Hooks
206
+
207
+ - `useCCAutomation` — CC automation state management
208
+ - `useStepSequencer` — step sequencer integration hook
209
+
210
+ ### Workers
211
+
212
+ - `pitchWorker.ts` — Web Worker for pitch detection
213
+ - `scoringWorker.ts` — Web Worker for karaoke scoring
214
+
215
+ ### Data Models
216
+
217
+ - `modelsAiAudio.ts` — AI-assisted audio generation types
218
+ - `modelsAiVideo.ts` — AI-assisted video/music video types
219
+ - `modelsGame.ts` — game audio integration types
220
+ - `modelsMusicPlatform.ts` — music platform integration types
221
+ - `modelsPlatforms.ts` — platform/streaming types
222
+ - `modelsPlaylistManager.ts` — playlist manager data models
223
+
224
+ ---
225
+
10
226
  ## [0.1.0] — 2026-03-17
11
227
 
12
228
  ### 🎵 Initial Release (Beta)
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=audio-latency.bench.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio-latency.bench.d.ts","sourceRoot":"","sources":["../../src/__benchmarks__/audio-latency.bench.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ export * from './audioColors';
2
+ export * from './debugKaraoke';
3
+ export * from './karaokeScoringConfig';
4
+ export * from './playerColors';
5
+ export * from './ui';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AACA,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,MAAM,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"karaokeScoringConfig.d.ts","sourceRoot":"","sources":["../../src/constants/karaokeScoringConfig.ts"],"names":[],"mappings":"AAA2C,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEpG,MAAM,WAAW,aAAa;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,eAAe,EAAE,aAAa,CAIxE,CAAC;AAoCF,eAAO,IAAI,cAAc,wCAAiB,CAAC;AAG3C,UAAU,4BAA4B;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;CACpE;AAED,eAAO,MAAM,wBAAwB,GAAU,UAAU;IAAE,uBAAuB,EAAE,MAAM,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAAC,CAAA;CAAE,oDAkBvI,CAAC;AAEF,eAAe,cAAc,CAAC;AAG9B,eAAO,MAAM,gBAAgB,GAAI,QAAO,eAA0B,KAAG,aAEpE,CAAC"}
1
+ {"version":3,"file":"karaokeScoringConfig.d.ts","sourceRoot":"","sources":["../../src/constants/karaokeScoringConfig.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEzD,MAAM,WAAW,aAAa;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,eAAe,EAAE,aAAa,CAIxE,CAAC;AAoCF,eAAO,IAAI,cAAc,wCAAiB,CAAC;AAG3C,UAAU,4BAA4B;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;CACpE;AAED,eAAO,MAAM,wBAAwB,aAAoB;IAAE,uBAAuB,EAAE,MAAM,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAAC,CAAA;CAAE,oDAkBvI,CAAC;AAEF,eAAe,cAAc,CAAC;AAG9B,eAAO,MAAM,gBAAgB,WAAW,eAAe,KAAc,aAEpE,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { default as React, Component } from 'react';
2
+ /** Props for {@link NiceAudioErrorBoundary}. */
3
+ export interface NiceAudioErrorBoundaryProps {
4
+ /** Fallback UI to render on error. */
5
+ fallback?: React.ReactNode | ((error: Error, reset: () => void) => React.ReactNode);
6
+ /** Called when an error is caught. */
7
+ onError?: (error: Error, errorInfo: React.ErrorInfo) => void;
8
+ /** Component name for logging context. */
9
+ componentName?: string;
10
+ children: React.ReactNode;
11
+ }
12
+ interface State {
13
+ hasError: boolean;
14
+ error: Error | null;
15
+ }
16
+ /**
17
+ * Error boundary for audio components (Editor, Player, Karaoke).
18
+ * Catches render errors and provides recovery UI with a retry button.
19
+ */
20
+ export declare class NiceAudioErrorBoundary extends Component<NiceAudioErrorBoundaryProps, State> {
21
+ state: State;
22
+ static getDerivedStateFromError(error: Error): State;
23
+ componentDidCatch(error: Error, errorInfo: React.ErrorInfo): void;
24
+ private reset;
25
+ render(): string | number | boolean | Iterable<React.ReactNode> | import("react/jsx-runtime").JSX.Element;
26
+ }
27
+ export {};
28
+ //# sourceMappingURL=NiceAudioErrorBoundary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NiceAudioErrorBoundary.d.ts","sourceRoot":"","sources":["../../src/core/NiceAudioErrorBoundary.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIzC,gDAAgD;AAChD,MAAM,WAAW,2BAA2B;IAC1C,sCAAsC;IACtC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,IAAI,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;IACpF,sCAAsC;IACtC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC;IAC7D,0CAA0C;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,UAAU,KAAK;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAID;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,SAAS,CAAC,2BAA2B,EAAE,KAAK,CAAC;IACvF,KAAK,EAAE,KAAK,CAAoC;IAEhD,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK;IAIpD,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,GAAG,IAAI;IAMjE,OAAO,CAAC,KAAK,CAEX;IAEF,MAAM;CA6BP"}
@@ -0,0 +1,79 @@
1
+ import { default as React } from 'react';
2
+ export interface AudioSample {
3
+ id: string;
4
+ name: string;
5
+ path: string;
6
+ url?: string;
7
+ duration: number;
8
+ sampleRate: number;
9
+ channels: number;
10
+ fileSize: number;
11
+ format: 'wav' | 'mp3' | 'ogg' | 'flac' | 'aiff';
12
+ waveformData?: Float32Array;
13
+ bpm?: number;
14
+ key?: MusicalKey;
15
+ tags?: string[];
16
+ favorite?: boolean;
17
+ dateAdded?: Date;
18
+ dateModified?: Date;
19
+ }
20
+ export type MusicalKey = 'C' | 'C#' | 'D' | 'D#' | 'E' | 'F' | 'F#' | 'G' | 'G#' | 'A' | 'A#' | 'B' | 'Cm' | 'C#m' | 'Dm' | 'D#m' | 'Em' | 'Fm' | 'F#m' | 'Gm' | 'G#m' | 'Am' | 'A#m' | 'Bm';
21
+ export interface SampleFolder {
22
+ id: string;
23
+ name: string;
24
+ path: string;
25
+ children?: SampleFolder[];
26
+ samples?: AudioSample[];
27
+ }
28
+ export interface SampleAnalysis {
29
+ bpm: number;
30
+ bpmConfidence: number;
31
+ key: MusicalKey;
32
+ keyConfidence: number;
33
+ waveformData: Float32Array;
34
+ peakLevel: number;
35
+ rmsLevel: number;
36
+ transients: number[];
37
+ }
38
+ export interface NiceSampleBrowserProps {
39
+ folders?: SampleFolder[];
40
+ samples?: AudioSample[];
41
+ onSampleSelect?: (sample: AudioSample) => void;
42
+ onSampleDragStart?: (sample: AudioSample, event: React.DragEvent) => void;
43
+ onSampleDrop?: (sample: AudioSample, targetId: string) => void;
44
+ onFolderSelect?: (folder: SampleFolder) => void;
45
+ onAnalyze?: (sample: AudioSample) => Promise<SampleAnalysis>;
46
+ audioContext?: AudioContext;
47
+ showWaveform?: boolean;
48
+ showAnalysis?: boolean;
49
+ sortBy?: 'name' | 'duration' | 'bpm' | 'key' | 'date';
50
+ sortDirection?: 'asc' | 'desc';
51
+ filterTags?: string[];
52
+ searchQuery?: string;
53
+ className?: string;
54
+ }
55
+ /**
56
+ * Detect BPM using onset detection and autocorrelation
57
+ */
58
+ export declare function detectBPM(audioBuffer: AudioBuffer): Promise<{
59
+ bpm: number;
60
+ confidence: number;
61
+ }>;
62
+ /**
63
+ * Detect musical key using chromagram analysis
64
+ */
65
+ export declare function detectKey(audioBuffer: AudioBuffer): Promise<{
66
+ key: MusicalKey;
67
+ confidence: number;
68
+ }>;
69
+ /**
70
+ * Generate waveform data for visualization
71
+ */
72
+ export declare function generateWaveform(audioBuffer: AudioBuffer, numPoints?: number): Float32Array;
73
+ /**
74
+ * Analyze an audio sample
75
+ */
76
+ export declare function analyzeSample(audioBuffer: AudioBuffer): Promise<SampleAnalysis>;
77
+ export declare const NiceSampleBrowser: React.FC<NiceSampleBrowserProps>;
78
+ export default NiceSampleBrowser;
79
+ //# sourceMappingURL=NiceSampleBrowser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NiceSampleBrowser.d.ts","sourceRoot":"","sources":["../../src/editor/NiceSampleBrowser.tsx"],"names":[],"mappings":"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"}
@@ -1,8 +1,60 @@
1
1
  import { default as React } from 'react';
2
- interface WaveformProps {
2
+ /** Marker on the waveform timeline */
3
+ export interface WaveformMarker {
4
+ id: string;
5
+ time: number;
6
+ label?: string;
7
+ color?: string;
8
+ }
9
+ /** A region (selection range) on the waveform */
10
+ export interface WaveformRegion {
11
+ id: string;
12
+ start: number;
13
+ end: number;
14
+ label?: string;
15
+ color?: string;
16
+ }
17
+ /** Display mode for the waveform */
18
+ export type WaveformDisplayMode = 'waveform' | 'spectrogram' | 'bars';
19
+ export interface WaveformProps {
3
20
  audioBlob: Blob | null;
4
21
  currentTime: number;
5
22
  duration: number;
23
+ /** Width in pixels (default 600) */
24
+ width?: number;
25
+ /** Height in pixels (default 200) */
26
+ height?: number;
27
+ /** Zoom level (1 = fit-to-width, 2 = 2x zoom, etc.) */
28
+ zoom?: number;
29
+ /** Called when user clicks on waveform to seek */
30
+ onSeek?: (time: number) => void;
31
+ /** Called when user selects a region by dragging */
32
+ onRegionSelect?: (region: {
33
+ start: number;
34
+ end: number;
35
+ }) => void;
36
+ /** Markers on the timeline */
37
+ markers?: WaveformMarker[];
38
+ /** Regions on the timeline */
39
+ regions?: WaveformRegion[];
40
+ /** Display mode */
41
+ displayMode?: WaveformDisplayMode;
42
+ /** Show all channels (true) or only channel 0 (false, default) */
43
+ multiChannel?: boolean;
44
+ /** Waveform color */
45
+ waveColor?: string;
46
+ /** Progress overlay color */
47
+ progressColor?: string;
48
+ /** Background color */
49
+ backgroundColor?: string;
50
+ /** Show time ruler at top */
51
+ showRuler?: boolean;
52
+ /** Show channel labels (L/R) for multi-channel */
53
+ showChannelLabels?: boolean;
54
+ /** Show dB meter on the right side */
55
+ showPeakMeter?: boolean;
56
+ /** CSS class name */
57
+ className?: string;
6
58
  }
7
59
  declare const Waveform: React.FC<WaveformProps>;
8
60
  export default Waveform;
@@ -1 +1 @@
1
- {"version":3,"file":"Waveform.d.ts","sourceRoot":"","sources":["../../src/editor/Waveform.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAClB,UAAU,aAAa;IAClD,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,QAAA,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAkErC,CAAC;AAEF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"Waveform.d.ts","sourceRoot":"","sources":["../../src/editor/Waveform.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAKjF,sCAAsC;AACtC,MAAM,WAAW,cAAc;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,iDAAiD;AACjD,MAAM,WAAW,cAAc;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,oCAAoC;AACpC,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,aAAa,GAAG,MAAM,CAAC;AAEtE,MAAM,WAAW,aAAa;IAC1B,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,oDAAoD;IACpD,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAClE,8BAA8B;IAC9B,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;IAC3B,8BAA8B;IAC9B,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;IAC3B,mBAAmB;IACnB,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAClC,kEAAkE;IAClE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,qBAAqB;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uBAAuB;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kDAAkD;IAClD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,sCAAsC;IACtC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qBAAqB;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAID,QAAA,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAyRrC,CAAC;AA+EF,eAAe,QAAQ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useProjectCRUD.d.ts","sourceRoot":"","sources":["../../../src/editor/hooks/useProjectCRUD.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useProjectCRUD.d.ts","sourceRoot":"","sources":["../../../src/editor/hooks/useProjectCRUD.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SaveLoadControls.d.ts","sourceRoot":"","sources":["../../../src/editor/nav/SaveLoadControls.tsx"],"names":[],"mappings":"AACA,OAAO,KAAiB,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAClB,UAAU,qBAAqB;IAClE,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IAC7B,aAAa,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;CAClD;;AAwDD,wBAA4C"}
1
+ {"version":3,"file":"SaveLoadControls.d.ts","sourceRoot":"","sources":["../../../src/editor/nav/SaveLoadControls.tsx"],"names":[],"mappings":"AACA,OAAO,KAAiB,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEX,UAAU,qBAAqB;IACzE,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IAC7B,aAAa,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;CAClD;;AAwDD,wBAA4C"}
@@ -1 +1 @@
1
- {"version":3,"file":"useEditorRecording.d.ts","sourceRoot":"","sources":["../../src/editor/useEditorRecording.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACrF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAChC,MAAM,WAAW,wBAAwB;IAC9E,WAAW,EAAE,UAAU,GAAG,IAAI,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,gBAAgB,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;IAC7D,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IACzC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC7C,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,KAAK,IAAI,CAAC;IAC1E,CAAC,EAAE,eAAe,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IAC9D,aAAa,EAAE,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;IACtE,eAAe,EAAE,QAAQ,CAAC,cAAc,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IACtF,YAAY,EAAE,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACrE,gBAAgB,EAAE,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IACnD,aAAa,EAAE,QAAQ,CAAC,cAAc,CAAC,SAAS,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC;CACrE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,wBAAwB;;;;;;;;;;;;;;;EA+LlE"}
1
+ {"version":3,"file":"useEditorRecording.d.ts","sourceRoot":"","sources":["../../src/editor/useEditorRecording.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACrF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAGzE,MAAM,WAAW,wBAAwB;IACrC,WAAW,EAAE,UAAU,GAAG,IAAI,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,gBAAgB,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;IAC7D,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IACzC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC7C,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,KAAK,IAAI,CAAC;IAC1E,CAAC,EAAE,eAAe,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IAC9D,aAAa,EAAE,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;IACtE,eAAe,EAAE,QAAQ,CAAC,cAAc,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IACtF,YAAY,EAAE,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACrE,gBAAgB,EAAE,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IACnD,aAAa,EAAE,QAAQ,CAAC,cAAc,CAAC,SAAS,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC;CACrE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,wBAAwB;;;;;;;;;;;;;;;EA+LlE"}
@@ -0,0 +1,186 @@
1
+ /**
2
+ * NiceAudioEffects — Audio effects processing chain
3
+ *
4
+ * Includes:
5
+ * - Gain
6
+ * - Compressor
7
+ * - Reverb (convolution)
8
+ * - Delay
9
+ * - Chorus
10
+ * - EQ (parametric/graphic)
11
+ * - Filter (low/high pass)
12
+ * - Distortion
13
+ * - Tremolo
14
+ * - Phaser
15
+ */
16
+ export type EffectType = 'gain' | 'compressor' | 'reverb' | 'delay' | 'chorus' | 'eq' | 'filter' | 'distortion' | 'tremolo' | 'phaser';
17
+ export interface BaseEffectParams {
18
+ enabled: boolean;
19
+ mix: number;
20
+ /** Additional dynamic parameters for UI controls */
21
+ params?: Record<string, number>;
22
+ }
23
+ export interface GainParams extends BaseEffectParams {
24
+ type: 'gain';
25
+ gain: number;
26
+ }
27
+ export interface CompressorParams extends BaseEffectParams {
28
+ type: 'compressor';
29
+ threshold: number;
30
+ ratio: number;
31
+ attack: number;
32
+ release: number;
33
+ knee: number;
34
+ makeupGain: number;
35
+ }
36
+ export interface ReverbParams extends BaseEffectParams {
37
+ type: 'reverb';
38
+ decay: number;
39
+ preDelay: number;
40
+ damping: number;
41
+ roomSize: number;
42
+ }
43
+ export interface DelayParams extends BaseEffectParams {
44
+ type: 'delay';
45
+ time: number;
46
+ feedback: number;
47
+ pingPong: boolean;
48
+ highCut: number;
49
+ }
50
+ export interface ChorusParams extends BaseEffectParams {
51
+ type: 'chorus';
52
+ rate: number;
53
+ depth: number;
54
+ delay: number;
55
+ voices: number;
56
+ }
57
+ export interface EQBand {
58
+ frequency: number;
59
+ gain: number;
60
+ q: number;
61
+ type: BiquadFilterType;
62
+ }
63
+ export interface EQParams extends BaseEffectParams {
64
+ type: 'eq';
65
+ bands: EQBand[];
66
+ }
67
+ export interface FilterParams extends BaseEffectParams {
68
+ type: 'filter';
69
+ filterType: BiquadFilterType;
70
+ frequency: number;
71
+ q: number;
72
+ gain: number;
73
+ }
74
+ export interface DistortionParams extends BaseEffectParams {
75
+ type: 'distortion';
76
+ drive: number;
77
+ tone: number;
78
+ curve: 'soft' | 'hard' | 'fuzz' | 'tube';
79
+ }
80
+ export interface TremoloParams extends BaseEffectParams {
81
+ type: 'tremolo';
82
+ rate: number;
83
+ depth: number;
84
+ waveform: OscillatorType;
85
+ }
86
+ export interface PhaserParams extends BaseEffectParams {
87
+ type: 'phaser';
88
+ rate: number;
89
+ depth: number;
90
+ feedback: number;
91
+ stages: number;
92
+ frequency: number;
93
+ }
94
+ export type EffectParams = GainParams | CompressorParams | ReverbParams | DelayParams | ChorusParams | EQParams | FilterParams | DistortionParams | TremoloParams | PhaserParams;
95
+ export interface EffectInstance {
96
+ id: string;
97
+ params: EffectParams;
98
+ nodes: AudioNode[];
99
+ input: AudioNode;
100
+ output: AudioNode;
101
+ }
102
+ export declare const DEFAULT_GAIN: GainParams;
103
+ export declare const DEFAULT_COMPRESSOR: CompressorParams;
104
+ export declare const DEFAULT_REVERB: ReverbParams;
105
+ export declare const DEFAULT_DELAY: DelayParams;
106
+ export declare const DEFAULT_CHORUS: ChorusParams;
107
+ export declare const DEFAULT_EQ: EQParams;
108
+ export declare const DEFAULT_FILTER: FilterParams;
109
+ export declare const DEFAULT_DISTORTION: DistortionParams;
110
+ export declare const DEFAULT_TREMOLO: TremoloParams;
111
+ export declare const DEFAULT_PHASER: PhaserParams;
112
+ export declare const EFFECT_PRESETS: Record<EffectType, Record<string, EffectParams>>;
113
+ /**
114
+ * Convert dB to linear gain
115
+ */
116
+ export declare function dbToGain(db: number): number;
117
+ /**
118
+ * Convert linear gain to dB
119
+ */
120
+ export declare function gainToDb(gain: number): number;
121
+ /**
122
+ * Generate impulse response for convolution reverb
123
+ */
124
+ export declare function generateImpulseResponse(audioContext: BaseAudioContext, duration: number, decay: number, damping: number): AudioBuffer;
125
+ /**
126
+ * Generate distortion curve
127
+ */
128
+ export declare function makeDistortionCurve(amount: number, type: DistortionParams['curve']): Float32Array;
129
+ export declare class NiceAudioEffectsChain {
130
+ private audioContext;
131
+ private effects;
132
+ private inputNode;
133
+ private outputNode;
134
+ private bypass;
135
+ constructor(audioContext: BaseAudioContext);
136
+ /**
137
+ * Get the input node to connect audio source
138
+ */
139
+ get input(): AudioNode;
140
+ /**
141
+ * Get the output node to connect to destination
142
+ */
143
+ get output(): AudioNode;
144
+ /**
145
+ * Add an effect to the chain
146
+ */
147
+ addEffect(params: EffectParams, index?: number): string;
148
+ /**
149
+ * Remove an effect from the chain
150
+ */
151
+ removeEffect(id: string): boolean;
152
+ /**
153
+ * Update effect parameters
154
+ */
155
+ updateEffect(id: string, params: Partial<EffectParams>): boolean;
156
+ /**
157
+ * Reorder effects in the chain
158
+ */
159
+ reorderEffects(fromIndex: number, toIndex: number): boolean;
160
+ /**
161
+ * Set bypass state
162
+ */
163
+ setBypass(bypass: boolean): void;
164
+ /**
165
+ * Get all effects
166
+ */
167
+ getEffects(): EffectInstance[];
168
+ /**
169
+ * Clear all effects
170
+ */
171
+ clear(): void;
172
+ /**
173
+ * Create effect instance based on params
174
+ */
175
+ private createEffectInstance;
176
+ /**
177
+ * Reconnect the audio chain
178
+ */
179
+ private reconnectChain;
180
+ /**
181
+ * Dispose of all resources
182
+ */
183
+ dispose(): void;
184
+ }
185
+ export default NiceAudioEffectsChain;
186
+ //# sourceMappingURL=NiceAudioEffects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NiceAudioEffects.d.ts","sourceRoot":"","sources":["../../src/engine/NiceAudioEffects.ts"],"names":[],"mappings":"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"}