@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.
- package/CHANGELOG.md +217 -1
- package/dist/__benchmarks__/audio-latency.bench.d.ts +2 -0
- package/dist/__benchmarks__/audio-latency.bench.d.ts.map +1 -0
- package/dist/constants/index.d.ts +6 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/karaokeScoringConfig.d.ts.map +1 -1
- package/dist/core/NiceAudioErrorBoundary.d.ts +28 -0
- package/dist/core/NiceAudioErrorBoundary.d.ts.map +1 -0
- package/dist/editor/NiceSampleBrowser.d.ts +79 -0
- package/dist/editor/NiceSampleBrowser.d.ts.map +1 -0
- package/dist/editor/Waveform.d.ts +53 -1
- package/dist/editor/Waveform.d.ts.map +1 -1
- package/dist/editor/hooks/useProjectCRUD.d.ts.map +1 -1
- package/dist/editor/nav/SaveLoadControls.d.ts.map +1 -1
- package/dist/editor/useEditorRecording.d.ts.map +1 -1
- package/dist/engine/NiceAudioEffects.d.ts +186 -0
- package/dist/engine/NiceAudioEffects.d.ts.map +1 -0
- package/dist/engine/NiceAudioEffectsRack.d.ts +17 -0
- package/dist/engine/NiceAudioEffectsRack.d.ts.map +1 -0
- package/dist/engine/NiceAudioWorklet.d.ts +184 -0
- package/dist/engine/NiceAudioWorklet.d.ts.map +1 -0
- package/dist/engine/NiceMultitrackExport.d.ts +165 -0
- package/dist/engine/NiceMultitrackExport.d.ts.map +1 -0
- package/dist/engine/audioContext.d.ts.map +1 -1
- package/dist/engine/audioKeyboard.d.ts.map +1 -1
- package/dist/engine/audioPlaybackEngine.d.ts.map +1 -1
- package/dist/index.cjs +373 -34
- package/dist/index.d.ts +95 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +9988 -5652
- package/dist/karaoke/AudioPitchAnalyzer.d.ts.map +1 -1
- package/dist/karaoke/KaraokeSummaryOverlay.d.ts +22 -0
- package/dist/karaoke/KaraokeSummaryOverlay.d.ts.map +1 -0
- package/dist/karaoke/rendering/fontCatalog.d.ts.map +1 -1
- package/dist/karaoke/rendering/glossyBarRenderer.d.ts.map +1 -1
- package/dist/karaoke/rendering/karaokeLyrics.d.ts.map +1 -1
- package/dist/karaoke/rendering/karaokeNoteParsing.d.ts.map +1 -1
- package/dist/karaoke/rendering/karaokeSettings.d.ts.map +1 -1
- package/dist/karaoke/rendering/karaokeTimelineRenderer.d.ts.map +1 -1
- package/dist/karaoke/rendering/karaokeTimelineTypes.d.ts.map +1 -1
- package/dist/lighting/NiceDMXTimeline.d.ts +226 -0
- package/dist/lighting/NiceDMXTimeline.d.ts.map +1 -0
- package/dist/models/index.d.ts +16 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/modelsAiVideo.d.ts.map +1 -1
- package/dist/player/GenericPlayer.d.ts +34 -1
- package/dist/player/GenericPlayer.d.ts.map +1 -1
- package/dist/playlist/GenericPlaylist.d.ts.map +1 -1
- package/dist/playlist/PlaylistBrowser.d.ts.map +1 -1
- package/dist/playlist/PlaylistImportWizard.d.ts +42 -0
- package/dist/playlist/PlaylistImportWizard.d.ts.map +1 -0
- package/dist/playlist/PlaylistList.d.ts.map +1 -1
- package/dist/radio/NiceRadioPlayer.d.ts +141 -0
- package/dist/radio/NiceRadioPlayer.d.ts.map +1 -0
- package/dist/streaming/NiceStreamingVisualizer.d.ts +86 -0
- package/dist/streaming/NiceStreamingVisualizer.d.ts.map +1 -0
- package/dist/streaming/NiceVoiceChatOverlay.d.ts +97 -0
- package/dist/streaming/NiceVoiceChatOverlay.d.ts.map +1 -0
- package/dist/streaming/index.d.ts +11 -0
- package/dist/streaming/index.d.ts.map +1 -0
- package/dist/streaming/liveStreamManager.d.ts +194 -0
- package/dist/streaming/liveStreamManager.d.ts.map +1 -0
- package/dist/streaming/useLiveStream.d.ts +19 -0
- package/dist/streaming/useLiveStream.d.ts.map +1 -0
- package/dist/streaming/webrtcAudio.d.ts +111 -0
- package/dist/streaming/webrtcAudio.d.ts.map +1 -0
- package/dist/ui-audio.css +1 -1
- package/dist/utils/BaseStreamClient.d.ts.map +1 -1
- package/dist/utils/audioDragDrop.d.ts +72 -0
- package/dist/utils/audioDragDrop.d.ts.map +1 -0
- package/dist/utils/crepeStreaming.d.ts.map +1 -1
- package/dist/utils/index.d.ts +40 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/latencyEstimate.d.ts +1 -1
- package/dist/utils/latencyEstimate.d.ts.map +1 -1
- package/dist/utils/midiCCMapping.d.ts +93 -0
- package/dist/utils/midiCCMapping.d.ts.map +1 -0
- package/dist/utils/musicPlayerUtils.d.ts.map +1 -1
- package/dist/utils/pianoRollUtils.d.ts +58 -0
- package/dist/utils/pianoRollUtils.d.ts.map +1 -0
- package/dist/utils/sanitize.d.ts +24 -0
- package/dist/utils/sanitize.d.ts.map +1 -0
- package/dist/utils/shortcutManager.d.ts +81 -0
- package/dist/utils/shortcutManager.d.ts.map +1 -0
- package/dist/utils/undoRedoUtils.d.ts +45 -0
- package/dist/utils/undoRedoUtils.d.ts.map +1 -1
- package/dist/workers/audioWorkletProcessor.d.ts +92 -0
- package/dist/workers/audioWorkletProcessor.d.ts.map +1 -0
- package/dist/workers/useAudioWorklet.d.ts +82 -0
- package/dist/workers/useAudioWorklet.d.ts.map +1 -0
- package/dist/workers/useWorker.d.ts +1 -0
- package/dist/workers/useWorker.d.ts.map +1 -1
- package/package.json +64 -19
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 @@
|
|
|
1
|
+
{"version":3,"file":"audio-latency.bench.d.ts","sourceRoot":"","sources":["../../src/__benchmarks__/audio-latency.bench.ts"],"names":[],"mappings":""}
|
|
@@ -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":"
|
|
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
|
-
|
|
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,
|
|
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":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACxF,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AACxF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;
|
|
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;
|
|
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;
|
|
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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"}
|