playlist-data-engine 1.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/LICENSE +21 -0
- package/README.md +352 -0
- package/dist/__vite-browser-external-DYxpcVy9.js +4 -0
- package/dist/constants/DefaultClasses.d.ts +46 -0
- package/dist/constants/DefaultClasses.d.ts.map +1 -0
- package/dist/constants/DefaultEnchantments.d.ts +337 -0
- package/dist/constants/DefaultEnchantments.d.ts.map +1 -0
- package/dist/constants/DefaultEnemies.d.ts +83 -0
- package/dist/constants/DefaultEnemies.d.ts.map +1 -0
- package/dist/constants/DefaultEquipment.d.ts +23 -0
- package/dist/constants/DefaultEquipment.d.ts.map +1 -0
- package/dist/constants/DefaultFeatures.d.ts +22 -0
- package/dist/constants/DefaultFeatures.d.ts.map +1 -0
- package/dist/constants/DefaultRaces.d.ts +102 -0
- package/dist/constants/DefaultRaces.d.ts.map +1 -0
- package/dist/constants/DefaultSkills.d.ts +26 -0
- package/dist/constants/DefaultSkills.d.ts.map +1 -0
- package/dist/constants/DefaultSpells.d.ts +41 -0
- package/dist/constants/DefaultSpells.d.ts.map +1 -0
- package/dist/constants/EncounterBalance.d.ts +208 -0
- package/dist/constants/EncounterBalance.d.ts.map +1 -0
- package/dist/constants/EnemyEquipment.d.ts +71 -0
- package/dist/constants/EnemyEquipment.d.ts.map +1 -0
- package/dist/constants/EnemyRarity.d.ts +79 -0
- package/dist/constants/EnemyRarity.d.ts.map +1 -0
- package/dist/constants/EnemyTemplates/Construct.d.ts +63 -0
- package/dist/constants/EnemyTemplates/Construct.d.ts.map +1 -0
- package/dist/constants/EnemyTemplates/Dragon.d.ts +68 -0
- package/dist/constants/EnemyTemplates/Dragon.d.ts.map +1 -0
- package/dist/constants/EnemyTemplates/Elemental.d.ts +64 -0
- package/dist/constants/EnemyTemplates/Elemental.d.ts.map +1 -0
- package/dist/constants/EnemyTemplates/Fiend.d.ts +62 -0
- package/dist/constants/EnemyTemplates/Fiend.d.ts.map +1 -0
- package/dist/constants/EnemyTemplates/Monstrosity.d.ts +63 -0
- package/dist/constants/EnemyTemplates/Monstrosity.d.ts.map +1 -0
- package/dist/constants/EnemyTemplates/Undead.d.ts +61 -0
- package/dist/constants/EnemyTemplates/Undead.d.ts.map +1 -0
- package/dist/constants/ItemTemplates.d.ts +40 -0
- package/dist/constants/ItemTemplates.d.ts.map +1 -0
- package/dist/constants/MagicItems.d.ts +30 -0
- package/dist/constants/MagicItems.d.ts.map +1 -0
- package/dist/constants/SpellSlots.d.ts +30 -0
- package/dist/constants/SpellSlots.d.ts.map +1 -0
- package/dist/constants/StatScaling.d.ts +113 -0
- package/dist/constants/StatScaling.d.ts.map +1 -0
- package/dist/core/analysis/AudioAnalyzer.d.ts +599 -0
- package/dist/core/analysis/AudioAnalyzer.d.ts.map +1 -0
- package/dist/core/analysis/ColorExtractor.d.ts +64 -0
- package/dist/core/analysis/ColorExtractor.d.ts.map +1 -0
- package/dist/core/analysis/EssentiaPitchDetector.d.ts +282 -0
- package/dist/core/analysis/EssentiaPitchDetector.d.ts.map +1 -0
- package/dist/core/analysis/LevelSerializer.d.ts +265 -0
- package/dist/core/analysis/LevelSerializer.d.ts.map +1 -0
- package/dist/core/analysis/MelodyContourAnalyzer.d.ts +283 -0
- package/dist/core/analysis/MelodyContourAnalyzer.d.ts.map +1 -0
- package/dist/core/analysis/MultiBandAnalyzer.d.ts +214 -0
- package/dist/core/analysis/MultiBandAnalyzer.d.ts.map +1 -0
- package/dist/core/analysis/MusicClassifier.d.ts +524 -0
- package/dist/core/analysis/MusicClassifier.d.ts.map +1 -0
- package/dist/core/analysis/PitchAnalyzer.d.ts +266 -0
- package/dist/core/analysis/PitchAnalyzer.d.ts.map +1 -0
- package/dist/core/analysis/PitchDetector.d.ts +251 -0
- package/dist/core/analysis/PitchDetector.d.ts.map +1 -0
- package/dist/core/analysis/SpectrumScanner.d.ts +52 -0
- package/dist/core/analysis/SpectrumScanner.d.ts.map +1 -0
- package/dist/core/analysis/beat/BeatInterpolator.d.ts +477 -0
- package/dist/core/analysis/beat/BeatInterpolator.d.ts.map +1 -0
- package/dist/core/analysis/beat/BeatMapGenerator.d.ts +170 -0
- package/dist/core/analysis/beat/BeatMapGenerator.d.ts.map +1 -0
- package/dist/core/analysis/beat/BeatStream.d.ts +316 -0
- package/dist/core/analysis/beat/BeatStream.d.ts.map +1 -0
- package/dist/core/analysis/beat/BeatSubdivider.d.ts +205 -0
- package/dist/core/analysis/beat/BeatSubdivider.d.ts.map +1 -0
- package/dist/core/analysis/beat/BeatTracker.d.ts +137 -0
- package/dist/core/analysis/beat/BeatTracker.d.ts.map +1 -0
- package/dist/core/analysis/beat/CompositeStreamGenerator.d.ts +180 -0
- package/dist/core/analysis/beat/CompositeStreamGenerator.d.ts.map +1 -0
- package/dist/core/analysis/beat/DensityAnalyzer.d.ts +246 -0
- package/dist/core/analysis/beat/DensityAnalyzer.d.ts.map +1 -0
- package/dist/core/analysis/beat/DifficultyVariantGenerator.d.ts +1082 -0
- package/dist/core/analysis/beat/DifficultyVariantGenerator.d.ts.map +1 -0
- package/dist/core/analysis/beat/GrooveAnalyzer.d.ts +192 -0
- package/dist/core/analysis/beat/GrooveAnalyzer.d.ts.map +1 -0
- package/dist/core/analysis/beat/OnsetStrengthEnvelope.d.ts +133 -0
- package/dist/core/analysis/beat/OnsetStrengthEnvelope.d.ts.map +1 -0
- package/dist/core/analysis/beat/PhraseAnalyzer.d.ts +230 -0
- package/dist/core/analysis/beat/PhraseAnalyzer.d.ts.map +1 -0
- package/dist/core/analysis/beat/RhythmQuantizer.d.ts +399 -0
- package/dist/core/analysis/beat/RhythmQuantizer.d.ts.map +1 -0
- package/dist/core/analysis/beat/RhythmicBalancer.d.ts +262 -0
- package/dist/core/analysis/beat/RhythmicBalancer.d.ts.map +1 -0
- package/dist/core/analysis/beat/StreamScorer.d.ts +275 -0
- package/dist/core/analysis/beat/StreamScorer.d.ts.map +1 -0
- package/dist/core/analysis/beat/TempoAwareQuantizer.d.ts +256 -0
- package/dist/core/analysis/beat/TempoAwareQuantizer.d.ts.map +1 -0
- package/dist/core/analysis/beat/TempoDetector.d.ts +220 -0
- package/dist/core/analysis/beat/TempoDetector.d.ts.map +1 -0
- package/dist/core/analysis/beat/TransientDetector.d.ts +303 -0
- package/dist/core/analysis/beat/TransientDetector.d.ts.map +1 -0
- package/dist/core/analysis/beat/beatKeyHelpers.d.ts +180 -0
- package/dist/core/analysis/beat/beatKeyHelpers.d.ts.map +1 -0
- package/dist/core/analysis/beat/index.d.ts +41 -0
- package/dist/core/analysis/beat/index.d.ts.map +1 -0
- package/dist/core/analysis/beat/utils/audioUtils.d.ts +204 -0
- package/dist/core/analysis/beat/utils/audioUtils.d.ts.map +1 -0
- package/dist/core/analysis/beat/utils/beatInterpolationDebug.d.ts +404 -0
- package/dist/core/analysis/beat/utils/beatInterpolationDebug.d.ts.map +1 -0
- package/dist/core/analysis/beat/utils/subdivideBeatMap.d.ts +61 -0
- package/dist/core/analysis/beat/utils/subdivideBeatMap.d.ts.map +1 -0
- package/dist/core/analysis/beat/utils/unifyBeatMap.d.ts +33 -0
- package/dist/core/analysis/beat/utils/unifyBeatMap.d.ts.map +1 -0
- package/dist/core/analysis/index.d.ts +18 -0
- package/dist/core/analysis/index.d.ts.map +1 -0
- package/dist/core/combat/AI/AICombatRunner.d.ts +108 -0
- package/dist/core/combat/AI/AICombatRunner.d.ts.map +1 -0
- package/dist/core/combat/AI/CombatAI.d.ts +179 -0
- package/dist/core/combat/AI/CombatAI.d.ts.map +1 -0
- package/dist/core/combat/AI/CombatMetricsTracker.d.ts +30 -0
- package/dist/core/combat/AI/CombatMetricsTracker.d.ts.map +1 -0
- package/dist/core/combat/Analysis/BalanceValidator.d.ts +170 -0
- package/dist/core/combat/Analysis/BalanceValidator.d.ts.map +1 -0
- package/dist/core/combat/Analysis/ComparativeAnalyzer.d.ts +231 -0
- package/dist/core/combat/Analysis/ComparativeAnalyzer.d.ts.map +1 -0
- package/dist/core/combat/Analysis/DifficultyCalculator.d.ts +203 -0
- package/dist/core/combat/Analysis/DifficultyCalculator.d.ts.map +1 -0
- package/dist/core/combat/Analysis/ParameterSweep.d.ts +201 -0
- package/dist/core/combat/Analysis/ParameterSweep.d.ts.map +1 -0
- package/dist/core/combat/AttackResolver.d.ts +220 -0
- package/dist/core/combat/AttackResolver.d.ts.map +1 -0
- package/dist/core/combat/CombatEngine.d.ts +388 -0
- package/dist/core/combat/CombatEngine.d.ts.map +1 -0
- package/dist/core/combat/DiceRoller.d.ts +115 -0
- package/dist/core/combat/DiceRoller.d.ts.map +1 -0
- package/dist/core/combat/InitiativeRoller.d.ts +62 -0
- package/dist/core/combat/InitiativeRoller.d.ts.map +1 -0
- package/dist/core/combat/PartyAnalyzer.d.ts +215 -0
- package/dist/core/combat/PartyAnalyzer.d.ts.map +1 -0
- package/dist/core/combat/SeededDiceRoller.d.ts +120 -0
- package/dist/core/combat/SeededDiceRoller.d.ts.map +1 -0
- package/dist/core/combat/Simulation/CombatSimulator.d.ts +366 -0
- package/dist/core/combat/Simulation/CombatSimulator.d.ts.map +1 -0
- package/dist/core/combat/SpellCaster.d.ts +113 -0
- package/dist/core/combat/SpellCaster.d.ts.map +1 -0
- package/dist/core/config/index.d.ts +24 -0
- package/dist/core/config/index.d.ts.map +1 -0
- package/dist/core/config/progressionConfig.d.ts +73 -0
- package/dist/core/config/progressionConfig.d.ts.map +1 -0
- package/dist/core/config/sensorConfig.d.ts +134 -0
- package/dist/core/config/sensorConfig.d.ts.map +1 -0
- package/dist/core/equipment/BoxOpener.d.ts +175 -0
- package/dist/core/equipment/BoxOpener.d.ts.map +1 -0
- package/dist/core/equipment/EquipmentEffectApplier.d.ts +189 -0
- package/dist/core/equipment/EquipmentEffectApplier.d.ts.map +1 -0
- package/dist/core/equipment/EquipmentModifier.d.ts +327 -0
- package/dist/core/equipment/EquipmentModifier.d.ts.map +1 -0
- package/dist/core/equipment/EquipmentSpawnHelper.d.ts +246 -0
- package/dist/core/equipment/EquipmentSpawnHelper.d.ts.map +1 -0
- package/dist/core/equipment/EquipmentValidator.d.ts +173 -0
- package/dist/core/equipment/EquipmentValidator.d.ts.map +1 -0
- package/dist/core/extensions/ExtensionManager.d.ts +517 -0
- package/dist/core/extensions/ExtensionManager.d.ts.map +1 -0
- package/dist/core/extensions/WeightedSelector.d.ts +156 -0
- package/dist/core/extensions/WeightedSelector.d.ts.map +1 -0
- package/dist/core/extensions/index.d.ts +11 -0
- package/dist/core/extensions/index.d.ts.map +1 -0
- package/dist/core/extensions/initializeDefaults.d.ts +170 -0
- package/dist/core/extensions/initializeDefaults.d.ts.map +1 -0
- package/dist/core/features/FeatureEffectApplier.d.ts +102 -0
- package/dist/core/features/FeatureEffectApplier.d.ts.map +1 -0
- package/dist/core/features/FeatureQuery.d.ts +368 -0
- package/dist/core/features/FeatureQuery.d.ts.map +1 -0
- package/dist/core/features/FeatureTypes.d.ts +199 -0
- package/dist/core/features/FeatureTypes.d.ts.map +1 -0
- package/dist/core/features/FeatureValidator.d.ts +149 -0
- package/dist/core/features/FeatureValidator.d.ts.map +1 -0
- package/dist/core/features/index.d.ts +12 -0
- package/dist/core/features/index.d.ts.map +1 -0
- package/dist/core/generation/AbilityScoreCalculator.d.ts +83 -0
- package/dist/core/generation/AbilityScoreCalculator.d.ts.map +1 -0
- package/dist/core/generation/AppearanceGenerator.d.ts +32 -0
- package/dist/core/generation/AppearanceGenerator.d.ts.map +1 -0
- package/dist/core/generation/BeatConverter.d.ts +127 -0
- package/dist/core/generation/BeatConverter.d.ts.map +1 -0
- package/dist/core/generation/ButtonMapper.d.ts +346 -0
- package/dist/core/generation/ButtonMapper.d.ts.map +1 -0
- package/dist/core/generation/ButtonPatternLibrary.d.ts +92 -0
- package/dist/core/generation/ButtonPatternLibrary.d.ts.map +1 -0
- package/dist/core/generation/CRLevelConverter.d.ts +242 -0
- package/dist/core/generation/CRLevelConverter.d.ts.map +1 -0
- package/dist/core/generation/CharacterGenerator.d.ts +194 -0
- package/dist/core/generation/CharacterGenerator.d.ts.map +1 -0
- package/dist/core/generation/ClassSuggester.d.ts +184 -0
- package/dist/core/generation/ClassSuggester.d.ts.map +1 -0
- package/dist/core/generation/EnemyEquipmentGenerator.d.ts +151 -0
- package/dist/core/generation/EnemyEquipmentGenerator.d.ts.map +1 -0
- package/dist/core/generation/EnemyGenerator.d.ts +595 -0
- package/dist/core/generation/EnemyGenerator.d.ts.map +1 -0
- package/dist/core/generation/EquipmentGenerator.d.ts +204 -0
- package/dist/core/generation/EquipmentGenerator.d.ts.map +1 -0
- package/dist/core/generation/LegendaryGenerator.d.ts +213 -0
- package/dist/core/generation/LegendaryGenerator.d.ts.map +1 -0
- package/dist/core/generation/LevelGenerator.d.ts +390 -0
- package/dist/core/generation/LevelGenerator.d.ts.map +1 -0
- package/dist/core/generation/NamingEngine.d.ts +136 -0
- package/dist/core/generation/NamingEngine.d.ts.map +1 -0
- package/dist/core/generation/PitchBeatLinker.d.ts +150 -0
- package/dist/core/generation/PitchBeatLinker.d.ts.map +1 -0
- package/dist/core/generation/RaceSelector.d.ts +58 -0
- package/dist/core/generation/RaceSelector.d.ts.map +1 -0
- package/dist/core/generation/RhythmGenerator.d.ts +597 -0
- package/dist/core/generation/RhythmGenerator.d.ts.map +1 -0
- package/dist/core/generation/SkillAssigner.d.ts +78 -0
- package/dist/core/generation/SkillAssigner.d.ts.map +1 -0
- package/dist/core/generation/SpellManager.d.ts +132 -0
- package/dist/core/generation/SpellManager.d.ts.map +1 -0
- package/dist/core/generation/SpellcastingGenerator.d.ts +255 -0
- package/dist/core/generation/SpellcastingGenerator.d.ts.map +1 -0
- package/dist/core/generation/index.d.ts +41 -0
- package/dist/core/generation/index.d.ts.map +1 -0
- package/dist/core/parser/MetadataExtractor.d.ts +66 -0
- package/dist/core/parser/MetadataExtractor.d.ts.map +1 -0
- package/dist/core/parser/PlaylistParser.d.ts +45 -0
- package/dist/core/parser/PlaylistParser.d.ts.map +1 -0
- package/dist/core/playback/SubdivisionPlaybackController.d.ts +333 -0
- package/dist/core/playback/SubdivisionPlaybackController.d.ts.map +1 -0
- package/dist/core/playback/index.d.ts +5 -0
- package/dist/core/playback/index.d.ts.map +1 -0
- package/dist/core/progression/CharacterUpdater.d.ts +203 -0
- package/dist/core/progression/CharacterUpdater.d.ts.map +1 -0
- package/dist/core/progression/LevelUpProcessor.d.ts +234 -0
- package/dist/core/progression/LevelUpProcessor.d.ts.map +1 -0
- package/dist/core/progression/PrestigeSystem.d.ts +217 -0
- package/dist/core/progression/PrestigeSystem.d.ts.map +1 -0
- package/dist/core/progression/RhythmXPCalculator.d.ts +182 -0
- package/dist/core/progression/RhythmXPCalculator.d.ts.map +1 -0
- package/dist/core/progression/SessionTracker.d.ts +169 -0
- package/dist/core/progression/SessionTracker.d.ts.map +1 -0
- package/dist/core/progression/XPCalculator.d.ts +128 -0
- package/dist/core/progression/XPCalculator.d.ts.map +1 -0
- package/dist/core/progression/stat/StatIncreaseStrategy.d.ts +97 -0
- package/dist/core/progression/stat/StatIncreaseStrategy.d.ts.map +1 -0
- package/dist/core/progression/stat/StatManager.d.ts +179 -0
- package/dist/core/progression/stat/StatManager.d.ts.map +1 -0
- package/dist/core/sensors/EnvironmentalSensors.d.ts +301 -0
- package/dist/core/sensors/EnvironmentalSensors.d.ts.map +1 -0
- package/dist/core/sensors/GamingPlatformSensors.d.ts +162 -0
- package/dist/core/sensors/GamingPlatformSensors.d.ts.map +1 -0
- package/dist/core/sensors/GeolocationProvider.d.ts +156 -0
- package/dist/core/sensors/GeolocationProvider.d.ts.map +1 -0
- package/dist/core/sensors/MotionDetector.d.ts +58 -0
- package/dist/core/sensors/MotionDetector.d.ts.map +1 -0
- package/dist/core/sensors/SteamAPIClient.d.ts +108 -0
- package/dist/core/sensors/SteamAPIClient.d.ts.map +1 -0
- package/dist/core/sensors/WeatherAPIClient.d.ts +360 -0
- package/dist/core/sensors/WeatherAPIClient.d.ts.map +1 -0
- package/dist/core/sensors/schemas/weather.schema.d.ts +144 -0
- package/dist/core/sensors/schemas/weather.schema.d.ts.map +1 -0
- package/dist/core/skills/SkillQuery.d.ts +159 -0
- package/dist/core/skills/SkillQuery.d.ts.map +1 -0
- package/dist/core/skills/SkillTypes.d.ts +233 -0
- package/dist/core/skills/SkillTypes.d.ts.map +1 -0
- package/dist/core/skills/SkillValidator.d.ts +146 -0
- package/dist/core/skills/SkillValidator.d.ts.map +1 -0
- package/dist/core/skills/index.d.ts +11 -0
- package/dist/core/skills/index.d.ts.map +1 -0
- package/dist/core/spells/SpellQuery.d.ts +194 -0
- package/dist/core/spells/SpellQuery.d.ts.map +1 -0
- package/dist/core/spells/SpellTypes.d.ts +71 -0
- package/dist/core/spells/SpellTypes.d.ts.map +1 -0
- package/dist/core/spells/SpellValidator.d.ts +129 -0
- package/dist/core/spells/SpellValidator.d.ts.map +1 -0
- package/dist/core/spells/index.d.ts +11 -0
- package/dist/core/spells/index.d.ts.map +1 -0
- package/dist/core/types/AudioProfile.d.ts +143 -0
- package/dist/core/types/AudioProfile.d.ts.map +1 -0
- package/dist/core/types/BeatMap.d.ts +1825 -0
- package/dist/core/types/BeatMap.d.ts.map +1 -0
- package/dist/core/types/ButtonMapping.d.ts +345 -0
- package/dist/core/types/ButtonMapping.d.ts.map +1 -0
- package/dist/core/types/Character.d.ts +397 -0
- package/dist/core/types/Character.d.ts.map +1 -0
- package/dist/core/types/ChartedBeatMap.d.ts +169 -0
- package/dist/core/types/ChartedBeatMap.d.ts.map +1 -0
- package/dist/core/types/Combat.d.ts +268 -0
- package/dist/core/types/Combat.d.ts.map +1 -0
- package/dist/core/types/CombatAI.d.ts +143 -0
- package/dist/core/types/CombatAI.d.ts.map +1 -0
- package/dist/core/types/Enemy.d.ts +447 -0
- package/dist/core/types/Enemy.d.ts.map +1 -0
- package/dist/core/types/Environmental.d.ts +213 -0
- package/dist/core/types/Environmental.d.ts.map +1 -0
- package/dist/core/types/Equipment.d.ts +309 -0
- package/dist/core/types/Equipment.d.ts.map +1 -0
- package/dist/core/types/ISessionTracker.d.ts +48 -0
- package/dist/core/types/ISessionTracker.d.ts.map +1 -0
- package/dist/core/types/LevelExport.d.ts +366 -0
- package/dist/core/types/LevelExport.d.ts.map +1 -0
- package/dist/core/types/Playlist.d.ts +70 -0
- package/dist/core/types/Playlist.d.ts.map +1 -0
- package/dist/core/types/Prestige.d.ts +94 -0
- package/dist/core/types/Prestige.d.ts.map +1 -0
- package/dist/core/types/Progression.d.ts +214 -0
- package/dist/core/types/Progression.d.ts.map +1 -0
- package/dist/core/types/RhythmXP.d.ts +398 -0
- package/dist/core/types/RhythmXP.d.ts.map +1 -0
- package/dist/core/utils/AbilityConstants.d.ts +31 -0
- package/dist/core/utils/AbilityConstants.d.ts.map +1 -0
- package/dist/core/utils/EffectApplierUtils.d.ts +56 -0
- package/dist/core/utils/EffectApplierUtils.d.ts.map +1 -0
- package/dist/core/utils/ImageValidator.d.ts +66 -0
- package/dist/core/utils/ImageValidator.d.ts.map +1 -0
- package/dist/core/utils/PrerequisiteValidator.d.ts +88 -0
- package/dist/core/utils/PrerequisiteValidator.d.ts.map +1 -0
- package/dist/essentia-wasm.es-BUEnKUts.js +2990 -0
- package/dist/essentia.js-model.es-CGA0xotH.js +306 -0
- package/dist/index.d.ts +176 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/playlist-data-engine.js +124 -0
- package/dist/playlist-data-engine.mjs +49251 -0
- package/dist/utils/EnchantmentLibrary.d.ts +378 -0
- package/dist/utils/EnchantmentLibrary.d.ts.map +1 -0
- package/dist/utils/arweaveGatewayManager.d.ts +485 -0
- package/dist/utils/arweaveGatewayManager.d.ts.map +1 -0
- package/dist/utils/arweaveUtils.d.ts +118 -0
- package/dist/utils/arweaveUtils.d.ts.map +1 -0
- package/dist/utils/constants.d.ts +439 -0
- package/dist/utils/constants.d.ts.map +1 -0
- package/dist/utils/equipmentConstants.d.ts +60 -0
- package/dist/utils/equipmentConstants.d.ts.map +1 -0
- package/dist/utils/hash.d.ts +33 -0
- package/dist/utils/hash.d.ts.map +1 -0
- package/dist/utils/logger.d.ts +192 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/magicItemExamples.d.ts +46 -0
- package/dist/utils/magicItemExamples.d.ts.map +1 -0
- package/dist/utils/playlistUtils.d.ts +149 -0
- package/dist/utils/playlistUtils.d.ts.map +1 -0
- package/dist/utils/random.d.ts +34 -0
- package/dist/utils/random.d.ts.map +1 -0
- package/dist/utils/sensorDashboard.d.ts +60 -0
- package/dist/utils/sensorDashboard.d.ts.map +1 -0
- package/dist/utils/validators.d.ts +189 -0
- package/dist/utils/validators.d.ts.map +1 -0
- package/dist/vite.svg +1 -0
- package/package.json +82 -0
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Beat Key Helper Functions
|
|
3
|
+
*
|
|
4
|
+
* Utility functions for assigning and managing required keys on beat maps.
|
|
5
|
+
* Used for rhythm game chart creation where specific keys must be pressed
|
|
6
|
+
* for specific beats.
|
|
7
|
+
*
|
|
8
|
+
* @module beatKeyHelpers
|
|
9
|
+
*/
|
|
10
|
+
import type { BeatMap, InterpolatedBeatMap, UnifiedBeatMap, SubdividedBeatMap } from '../../types/BeatMap.js';
|
|
11
|
+
/**
|
|
12
|
+
* Union type of all beat map types that support key assignment
|
|
13
|
+
*/
|
|
14
|
+
export type KeyAssignableBeatMap = BeatMap | InterpolatedBeatMap | UnifiedBeatMap | SubdividedBeatMap;
|
|
15
|
+
/**
|
|
16
|
+
* Assignment for bulk key operations
|
|
17
|
+
*/
|
|
18
|
+
export interface KeyAssignment {
|
|
19
|
+
/** Index of the beat to assign the key to */
|
|
20
|
+
beatIndex: number;
|
|
21
|
+
/** Key to assign (string to set, null to remove) */
|
|
22
|
+
key: string | null;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Assign a required key to a single beat in a beat map
|
|
26
|
+
*
|
|
27
|
+
* Returns a new beat map with the updated beat (immutable operation).
|
|
28
|
+
* Pass `null` as the key to remove an existing required key assignment.
|
|
29
|
+
*
|
|
30
|
+
* @param beatMap - The beat map to modify (BeatMap, InterpolatedBeatMap, UnifiedBeatMap, or SubdividedBeatMap)
|
|
31
|
+
* @param beatIndex - Index of the beat to update
|
|
32
|
+
* @param key - Key to assign (e.g., 'up', 'down', 'left', 'right') or null to remove
|
|
33
|
+
* @returns New beat map with the updated beat
|
|
34
|
+
* @throws Error if beatIndex is out of bounds
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```typescript
|
|
38
|
+
* import { assignKeyToBeat } from 'playlist-data-engine';
|
|
39
|
+
*
|
|
40
|
+
* // Assign a key to a beat
|
|
41
|
+
* const updatedMap = assignKeyToBeat(subdividedMap, 0, 'left');
|
|
42
|
+
*
|
|
43
|
+
* // Remove a key from a beat
|
|
44
|
+
* const clearedMap = assignKeyToBeat(updatedMap, 0, null);
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export declare function assignKeyToBeat<T extends KeyAssignableBeatMap>(beatMap: T, beatIndex: number, key: string | null): T;
|
|
48
|
+
/**
|
|
49
|
+
* Assign required keys to multiple beats in a single operation
|
|
50
|
+
*
|
|
51
|
+
* More efficient than calling assignKeyToBeat multiple times for bulk updates.
|
|
52
|
+
* Useful for chart creation UI with "paint/brush" mode.
|
|
53
|
+
*
|
|
54
|
+
* @param beatMap - The beat map to modify
|
|
55
|
+
* @param assignments - Array of key assignments to apply
|
|
56
|
+
* @returns New beat map with all updates applied
|
|
57
|
+
* @throws Error if any beatIndex is out of bounds
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* ```typescript
|
|
61
|
+
* import { assignKeysToBeats } from 'playlist-data-engine';
|
|
62
|
+
*
|
|
63
|
+
* const chartMap = assignKeysToBeats(subdividedMap, [
|
|
64
|
+
* { beatIndex: 0, key: 'left' },
|
|
65
|
+
* { beatIndex: 1, key: 'down' },
|
|
66
|
+
* { beatIndex: 2, key: 'up' },
|
|
67
|
+
* { beatIndex: 3, key: 'right' },
|
|
68
|
+
* ]);
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
export declare function assignKeysToBeats<T extends KeyAssignableBeatMap>(beatMap: T, assignments: KeyAssignment[]): T;
|
|
72
|
+
/**
|
|
73
|
+
* Extract a map of beat indices to required keys
|
|
74
|
+
*
|
|
75
|
+
* Returns a Map containing only the beats that have required keys assigned.
|
|
76
|
+
* Useful for serialization, UI display, and debugging.
|
|
77
|
+
*
|
|
78
|
+
* @param beatMap - The beat map to extract keys from
|
|
79
|
+
* @returns Map of beatIndex → requiredKey for beats with keys assigned
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* ```typescript
|
|
83
|
+
* import { extractKeyMap } from 'playlist-data-engine';
|
|
84
|
+
*
|
|
85
|
+
* const keyMap = extractKeyMap(chartMap);
|
|
86
|
+
*
|
|
87
|
+
* // Iterate over assigned keys
|
|
88
|
+
* for (const [beatIndex, key] of keyMap) {
|
|
89
|
+
* console.log(`Beat ${beatIndex}: ${key}`);
|
|
90
|
+
* }
|
|
91
|
+
*
|
|
92
|
+
* // Check if any keys are assigned
|
|
93
|
+
* if (keyMap.size === 0) {
|
|
94
|
+
* console.log('No keys assigned - not a chart');
|
|
95
|
+
* }
|
|
96
|
+
*
|
|
97
|
+
* // Convert to plain object for JSON
|
|
98
|
+
* const keyObject = Object.fromEntries(keyMap);
|
|
99
|
+
* // { "0": "left", "1": "down", "2": "up" }
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
export declare function extractKeyMap(beatMap: KeyAssignableBeatMap): Map<number, string>;
|
|
103
|
+
/**
|
|
104
|
+
* Remove all required key assignments from a beat map
|
|
105
|
+
*
|
|
106
|
+
* Returns a new beat map with all requiredKey properties removed.
|
|
107
|
+
* Useful for resetting a chart back to a plain beat map.
|
|
108
|
+
*
|
|
109
|
+
* @param beatMap - The beat map to clear keys from
|
|
110
|
+
* @returns New beat map with all keys removed
|
|
111
|
+
*
|
|
112
|
+
* @example
|
|
113
|
+
* ```typescript
|
|
114
|
+
* import { clearAllKeys } from 'playlist-data-engine';
|
|
115
|
+
*
|
|
116
|
+
* // Reset a chart to a plain beat map
|
|
117
|
+
* const plainMap = clearAllKeys(chartMap);
|
|
118
|
+
*
|
|
119
|
+
* // Verify no keys remain
|
|
120
|
+
* const keyMap = extractKeyMap(plainMap);
|
|
121
|
+
* console.log(keyMap.size); // 0
|
|
122
|
+
* ```
|
|
123
|
+
*/
|
|
124
|
+
export declare function clearAllKeys<T extends KeyAssignableBeatMap>(beatMap: T): T;
|
|
125
|
+
/**
|
|
126
|
+
* Check if a beat map has any required keys assigned
|
|
127
|
+
*
|
|
128
|
+
* @param beatMap - The beat map to check
|
|
129
|
+
* @returns true if any beat has a required key assigned
|
|
130
|
+
*
|
|
131
|
+
* @example
|
|
132
|
+
* ```typescript
|
|
133
|
+
* import { hasRequiredKeys } from 'playlist-data-engine';
|
|
134
|
+
*
|
|
135
|
+
* if (hasRequiredKeys(beatMap)) {
|
|
136
|
+
* console.log('This is a chart with key requirements');
|
|
137
|
+
* } else {
|
|
138
|
+
* console.log('This is a plain beat map');
|
|
139
|
+
* }
|
|
140
|
+
* ```
|
|
141
|
+
*/
|
|
142
|
+
export declare function hasRequiredKeys(beatMap: KeyAssignableBeatMap): boolean;
|
|
143
|
+
/**
|
|
144
|
+
* Get the count of beats with required keys assigned
|
|
145
|
+
*
|
|
146
|
+
* @param beatMap - The beat map to count keys from
|
|
147
|
+
* @returns Number of beats with required keys
|
|
148
|
+
*
|
|
149
|
+
* @example
|
|
150
|
+
* ```typescript
|
|
151
|
+
* import { getKeyCount } from 'playlist-data-engine';
|
|
152
|
+
*
|
|
153
|
+
* const keyCount = getKeyCount(chartMap);
|
|
154
|
+
* console.log(`${keyCount} beats have key requirements`);
|
|
155
|
+
* ```
|
|
156
|
+
*/
|
|
157
|
+
export declare function getKeyCount(beatMap: KeyAssignableBeatMap): number;
|
|
158
|
+
/**
|
|
159
|
+
* Get all unique keys used in a beat map
|
|
160
|
+
*
|
|
161
|
+
* Useful for determining which input buttons are needed for gameplay.
|
|
162
|
+
*
|
|
163
|
+
* @param beatMap - The beat map to get keys from
|
|
164
|
+
* @returns Array of unique key strings (sorted alphabetically)
|
|
165
|
+
*
|
|
166
|
+
* @example
|
|
167
|
+
* ```typescript
|
|
168
|
+
* import { getUsedKeys } from 'playlist-data-engine';
|
|
169
|
+
*
|
|
170
|
+
* const usedKeys = getUsedKeys(chartMap);
|
|
171
|
+
* // ['down', 'left', 'right', 'up']
|
|
172
|
+
*
|
|
173
|
+
* // Set up game controls for only the needed keys
|
|
174
|
+
* for (const key of usedKeys) {
|
|
175
|
+
* setupKeyHandler(key);
|
|
176
|
+
* }
|
|
177
|
+
* ```
|
|
178
|
+
*/
|
|
179
|
+
export declare function getUsedKeys(beatMap: KeyAssignableBeatMap): string[];
|
|
180
|
+
//# sourceMappingURL=beatKeyHelpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"beatKeyHelpers.d.ts","sourceRoot":"","sources":["../../../../src/core/analysis/beat/beatKeyHelpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAER,OAAO,EACP,mBAAmB,EACnB,cAAc,EAEd,iBAAiB,EACpB,MAAM,wBAAwB,CAAC;AAMhC;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,mBAAmB,GAAG,cAAc,GAAG,iBAAiB,CAAC;AAEtG;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAgDD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,oBAAoB,EAC1D,OAAO,EAAE,CAAC,EACV,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,GAAG,IAAI,GACnB,CAAC,CA4BH;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,oBAAoB,EAC5D,OAAO,EAAE,CAAC,EACV,WAAW,EAAE,aAAa,EAAE,GAC7B,CAAC,CAyCH;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAYhF;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,oBAAoB,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,CAa1E;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAGtE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,CAGjE;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,EAAE,CAWnE"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Beat Detection Module
|
|
3
|
+
*
|
|
4
|
+
* Exports for the Ellis Dynamic Programming beat tracking system.
|
|
5
|
+
*/
|
|
6
|
+
export type { Beat, BeatMap, BeatMapMetadata, BeatEvent, BeatEventType, BeatStreamCallback, AudioSyncState, BeatMapGeneratorOptions, BeatStreamOptions, BeatMapJSON, BeatAccuracy, ButtonPressResult, TempoEstimate, OSEConfig, BeatTrackerConfig, TempoDetectorConfig, BeatMapGenerationProgress, AccuracyThresholds, DifficultyPreset, ThresholdValidationResult, TimeSignatureConfig, DownbeatSegment, DownbeatConfig, BeatSource, BeatWithSource, QuarterNoteDetection, GapAnalysis, InterpolationMetadata, InterpolatedBeatMap, BeatInterpolationOptions, BeatWithSourceJSON, QuarterNoteDetectionJSON, GapAnalysisJSON, InterpolationMetadataJSON, InterpolatedBeatMapJSON, UnifiedBeatMap, SubdivisionType, SubdivisionConfig, SubdividedBeat, SubdividedBeatMap, SubdivisionMetadata, GrooveDirection, GrooveResult, GrooveState, GrooveAnalyzerOptions, } from '../../types/BeatMap.js';
|
|
7
|
+
export { DEFAULT_BEATMAP_GENERATOR_OPTIONS, DEFAULT_BEATSTREAM_OPTIONS, BEAT_ACCURACY_THRESHOLDS, BEAT_DETECTION_VERSION, BEAT_DETECTION_ALGORITHM, EASY_ACCURACY_THRESHOLDS, MEDIUM_ACCURACY_THRESHOLDS, HARD_ACCURACY_THRESHOLDS, getAccuracyThresholdsForPreset, validateThresholds, DEFAULT_BEAT_INTERPOLATION_OPTIONS, DEFAULT_TIME_SIGNATURE, DEFAULT_DOWNBEAT_CONFIG, MIN_BEATS_PER_MEASURE, MAX_BEATS_PER_MEASURE, validateDownbeatConfig, validateDownbeatConfigAgainstBeats, DEFAULT_SUBDIVISION_CONFIG, MAX_SUBDIVISION_DENSITY, VALID_SUBDIVISION_TYPES, isValidSubdivisionType, getSubdivisionDensity, validateSubdivisionConfig, validateSubdivisionConfigAgainstBeats, validateSubdivisionDensity, DEFAULT_GROOVE_OPTIONS, } from '../../types/BeatMap.js';
|
|
8
|
+
export { OnsetStrengthEnvelope, type OSEResult } from './OnsetStrengthEnvelope.js';
|
|
9
|
+
export { TempoDetector } from './TempoDetector.js';
|
|
10
|
+
export { BeatTracker, type BeatTrackingResult } from './BeatTracker.js';
|
|
11
|
+
export { BeatMapGenerator, type ProgressCallback } from './BeatMapGenerator.js';
|
|
12
|
+
export { BeatStream } from './BeatStream.js';
|
|
13
|
+
export { BeatInterpolator } from './BeatInterpolator.js';
|
|
14
|
+
export { BeatSubdivider, type BeatSubdividerOptions } from './BeatSubdivider.js';
|
|
15
|
+
export { GrooveAnalyzer } from './GrooveAnalyzer.js';
|
|
16
|
+
export { unifyBeatMap } from './utils/unifyBeatMap.js';
|
|
17
|
+
export { subdivideBeatMap } from './utils/subdivideBeatMap.js';
|
|
18
|
+
export { generateDebugReport, collectHistogramData, collectGapDetails, collectBeatDebugInfo, collectTempoDriftData, formatDebugReportToConsole, formatDebugReportToJSON, generateTempoDriftVisualization, generateConfidenceVisualization, BeatInterpolationDebug, DEFAULT_DEBUG_OUTPUT_OPTIONS, } from './utils/beatInterpolationDebug.js';
|
|
19
|
+
export type { HistogramEntry, GapDetail, TempoDriftPoint, BeatDebugInfo, InterpolationDebugReport, DebugOutputOptions, } from './utils/beatInterpolationDebug.js';
|
|
20
|
+
export { hzToMel, melToHz, resampleAudio, createMelFilterbank, highPassFilter, gaussianSmooth, calculateStdDev, performFFT, performSTFT, type ResampledAudio, type STFTResult, } from './utils/audioUtils.js';
|
|
21
|
+
export { TransientDetector } from './TransientDetector.js';
|
|
22
|
+
export type { TransientResult, TransientAnalysis, TransientDetectorConfig, TransientDetectionMethod, } from './TransientDetector.js';
|
|
23
|
+
export { RhythmQuantizer } from './RhythmQuantizer.js';
|
|
24
|
+
export type { QuantizationConfig, QuantizedBandStreams, DensityValidationConfig, DensityValidationResult, GridType, GridDecision, GeneratedBeat, GeneratedRhythmMap, GridDecider, } from './RhythmQuantizer.js';
|
|
25
|
+
export { TempoAwareQuantizer, HighBpmGridRestrictionRule, DEFAULT_TEMPO_AWARE_CONFIG, } from './TempoAwareQuantizer.js';
|
|
26
|
+
export type { TempoQuantizationRule, TempoRuleContext, TempoAwareQuantizerConfig, HighBpmGridRestrictionConfig, } from './TempoAwareQuantizer.js';
|
|
27
|
+
export { PhraseAnalyzer } from './PhraseAnalyzer.js';
|
|
28
|
+
export type { PhraseOccurrence, RhythmicPhrase, BandPhraseAnalysis, PhraseAnalysisResult, PhraseAnalyzerConfig, } from './PhraseAnalyzer.js';
|
|
29
|
+
export { DensityAnalyzer } from './DensityAnalyzer.js';
|
|
30
|
+
export type { DensityCategory, NaturalDifficulty, BeatDensityMetrics, SectionDensityMetrics, BandDensityMetrics, DensityAnalysisResult, DensityAnalyzerConfig, } from './DensityAnalyzer.js';
|
|
31
|
+
export { StreamScorer } from './StreamScorer.js';
|
|
32
|
+
export type { Band, ScoringFactors, SectionScore, StreamScoringResult, SectionWinner, StreamScorerConfig, BandBiasWeights, } from './StreamScorer.js';
|
|
33
|
+
export { CompositeStreamGenerator } from './CompositeStreamGenerator.js';
|
|
34
|
+
export type { CompositeSection, CompositeBeat, CompositeStream, CompositeStreamConfig, } from './CompositeStreamGenerator.js';
|
|
35
|
+
export { DifficultyVariantGenerator, SUBDIVISION_LIMITS, ALL_GRID_TYPES, isGridTypeAllowed, getAllowedGridTypes, convertToAllowedGridType, naturalDifficultyToLevel, validateSubdivisionLimits, getTempoAwareAllowedGridTypes, MEDIUM_RESTRICT_BPM, HARD_RESTRICT_BPM, EASY_QUARTER_NOTE_BPM, } from './DifficultyVariantGenerator.js';
|
|
36
|
+
export type { ExtendedGridType, DifficultyLevel, PresetDifficultyLevel, MaxSubdivision, SubdivisionLimitConfig, EditType, VariantBeat, DifficultyVariant, SubdivisionConversionMetadata, SubdivisionValidationResult, SubdivisionViolation, DifficultyVariantConfig, DensityTargetStrategy, BeatCountTarget, VariantDensityValidationResult, } from './DifficultyVariantGenerator.js';
|
|
37
|
+
export { assignKeyToBeat, assignKeysToBeats, extractKeyMap, clearAllKeys, hasRequiredKeys, getKeyCount, getUsedKeys, type KeyAssignableBeatMap, type KeyAssignment, } from './beatKeyHelpers.js';
|
|
38
|
+
export { RhythmicBalancer } from './RhythmicBalancer.js';
|
|
39
|
+
export type { RhythmicBalanceConfig, StrongBeatEmphasis, BalancerAction, BalanceStats, BalanceResult, } from './RhythmicBalancer.js';
|
|
40
|
+
export { DEFAULT_RHYTHMIC_BALANCE_CONFIG, getMetricGroupSize, isMetricStrongBeat, isMetricWeakBeat, findActiveSegment, isStrongBeatForEmphasis, } from './RhythmicBalancer.js';
|
|
41
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/analysis/beat/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Audio utility functions for beat detection
|
|
3
|
+
*
|
|
4
|
+
* These utilities support the Ellis Dynamic Programming beat tracking algorithm
|
|
5
|
+
* by providing audio preprocessing, Mel filterbank generation, and signal processing.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Convert frequency in Hz to Mel scale
|
|
9
|
+
* Formula: m = 2595 * log10(1 + f/700)
|
|
10
|
+
*
|
|
11
|
+
* @param hz - Frequency in Hz
|
|
12
|
+
* @returns Mel scale value
|
|
13
|
+
*/
|
|
14
|
+
export declare function hzToMel(hz: number): number;
|
|
15
|
+
/**
|
|
16
|
+
* Convert Mel scale value to frequency in Hz
|
|
17
|
+
* Formula: f = 700 * (10^(m/2595) - 1)
|
|
18
|
+
*
|
|
19
|
+
* @param mel - Mel scale value
|
|
20
|
+
* @returns Frequency in Hz
|
|
21
|
+
*/
|
|
22
|
+
export declare function melToHz(mel: number): number;
|
|
23
|
+
/**
|
|
24
|
+
* Result of audio resampling
|
|
25
|
+
*/
|
|
26
|
+
export interface ResampledAudio {
|
|
27
|
+
/** Resampled audio data as mono Float32Array */
|
|
28
|
+
data: Float32Array;
|
|
29
|
+
/** Original sample rate */
|
|
30
|
+
originalSampleRate: number;
|
|
31
|
+
/** Target sample rate */
|
|
32
|
+
targetSampleRate: number;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Resample audio buffer to a target sample rate
|
|
36
|
+
* Uses linear interpolation for simplicity
|
|
37
|
+
*
|
|
38
|
+
* @param audioBuffer - Source audio buffer
|
|
39
|
+
* @param targetRate - Target sample rate in Hz
|
|
40
|
+
* @returns Resampled audio data with metadata
|
|
41
|
+
*/
|
|
42
|
+
export declare function resampleAudio(audioBuffer: AudioBuffer, targetRate: number): ResampledAudio;
|
|
43
|
+
/**
|
|
44
|
+
* Create a Mel filterbank for spectral analysis
|
|
45
|
+
*
|
|
46
|
+
* Creates triangular filters spaced evenly on the Mel scale,
|
|
47
|
+
* suitable for perceptual audio analysis as per Ellis 2007.
|
|
48
|
+
*
|
|
49
|
+
* @param numBands - Number of Mel bands to create
|
|
50
|
+
* @param fftSize - FFT size used for analysis
|
|
51
|
+
* @param sampleRate - Audio sample rate in Hz
|
|
52
|
+
* @param minFreq - Minimum frequency in Hz (default: 0)
|
|
53
|
+
* @param maxFreq - Maximum frequency in Hz (default: sampleRate/2)
|
|
54
|
+
* @returns Array of Float32Array filters, each representing one Mel band
|
|
55
|
+
*/
|
|
56
|
+
export declare function createMelFilterbank(numBands: number, fftSize: number, sampleRate: number, minFreq?: number, maxFreq?: number): Float32Array[];
|
|
57
|
+
/**
|
|
58
|
+
* Apply a high-pass filter to remove DC offset and low-frequency components
|
|
59
|
+
* Uses a simple first-order IIR filter
|
|
60
|
+
*
|
|
61
|
+
* @param signal - Input signal
|
|
62
|
+
* @param cutoff - Cutoff frequency in Hz
|
|
63
|
+
* @param sampleRate - Sample rate in Hz
|
|
64
|
+
* @returns Filtered signal
|
|
65
|
+
*/
|
|
66
|
+
export declare function highPassFilter(signal: Float32Array, cutoff: number, sampleRate: number): Float32Array;
|
|
67
|
+
/**
|
|
68
|
+
* Apply Gaussian smoothing to a signal
|
|
69
|
+
*
|
|
70
|
+
* @param signal - Input signal
|
|
71
|
+
* @param windowMs - Window size in milliseconds
|
|
72
|
+
* @param sampleRate - Sample rate in Hz
|
|
73
|
+
* @returns Smoothed signal
|
|
74
|
+
*/
|
|
75
|
+
export declare function gaussianSmooth(signal: Float32Array, windowMs: number, sampleRate: number): Float32Array;
|
|
76
|
+
/**
|
|
77
|
+
* Calculate the standard deviation of a signal
|
|
78
|
+
*
|
|
79
|
+
* @param signal - Input signal
|
|
80
|
+
* @returns Standard deviation
|
|
81
|
+
*/
|
|
82
|
+
export declare function calculateStdDev(signal: Float32Array): number;
|
|
83
|
+
/**
|
|
84
|
+
* Perform FFT on a signal and return magnitude spectrum
|
|
85
|
+
* Uses Cooley-Tukey algorithm with Hann window
|
|
86
|
+
*
|
|
87
|
+
* @param signal - Input signal (will be padded to nearest power of 2)
|
|
88
|
+
* @returns Magnitude spectrum (half spectrum, positive frequencies only)
|
|
89
|
+
*/
|
|
90
|
+
export declare function performFFT(signal: Float32Array): Float32Array;
|
|
91
|
+
/**
|
|
92
|
+
* Result of STFT analysis
|
|
93
|
+
*/
|
|
94
|
+
export interface STFTResult {
|
|
95
|
+
/** 2D array of magnitude spectra (frame x frequency bin) */
|
|
96
|
+
frames: Float32Array[];
|
|
97
|
+
/** Number of frames */
|
|
98
|
+
numFrames: number;
|
|
99
|
+
/** FFT size used */
|
|
100
|
+
fftSize: number;
|
|
101
|
+
/** Hop size in samples */
|
|
102
|
+
hopSize: number;
|
|
103
|
+
/** Sample rate */
|
|
104
|
+
sampleRate: number;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Perform Short-Time Fourier Transform (STFT) on a signal
|
|
108
|
+
*
|
|
109
|
+
* @param signal - Input signal
|
|
110
|
+
* @param fftSize - FFT window size in samples
|
|
111
|
+
* @param hopSize - Hop size in samples
|
|
112
|
+
* @param sampleRate - Sample rate in Hz
|
|
113
|
+
* @returns STFT result containing magnitude spectra for each frame
|
|
114
|
+
*/
|
|
115
|
+
export declare function performSTFT(signal: Float32Array, fftSize: number, hopSize: number, sampleRate: number): STFTResult;
|
|
116
|
+
/**
|
|
117
|
+
* Configuration for the Butterworth band-pass filter
|
|
118
|
+
*
|
|
119
|
+
* The filter uses cascaded 2nd-order biquad sections for steep cutoff.
|
|
120
|
+
* An 8th order filter provides 48 dB/octave slope.
|
|
121
|
+
*/
|
|
122
|
+
export interface BandPassFilterConfig {
|
|
123
|
+
/** Filter order (must be even positive integer). Default: 8 for 48 dB/octave */
|
|
124
|
+
order?: number;
|
|
125
|
+
/** Optional Q factor adjustment. Default: 0.707 (Butterworth maximally flat) */
|
|
126
|
+
qFactor?: number;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Frequency band definition for multi-band analysis
|
|
130
|
+
*/
|
|
131
|
+
export interface FrequencyBand {
|
|
132
|
+
/** Band name identifier (e.g., 'low', 'mid', 'high') */
|
|
133
|
+
name: string;
|
|
134
|
+
/** Lower cutoff frequency in Hz */
|
|
135
|
+
lowHz: number;
|
|
136
|
+
/** Upper cutoff frequency in Hz */
|
|
137
|
+
highHz: number;
|
|
138
|
+
/** Human-readable description of the band's typical content */
|
|
139
|
+
description: string;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Standard frequency bands for multi-band transient detection
|
|
143
|
+
*
|
|
144
|
+
* These three bands cover the full audible spectrum and are optimized
|
|
145
|
+
* for detecting different types of rhythmic elements:
|
|
146
|
+
* - Low: Bass, kick drums, sub frequencies
|
|
147
|
+
* - Mid: Vocals, snare body, lead instruments
|
|
148
|
+
* - High: Hi-hats, cymbals, harmonics, air
|
|
149
|
+
*/
|
|
150
|
+
export declare const FREQUENCY_BANDS: FrequencyBand[];
|
|
151
|
+
/**
|
|
152
|
+
* Apply a Butterworth band-pass filter to a signal
|
|
153
|
+
*
|
|
154
|
+
* Implements a band-pass filter by cascading high-pass and low-pass filters.
|
|
155
|
+
* Uses cascaded 2nd-order biquad sections for steep cutoff slopes.
|
|
156
|
+
*
|
|
157
|
+
* Default configuration is 8th order (48 dB/octave slope) which provides
|
|
158
|
+
* clean band separation at crossover points without significant phase distortion.
|
|
159
|
+
*
|
|
160
|
+
* @param signal - Input signal to filter
|
|
161
|
+
* @param lowHz - Lower cutoff frequency in Hz
|
|
162
|
+
* @param highHz - Upper cutoff frequency in Hz
|
|
163
|
+
* @param sampleRate - Sample rate in Hz
|
|
164
|
+
* @param config - Optional filter configuration
|
|
165
|
+
* @returns Filtered signal (same length as input)
|
|
166
|
+
* @throws Error if order is not a positive even integer
|
|
167
|
+
*
|
|
168
|
+
* @example
|
|
169
|
+
* ```typescript
|
|
170
|
+
* // Apply default 8th order band-pass filter for low band (20-500 Hz)
|
|
171
|
+
* const filtered = bandPassFilter(signal, 20, 500, 44100);
|
|
172
|
+
*
|
|
173
|
+
* // Apply 4th order filter with custom Q factor
|
|
174
|
+
* const filtered = bandPassFilter(signal, 500, 2000, 44100, { order: 4, qFactor: 0.5 });
|
|
175
|
+
* ```
|
|
176
|
+
*/
|
|
177
|
+
export declare function bandPassFilter(signal: Float32Array, lowHz: number, highHz: number, sampleRate: number, config?: BandPassFilterConfig): Float32Array;
|
|
178
|
+
/**
|
|
179
|
+
* Apply a frequency band filter to a signal
|
|
180
|
+
*
|
|
181
|
+
* Convenience function that applies the band-pass filter using
|
|
182
|
+
* predefined frequency band settings from FREQUENCY_BANDS.
|
|
183
|
+
*
|
|
184
|
+
* @param signal - Input signal to filter
|
|
185
|
+
* @param bandName - Name of the frequency band ('low', 'mid', or 'high')
|
|
186
|
+
* @param sampleRate - Sample rate in Hz
|
|
187
|
+
* @param config - Optional filter configuration
|
|
188
|
+
* @returns Filtered signal
|
|
189
|
+
* @throws Error if bandName is not recognized
|
|
190
|
+
*
|
|
191
|
+
* @example
|
|
192
|
+
* ```typescript
|
|
193
|
+
* // Apply low band filter (20-500 Hz) for bass/kick detection
|
|
194
|
+
* const lowFiltered = applyFrequencyBand(signal, 'low', 44100);
|
|
195
|
+
*
|
|
196
|
+
* // Apply mid band filter (500-2000 Hz) for vocal/snare detection
|
|
197
|
+
* const midFiltered = applyFrequencyBand(signal, 'mid', 44100);
|
|
198
|
+
*
|
|
199
|
+
* // Apply high band filter (2000-20000 Hz) for hi-hat/cymbal detection
|
|
200
|
+
* const highFiltered = applyFrequencyBand(signal, 'high', 44100);
|
|
201
|
+
* ```
|
|
202
|
+
*/
|
|
203
|
+
export declare function applyFrequencyBand(signal: Float32Array, bandName: 'low' | 'mid' | 'high', sampleRate: number, config?: BandPassFilterConfig): Float32Array;
|
|
204
|
+
//# sourceMappingURL=audioUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audioUtils.d.ts","sourceRoot":"","sources":["../../../../../src/core/analysis/beat/utils/audioUtils.ts"],"names":[],"mappings":"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"}
|