@nice2dev/ui-audio 0.1.0
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 +27 -0
- package/LICENSE +21 -0
- package/README.md +175 -0
- package/dist/assets/pitchWorker-BgAp5Z97.js +1 -0
- package/dist/assets/scoringWorker-B1PkYu_m.js +1 -0
- package/dist/config/noteSoundSets.d.ts +29 -0
- package/dist/config/noteSoundSets.d.ts.map +1 -0
- package/dist/constants/audioColors.d.ts +2 -0
- package/dist/constants/audioColors.d.ts.map +1 -0
- package/dist/constants/debugKaraoke.d.ts +20 -0
- package/dist/constants/debugKaraoke.d.ts.map +1 -0
- package/dist/constants/karaokeScoringConfig.d.ts +18 -0
- package/dist/constants/karaokeScoringConfig.d.ts.map +1 -0
- package/dist/constants/playerColors.d.ts +5 -0
- package/dist/constants/playerColors.d.ts.map +1 -0
- package/dist/constants/ui.d.ts +3 -0
- package/dist/constants/ui.d.ts.map +1 -0
- package/dist/core/i18n.d.ts +11 -0
- package/dist/core/i18n.d.ts.map +1 -0
- package/dist/dmx/DmxChannelControls.d.ts +14 -0
- package/dist/dmx/DmxChannelControls.d.ts.map +1 -0
- package/dist/dmx/DmxEditor.d.ts +13 -0
- package/dist/dmx/DmxEditor.d.ts.map +1 -0
- package/dist/dmx/dmxService.d.ts +20 -0
- package/dist/dmx/dmxService.d.ts.map +1 -0
- package/dist/editor/AudioClipBox.d.ts +9 -0
- package/dist/editor/AudioClipBox.d.ts.map +1 -0
- package/dist/editor/AudioClipInfo.d.ts +7 -0
- package/dist/editor/AudioClipInfo.d.ts.map +1 -0
- package/dist/editor/AudioEditorPianoRoll.d.ts +20 -0
- package/dist/editor/AudioEditorPianoRoll.d.ts.map +1 -0
- package/dist/editor/AudioEditorPianoRollContainer.d.ts +20 -0
- package/dist/editor/AudioEditorPianoRollContainer.d.ts.map +1 -0
- package/dist/editor/AudioLayerDetails.d.ts +10 -0
- package/dist/editor/AudioLayerDetails.d.ts.map +1 -0
- package/dist/editor/AudioLayerDetailsContainer.d.ts +10 -0
- package/dist/editor/AudioLayerDetailsContainer.d.ts.map +1 -0
- package/dist/editor/AudioLayersNavContainer.d.ts +9 -0
- package/dist/editor/AudioLayersNavContainer.d.ts.map +1 -0
- package/dist/editor/AudioMiniMap.d.ts +11 -0
- package/dist/editor/AudioMiniMap.d.ts.map +1 -0
- package/dist/editor/AudioMiniMapContainer.d.ts +10 -0
- package/dist/editor/AudioMiniMapContainer.d.ts.map +1 -0
- package/dist/editor/AudioSourceDetails.d.ts +12 -0
- package/dist/editor/AudioSourceDetails.d.ts.map +1 -0
- package/dist/editor/AudioTimeline.d.ts +22 -0
- package/dist/editor/AudioTimeline.d.ts.map +1 -0
- package/dist/editor/AudioTimelineContainer.d.ts +18 -0
- package/dist/editor/AudioTimelineContainer.d.ts.map +1 -0
- package/dist/editor/AudioTimelineNavContainer.d.ts +14 -0
- package/dist/editor/AudioTimelineNavContainer.d.ts.map +1 -0
- package/dist/editor/CCLane.d.ts +23 -0
- package/dist/editor/CCLane.d.ts.map +1 -0
- package/dist/editor/CCLaneSelector.d.ts +14 -0
- package/dist/editor/CCLaneSelector.d.ts.map +1 -0
- package/dist/editor/PianoRoll.d.ts +14 -0
- package/dist/editor/PianoRoll.d.ts.map +1 -0
- package/dist/editor/Waveform.d.ts +9 -0
- package/dist/editor/Waveform.d.ts.map +1 -0
- package/dist/editor/editorDisplayModes.d.ts +37 -0
- package/dist/editor/editorDisplayModes.d.ts.map +1 -0
- package/dist/editor/editorIO.d.ts +11 -0
- package/dist/editor/editorIO.d.ts.map +1 -0
- package/dist/editor/hooks/index.d.ts +7 -0
- package/dist/editor/hooks/index.d.ts.map +1 -0
- package/dist/editor/hooks/useAutoSave.d.ts +13 -0
- package/dist/editor/hooks/useAutoSave.d.ts.map +1 -0
- package/dist/editor/hooks/usePlaybackEngine.d.ts +35 -0
- package/dist/editor/hooks/usePlaybackEngine.d.ts.map +1 -0
- package/dist/editor/hooks/useProjectCRUD.d.ts +45 -0
- package/dist/editor/hooks/useProjectCRUD.d.ts.map +1 -0
- package/dist/editor/hooks/useRecording.d.ts +46 -0
- package/dist/editor/hooks/useRecording.d.ts.map +1 -0
- package/dist/editor/nav/AudioLayersNav.d.ts +9 -0
- package/dist/editor/nav/AudioLayersNav.d.ts.map +1 -0
- package/dist/editor/nav/AudioProjectSectionNav.d.ts +12 -0
- package/dist/editor/nav/AudioProjectSectionNav.d.ts.map +1 -0
- package/dist/editor/nav/AudioTimelineNav.d.ts +14 -0
- package/dist/editor/nav/AudioTimelineNav.d.ts.map +1 -0
- package/dist/editor/nav/SaveLoadControls.d.ts +9 -0
- package/dist/editor/nav/SaveLoadControls.d.ts.map +1 -0
- package/dist/editor/panels/AdvancedEditingPanel.d.ts +30 -0
- package/dist/editor/panels/AdvancedEditingPanel.d.ts.map +1 -0
- package/dist/editor/panels/ArpeggiatorPanel.d.ts +12 -0
- package/dist/editor/panels/ArpeggiatorPanel.d.ts.map +1 -0
- package/dist/editor/panels/CCAutomationLaneEditor.d.ts +19 -0
- package/dist/editor/panels/CCAutomationLaneEditor.d.ts.map +1 -0
- package/dist/editor/panels/DisplayModeSelector.d.ts +9 -0
- package/dist/editor/panels/DisplayModeSelector.d.ts.map +1 -0
- package/dist/editor/panels/EditorPanels.d.ts +66 -0
- package/dist/editor/panels/EditorPanels.d.ts.map +1 -0
- package/dist/editor/panels/LFOPanel.d.ts +12 -0
- package/dist/editor/panels/LFOPanel.d.ts.map +1 -0
- package/dist/editor/panels/LayerTrack.d.ts +17 -0
- package/dist/editor/panels/LayerTrack.d.ts.map +1 -0
- package/dist/editor/panels/ProjectPanel.d.ts +23 -0
- package/dist/editor/panels/ProjectPanel.d.ts.map +1 -0
- package/dist/editor/panels/SectionPanel.d.ts +11 -0
- package/dist/editor/panels/SectionPanel.d.ts.map +1 -0
- package/dist/editor/panels/StepSequencerPanel.d.ts +8 -0
- package/dist/editor/panels/StepSequencerPanel.d.ts.map +1 -0
- package/dist/editor/useEditorRecording.d.ts +45 -0
- package/dist/editor/useEditorRecording.d.ts.map +1 -0
- package/dist/editor/useEditorTrack.d.ts +71 -0
- package/dist/editor/useEditorTrack.d.ts.map +1 -0
- package/dist/effects/NoteParticles.d.ts +2 -0
- package/dist/effects/NoteParticles.d.ts.map +1 -0
- package/dist/effects/NoteRiver.d.ts +15 -0
- package/dist/effects/NoteRiver.d.ts.map +1 -0
- package/dist/effects/noteThemeColors.d.ts +14 -0
- package/dist/effects/noteThemeColors.d.ts.map +1 -0
- package/dist/engine/audioContext.d.ts +12 -0
- package/dist/engine/audioContext.d.ts.map +1 -0
- package/dist/engine/audioKeyboard.d.ts +28 -0
- package/dist/engine/audioKeyboard.d.ts.map +1 -0
- package/dist/engine/audioLayerDetails.d.ts +13 -0
- package/dist/engine/audioLayerDetails.d.ts.map +1 -0
- package/dist/engine/audioPlaybackEngine.d.ts +186 -0
- package/dist/engine/audioPlaybackEngine.d.ts.map +1 -0
- package/dist/engine/audioProject.d.ts +10 -0
- package/dist/engine/audioProject.d.ts.map +1 -0
- package/dist/engine/audioSource.d.ts +38 -0
- package/dist/engine/audioSource.d.ts.map +1 -0
- package/dist/engine/audioTimeline.d.ts +54 -0
- package/dist/engine/audioTimeline.d.ts.map +1 -0
- package/dist/engine/audioUtils.d.ts +3 -0
- package/dist/engine/audioUtils.d.ts.map +1 -0
- package/dist/engine/generate-pitch-points.d.ts +2 -0
- package/dist/engine/generate-pitch-points.d.ts.map +1 -0
- package/dist/engine/instrumentPresets.d.ts +13 -0
- package/dist/engine/instrumentPresets.d.ts.map +1 -0
- package/dist/engine/pitch-worklet-processor.d.ts +11 -0
- package/dist/engine/pitch-worklet-processor.d.ts.map +1 -0
- package/dist/engine/pitch_client.d.ts +16 -0
- package/dist/engine/pitch_client.d.ts.map +1 -0
- package/dist/engine/recording.d.ts +31 -0
- package/dist/engine/recording.d.ts.map +1 -0
- package/dist/engine/simpleSynth.d.ts +46 -0
- package/dist/engine/simpleSynth.d.ts.map +1 -0
- package/dist/hooks/useCCAutomation.d.ts +36 -0
- package/dist/hooks/useCCAutomation.d.ts.map +1 -0
- package/dist/hooks/useStepSequencer.d.ts +48 -0
- package/dist/hooks/useStepSequencer.d.ts.map +1 -0
- package/dist/index.cjs +73 -0
- package/dist/index.d.ts +101 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.mjs +13179 -0
- package/dist/karaoke/AudioPitchAnalyzer.d.ts +25 -0
- package/dist/karaoke/AudioPitchAnalyzer.d.ts.map +1 -0
- package/dist/karaoke/BarFillEditor.d.ts +14 -0
- package/dist/karaoke/BarFillEditor.d.ts.map +1 -0
- package/dist/karaoke/KaraokeLyrics.d.ts +9 -0
- package/dist/karaoke/KaraokeLyrics.d.ts.map +1 -0
- package/dist/karaoke/KaraokeTimeline.d.ts +21 -0
- package/dist/karaoke/KaraokeTimeline.d.ts.map +1 -0
- package/dist/karaoke/karaokeTimelineTypes.d.ts +77 -0
- package/dist/karaoke/karaokeTimelineTypes.d.ts.map +1 -0
- package/dist/karaoke/rendering/fontCatalog.d.ts +30 -0
- package/dist/karaoke/rendering/fontCatalog.d.ts.map +1 -0
- package/dist/karaoke/rendering/glossyBarCaps.d.ts +57 -0
- package/dist/karaoke/rendering/glossyBarCaps.d.ts.map +1 -0
- package/dist/karaoke/rendering/glossyBarPatterns.d.ts +16 -0
- package/dist/karaoke/rendering/glossyBarPatterns.d.ts.map +1 -0
- package/dist/karaoke/rendering/glossyBarRenderer.d.ts +65 -0
- package/dist/karaoke/rendering/glossyBarRenderer.d.ts.map +1 -0
- package/dist/karaoke/rendering/karaokeAnimations.d.ts +25 -0
- package/dist/karaoke/rendering/karaokeAnimations.d.ts.map +1 -0
- package/dist/karaoke/rendering/karaokeDisplaySettings.d.ts +65 -0
- package/dist/karaoke/rendering/karaokeDisplaySettings.d.ts.map +1 -0
- package/dist/karaoke/rendering/karaokeLyrics.d.ts +54 -0
- package/dist/karaoke/rendering/karaokeLyrics.d.ts.map +1 -0
- package/dist/karaoke/rendering/karaokeNoteParsing.d.ts +20 -0
- package/dist/karaoke/rendering/karaokeNoteParsing.d.ts.map +1 -0
- package/dist/karaoke/rendering/karaokeSettings.d.ts +143 -0
- package/dist/karaoke/rendering/karaokeSettings.d.ts.map +1 -0
- package/dist/karaoke/rendering/karaokeTimeline.d.ts +8 -0
- package/dist/karaoke/rendering/karaokeTimeline.d.ts.map +1 -0
- package/dist/karaoke/rendering/karaokeTimelineRenderer.d.ts +45 -0
- package/dist/karaoke/rendering/karaokeTimelineRenderer.d.ts.map +1 -0
- package/dist/karaoke/rendering/karaokeTimelineTypes.d.ts +32 -0
- package/dist/karaoke/rendering/karaokeTimelineTypes.d.ts.map +1 -0
- package/dist/karaoke/rendering/padNotePlayer.d.ts +73 -0
- package/dist/karaoke/rendering/padNotePlayer.d.ts.map +1 -0
- package/dist/karaoke/rendering/textureCache.d.ts +32 -0
- package/dist/karaoke/rendering/textureCache.d.ts.map +1 -0
- package/dist/karaoke/rendering/textureCatalog.d.ts +27 -0
- package/dist/karaoke/rendering/textureCatalog.d.ts.map +1 -0
- package/dist/karaokeEditor/KaraokeEditorManager.d.ts +21 -0
- package/dist/karaokeEditor/KaraokeEditorManager.d.ts.map +1 -0
- package/dist/karaokeEditor/KaraokePhaserRenderer.d.ts +11 -0
- package/dist/karaokeEditor/KaraokePhaserRenderer.d.ts.map +1 -0
- package/dist/midi/midiSeedGenerator.d.ts +45 -0
- package/dist/midi/midiSeedGenerator.d.ts.map +1 -0
- package/dist/midi/oxygen25Profile.d.ts +42 -0
- package/dist/midi/oxygen25Profile.d.ts.map +1 -0
- package/dist/midi/useMidiLearn.d.ts +94 -0
- package/dist/midi/useMidiLearn.d.ts.map +1 -0
- package/dist/midi/useOxygen25.d.ts +90 -0
- package/dist/midi/useOxygen25.d.ts.map +1 -0
- package/dist/midi/useWebMidi.d.ts +60 -0
- package/dist/midi/useWebMidi.d.ts.map +1 -0
- package/dist/models/editor/audioTypes.d.ts +35 -0
- package/dist/models/editor/audioTypes.d.ts.map +1 -0
- package/dist/models/editor/fxTypes.d.ts +9 -0
- package/dist/models/editor/fxTypes.d.ts.map +1 -0
- package/dist/models/editor/midiTypes.d.ts +15 -0
- package/dist/models/editor/midiTypes.d.ts.map +1 -0
- package/dist/models/editor/timelineTypes.d.ts +11 -0
- package/dist/models/editor/timelineTypes.d.ts.map +1 -0
- package/dist/models/game/modelsGame.d.ts +12 -0
- package/dist/models/game/modelsGame.d.ts.map +1 -0
- package/dist/models/modelsAiAudio.d.ts +121 -0
- package/dist/models/modelsAiAudio.d.ts.map +1 -0
- package/dist/models/modelsAiVideo.d.ts +75 -0
- package/dist/models/modelsAiVideo.d.ts.map +1 -0
- package/dist/models/modelsAudio.d.ts +160 -0
- package/dist/models/modelsAudio.d.ts.map +1 -0
- package/dist/models/modelsDmx.d.ts +75 -0
- package/dist/models/modelsDmx.d.ts.map +1 -0
- package/dist/models/modelsEditor.d.ts +112 -0
- package/dist/models/modelsEditor.d.ts.map +1 -0
- package/dist/models/modelsKaraoke.d.ts +75 -0
- package/dist/models/modelsKaraoke.d.ts.map +1 -0
- package/dist/models/modelsMusicPlatform.d.ts +8 -0
- package/dist/models/modelsMusicPlatform.d.ts.map +1 -0
- package/dist/models/modelsPlatforms.d.ts +52 -0
- package/dist/models/modelsPlatforms.d.ts.map +1 -0
- package/dist/models/modelsPlaylistManager.d.ts +197 -0
- package/dist/models/modelsPlaylistManager.d.ts.map +1 -0
- package/dist/models/modelsPlaylists.d.ts +97 -0
- package/dist/models/modelsPlaylists.d.ts.map +1 -0
- package/dist/player/GenericPlayer.d.ts +56 -0
- package/dist/player/GenericPlayer.d.ts.map +1 -0
- package/dist/player/GenericPlayerControls.d.ts +17 -0
- package/dist/player/GenericPlayerControls.d.ts.map +1 -0
- package/dist/player/GenericPlayerStage.d.ts +20 -0
- package/dist/player/GenericPlayerStage.d.ts.map +1 -0
- package/dist/player/GenericPlayerStageVisualizer.d.ts +32 -0
- package/dist/player/GenericPlayerStageVisualizer.d.ts.map +1 -0
- package/dist/player/GenericPlayerTrackList.d.ts +10 -0
- package/dist/player/GenericPlayerTrackList.d.ts.map +1 -0
- package/dist/player/YouTubePlayer.d.ts +13 -0
- package/dist/player/YouTubePlayer.d.ts.map +1 -0
- package/dist/player/nowPlayingAdapter.d.ts +19 -0
- package/dist/player/nowPlayingAdapter.d.ts.map +1 -0
- package/dist/player/visualizer/ModeSwitcher.d.ts +12 -0
- package/dist/player/visualizer/ModeSwitcher.d.ts.map +1 -0
- package/dist/player/visualizer/StageVisualizer.d.ts +23 -0
- package/dist/player/visualizer/StageVisualizer.d.ts.map +1 -0
- package/dist/player/visualizer/VuOverlay.d.ts +6 -0
- package/dist/player/visualizer/VuOverlay.d.ts.map +1 -0
- package/dist/player/visualizer/modes/BarsMode.d.ts +2 -0
- package/dist/player/visualizer/modes/BarsMode.d.ts.map +1 -0
- package/dist/player/visualizer/modes/BlobFlowMode.d.ts +11 -0
- package/dist/player/visualizer/modes/BlobFlowMode.d.ts.map +1 -0
- package/dist/player/visualizer/modes/ColorRipplesMode.d.ts +12 -0
- package/dist/player/visualizer/modes/ColorRipplesMode.d.ts.map +1 -0
- package/dist/player/visualizer/modes/CoverMode.d.ts +9 -0
- package/dist/player/visualizer/modes/CoverMode.d.ts.map +1 -0
- package/dist/player/visualizer/modes/CozyFireplaceMode.d.ts +14 -0
- package/dist/player/visualizer/modes/CozyFireplaceMode.d.ts.map +1 -0
- package/dist/player/visualizer/modes/EqualizerCircleMode.d.ts +2 -0
- package/dist/player/visualizer/modes/EqualizerCircleMode.d.ts.map +1 -0
- package/dist/player/visualizer/modes/GridMode.d.ts +2 -0
- package/dist/player/visualizer/modes/GridMode.d.ts.map +1 -0
- package/dist/player/visualizer/modes/ImageTornadoMode.d.ts +18 -0
- package/dist/player/visualizer/modes/ImageTornadoMode.d.ts.map +1 -0
- package/dist/player/visualizer/modes/LavaLampMode.d.ts +13 -0
- package/dist/player/visualizer/modes/LavaLampMode.d.ts.map +1 -0
- package/dist/player/visualizer/modes/NeonTrianglesMode.d.ts +11 -0
- package/dist/player/visualizer/modes/NeonTrianglesMode.d.ts.map +1 -0
- package/dist/player/visualizer/modes/OrbitalsMode.d.ts +2 -0
- package/dist/player/visualizer/modes/OrbitalsMode.d.ts.map +1 -0
- package/dist/player/visualizer/modes/PaletteMode.d.ts +2 -0
- package/dist/player/visualizer/modes/PaletteMode.d.ts.map +1 -0
- package/dist/player/visualizer/modes/ParticlesMode.d.ts +13 -0
- package/dist/player/visualizer/modes/ParticlesMode.d.ts.map +1 -0
- package/dist/player/visualizer/modes/PlasmaBallMode.d.ts +3 -0
- package/dist/player/visualizer/modes/PlasmaBallMode.d.ts.map +1 -0
- package/dist/player/visualizer/modes/RadialMode.d.ts +2 -0
- package/dist/player/visualizer/modes/RadialMode.d.ts.map +1 -0
- package/dist/player/visualizer/modes/RaysMode.d.ts +4 -0
- package/dist/player/visualizer/modes/RaysMode.d.ts.map +1 -0
- package/dist/player/visualizer/modes/RiftMode.d.ts +3 -0
- package/dist/player/visualizer/modes/RiftMode.d.ts.map +1 -0
- package/dist/player/visualizer/modes/RingsMode.d.ts +2 -0
- package/dist/player/visualizer/modes/RingsMode.d.ts.map +1 -0
- package/dist/player/visualizer/modes/SpectrumMode.d.ts +2 -0
- package/dist/player/visualizer/modes/SpectrumMode.d.ts.map +1 -0
- package/dist/player/visualizer/modes/StarfieldMode.d.ts +13 -0
- package/dist/player/visualizer/modes/StarfieldMode.d.ts.map +1 -0
- package/dist/player/visualizer/modes/WaveformMode.d.ts +2 -0
- package/dist/player/visualizer/modes/WaveformMode.d.ts.map +1 -0
- package/dist/player/visualizer/types.d.ts +3 -0
- package/dist/player/visualizer/types.d.ts.map +1 -0
- package/dist/player/visualizer/useLocalStorageState.d.ts +2 -0
- package/dist/player/visualizer/useLocalStorageState.d.ts.map +1 -0
- package/dist/playlist/DynamicRuleEditor.d.ts +11 -0
- package/dist/playlist/DynamicRuleEditor.d.ts.map +1 -0
- package/dist/playlist/GenericPlaylist.d.ts +22 -0
- package/dist/playlist/GenericPlaylist.d.ts.map +1 -0
- package/dist/playlist/GenericPlaylistItem.d.ts +41 -0
- package/dist/playlist/GenericPlaylistItem.d.ts.map +1 -0
- package/dist/playlist/PlaylistBrowser.d.ts +24 -0
- package/dist/playlist/PlaylistBrowser.d.ts.map +1 -0
- package/dist/playlist/PlaylistDualPane.d.ts +17 -0
- package/dist/playlist/PlaylistDualPane.d.ts.map +1 -0
- package/dist/playlist/PlaylistGridView.d.ts +12 -0
- package/dist/playlist/PlaylistGridView.d.ts.map +1 -0
- package/dist/playlist/PlaylistList.d.ts +23 -0
- package/dist/playlist/PlaylistList.d.ts.map +1 -0
- package/dist/playlist/PlaylistOverview.d.ts +14 -0
- package/dist/playlist/PlaylistOverview.d.ts.map +1 -0
- package/dist/playlist/PlaylistSearchBar.d.ts +22 -0
- package/dist/playlist/PlaylistSearchBar.d.ts.map +1 -0
- package/dist/playlist/PlaylistSidebar.d.ts +25 -0
- package/dist/playlist/PlaylistSidebar.d.ts.map +1 -0
- package/dist/playlist/PlaylistTagEditor.d.ts +15 -0
- package/dist/playlist/PlaylistTagEditor.d.ts.map +1 -0
- package/dist/playlist/PlaylistTrackList.d.ts +26 -0
- package/dist/playlist/PlaylistTrackList.d.ts.map +1 -0
- package/dist/playlist/useLocalPlaylists.d.ts +17 -0
- package/dist/playlist/useLocalPlaylists.d.ts.map +1 -0
- package/dist/ui-audio.css +1 -0
- package/dist/utils/BaseStreamClient.d.ts +64 -0
- package/dist/utils/BaseStreamClient.d.ts.map +1 -0
- package/dist/utils/arpeggiator.d.ts +49 -0
- package/dist/utils/arpeggiator.d.ts.map +1 -0
- package/dist/utils/articulationEngine.d.ts +69 -0
- package/dist/utils/articulationEngine.d.ts.map +1 -0
- package/dist/utils/audioEditorUtils.d.ts +2 -0
- package/dist/utils/audioEditorUtils.d.ts.map +1 -0
- package/dist/utils/audioFxUtils.d.ts +6 -0
- package/dist/utils/audioFxUtils.d.ts.map +1 -0
- package/dist/utils/audioMidiUtils.d.ts +18 -0
- package/dist/utils/audioMidiUtils.d.ts.map +1 -0
- package/dist/utils/audioPitchAlgorithms.d.ts +3 -0
- package/dist/utils/audioPitchAlgorithms.d.ts.map +1 -0
- package/dist/utils/audioPitchAnalyzeFile.d.ts +26 -0
- package/dist/utils/audioPitchAnalyzeFile.d.ts.map +1 -0
- package/dist/utils/audioTimelineUtils.d.ts +5 -0
- package/dist/utils/audioTimelineUtils.d.ts.map +1 -0
- package/dist/utils/ccAutomation.d.ts +51 -0
- package/dist/utils/ccAutomation.d.ts.map +1 -0
- package/dist/utils/chordScale.d.ts +47 -0
- package/dist/utils/chordScale.d.ts.map +1 -0
- package/dist/utils/clipLauncher.d.ts +97 -0
- package/dist/utils/clipLauncher.d.ts.map +1 -0
- package/dist/utils/colorResolver.d.ts +12 -0
- package/dist/utils/colorResolver.d.ts.map +1 -0
- package/dist/utils/crepeStreaming.d.ts +21 -0
- package/dist/utils/crepeStreaming.d.ts.map +1 -0
- package/dist/utils/drawTool.d.ts +31 -0
- package/dist/utils/drawTool.d.ts.map +1 -0
- package/dist/utils/envelopeFollower.d.ts +46 -0
- package/dist/utils/envelopeFollower.d.ts.map +1 -0
- package/dist/utils/gameAudio.d.ts +237 -0
- package/dist/utils/gameAudio.d.ts.map +1 -0
- package/dist/utils/grooveTemplates.d.ts +69 -0
- package/dist/utils/grooveTemplates.d.ts.map +1 -0
- package/dist/utils/karaokeHelpers.d.ts +61 -0
- package/dist/utils/karaokeHelpers.d.ts.map +1 -0
- package/dist/utils/karaokeMetadata.d.ts +27 -0
- package/dist/utils/karaokeMetadata.d.ts.map +1 -0
- package/dist/utils/karaokeScoring.d.ts +111 -0
- package/dist/utils/karaokeScoring.d.ts.map +1 -0
- package/dist/utils/latencyEstimate.d.ts +8 -0
- package/dist/utils/latencyEstimate.d.ts.map +1 -0
- package/dist/utils/lfoEngine.d.ts +55 -0
- package/dist/utils/lfoEngine.d.ts.map +1 -0
- package/dist/utils/librosaStreaming.d.ts +19 -0
- package/dist/utils/librosaStreaming.d.ts.map +1 -0
- package/dist/utils/logger.d.ts +31 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/macroSystem.d.ts +97 -0
- package/dist/utils/macroSystem.d.ts.map +1 -0
- package/dist/utils/musicPlayerUtils.d.ts +7 -0
- package/dist/utils/musicPlayerUtils.d.ts.map +1 -0
- package/dist/utils/padKaraokeSession.d.ts +50 -0
- package/dist/utils/padKaraokeSession.d.ts.map +1 -0
- package/dist/utils/songDataHelpers.d.ts +59 -0
- package/dist/utils/songDataHelpers.d.ts.map +1 -0
- package/dist/utils/stepSequencer.d.ts +62 -0
- package/dist/utils/stepSequencer.d.ts.map +1 -0
- package/dist/utils/undoRedoUtils.d.ts +5 -0
- package/dist/utils/undoRedoUtils.d.ts.map +1 -0
- package/dist/utils/vocalEffectsEngine.d.ts +64 -0
- package/dist/utils/vocalEffectsEngine.d.ts.map +1 -0
- package/dist/utils/vocalPerformanceMetrics.d.ts +117 -0
- package/dist/utils/vocalPerformanceMetrics.d.ts.map +1 -0
- package/dist/workers/pitchWorker.d.ts +11 -0
- package/dist/workers/pitchWorker.d.ts.map +1 -0
- package/dist/workers/scoringWorker.d.ts +71 -0
- package/dist/workers/scoringWorker.d.ts.map +1 -0
- package/dist/workers/usePitchWorker.d.ts +7 -0
- package/dist/workers/usePitchWorker.d.ts.map +1 -0
- package/dist/workers/useScoringWorker.d.ts +7 -0
- package/dist/workers/useScoringWorker.d.ts.map +1 -0
- package/dist/workers/useWorker.d.ts +12 -0
- package/dist/workers/useWorker.d.ts.map +1 -0
- package/package.json +84 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { MidiCCEvent } from '../models/editor/midiTypes';
|
|
2
|
+
/** Snapshot of a single CC lane's events */
|
|
3
|
+
export interface CCLaneSnapshot {
|
|
4
|
+
layerId: number;
|
|
5
|
+
events: MidiCCEvent[];
|
|
6
|
+
}
|
|
7
|
+
/** Full undo/redo state */
|
|
8
|
+
export interface CCHistoryState {
|
|
9
|
+
past: CCLaneSnapshot[][];
|
|
10
|
+
present: CCLaneSnapshot[];
|
|
11
|
+
future: CCLaneSnapshot[][];
|
|
12
|
+
}
|
|
13
|
+
/** Create initial history state */
|
|
14
|
+
export declare function createCCHistory(initial: CCLaneSnapshot[]): CCHistoryState;
|
|
15
|
+
/** Push a new state (used after every edit) */
|
|
16
|
+
export declare function pushCCState(history: CCHistoryState, next: CCLaneSnapshot[]): CCHistoryState;
|
|
17
|
+
/** Undo — move present to future, pop past to present */
|
|
18
|
+
export declare function undoCC(history: CCHistoryState): CCHistoryState;
|
|
19
|
+
/** Redo — move present to past, pop future to present */
|
|
20
|
+
export declare function redoCC(history: CCHistoryState): CCHistoryState;
|
|
21
|
+
/** Can undo? */
|
|
22
|
+
export declare function canUndo(history: CCHistoryState): boolean;
|
|
23
|
+
/** Can redo? */
|
|
24
|
+
export declare function canRedo(history: CCHistoryState): boolean;
|
|
25
|
+
/** Time range for clipboard operations */
|
|
26
|
+
export interface CCTimeRange {
|
|
27
|
+
start: number;
|
|
28
|
+
end: number;
|
|
29
|
+
}
|
|
30
|
+
/** Copy events within a time range (returns deep clone) */
|
|
31
|
+
export declare function copyCCEvents(events: MidiCCEvent[], range: CCTimeRange): MidiCCEvent[];
|
|
32
|
+
/** Paste events at a target time offset. Generates new IDs. */
|
|
33
|
+
export declare function pasteCCEvents(existing: MidiCCEvent[], clipboard: MidiCCEvent[], targetTime: number): MidiCCEvent[];
|
|
34
|
+
/** Cut events within a time range — returns { remaining, cut } */
|
|
35
|
+
export declare function cutCCEvents(events: MidiCCEvent[], range: CCTimeRange): {
|
|
36
|
+
remaining: MidiCCEvent[];
|
|
37
|
+
cut: MidiCCEvent[];
|
|
38
|
+
};
|
|
39
|
+
/** Delete events within a time range */
|
|
40
|
+
export declare function deleteCCEventsInRange(events: MidiCCEvent[], range: CCTimeRange): MidiCCEvent[];
|
|
41
|
+
/** Select all events within a time range */
|
|
42
|
+
export declare function selectCCEventsInRange(events: MidiCCEvent[], range: CCTimeRange): number[];
|
|
43
|
+
/** Record a real-time CC value into an event list (during playback) */
|
|
44
|
+
export declare function recordCCEvent(events: MidiCCEvent[], cc: number, value: number, time: number): MidiCCEvent[];
|
|
45
|
+
/** Thin out recorded CC events to reduce density (keeps first/last + every Nth) */
|
|
46
|
+
export declare function thinCCEvents(events: MidiCCEvent[], keepEveryN?: number): MidiCCEvent[];
|
|
47
|
+
/** Serialize CC events to JSON string */
|
|
48
|
+
export declare function exportCCLane(events: MidiCCEvent[]): string;
|
|
49
|
+
/** Deserialize CC events from JSON string */
|
|
50
|
+
export declare function importCCLane(json: string): MidiCCEvent[];
|
|
51
|
+
//# sourceMappingURL=ccAutomation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ccAutomation.d.ts","sourceRoot":"","sources":["../../src/utils/ccAutomation.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,4CAA4C;AAC5C,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAED,2BAA2B;AAC3B,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,cAAc,EAAE,EAAE,CAAC;IACzB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,MAAM,EAAE,cAAc,EAAE,EAAE,CAAC;CAC5B;AAID,mCAAmC;AACnC,wBAAgB,eAAe,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,cAAc,CAEzE;AAED,+CAA+C;AAC/C,wBAAgB,WAAW,CACzB,OAAO,EAAE,cAAc,EACvB,IAAI,EAAE,cAAc,EAAE,GACrB,cAAc,CAMhB;AAED,yDAAyD;AACzD,wBAAgB,MAAM,CAAC,OAAO,EAAE,cAAc,GAAG,cAAc,CAQ9D;AAED,yDAAyD;AACzD,wBAAgB,MAAM,CAAC,OAAO,EAAE,cAAc,GAAG,cAAc,CAQ9D;AAED,gBAAgB;AAChB,wBAAgB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAExD;AAED,gBAAgB;AAChB,wBAAgB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAExD;AAID,0CAA0C;AAC1C,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,2DAA2D;AAC3D,wBAAgB,YAAY,CAC1B,MAAM,EAAE,WAAW,EAAE,EACrB,KAAK,EAAE,WAAW,GACjB,WAAW,EAAE,CAIf;AAED,+DAA+D;AAC/D,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,WAAW,EAAE,EACvB,SAAS,EAAE,WAAW,EAAE,EACxB,UAAU,EAAE,MAAM,GACjB,WAAW,EAAE,CAaf;AAED,kEAAkE;AAClE,wBAAgB,WAAW,CACzB,MAAM,EAAE,WAAW,EAAE,EACrB,KAAK,EAAE,WAAW,GACjB;IAAE,SAAS,EAAE,WAAW,EAAE,CAAC;IAAC,GAAG,EAAE,WAAW,EAAE,CAAA;CAAE,CAalD;AAED,wCAAwC;AACxC,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,WAAW,EAAE,EACrB,KAAK,EAAE,WAAW,GACjB,WAAW,EAAE,CAEf;AAED,4CAA4C;AAC5C,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,WAAW,EAAE,EACrB,KAAK,EAAE,WAAW,GACjB,MAAM,EAAE,CAIV;AAID,uEAAuE;AACvE,wBAAgB,aAAa,CAC3B,MAAM,EAAE,WAAW,EAAE,EACrB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,WAAW,EAAE,CAQf;AAED,mFAAmF;AACnF,wBAAgB,YAAY,CAC1B,MAAM,EAAE,WAAW,EAAE,EACrB,UAAU,GAAE,MAAU,GACrB,WAAW,EAAE,CASf;AAID,yCAAyC;AACzC,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAE1D;AAED,6CAA6C;AAC7C,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAiBxD"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chord & Scale recognition engine.
|
|
3
|
+
* Identifies chords from sets of notes and quantizes notes to scale.
|
|
4
|
+
*/
|
|
5
|
+
/** All pitch classes (chromatic) */
|
|
6
|
+
export declare const PITCH_CLASSES: readonly ["C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"];
|
|
7
|
+
export type PitchClass = (typeof PITCH_CLASSES)[number];
|
|
8
|
+
/** Scale interval patterns (semitones from root) */
|
|
9
|
+
interface ScaleDefinition {
|
|
10
|
+
name: string;
|
|
11
|
+
intervals: number[];
|
|
12
|
+
}
|
|
13
|
+
export declare const SCALES: ScaleDefinition[];
|
|
14
|
+
export interface ChordResult {
|
|
15
|
+
root: PitchClass;
|
|
16
|
+
quality: string;
|
|
17
|
+
symbol: string;
|
|
18
|
+
confidence: number;
|
|
19
|
+
inversion: number;
|
|
20
|
+
}
|
|
21
|
+
export interface ScaleMatch {
|
|
22
|
+
root: PitchClass;
|
|
23
|
+
name: string;
|
|
24
|
+
matchScore: number;
|
|
25
|
+
missingNotes: number[];
|
|
26
|
+
extraNotes: number[];
|
|
27
|
+
}
|
|
28
|
+
/** Convert MIDI note to pitch class index (0-11) */
|
|
29
|
+
export declare function midiToPitchClass(midi: number): number;
|
|
30
|
+
/** Get pitch class name from MIDI note */
|
|
31
|
+
export declare function midiToPitchClassName(midi: number): PitchClass;
|
|
32
|
+
/** Recognize chord from a set of MIDI notes */
|
|
33
|
+
export declare function recognizeChord(midiNotes: number[]): ChordResult[];
|
|
34
|
+
/** Get scale notes for a given root and scale */
|
|
35
|
+
export declare function getScaleNotes(root: PitchClass, scaleName: string): number[];
|
|
36
|
+
/** Quantize a MIDI note to the nearest note in the given scale */
|
|
37
|
+
export declare function quantizeToScale(midi: number, root: PitchClass, scaleName: string): number;
|
|
38
|
+
/** Quantize an array of MIDI notes to scale */
|
|
39
|
+
export declare function quantizeNotesToScale(midiNotes: number[], root: PitchClass, scaleName: string): number[];
|
|
40
|
+
/** Detect which scales best match a set of played notes */
|
|
41
|
+
export declare function detectScale(midiNotes: number[]): ScaleMatch[];
|
|
42
|
+
/** Get all available scale names */
|
|
43
|
+
export declare function getScaleNames(): string[];
|
|
44
|
+
/** Get interval name between two MIDI notes */
|
|
45
|
+
export declare function getIntervalName(semitones: number): string;
|
|
46
|
+
export {};
|
|
47
|
+
//# sourceMappingURL=chordScale.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chordScale.d.ts","sourceRoot":"","sources":["../../src/utils/chordScale.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,oCAAoC;AACpC,eAAO,MAAM,aAAa,4EAA6E,CAAC;AACxG,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAgCxD,oDAAoD;AACpD,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,eAAO,MAAM,MAAM,EAAE,eAAe,EAiBnC,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,oDAAoD;AACpD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,0CAA0C;AAC1C,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAE7D;AAQD,+CAA+C;AAC/C,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,CAmDjE;AAED,iDAAiD;AACjD,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAK3E;AAED,kEAAkE;AAClE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAmBzF;AAED,+CAA+C;AAC/C,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAEvG;AAED,2DAA2D;AAC3D,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,CAkC7D;AAED,oCAAoC;AACpC,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAExC;AAED,+CAA+C;AAC/C,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAQzD"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Clip / Scene Launcher — Ableton-style clip grid with follow actions.
|
|
3
|
+
* Manages scenes (rows) of clips (cells) with transport control.
|
|
4
|
+
*/
|
|
5
|
+
export type ClipState = 'stopped' | 'playing' | 'queued' | 'recording';
|
|
6
|
+
export type FollowAction = 'none' | 'stop' | 'play-again' | 'play-next' | 'play-prev' | 'play-first' | 'play-last' | 'play-random' | 'play-random-other';
|
|
7
|
+
export interface LauncherClip {
|
|
8
|
+
id: string;
|
|
9
|
+
trackId: string;
|
|
10
|
+
sceneIndex: number;
|
|
11
|
+
name: string;
|
|
12
|
+
/** Length in bars */
|
|
13
|
+
lengthBars: number;
|
|
14
|
+
/** Color for UI */
|
|
15
|
+
color: string;
|
|
16
|
+
state: ClipState;
|
|
17
|
+
/** Source audio/MIDI clip reference */
|
|
18
|
+
sourceClipId?: string;
|
|
19
|
+
/** Follow action after clip finishes */
|
|
20
|
+
followAction: FollowAction;
|
|
21
|
+
/** Follow action probability (0-1, for random follow) */
|
|
22
|
+
followActionChance: number;
|
|
23
|
+
/** Alternative follow action */
|
|
24
|
+
followActionB?: FollowAction;
|
|
25
|
+
/** Chance for action B (remainder goes to action A) */
|
|
26
|
+
followActionBChance: number;
|
|
27
|
+
/** Loops enabled */
|
|
28
|
+
loop: boolean;
|
|
29
|
+
/** Quantize launch to this many bars (0 = immediate) */
|
|
30
|
+
launchQuantize: number;
|
|
31
|
+
/** Playback count before follow action fires (0 = infinite) */
|
|
32
|
+
playCount: number;
|
|
33
|
+
/** Current play count */
|
|
34
|
+
currentPlayCount: number;
|
|
35
|
+
}
|
|
36
|
+
export interface LauncherTrack {
|
|
37
|
+
id: string;
|
|
38
|
+
name: string;
|
|
39
|
+
/** Whether track is armed for recording */
|
|
40
|
+
armed: boolean;
|
|
41
|
+
/** Volume 0-1 */
|
|
42
|
+
volume: number;
|
|
43
|
+
/** Muted */
|
|
44
|
+
muted: boolean;
|
|
45
|
+
/** Soloed */
|
|
46
|
+
soloed: boolean;
|
|
47
|
+
}
|
|
48
|
+
export interface LauncherScene {
|
|
49
|
+
index: number;
|
|
50
|
+
name: string;
|
|
51
|
+
/** Tempo override (null = use global) */
|
|
52
|
+
tempo?: number;
|
|
53
|
+
/** Time signature override */
|
|
54
|
+
timeSignature?: string;
|
|
55
|
+
}
|
|
56
|
+
export interface ClipLauncherState {
|
|
57
|
+
tracks: LauncherTrack[];
|
|
58
|
+
scenes: LauncherScene[];
|
|
59
|
+
clips: LauncherClip[];
|
|
60
|
+
/** Current global position in bars */
|
|
61
|
+
currentBar: number;
|
|
62
|
+
/** Global BPM */
|
|
63
|
+
bpm: number;
|
|
64
|
+
/** Is global transport playing */
|
|
65
|
+
isPlaying: boolean;
|
|
66
|
+
/** Global launch quantize (bars) */
|
|
67
|
+
globalLaunchQuantize: number;
|
|
68
|
+
}
|
|
69
|
+
/** Create empty launcher state */
|
|
70
|
+
export declare function createClipLauncher(trackCount?: number, sceneCount?: number): ClipLauncherState;
|
|
71
|
+
/** Create a new clip in the grid */
|
|
72
|
+
export declare function createClip(trackId: string, sceneIndex: number, name?: string, lengthBars?: number): LauncherClip;
|
|
73
|
+
/** Add clip to launcher state */
|
|
74
|
+
export declare function addClipToLauncher(state: ClipLauncherState, clip: LauncherClip): ClipLauncherState;
|
|
75
|
+
/** Remove clip from launcher */
|
|
76
|
+
export declare function removeClipFromLauncher(state: ClipLauncherState, clipId: string): ClipLauncherState;
|
|
77
|
+
/** Get clip at grid position */
|
|
78
|
+
export declare function getClipAt(state: ClipLauncherState, trackId: string, sceneIndex: number): LauncherClip | undefined;
|
|
79
|
+
/** Launch (play) a single clip, stopping others on the same track */
|
|
80
|
+
export declare function launchClip(state: ClipLauncherState, clipId: string): ClipLauncherState;
|
|
81
|
+
/** Stop a clip */
|
|
82
|
+
export declare function stopClip(state: ClipLauncherState, clipId: string): ClipLauncherState;
|
|
83
|
+
/** Launch an entire scene (all clips in that row) */
|
|
84
|
+
export declare function launchScene(state: ClipLauncherState, sceneIndex: number): ClipLauncherState;
|
|
85
|
+
/** Stop all clips */
|
|
86
|
+
export declare function stopAll(state: ClipLauncherState): ClipLauncherState;
|
|
87
|
+
/** Resolve follow action and return next clip to launch (if any) */
|
|
88
|
+
export declare function resolveFollowAction(state: ClipLauncherState, clipId: string): string | null;
|
|
89
|
+
/** Add a new scene */
|
|
90
|
+
export declare function addScene(state: ClipLauncherState, name?: string): ClipLauncherState;
|
|
91
|
+
/** Add a new track */
|
|
92
|
+
export declare function addTrack(state: ClipLauncherState, name?: string): ClipLauncherState;
|
|
93
|
+
/** Get all currently playing clips */
|
|
94
|
+
export declare function getPlayingClips(state: ClipLauncherState): LauncherClip[];
|
|
95
|
+
/** Duplicate a clip to a new position */
|
|
96
|
+
export declare function duplicateClip(state: ClipLauncherState, clipId: string, targetTrackId: string, targetScene: number): ClipLauncherState;
|
|
97
|
+
//# sourceMappingURL=clipLauncher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clipLauncher.d.ts","sourceRoot":"","sources":["../../src/utils/clipLauncher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare function resolveCssColor(color: string): string;
|
|
2
|
+
/** Parse a color string (hex or rgb(a)) into [r,g,b]. Falls back to [128,128,128]. */
|
|
3
|
+
export declare function parseColorToRgb(color: string): [number, number, number];
|
|
4
|
+
/** Resolve a CSS var(...) color and parse it to RGB. */
|
|
5
|
+
export declare function cssColorToRgb(color: string): [number, number, number];
|
|
6
|
+
declare const _default: {
|
|
7
|
+
resolveCssColor: typeof resolveCssColor;
|
|
8
|
+
parseColorToRgb: typeof parseColorToRgb;
|
|
9
|
+
cssColorToRgb: typeof cssColorToRgb;
|
|
10
|
+
};
|
|
11
|
+
export default _default;
|
|
12
|
+
//# sourceMappingURL=colorResolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colorResolver.d.ts","sourceRoot":"","sources":["../../src/utils/colorResolver.ts"],"names":[],"mappings":"AACA,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAarD;AAED,sFAAsF;AACtF,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAcvE;AAED,wDAAwD;AACxD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAGrE;;;;;;AAED,wBAAmE"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { BaseStreamClient, BaseStreamOptions } from './BaseStreamClient';
|
|
2
|
+
export type CrepeMessage = {
|
|
3
|
+
hz?: number;
|
|
4
|
+
confidence?: number;
|
|
5
|
+
error?: string;
|
|
6
|
+
[k: string]: unknown;
|
|
7
|
+
};
|
|
8
|
+
export type CrepeStreamOptions = BaseStreamOptions & {
|
|
9
|
+
onMessage?: (msg: CrepeMessage) => void;
|
|
10
|
+
/** Called when WS exhausts all reconnect attempts — caller can fall back to local pitch detection */
|
|
11
|
+
onFallback?: () => void;
|
|
12
|
+
};
|
|
13
|
+
export declare class CrepeStreamClient extends BaseStreamClient {
|
|
14
|
+
private readonly crepeOpts;
|
|
15
|
+
constructor(opts: CrepeStreamOptions);
|
|
16
|
+
protected get tag(): string;
|
|
17
|
+
protected handleWsMessage(data: string): void;
|
|
18
|
+
protected onMaxReconnect(): void;
|
|
19
|
+
}
|
|
20
|
+
export declare function startCrepeMicStream(opts: CrepeStreamOptions): Promise<CrepeStreamClient>;
|
|
21
|
+
//# sourceMappingURL=crepeStreaming.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crepeStreaming.d.ts","sourceRoot":"","sources":["../../src/utils/crepeStreaming.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvB,MAAM,MAAM,YAAY,GAAG;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAE3I,MAAM,MAAM,kBAAkB,GAAG,iBAAiB,GAAG;IACnD,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;IACxC,qGAAqG;IACrG,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB,CAAC;AAEF,qBAAa,iBAAkB,SAAQ,gBAAgB;IACrD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;gBAEnC,IAAI,EAAE,kBAAkB;IAKpC,SAAS,KAAK,GAAG,IAAI,MAAM,CAE1B;IAED,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK7C,SAAS,CAAC,cAAc,IAAI,IAAI;CAKjC;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,8BAIjE"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { MidiCCEvent } from '../models/editor/midiTypes';
|
|
2
|
+
export type DrawMode = 'pencil' | 'line' | 'curve' | 'step' | 'ramp';
|
|
3
|
+
export interface DrawPoint {
|
|
4
|
+
time: number;
|
|
5
|
+
value: number;
|
|
6
|
+
}
|
|
7
|
+
export interface DrawToolConfig {
|
|
8
|
+
mode: DrawMode;
|
|
9
|
+
cc: number;
|
|
10
|
+
resolution: number;
|
|
11
|
+
smoothing: number;
|
|
12
|
+
snap: boolean;
|
|
13
|
+
snapDivisions: number;
|
|
14
|
+
}
|
|
15
|
+
/** Generate CC events from pencil-drawn points */
|
|
16
|
+
export declare function pencilDraw(points: DrawPoint[], cc: number, resolution?: number): MidiCCEvent[];
|
|
17
|
+
/** Generate CC events forming a straight line between two points */
|
|
18
|
+
export declare function lineDraw(start: DrawPoint, end: DrawPoint, cc: number, steps?: number): MidiCCEvent[];
|
|
19
|
+
/** Generate CC events along a curve (quadratic bezier) */
|
|
20
|
+
export declare function curveDraw(start: DrawPoint, control: DrawPoint, end: DrawPoint, cc: number, steps?: number): MidiCCEvent[];
|
|
21
|
+
/** Generate CC events in step pattern */
|
|
22
|
+
export declare function stepDraw(start: DrawPoint, end: DrawPoint, cc: number, stepCount?: number): MidiCCEvent[];
|
|
23
|
+
/** Generate CC events along an exponential ramp */
|
|
24
|
+
export declare function rampDraw(start: DrawPoint, end: DrawPoint, cc: number, curvature?: number, steps?: number): MidiCCEvent[];
|
|
25
|
+
/** Smooth an array of CC events using moving average */
|
|
26
|
+
export declare function smoothEvents(events: MidiCCEvent[], windowSize?: number): MidiCCEvent[];
|
|
27
|
+
/** Snap CC event values to grid divisions */
|
|
28
|
+
export declare function snapValues(events: MidiCCEvent[], divisions?: number): MidiCCEvent[];
|
|
29
|
+
/** Apply draw tool with given config to generate events */
|
|
30
|
+
export declare function applyDrawTool(config: DrawToolConfig, points: DrawPoint[]): MidiCCEvent[];
|
|
31
|
+
//# sourceMappingURL=drawTool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drawTool.d.ts","sourceRoot":"","sources":["../../src/utils/drawTool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAErE,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;CACvB;AASD,kDAAkD;AAClD,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,GAAE,MAAa,GAAG,WAAW,EAAE,CAYpG;AAED,oEAAoE;AACpE,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,WAAW,EAAE,CAYxG;AAED,0DAA0D;AAC1D,wBAAgB,SAAS,CACvB,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,SAAS,EAClB,GAAG,EAAE,SAAS,EACd,EAAE,EAAE,MAAM,EACV,KAAK,GAAE,MAAW,GACjB,WAAW,EAAE,CASf;AAED,yCAAyC;AACzC,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,GAAE,MAAU,GAAG,WAAW,EAAE,CAa3G;AAED,mDAAmD;AACnD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,GAAE,MAAU,EAAE,KAAK,GAAE,MAAW,GAAG,WAAW,EAAE,CAa/H;AAED,wDAAwD;AACxD,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,UAAU,GAAE,MAAU,GAAG,WAAW,EAAE,CAUzF;AAED,6CAA6C;AAC7C,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,SAAS,GAAE,MAAW,GAAG,WAAW,EAAE,CAMvF;AAED,2DAA2D;AAC3D,wBAAgB,aAAa,CAC3B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,SAAS,EAAE,GAClB,WAAW,EAAE,CA6Cf"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Envelope Follower — tracks amplitude of audio signal and maps to CC values.
|
|
3
|
+
* Useful for dynamic control of effects based on audio level.
|
|
4
|
+
*/
|
|
5
|
+
export interface EnvelopeFollowerConfig {
|
|
6
|
+
/** Attack time in seconds (how fast the envelope rises) */
|
|
7
|
+
attackTime: number;
|
|
8
|
+
/** Release time in seconds (how fast the envelope falls) */
|
|
9
|
+
releaseTime: number;
|
|
10
|
+
/** Sensitivity multiplier (1 = normal) */
|
|
11
|
+
sensitivity: number;
|
|
12
|
+
/** Floor — minimum input level to trigger (0-1) */
|
|
13
|
+
floor: number;
|
|
14
|
+
/** Ceiling — maximum output value (0-127) */
|
|
15
|
+
ceiling: number;
|
|
16
|
+
/** Target CC number */
|
|
17
|
+
cc: number;
|
|
18
|
+
/** Invert the output */
|
|
19
|
+
invert: boolean;
|
|
20
|
+
/** Smoothing factor (0-1) */
|
|
21
|
+
smoothing: number;
|
|
22
|
+
}
|
|
23
|
+
export declare const DEFAULT_ENVELOPE_CONFIG: EnvelopeFollowerConfig;
|
|
24
|
+
/**
|
|
25
|
+
* Process a block of audio samples and return the envelope value (0-1).
|
|
26
|
+
* Uses a simple peak follower with attack/release.
|
|
27
|
+
*/
|
|
28
|
+
export declare function processEnvelopeBlock(samples: Float32Array, previousEnvelope: number, config: EnvelopeFollowerConfig, sampleRate?: number): number;
|
|
29
|
+
/**
|
|
30
|
+
* Convert an envelope value (0-1) to a CC value (0-127).
|
|
31
|
+
*/
|
|
32
|
+
export declare function envelopeToCC(envelope: number, config: EnvelopeFollowerConfig): number;
|
|
33
|
+
/**
|
|
34
|
+
* Analyze a full audio buffer and generate CC events at specified intervals.
|
|
35
|
+
*/
|
|
36
|
+
export declare function analyzeBufferToCC(audioBuffer: AudioBuffer, config: EnvelopeFollowerConfig, intervalMs?: number, channel?: number): Array<{
|
|
37
|
+
time: number;
|
|
38
|
+
value: number;
|
|
39
|
+
cc: number;
|
|
40
|
+
}>;
|
|
41
|
+
/**
|
|
42
|
+
* Create an AudioWorklet-compatible envelope follower processor code.
|
|
43
|
+
* Returns the processor source as a string for use with AudioWorkletNode.
|
|
44
|
+
*/
|
|
45
|
+
export declare function getEnvelopeFollowerWorkletCode(): string;
|
|
46
|
+
//# sourceMappingURL=envelopeFollower.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"envelopeFollower.d.ts","sourceRoot":"","sources":["../../src/utils/envelopeFollower.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,sBAAsB;IACrC,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,WAAW,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,uBAAuB;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,wBAAwB;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,uBAAuB,EAAE,sBASrC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,YAAY,EACrB,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,sBAAsB,EAC9B,UAAU,GAAE,MAAc,GACzB,MAAM,CAaR;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,sBAAsB,GAC7B,MAAM,CASR;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,sBAAsB,EAC9B,UAAU,GAAE,MAAW,EACvB,OAAO,GAAE,MAAU,GAClB,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,CA0BpD;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,IAAI,MAAM,CA2BvD"}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Game Audio Manager — lightweight Web Audio API wrapper for
|
|
3
|
+
* loading and playing sound effects in mini-games.
|
|
4
|
+
*
|
|
5
|
+
* Designed to be shared across all games (underpaid, bunny-arena, etc.).
|
|
6
|
+
* Supports:
|
|
7
|
+
* - SFX pool with one-shot playback
|
|
8
|
+
* - Looping background music with crossfade
|
|
9
|
+
* - Master / SFX / Music volume (persisted to localStorage)
|
|
10
|
+
* - Spatial panning (left/right)
|
|
11
|
+
* - Procedural sounds (oscillator-based) for games without audio assets
|
|
12
|
+
*
|
|
13
|
+
* Usage:
|
|
14
|
+
* const audio = GameAudio.getInstance()
|
|
15
|
+
* audio.loadSfx('pickup', '/sounds/pickup.mp3')
|
|
16
|
+
* audio.playSfx('pickup')
|
|
17
|
+
* audio.playTone({ frequency: 440, duration: 0.1, type: 'sine' })
|
|
18
|
+
*/
|
|
19
|
+
export interface VolumeSettings {
|
|
20
|
+
master: number;
|
|
21
|
+
sfx: number;
|
|
22
|
+
music: number;
|
|
23
|
+
}
|
|
24
|
+
export interface ToneOptions {
|
|
25
|
+
/** Frequency in Hz */
|
|
26
|
+
frequency: number;
|
|
27
|
+
/** Duration in seconds */
|
|
28
|
+
duration: number;
|
|
29
|
+
/** Oscillator type */
|
|
30
|
+
type?: OscillatorType;
|
|
31
|
+
/** Volume 0..1 (relative to SFX volume) */
|
|
32
|
+
volume?: number;
|
|
33
|
+
/** Pan -1 (left) to 1 (right) */
|
|
34
|
+
pan?: number;
|
|
35
|
+
/** Frequency sweep target (portamento) */
|
|
36
|
+
frequencyEnd?: number;
|
|
37
|
+
/** Attack time in seconds */
|
|
38
|
+
attack?: number;
|
|
39
|
+
/** Decay time in seconds */
|
|
40
|
+
decay?: number;
|
|
41
|
+
}
|
|
42
|
+
export interface ProceduralSfxPreset {
|
|
43
|
+
tones: ToneOptions[];
|
|
44
|
+
}
|
|
45
|
+
export declare class GameAudio {
|
|
46
|
+
private ctx;
|
|
47
|
+
private masterGain;
|
|
48
|
+
private sfxGain;
|
|
49
|
+
private musicGain;
|
|
50
|
+
private volume;
|
|
51
|
+
private sfxBuffers;
|
|
52
|
+
private musicSource;
|
|
53
|
+
private musicId;
|
|
54
|
+
private constructor();
|
|
55
|
+
static getInstance(): GameAudio;
|
|
56
|
+
private ensureContext;
|
|
57
|
+
getVolume(): VolumeSettings;
|
|
58
|
+
setVolume(partial: Partial<VolumeSettings>): void;
|
|
59
|
+
private applyVolume;
|
|
60
|
+
private loadVolume;
|
|
61
|
+
private saveVolume;
|
|
62
|
+
loadSfx(id: string, url: string): Promise<void>;
|
|
63
|
+
/** Play a loaded SFX. Returns immediately (fire-and-forget). */
|
|
64
|
+
playSfx(id: string, options?: {
|
|
65
|
+
pan?: number;
|
|
66
|
+
volume?: number;
|
|
67
|
+
playbackRate?: number;
|
|
68
|
+
}): void;
|
|
69
|
+
/** Play a procedural tone (oscillator-based SFX). */
|
|
70
|
+
playTone(opts: ToneOptions): void;
|
|
71
|
+
/** Play a preset of multiple tones (chord, arpeggio, noise burst). */
|
|
72
|
+
playPreset(preset: ProceduralSfxPreset): void;
|
|
73
|
+
loadMusic(id: string, url: string): Promise<void>;
|
|
74
|
+
playMusic(id: string, loop?: boolean): void;
|
|
75
|
+
stopMusic(): void;
|
|
76
|
+
dispose(): void;
|
|
77
|
+
}
|
|
78
|
+
export declare const SFX_PRESETS: {
|
|
79
|
+
pickup: {
|
|
80
|
+
tones: {
|
|
81
|
+
frequency: number;
|
|
82
|
+
frequencyEnd: number;
|
|
83
|
+
duration: number;
|
|
84
|
+
type: OscillatorType;
|
|
85
|
+
volume: number;
|
|
86
|
+
}[];
|
|
87
|
+
};
|
|
88
|
+
drop: {
|
|
89
|
+
tones: {
|
|
90
|
+
frequency: number;
|
|
91
|
+
frequencyEnd: number;
|
|
92
|
+
duration: number;
|
|
93
|
+
type: OscillatorType;
|
|
94
|
+
volume: number;
|
|
95
|
+
}[];
|
|
96
|
+
};
|
|
97
|
+
chop: {
|
|
98
|
+
tones: {
|
|
99
|
+
frequency: number;
|
|
100
|
+
duration: number;
|
|
101
|
+
type: OscillatorType;
|
|
102
|
+
volume: number;
|
|
103
|
+
}[];
|
|
104
|
+
};
|
|
105
|
+
serve: {
|
|
106
|
+
tones: {
|
|
107
|
+
frequency: number;
|
|
108
|
+
duration: number;
|
|
109
|
+
type: OscillatorType;
|
|
110
|
+
volume: number;
|
|
111
|
+
}[];
|
|
112
|
+
};
|
|
113
|
+
combo: {
|
|
114
|
+
tones: {
|
|
115
|
+
frequency: number;
|
|
116
|
+
frequencyEnd: number;
|
|
117
|
+
duration: number;
|
|
118
|
+
type: OscillatorType;
|
|
119
|
+
volume: number;
|
|
120
|
+
}[];
|
|
121
|
+
};
|
|
122
|
+
error: {
|
|
123
|
+
tones: {
|
|
124
|
+
frequency: number;
|
|
125
|
+
frequencyEnd: number;
|
|
126
|
+
duration: number;
|
|
127
|
+
type: OscillatorType;
|
|
128
|
+
volume: number;
|
|
129
|
+
}[];
|
|
130
|
+
};
|
|
131
|
+
explosion: {
|
|
132
|
+
tones: {
|
|
133
|
+
frequency: number;
|
|
134
|
+
frequencyEnd: number;
|
|
135
|
+
duration: number;
|
|
136
|
+
type: OscillatorType;
|
|
137
|
+
volume: number;
|
|
138
|
+
}[];
|
|
139
|
+
};
|
|
140
|
+
cannon: {
|
|
141
|
+
tones: {
|
|
142
|
+
frequency: number;
|
|
143
|
+
frequencyEnd: number;
|
|
144
|
+
duration: number;
|
|
145
|
+
type: OscillatorType;
|
|
146
|
+
volume: number;
|
|
147
|
+
}[];
|
|
148
|
+
};
|
|
149
|
+
hit: {
|
|
150
|
+
tones: {
|
|
151
|
+
frequency: number;
|
|
152
|
+
frequencyEnd: number;
|
|
153
|
+
duration: number;
|
|
154
|
+
type: OscillatorType;
|
|
155
|
+
volume: number;
|
|
156
|
+
}[];
|
|
157
|
+
};
|
|
158
|
+
alarm: {
|
|
159
|
+
tones: {
|
|
160
|
+
frequency: number;
|
|
161
|
+
frequencyEnd: number;
|
|
162
|
+
duration: number;
|
|
163
|
+
type: OscillatorType;
|
|
164
|
+
volume: number;
|
|
165
|
+
attack: number;
|
|
166
|
+
decay: number;
|
|
167
|
+
}[];
|
|
168
|
+
};
|
|
169
|
+
coin: {
|
|
170
|
+
tones: {
|
|
171
|
+
frequency: number;
|
|
172
|
+
duration: number;
|
|
173
|
+
type: OscillatorType;
|
|
174
|
+
volume: number;
|
|
175
|
+
}[];
|
|
176
|
+
};
|
|
177
|
+
star: {
|
|
178
|
+
tones: {
|
|
179
|
+
frequency: number;
|
|
180
|
+
duration: number;
|
|
181
|
+
type: OscillatorType;
|
|
182
|
+
volume: number;
|
|
183
|
+
}[];
|
|
184
|
+
};
|
|
185
|
+
dash: {
|
|
186
|
+
tones: {
|
|
187
|
+
frequency: number;
|
|
188
|
+
frequencyEnd: number;
|
|
189
|
+
duration: number;
|
|
190
|
+
type: OscillatorType;
|
|
191
|
+
volume: number;
|
|
192
|
+
}[];
|
|
193
|
+
};
|
|
194
|
+
gameOver: {
|
|
195
|
+
tones: {
|
|
196
|
+
frequency: number;
|
|
197
|
+
frequencyEnd: number;
|
|
198
|
+
duration: number;
|
|
199
|
+
type: OscillatorType;
|
|
200
|
+
volume: number;
|
|
201
|
+
}[];
|
|
202
|
+
};
|
|
203
|
+
victory: {
|
|
204
|
+
tones: {
|
|
205
|
+
frequency: number;
|
|
206
|
+
duration: number;
|
|
207
|
+
type: OscillatorType;
|
|
208
|
+
volume: number;
|
|
209
|
+
}[];
|
|
210
|
+
};
|
|
211
|
+
tick: {
|
|
212
|
+
tones: {
|
|
213
|
+
frequency: number;
|
|
214
|
+
duration: number;
|
|
215
|
+
type: OscillatorType;
|
|
216
|
+
volume: number;
|
|
217
|
+
}[];
|
|
218
|
+
};
|
|
219
|
+
countdownTick: {
|
|
220
|
+
tones: {
|
|
221
|
+
frequency: number;
|
|
222
|
+
duration: number;
|
|
223
|
+
type: OscillatorType;
|
|
224
|
+
volume: number;
|
|
225
|
+
}[];
|
|
226
|
+
};
|
|
227
|
+
countdownFinal: {
|
|
228
|
+
tones: {
|
|
229
|
+
frequency: number;
|
|
230
|
+
duration: number;
|
|
231
|
+
type: OscillatorType;
|
|
232
|
+
volume: number;
|
|
233
|
+
}[];
|
|
234
|
+
};
|
|
235
|
+
};
|
|
236
|
+
export type SfxPresetId = keyof typeof SFX_PRESETS;
|
|
237
|
+
//# sourceMappingURL=gameAudio.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gameAudio.d.ts","sourceRoot":"","sources":["../../src/utils/gameAudio.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,sBAAsB;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,sBAAsB;IACtB,IAAI,CAAC,EAAE,cAAc,CAAA;IACrB,2CAA2C;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iCAAiC;IACjC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,0CAA0C;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,6BAA6B;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,WAAW,EAAE,CAAA;CACrB;AASD,qBAAa,SAAS;IACpB,OAAO,CAAC,GAAG,CAA4B;IACvC,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,WAAW,CAAqC;IACxD,OAAO,CAAC,OAAO,CAAsB;IAErC,OAAO;IAIP,MAAM,CAAC,WAAW,IAAI,SAAS;IAO/B,OAAO,CAAC,aAAa;IAoBrB,SAAS,IAAI,cAAc;IAE3B,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI;IAMjD,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,UAAU;IAQZ,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASrD,gEAAgE;IAChE,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAiC7F,qDAAqD;IACrD,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAqCjC,sEAAsE;IACtE,UAAU,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI;IAMvC,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKvD,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,UAAO,GAAG,IAAI;IAgBxC,SAAS,IAAI,IAAI;IAWjB,OAAO,IAAI,IAAI;CAWhB;AAKD,eAAO,MAAM,WAAW;;;;;;kBAGmD,cAAc;;;;;;;;;kBAKf,cAAc;;;;;;;;kBAK9B,cAAc;;;;;;;;kBAMhB,cAAc;;;;;;;;;kBAOM,cAAc;;;;;;;;;kBAMZ,cAAc;;;;;;;;;kBAKf,cAAc;;;;;;;;;kBAMb,cAAc;;;;;;;;;kBAMf,cAAc;;;;;;;;;kBAKf,cAAc;;;;;;;;;;kBAMjC,cAAc;;;;;;;;kBAMhB,cAAc;;;;;;;;;kBAQS,cAAc;;;;;;;;;kBAKlB,cAAc;;;;;;;;kBAMhC,cAAc;;;;;;;;kBAQb,cAAc;;;;;;;;kBAKf,cAAc;;;;;;;;kBAKd,cAAc;;;;CAGvB,CAAA;AAE/C,MAAM,MAAM,WAAW,GAAG,MAAM,OAAO,WAAW,CAAA"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Groove Templates engine — groove quantize, humanize, and swing.
|
|
3
|
+
* Applies rhythmic feel transformations to MIDI/audio events.
|
|
4
|
+
*/
|
|
5
|
+
export interface TimedEvent {
|
|
6
|
+
/** Start time in beats */
|
|
7
|
+
time: number;
|
|
8
|
+
/** Duration in beats */
|
|
9
|
+
duration: number;
|
|
10
|
+
/** Velocity 0-127 */
|
|
11
|
+
velocity: number;
|
|
12
|
+
/** Optional pitch (MIDI note) */
|
|
13
|
+
pitch?: number;
|
|
14
|
+
}
|
|
15
|
+
export interface GrooveTemplate {
|
|
16
|
+
id: string;
|
|
17
|
+
name: string;
|
|
18
|
+
/** Per-step timing offsets (fraction of step, -0.5 to 0.5) */
|
|
19
|
+
timingOffsets: number[];
|
|
20
|
+
/** Per-step velocity scales (0-2, 1 = no change) */
|
|
21
|
+
velocityScales: number[];
|
|
22
|
+
/** Per-step duration scales (0-2, 1 = no change) */
|
|
23
|
+
durationScales: number[];
|
|
24
|
+
/** Steps per bar (typically 8, 16, or 32) */
|
|
25
|
+
stepsPerBar: number;
|
|
26
|
+
}
|
|
27
|
+
export interface HumanizeConfig {
|
|
28
|
+
/** Max random timing offset in beats (0 = none) */
|
|
29
|
+
timingAmount: number;
|
|
30
|
+
/** Max random velocity offset (0-127 range, 0 = none) */
|
|
31
|
+
velocityAmount: number;
|
|
32
|
+
/** Max random duration offset in beats (0 = none) */
|
|
33
|
+
durationAmount: number;
|
|
34
|
+
/** Seed for reproducible randomization (null = truly random) */
|
|
35
|
+
seed?: number;
|
|
36
|
+
}
|
|
37
|
+
export interface SwingConfig {
|
|
38
|
+
/** Swing amount 0-1 (0 = straight, 0.67 ≈ triplet feel) */
|
|
39
|
+
amount: number;
|
|
40
|
+
/** Grid resolution in beats for swing application */
|
|
41
|
+
grid: number;
|
|
42
|
+
}
|
|
43
|
+
export interface GrooveApplyConfig {
|
|
44
|
+
/** Groove template to apply (null = none) */
|
|
45
|
+
template?: GrooveTemplate;
|
|
46
|
+
/** Groove strength 0-1 */
|
|
47
|
+
grooveStrength: number;
|
|
48
|
+
/** Humanize settings */
|
|
49
|
+
humanize?: HumanizeConfig;
|
|
50
|
+
/** Swing settings */
|
|
51
|
+
swing?: SwingConfig;
|
|
52
|
+
}
|
|
53
|
+
export declare const GROOVE_TEMPLATES: GrooveTemplate[];
|
|
54
|
+
/** Apply swing to events */
|
|
55
|
+
export declare function applySwing(events: TimedEvent[], config: SwingConfig): TimedEvent[];
|
|
56
|
+
/** Apply humanize (random offsets) to events */
|
|
57
|
+
export declare function applyHumanize(events: TimedEvent[], config: HumanizeConfig): TimedEvent[];
|
|
58
|
+
/** Apply groove template to events */
|
|
59
|
+
export declare function applyGrooveTemplate(events: TimedEvent[], template: GrooveTemplate, strength?: number): TimedEvent[];
|
|
60
|
+
/** Apply full groove configuration (template + humanize + swing) */
|
|
61
|
+
export declare function applyGroove(events: TimedEvent[], config: GrooveApplyConfig): TimedEvent[];
|
|
62
|
+
/** Get template by ID */
|
|
63
|
+
export declare function getGrooveTemplate(id: string): GrooveTemplate | undefined;
|
|
64
|
+
/** List all template names */
|
|
65
|
+
export declare function getGrooveTemplateNames(): Array<{
|
|
66
|
+
id: string;
|
|
67
|
+
name: string;
|
|
68
|
+
}>;
|
|
69
|
+
//# sourceMappingURL=grooveTemplates.d.ts.map
|