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 @@
|
|
|
1
|
+
{"version":3,"file":"PitchBeatLinker.d.ts","sourceRoot":"","sources":["../../../src/core/generation/PitchBeatLinker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAiB,KAAK,WAAW,EAAE,KAAK,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACzG,OAAO,EAA+E,KAAK,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAIxJ,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AACpF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AAMxF;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,YAAY,CAAC;AAEtF;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAElB,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;IAElB,4FAA4F;IAC5F,IAAI,EAAE,aAAa,CAAC;IAEpB,iDAAiD;IACjD,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IAE1B,0FAA0F;IAC1F,SAAS,EAAE,cAAc,CAAC;IAE1B,iGAAiG;IACjG,oBAAoB,EAAE,MAAM,CAAC;IAE7B,kEAAkE;IAClE,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IAClC,qEAAqE;IACrE,aAAa,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAE7C,uDAAuD;IACvD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,+IAA+I;IAC/I,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC,uFAAuF;IACvF,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,mFAAmF;IACnF,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACjD;AAMD,gDAAgD;AAChD,KAAK,6BAA6B,GAAG,QAAQ,CAAC,IAAI,CAAC,qBAAqB,EAAE,eAAe,GAAG,YAAY,CAAC,CAAC,GAAG;IAAE,aAAa,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAAC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC;AAa5M;;;;;GAKG;AACH,qBAAa,eAAe;IACxB,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,oBAAoB,CAAgB;IAC5C,OAAO,CAAC,gBAAgB,CAAsC;IAE9D;;;;OAIG;gBACS,MAAM,GAAE,qBAA0B;IAwB9C;;OAEG;IACH,SAAS,IAAI,6BAA6B;IAI1C;;;;;;;;;;;;OAYG;IACG,iBAAiB,CACnB,eAAe,EAAE,eAAe,EAChC,WAAW,EAAE,WAAW,GACzB,OAAO,CAAC,WAAW,EAAE,CAAC;IA6EzB;;;;;;;;;;OAUG;IACH,oBAAoB,CAChB,OAAO,EAAE,iBAAiB,EAC1B,gBAAgB,EAAE,WAAW,EAAE,GAChC,WAAW,EAAE;IAgDhB;;;;;;;;;OASG;IACH,uBAAuB,CACnB,kBAAkB,EAAE;QAChB,IAAI,EAAE,iBAAiB,CAAC;QACxB,MAAM,EAAE,iBAAiB,CAAC;QAC1B,IAAI,EAAE,iBAAiB,CAAC;KAC3B,EACD,gBAAgB,EAAE,WAAW,EAAE,GAChC;QACC,IAAI,EAAE,WAAW,EAAE,CAAC;QACpB,MAAM,EAAE,WAAW,EAAE,CAAC;QACtB,IAAI,EAAE,WAAW,EAAE,CAAC;KACvB;CAOJ"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Race Selector - Deterministic race selection with extensibility support
|
|
3
|
+
* Based on specs/001-core-engine/SPEC.md
|
|
4
|
+
*/
|
|
5
|
+
import type { Race } from '../types/Character.js';
|
|
6
|
+
import { SeededRNG } from '../../utils/random.js';
|
|
7
|
+
/**
|
|
8
|
+
* Select character races deterministically from seeded random selection
|
|
9
|
+
*
|
|
10
|
+
* Supports the extensibility system:
|
|
11
|
+
* - Custom races can be registered via ExtensionManager
|
|
12
|
+
* - Spawn rates can be customized per race
|
|
13
|
+
* - Relative and absolute selection modes supported
|
|
14
|
+
*/
|
|
15
|
+
export declare class RaceSelector {
|
|
16
|
+
/**
|
|
17
|
+
* Select a random race deterministically from seeded RNG
|
|
18
|
+
*
|
|
19
|
+
* Selects from available races (default 9 D&D 5e races plus any custom races):
|
|
20
|
+
* - Default: Dwarf, Elf, Halfling, Human, Dragonborn, Gnome, Half-Elf, Half-Orc, Tiefling
|
|
21
|
+
* - Custom: Any races registered via ExtensionManager
|
|
22
|
+
*
|
|
23
|
+
* Uses weighted selection with spawn rate control:
|
|
24
|
+
* - Equal weights by default (all races equally likely)
|
|
25
|
+
* - Custom weights can be set via ExtensionManager.setWeights('races', weights)
|
|
26
|
+
*
|
|
27
|
+
* Same seed always selects the same race.
|
|
28
|
+
*
|
|
29
|
+
* @param {SeededRNG} rng - Seeded random number generator
|
|
30
|
+
* @returns {Race} Selected race
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```typescript
|
|
34
|
+
* const rng = new SeededRNG('my-seed-123');
|
|
35
|
+
* const race = RaceSelector.select(rng); // Always selects same race for same seed
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```typescript
|
|
40
|
+
* // With custom spawn weights
|
|
41
|
+
* const manager = ExtensionManager.getInstance();
|
|
42
|
+
* manager.setWeights('races', { 'Human': 2, 'Elf': 1.5 }); // Make humans more common
|
|
43
|
+
* const race = RaceSelector.select(rng);
|
|
44
|
+
* ```
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```typescript
|
|
48
|
+
* // With custom races
|
|
49
|
+
* manager.register('races', ['Dragonkin', 'Fairy'], {
|
|
50
|
+
* mode: 'relative',
|
|
51
|
+
* weights: { 'Dragonkin': 0.5, 'Fairy': 0.3 } // Rare races
|
|
52
|
+
* });
|
|
53
|
+
* const race = RaceSelector.select(rng);
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
static select(rng: SeededRNG): Race;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=RaceSelector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RaceSelector.d.ts","sourceRoot":"","sources":["../../../src/core/generation/RaceSelector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAKlD;;;;;;;GAOG;AACH,qBAAa,YAAY;IACrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAuCG;IACH,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI;CAatC"}
|
|
@@ -0,0 +1,597 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rhythm Generator - Orchestrator for Procedural Rhythm Generation
|
|
3
|
+
*
|
|
4
|
+
* This is the main entry point for generating procedural rhythm patterns from audio.
|
|
5
|
+
* It orchestrates all phases of the pipeline:
|
|
6
|
+
*
|
|
7
|
+
* Phase 1: Multi-band analysis, transient detection, quantization
|
|
8
|
+
* Phase 2: Phrase analysis, density analysis
|
|
9
|
+
* Phase 3: Stream scoring, composite generation, difficulty variants
|
|
10
|
+
*
|
|
11
|
+
* Part of the Procedural Rhythm Generation pipeline - Phase 3.4
|
|
12
|
+
*/
|
|
13
|
+
import { type MultiBandResult } from '../analysis/MultiBandAnalyzer.js';
|
|
14
|
+
import { type TransientAnalysis, type BandTransientConfigOverrides } from '../analysis/beat/TransientDetector.js';
|
|
15
|
+
import { type TempoAwareQuantizerConfig } from '../analysis/beat/TempoAwareQuantizer.js';
|
|
16
|
+
import { type QuantizedBandStreams, type GeneratedRhythmMap, type DensityValidationConfig } from '../analysis/beat/RhythmQuantizer.js';
|
|
17
|
+
import { type PhraseAnalysisResult, type PhraseAnalyzerConfig } from '../analysis/beat/PhraseAnalyzer.js';
|
|
18
|
+
import { type DensityAnalysisResult } from '../analysis/beat/DensityAnalyzer.js';
|
|
19
|
+
import { type StreamScoringResult, type StreamScorerConfig } from '../analysis/beat/StreamScorer.js';
|
|
20
|
+
import { type CompositeStream } from '../analysis/beat/CompositeStreamGenerator.js';
|
|
21
|
+
import { type DifficultyVariant, type DifficultyLevel, type PresetDifficultyLevel } from '../analysis/beat/DifficultyVariantGenerator.js';
|
|
22
|
+
import { type RhythmicBalanceConfig, type BalanceStats } from '../analysis/beat/RhythmicBalancer.js';
|
|
23
|
+
import type { UnifiedBeatMap, DifficultyPreset } from '../types/BeatMap.js';
|
|
24
|
+
/**
|
|
25
|
+
* Output mode for rhythm generation
|
|
26
|
+
*/
|
|
27
|
+
export type OutputMode = 'composite' | 'low' | 'mid' | 'high';
|
|
28
|
+
/**
|
|
29
|
+
* Band identifier
|
|
30
|
+
*/
|
|
31
|
+
export type Band = 'low' | 'mid' | 'high';
|
|
32
|
+
/**
|
|
33
|
+
* Phase identifier for caching
|
|
34
|
+
*/
|
|
35
|
+
export type CachePhase = 'multiBand' | 'transients' | 'quantization' | 'phrases' | 'density' | 'scoring' | 'composite' | 'variants';
|
|
36
|
+
/**
|
|
37
|
+
* Configuration options for rhythm generation
|
|
38
|
+
*/
|
|
39
|
+
export interface RhythmGenerationOptions {
|
|
40
|
+
/** Which difficulty preset to use for output (default: 'medium') */
|
|
41
|
+
difficulty?: DifficultyPreset;
|
|
42
|
+
/** Which stream to use as primary output (default: 'composite') */
|
|
43
|
+
outputMode?: OutputMode;
|
|
44
|
+
/** Offset in beats for "Beat 1" (downbeat alignment, default: 0) */
|
|
45
|
+
measureStartOffset?: number;
|
|
46
|
+
/** Filter weak transients (0.0 = catch all, default: 0.0) */
|
|
47
|
+
minimumTransientIntensity?: number;
|
|
48
|
+
/**
|
|
49
|
+
* Per-band transient detection configuration.
|
|
50
|
+
* Allows customizing threshold, minimum interval, and adaptive thresholding for each frequency band.
|
|
51
|
+
* @example
|
|
52
|
+
* ```typescript
|
|
53
|
+
* transientConfig: {
|
|
54
|
+
* low: { threshold: 0.5, minInterval: 0.1 }, // Higher threshold for bass
|
|
55
|
+
* high: { threshold: 0.2 }, // Lower threshold for hi-hats
|
|
56
|
+
* }
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
transientConfig?: BandTransientConfigOverrides;
|
|
60
|
+
/**
|
|
61
|
+
* Density validation configuration for quantization.
|
|
62
|
+
* When enabled, if transients are too dense, the system will automatically
|
|
63
|
+
* increase thresholds and retry detection.
|
|
64
|
+
* @default undefined (disabled by default)
|
|
65
|
+
* @example
|
|
66
|
+
* ```typescript
|
|
67
|
+
* densityValidation: {
|
|
68
|
+
* maxRetries: 5, // Enable with 5 retries per band
|
|
69
|
+
* baseSensitivityReduction: 0.1,
|
|
70
|
+
* maxCumulativeReduction: 0.5,
|
|
71
|
+
* }
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
densityValidation?: DensityValidationConfig;
|
|
75
|
+
/**
|
|
76
|
+
* Stream scoring configuration.
|
|
77
|
+
* Allows customizing factor weights and band bias for composite stream selection.
|
|
78
|
+
* @example
|
|
79
|
+
* ```typescript
|
|
80
|
+
* scoringConfig: {
|
|
81
|
+
* // Favor syncopation and high frequencies
|
|
82
|
+
* syncopationWeight: 0.4,
|
|
83
|
+
* bandBiasWeights: { low: 0.3, mid: 1.0, high: 1.5 }
|
|
84
|
+
* }
|
|
85
|
+
* ```
|
|
86
|
+
*/
|
|
87
|
+
scoringConfig?: Partial<StreamScorerConfig>;
|
|
88
|
+
/**
|
|
89
|
+
* Phrase analyzer configuration.
|
|
90
|
+
* Controls phrase detection behavior including minimum phrase size and occurrences.
|
|
91
|
+
* @example
|
|
92
|
+
* ```typescript
|
|
93
|
+
* phraseAnalyzerConfig: {
|
|
94
|
+
* minOccurrences: 3,
|
|
95
|
+
* minNotesPerPhrase: (size) => 1 + size,
|
|
96
|
+
* }
|
|
97
|
+
* ```
|
|
98
|
+
*/
|
|
99
|
+
phraseAnalyzerConfig?: Partial<PhraseAnalyzerConfig>;
|
|
100
|
+
/**
|
|
101
|
+
* BPM-aware quantization rules config. When undefined, default rules apply
|
|
102
|
+
* (HighBpmGridRestrictionRule: 16th notes restricted at 160 BPM, triplets
|
|
103
|
+
* at 200 BPM). Set `{ enabled: false }` to disable.
|
|
104
|
+
*/
|
|
105
|
+
tempoQuantizationConfig?: TempoAwareQuantizerConfig;
|
|
106
|
+
/**
|
|
107
|
+
* Rhythmic balance configuration for enforcing metric structure on the
|
|
108
|
+
* composite stream before difficulty variants are generated.
|
|
109
|
+
*
|
|
110
|
+
* Controls downbeat anchoring, empty measure filling, and which beats
|
|
111
|
+
* are considered "strong" for density reduction priority.
|
|
112
|
+
*
|
|
113
|
+
* @default DEFAULT_RHYTHMIC_BALANCE_CONFIG
|
|
114
|
+
* @example
|
|
115
|
+
* ```typescript
|
|
116
|
+
* rhythmicBalanceConfig: {
|
|
117
|
+
* strongBeatEmphasis: 'natural', // or 'backbeat', 'neutral'
|
|
118
|
+
* fillEmptyMeasures: true,
|
|
119
|
+
* downbeatProximityRange: 2,
|
|
120
|
+
* }
|
|
121
|
+
* ```
|
|
122
|
+
*/
|
|
123
|
+
rhythmicBalanceConfig?: Partial<RhythmicBalanceConfig>;
|
|
124
|
+
/** Seed for reproducibility (optional) */
|
|
125
|
+
seed?: string;
|
|
126
|
+
/** Whether to log progress information (default: false) */
|
|
127
|
+
verbose?: boolean;
|
|
128
|
+
/** Whether to enable caching of intermediate results (default: true) */
|
|
129
|
+
enableCache?: boolean;
|
|
130
|
+
/** Maximum age of cache entries in milliseconds (default: 30 minutes) */
|
|
131
|
+
cacheMaxAge?: number;
|
|
132
|
+
/**
|
|
133
|
+
* When true, skip generating preset difficulty variants (easy/medium/hard/natural).
|
|
134
|
+
* The composite stream and all analysis results are still produced.
|
|
135
|
+
* Used by density-based generation where preset variants are not needed.
|
|
136
|
+
* @default false
|
|
137
|
+
*/
|
|
138
|
+
skipDifficultyVariants?: boolean;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Statistics about the cache
|
|
142
|
+
*/
|
|
143
|
+
export interface CacheStats {
|
|
144
|
+
/** Number of entries currently cached */
|
|
145
|
+
entryCount: number;
|
|
146
|
+
/** Total size estimate in bytes (approximate) */
|
|
147
|
+
estimatedSize: number;
|
|
148
|
+
/** Phases that have cached results */
|
|
149
|
+
cachedPhases: CachePhase[];
|
|
150
|
+
/** Oldest entry timestamp (ms) */
|
|
151
|
+
oldestEntry: number | null;
|
|
152
|
+
/** Number of cache hits during this session */
|
|
153
|
+
hits: number;
|
|
154
|
+
/** Number of cache misses during this session */
|
|
155
|
+
misses: number;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Progress callback for long-running generation
|
|
159
|
+
*/
|
|
160
|
+
export type ProgressCallback = (phase: string, progress: number, message: string) => void;
|
|
161
|
+
/**
|
|
162
|
+
* Complete result of rhythm generation
|
|
163
|
+
*/
|
|
164
|
+
export interface GeneratedRhythm {
|
|
165
|
+
/** 4 difficulty variants of the composite stream (including natural/unedited). Null when skipDifficultyVariants was set. */
|
|
166
|
+
difficultyVariants: {
|
|
167
|
+
easy: DifficultyVariant;
|
|
168
|
+
medium: DifficultyVariant;
|
|
169
|
+
hard: DifficultyVariant;
|
|
170
|
+
natural: DifficultyVariant;
|
|
171
|
+
} & Record<PresetDifficultyLevel, DifficultyVariant> | null;
|
|
172
|
+
/** Individual band streams (for reference/advanced use) */
|
|
173
|
+
bandStreams: {
|
|
174
|
+
low: GeneratedRhythmMap;
|
|
175
|
+
mid: GeneratedRhythmMap;
|
|
176
|
+
high: GeneratedRhythmMap;
|
|
177
|
+
};
|
|
178
|
+
/** The composite stream (unedited baseline) */
|
|
179
|
+
composite: CompositeStream;
|
|
180
|
+
/** Analysis results */
|
|
181
|
+
analysis: {
|
|
182
|
+
transientAnalysis: TransientAnalysis;
|
|
183
|
+
quantizationResult: QuantizedBandStreams;
|
|
184
|
+
phraseAnalysis: PhraseAnalysisResult;
|
|
185
|
+
densityAnalysis: DensityAnalysisResult;
|
|
186
|
+
scoringResult: StreamScoringResult;
|
|
187
|
+
};
|
|
188
|
+
/** Metadata about the generation */
|
|
189
|
+
metadata: RhythmMetadata;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Metadata about rhythm generation
|
|
193
|
+
*/
|
|
194
|
+
export interface RhythmMetadata {
|
|
195
|
+
/** Difficulty preset used for output */
|
|
196
|
+
difficulty: DifficultyPreset;
|
|
197
|
+
/** Bands that were analyzed */
|
|
198
|
+
bandsAnalyzed: Band[];
|
|
199
|
+
/** Total transients detected */
|
|
200
|
+
transientsDetected: number;
|
|
201
|
+
/** Transients filtered by intensity threshold */
|
|
202
|
+
transientsFilteredByIntensity: number;
|
|
203
|
+
/** Number of density validation retries */
|
|
204
|
+
densityValidationRetries: number;
|
|
205
|
+
/** Number of phrases detected */
|
|
206
|
+
phrasesDetected: number;
|
|
207
|
+
/** Average density across all bands */
|
|
208
|
+
averageDensity: number;
|
|
209
|
+
/** Natural difficulty of the composite */
|
|
210
|
+
naturalDifficulty: DifficultyLevel;
|
|
211
|
+
/** Configuration used for generation */
|
|
212
|
+
generationConfig: ResolvedOptions;
|
|
213
|
+
/** Duration of the audio in seconds */
|
|
214
|
+
duration: number;
|
|
215
|
+
/** Total beats in the unified beat map */
|
|
216
|
+
totalBeats: number;
|
|
217
|
+
/** Statistics from the rhythmic balancing step */
|
|
218
|
+
balanceStats?: BalanceStats;
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Preset name for rhythm generation configurations
|
|
222
|
+
*/
|
|
223
|
+
export type RhythmPresetName = 'casual' | 'standard' | 'challenge' | 'bass';
|
|
224
|
+
/**
|
|
225
|
+
* A preset configuration for rhythm generation
|
|
226
|
+
*/
|
|
227
|
+
export interface RhythmPresetConfig {
|
|
228
|
+
/** Which difficulty preset to use for output */
|
|
229
|
+
difficulty: DifficultyPreset;
|
|
230
|
+
/** Which stream to use as primary output */
|
|
231
|
+
outputMode: OutputMode;
|
|
232
|
+
/** Optional description of what this preset is designed for */
|
|
233
|
+
description?: string;
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Built-in preset configurations for common use cases
|
|
237
|
+
*
|
|
238
|
+
* - **casual**: Easy difficulty, composite output - for relaxed gameplay
|
|
239
|
+
* - **standard**: Medium difficulty, composite output - balanced experience
|
|
240
|
+
* - **challenge**: Hard difficulty, composite output - for skilled players
|
|
241
|
+
* - **bass**: Medium difficulty, low-frequency band - focus on bass rhythms
|
|
242
|
+
*
|
|
243
|
+
* @example
|
|
244
|
+
* ```typescript
|
|
245
|
+
* // Get a preset configuration
|
|
246
|
+
* const preset = getRhythmPreset('standard');
|
|
247
|
+
* console.log(preset.description); // "Balanced experience for most players"
|
|
248
|
+
*
|
|
249
|
+
* // Use preset with RhythmGenerator
|
|
250
|
+
* const generator = new RhythmGenerator({
|
|
251
|
+
* ...preset,
|
|
252
|
+
* minimumTransientIntensity: 0.2,
|
|
253
|
+
* });
|
|
254
|
+
*
|
|
255
|
+
* // List all available presets
|
|
256
|
+
* const presetNames = getRhythmPresetNames();
|
|
257
|
+
* console.log('Available presets:', presetNames); // ['casual', 'standard', 'challenge', 'bass']
|
|
258
|
+
*
|
|
259
|
+
* // Select bass-focused preset for rhythm games
|
|
260
|
+
* const bassPreset = getRhythmPreset('bass');
|
|
261
|
+
* const bassGenerator = new RhythmGenerator(bassPreset);
|
|
262
|
+
* ```
|
|
263
|
+
*/
|
|
264
|
+
export declare const RHYTHM_PRESETS: Record<RhythmPresetName, RhythmPresetConfig>;
|
|
265
|
+
/**
|
|
266
|
+
* Get a preset configuration by name
|
|
267
|
+
*
|
|
268
|
+
* @param name - The preset name to retrieve
|
|
269
|
+
* @returns The preset configuration, or undefined if not found
|
|
270
|
+
*/
|
|
271
|
+
export declare function getRhythmPreset(name: RhythmPresetName): RhythmPresetConfig | undefined;
|
|
272
|
+
/**
|
|
273
|
+
* Get all available preset names
|
|
274
|
+
*
|
|
275
|
+
* @returns Array of preset names
|
|
276
|
+
*/
|
|
277
|
+
export declare function getRhythmPresetNames(): RhythmPresetName[];
|
|
278
|
+
/**
|
|
279
|
+
* Internal type for resolved options (seed remains optional)
|
|
280
|
+
*/
|
|
281
|
+
type ResolvedOptions = {
|
|
282
|
+
difficulty: DifficultyPreset;
|
|
283
|
+
outputMode: OutputMode;
|
|
284
|
+
measureStartOffset: number;
|
|
285
|
+
minimumTransientIntensity: number;
|
|
286
|
+
transientConfig: BandTransientConfigOverrides | undefined;
|
|
287
|
+
densityValidation?: DensityValidationConfig;
|
|
288
|
+
scoringConfig?: Partial<StreamScorerConfig>;
|
|
289
|
+
phraseAnalyzerConfig?: Partial<PhraseAnalyzerConfig>;
|
|
290
|
+
tempoQuantizationConfig?: TempoAwareQuantizerConfig;
|
|
291
|
+
rhythmicBalanceConfig: RhythmicBalanceConfig;
|
|
292
|
+
seed: string | undefined;
|
|
293
|
+
verbose: boolean;
|
|
294
|
+
enableCache: boolean;
|
|
295
|
+
cacheMaxAge: number;
|
|
296
|
+
skipDifficultyVariants: boolean;
|
|
297
|
+
};
|
|
298
|
+
/**
|
|
299
|
+
* Main orchestrator for procedural rhythm generation.
|
|
300
|
+
*
|
|
301
|
+
* Takes an audio buffer and a beat map, then generates:
|
|
302
|
+
* - 3 difficulty variants (easy/medium/hard)
|
|
303
|
+
* - Individual band streams (low/mid/high)
|
|
304
|
+
* - A composite stream combining the best sections from each band
|
|
305
|
+
* - Rich analysis results and metadata
|
|
306
|
+
*
|
|
307
|
+
* ## Usage
|
|
308
|
+
*
|
|
309
|
+
* ```typescript
|
|
310
|
+
* const generator = new RhythmGenerator({
|
|
311
|
+
* difficulty: 'medium',
|
|
312
|
+
* outputMode: 'composite',
|
|
313
|
+
* minimumTransientIntensity: 0.3,
|
|
314
|
+
* });
|
|
315
|
+
*
|
|
316
|
+
* const result = await generator.generate(audioBuffer, unifiedBeatMap, (phase, progress, message) => {
|
|
317
|
+
* console.log(`[${phase}] ${Math.round(progress * 100)}%: ${message}`);
|
|
318
|
+
* });
|
|
319
|
+
*
|
|
320
|
+
* // Access difficulty variants
|
|
321
|
+
* const easyBeats = result.difficultyVariants.easy.beats;
|
|
322
|
+
* const mediumBeats = result.difficultyVariants.medium.beats;
|
|
323
|
+
* const hardBeats = result.difficultyVariants.hard.beats;
|
|
324
|
+
*
|
|
325
|
+
* // Access individual band streams
|
|
326
|
+
* const lowBandBeats = result.bandStreams.low.beats;
|
|
327
|
+
*
|
|
328
|
+
* // Access analysis results
|
|
329
|
+
* const phrases = result.analysis.phraseAnalysis.phrases;
|
|
330
|
+
* const density = result.analysis.densityAnalysis.combinedMetrics;
|
|
331
|
+
* ```
|
|
332
|
+
*/
|
|
333
|
+
export declare class RhythmGenerator {
|
|
334
|
+
private options;
|
|
335
|
+
private multiBandAnalyzer;
|
|
336
|
+
private transientDetector;
|
|
337
|
+
private rhythmQuantizer;
|
|
338
|
+
private phraseAnalyzer;
|
|
339
|
+
private densityAnalyzer;
|
|
340
|
+
private streamScorer;
|
|
341
|
+
private compositeGenerator;
|
|
342
|
+
private variantGenerator;
|
|
343
|
+
private tempoAwareQuantizer;
|
|
344
|
+
private rhythmicBalancer;
|
|
345
|
+
private cache;
|
|
346
|
+
private cacheHits;
|
|
347
|
+
private cacheMisses;
|
|
348
|
+
/**
|
|
349
|
+
* Create a new RhythmGenerator
|
|
350
|
+
*
|
|
351
|
+
* @param options - Configuration options (all optional, defaults provided)
|
|
352
|
+
*/
|
|
353
|
+
constructor(options?: RhythmGenerationOptions);
|
|
354
|
+
/**
|
|
355
|
+
* Generate a cache key for a specific phase and inputs
|
|
356
|
+
*/
|
|
357
|
+
private generateCacheKey;
|
|
358
|
+
/**
|
|
359
|
+
* Create a config fingerprint for cache invalidation
|
|
360
|
+
*/
|
|
361
|
+
private createConfigFingerprint;
|
|
362
|
+
/**
|
|
363
|
+
* Get a cached result if available and not expired
|
|
364
|
+
*/
|
|
365
|
+
private getFromCache;
|
|
366
|
+
/**
|
|
367
|
+
* Store a result in the cache
|
|
368
|
+
*/
|
|
369
|
+
private setCache;
|
|
370
|
+
/**
|
|
371
|
+
* Clear all cached results
|
|
372
|
+
*/
|
|
373
|
+
clearCache(): void;
|
|
374
|
+
/**
|
|
375
|
+
* Clear expired cache entries
|
|
376
|
+
*/
|
|
377
|
+
pruneExpiredCache(): void;
|
|
378
|
+
/**
|
|
379
|
+
* Get cache statistics
|
|
380
|
+
*/
|
|
381
|
+
getCacheStats(): CacheStats;
|
|
382
|
+
/**
|
|
383
|
+
* Check if a phase result is cached for the given audio ID
|
|
384
|
+
*/
|
|
385
|
+
isCached(audioId: string, phase: CachePhase): boolean;
|
|
386
|
+
/**
|
|
387
|
+
* Get the current configuration
|
|
388
|
+
*
|
|
389
|
+
* @returns The current configuration
|
|
390
|
+
*/
|
|
391
|
+
getOptions(): ResolvedOptions;
|
|
392
|
+
/**
|
|
393
|
+
* Generate rhythm patterns from audio and beat map
|
|
394
|
+
*
|
|
395
|
+
* This is the main entry point that orchestrates all phases of the pipeline.
|
|
396
|
+
* Results are cached by audioId and configuration for efficient reuse.
|
|
397
|
+
*
|
|
398
|
+
* @param audioBuffer - Web Audio API AudioBuffer to analyze
|
|
399
|
+
* @param unifiedBeatMap - Unified beat map from beat detection
|
|
400
|
+
* @param signal - Optional AbortSignal for cancellation
|
|
401
|
+
* @param onProgress - Optional progress callback
|
|
402
|
+
* @returns Complete rhythm generation result
|
|
403
|
+
* @throws {DOMException} If the operation is cancelled via signal
|
|
404
|
+
*/
|
|
405
|
+
generate(audioBuffer: AudioBuffer, unifiedBeatMap: UnifiedBeatMap, signal?: AbortSignal, onProgress?: ProgressCallback): Promise<GeneratedRhythm>;
|
|
406
|
+
/**
|
|
407
|
+
* Phase 1.1: Multi-band audio analysis
|
|
408
|
+
*
|
|
409
|
+
* Splits audio into frequency bands and analyzes each for transients.
|
|
410
|
+
*
|
|
411
|
+
* @param audioBuffer - Audio buffer to analyze
|
|
412
|
+
* @returns Multi-band analysis result
|
|
413
|
+
*/
|
|
414
|
+
analyzeMultiBand(audioBuffer: AudioBuffer): MultiBandResult;
|
|
415
|
+
/**
|
|
416
|
+
* Phase 1.2: Transient detection
|
|
417
|
+
*
|
|
418
|
+
* Detects transients in each frequency band using band-specific strategies.
|
|
419
|
+
*
|
|
420
|
+
* @param multiBandResult - Multi-band analysis from Phase 1.1
|
|
421
|
+
* @returns Transient analysis with per-band results
|
|
422
|
+
*/
|
|
423
|
+
detectTransients(multiBandResult: MultiBandResult): TransientAnalysis;
|
|
424
|
+
/**
|
|
425
|
+
* Phase 1.3: Rhythm quantization with BPM-aware grid decisions
|
|
426
|
+
*
|
|
427
|
+
* Quantizes transients to the beat map grid with density validation.
|
|
428
|
+
* When tempo-aware quantization is enabled (default), BPM-based rules
|
|
429
|
+
* constrain grid decisions before quantization (e.g., restricting 16th
|
|
430
|
+
* notes at high BPMs).
|
|
431
|
+
*
|
|
432
|
+
* Flow: density validation → grid decisions (BPM-aware) → quantize → deduplicate
|
|
433
|
+
*
|
|
434
|
+
* @param transientAnalysis - Transient analysis from Phase 1.2
|
|
435
|
+
* @param unifiedBeatMap - Unified beat map
|
|
436
|
+
* @returns Quantized band streams
|
|
437
|
+
*/
|
|
438
|
+
quantizeTransients(transientAnalysis: TransientAnalysis, unifiedBeatMap: UnifiedBeatMap): QuantizedBandStreams;
|
|
439
|
+
/**
|
|
440
|
+
* Phase 2.1: Phrase analysis
|
|
441
|
+
*
|
|
442
|
+
* Detects rhythmic phrases in each band stream.
|
|
443
|
+
*
|
|
444
|
+
* @param streams - Quantized band streams
|
|
445
|
+
* @returns Phrase analysis result
|
|
446
|
+
*/
|
|
447
|
+
analyzePhrases(streams: {
|
|
448
|
+
low: GeneratedRhythmMap;
|
|
449
|
+
mid: GeneratedRhythmMap;
|
|
450
|
+
high: GeneratedRhythmMap;
|
|
451
|
+
}): PhraseAnalysisResult;
|
|
452
|
+
/**
|
|
453
|
+
* Phase 2.2: Density analysis
|
|
454
|
+
*
|
|
455
|
+
* Analyzes density and determines natural difficulty.
|
|
456
|
+
*
|
|
457
|
+
* @param quantizedStreams - Quantized band streams
|
|
458
|
+
* @returns Density analysis result
|
|
459
|
+
*/
|
|
460
|
+
analyzeDensity(quantizedStreams: QuantizedBandStreams, bpm: number, trackDurationSeconds?: number): DensityAnalysisResult;
|
|
461
|
+
/**
|
|
462
|
+
* Phase 3.1: Stream scoring
|
|
463
|
+
*
|
|
464
|
+
* Scores each band stream section for rhythmic interest.
|
|
465
|
+
*
|
|
466
|
+
* @param streams - Quantized band streams
|
|
467
|
+
* @param phraseAnalysis - Phrase analysis from Phase 2.1
|
|
468
|
+
* @param densityAnalysis - Density analysis from Phase 2.2
|
|
469
|
+
* @param bpm - BPM for tempo-aware density scoring
|
|
470
|
+
* @returns Stream scoring result
|
|
471
|
+
*/
|
|
472
|
+
scoreStreams(streams: QuantizedBandStreams, phraseAnalysis: PhraseAnalysisResult, densityAnalysis: DensityAnalysisResult, bpm: number): StreamScoringResult;
|
|
473
|
+
/**
|
|
474
|
+
* Phase 3.2: Composite stream generation
|
|
475
|
+
*
|
|
476
|
+
* Creates a composite stream from the highest-scoring sections.
|
|
477
|
+
*
|
|
478
|
+
* @param streams - Quantized band streams
|
|
479
|
+
* @param scoringResult - Scoring result from Phase 3.1
|
|
480
|
+
* @param densityAnalysis - Density analysis from Phase 2.2
|
|
481
|
+
* @returns Composite stream
|
|
482
|
+
*/
|
|
483
|
+
generateComposite(streams: QuantizedBandStreams, scoringResult: StreamScoringResult, densityAnalysis: DensityAnalysisResult, trackDurationSeconds?: number): CompositeStream;
|
|
484
|
+
/**
|
|
485
|
+
* Phase 3.3: Difficulty variant generation
|
|
486
|
+
*
|
|
487
|
+
* Generates easy/medium/hard variants from the composite stream.
|
|
488
|
+
*
|
|
489
|
+
* @param composite - Composite stream from Phase 3.2
|
|
490
|
+
* @param phraseAnalysis - Phrase analysis from Phase 2.1
|
|
491
|
+
* @param quantizationResult - Quantization result for grid decisions
|
|
492
|
+
* @returns Difficulty variants
|
|
493
|
+
*/
|
|
494
|
+
generateDifficultyVariants(composite: CompositeStream, phraseAnalysis: PhraseAnalysisResult, quantizationResult: QuantizedBandStreams, unifiedBeatMap: UnifiedBeatMap): {
|
|
495
|
+
easy: DifficultyVariant;
|
|
496
|
+
medium: DifficultyVariant;
|
|
497
|
+
hard: DifficultyVariant;
|
|
498
|
+
natural: DifficultyVariant;
|
|
499
|
+
};
|
|
500
|
+
/**
|
|
501
|
+
* Collect grid decisions from all band streams
|
|
502
|
+
*
|
|
503
|
+
* Merges grid decisions from all bands into a single map.
|
|
504
|
+
* When multiple bands have decisions for the same beat index,
|
|
505
|
+
* the decision with higher confidence is used.
|
|
506
|
+
*/
|
|
507
|
+
private collectGridDecisions;
|
|
508
|
+
/**
|
|
509
|
+
* Quick generate rhythm patterns with default options
|
|
510
|
+
*
|
|
511
|
+
* Convenience method for simple use cases.
|
|
512
|
+
*
|
|
513
|
+
* @param audioBuffer - Audio buffer to analyze
|
|
514
|
+
* @param unifiedBeatMap - Unified beat map
|
|
515
|
+
* @returns Generated rhythm result
|
|
516
|
+
*/
|
|
517
|
+
static quickGenerate(audioBuffer: AudioBuffer, unifiedBeatMap: UnifiedBeatMap): Promise<GeneratedRhythm>;
|
|
518
|
+
/**
|
|
519
|
+
* Generate rhythm patterns for a specific difficulty
|
|
520
|
+
*
|
|
521
|
+
* Convenience method for generating a single difficulty variant.
|
|
522
|
+
* For custom density generation, use LevelGenerator.generateAtDensity() instead.
|
|
523
|
+
*
|
|
524
|
+
* @param audioBuffer - Audio buffer to analyze
|
|
525
|
+
* @param unifiedBeatMap - Unified beat map
|
|
526
|
+
* @param difficulty - Target difficulty level (preset only, not 'custom')
|
|
527
|
+
* @returns Difficulty variant for the requested level
|
|
528
|
+
*/
|
|
529
|
+
static generateForDifficulty(audioBuffer: AudioBuffer, unifiedBeatMap: UnifiedBeatMap, difficulty: PresetDifficultyLevel): Promise<DifficultyVariant>;
|
|
530
|
+
/**
|
|
531
|
+
* Convert a GeneratedRhythm to JSON string
|
|
532
|
+
*
|
|
533
|
+
* Serializes all data including difficulty variants, band streams, composite,
|
|
534
|
+
* analysis results, and metadata.
|
|
535
|
+
*
|
|
536
|
+
* @param rhythm - Generated rhythm to serialize
|
|
537
|
+
* @returns JSON string
|
|
538
|
+
*/
|
|
539
|
+
static toJSON(rhythm: GeneratedRhythm): string;
|
|
540
|
+
/**
|
|
541
|
+
* Parse a GeneratedRhythm from JSON string
|
|
542
|
+
*
|
|
543
|
+
* @param jsonString - JSON string to parse
|
|
544
|
+
* @returns Generated rhythm object
|
|
545
|
+
*/
|
|
546
|
+
static fromJSON(jsonString: string): GeneratedRhythm;
|
|
547
|
+
/**
|
|
548
|
+
* Save a GeneratedRhythm to a file (Node.js only)
|
|
549
|
+
*
|
|
550
|
+
* @param rhythm - Generated rhythm to save
|
|
551
|
+
* @param filePath - Path to save to
|
|
552
|
+
*/
|
|
553
|
+
static saveToFile(rhythm: GeneratedRhythm, filePath: string): Promise<void>;
|
|
554
|
+
/**
|
|
555
|
+
* Load a GeneratedRhythm from a file (Node.js only)
|
|
556
|
+
*
|
|
557
|
+
* @param filePath - Path to load from
|
|
558
|
+
* @returns Generated rhythm object
|
|
559
|
+
*/
|
|
560
|
+
static loadFromFile(filePath: string): Promise<GeneratedRhythm>;
|
|
561
|
+
private static serializeDifficultyVariant;
|
|
562
|
+
private static deserializeDifficultyVariant;
|
|
563
|
+
private static serializeVariantBeat;
|
|
564
|
+
private static deserializeVariantBeat;
|
|
565
|
+
private static serializeGeneratedRhythmMap;
|
|
566
|
+
private static deserializeGeneratedRhythmMap;
|
|
567
|
+
private static serializeGeneratedBeat;
|
|
568
|
+
private static deserializeGeneratedBeat;
|
|
569
|
+
private static serializeCompositeStream;
|
|
570
|
+
private static deserializeCompositeStream;
|
|
571
|
+
private static serializeCompositeBeat;
|
|
572
|
+
private static deserializeCompositeBeat;
|
|
573
|
+
private static serializeTransientAnalysis;
|
|
574
|
+
private static deserializeTransientAnalysis;
|
|
575
|
+
private static serializeTransientResult;
|
|
576
|
+
private static deserializeTransientResult;
|
|
577
|
+
private static serializeQuantizedBandStreams;
|
|
578
|
+
private static serializeDensityValidationResult;
|
|
579
|
+
private static serializeBandDensityValidationResult;
|
|
580
|
+
private static deserializeQuantizedBandStreams;
|
|
581
|
+
private static deserializeDensityValidationResult;
|
|
582
|
+
private static deserializeBandDensityValidationResult;
|
|
583
|
+
private static serializePhraseAnalysisResult;
|
|
584
|
+
private static deserializePhraseAnalysisResult;
|
|
585
|
+
private static serializeRhythmicPhrase;
|
|
586
|
+
private static deserializeRhythmicPhrase;
|
|
587
|
+
private static serializeBandPhraseAnalysis;
|
|
588
|
+
private static deserializeBandPhraseAnalysis;
|
|
589
|
+
private static serializeDensityAnalysisResult;
|
|
590
|
+
private static deserializeDensityAnalysisResult;
|
|
591
|
+
private static serializeBandDensityMetrics;
|
|
592
|
+
private static deserializeBandDensityMetrics;
|
|
593
|
+
private static serializeStreamScoringResult;
|
|
594
|
+
private static deserializeStreamScoringResult;
|
|
595
|
+
}
|
|
596
|
+
export {};
|
|
597
|
+
//# sourceMappingURL=RhythmGenerator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RhythmGenerator.d.ts","sourceRoot":"","sources":["../../../src/core/generation/RhythmGenerator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAC3F,OAAO,EAAqB,KAAK,iBAAiB,EAAwB,KAAK,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AAC3J,OAAO,EAGH,KAAK,yBAAyB,EACjC,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAGH,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EAGvB,KAAK,uBAAuB,EAG/B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAkB,KAAK,oBAAoB,EAAuE,KAAK,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC/L,OAAO,EAAmB,KAAK,qBAAqB,EAAgF,MAAM,qCAAqC,CAAC;AAChL,OAAO,EAAgB,KAAK,mBAAmB,EAA8D,KAAK,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAC/K,OAAO,EAEH,KAAK,eAAe,EAEvB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAEH,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAI7B,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAEH,KAAK,qBAAqB,EAC1B,KAAK,YAAY,EAEpB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAM5E;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AAE1C;;GAEG;AACH,MAAM,MAAM,UAAU,GAChB,WAAW,GACX,YAAY,GACZ,cAAc,GACd,SAAS,GACT,SAAS,GACT,SAAS,GACT,WAAW,GACX,UAAU,CAAC;AAcjB;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACpC,oEAAoE;IACpE,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAE9B,mEAAmE;IACnE,UAAU,CAAC,EAAE,UAAU,CAAC;IAExB,oEAAoE;IACpE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,6DAA6D;IAC7D,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAEnC;;;;;;;;;;OAUG;IACH,eAAe,CAAC,EAAE,4BAA4B,CAAC;IAE/C;;;;;;;;;;;;;OAaG;IACH,iBAAiB,CAAC,EAAE,uBAAuB,CAAC;IAE5C;;;;;;;;;;;OAWG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAE5C;;;;;;;;;;OAUG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAErD;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,yBAAyB,CAAC;IAEpD;;;;;;;;;;;;;;;;OAgBG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAEvD,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,2DAA2D;IAC3D,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,wEAAwE;IACxE,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;OAKG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,aAAa,EAAE,MAAM,CAAC;IACtB,sCAAsC;IACtC,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,kCAAkC;IAClC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAE1F;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,4HAA4H;IAC5H,kBAAkB,EAAE;QAChB,IAAI,EAAE,iBAAiB,CAAC;QACxB,MAAM,EAAE,iBAAiB,CAAC;QAC1B,IAAI,EAAE,iBAAiB,CAAC;QACxB,OAAO,EAAE,iBAAiB,CAAC;KAC9B,GAAG,MAAM,CAAC,qBAAqB,EAAE,iBAAiB,CAAC,GAAG,IAAI,CAAC;IAE5D,2DAA2D;IAC3D,WAAW,EAAE;QACT,GAAG,EAAE,kBAAkB,CAAC;QACxB,GAAG,EAAE,kBAAkB,CAAC;QACxB,IAAI,EAAE,kBAAkB,CAAC;KAC5B,CAAC;IAEF,+CAA+C;IAC/C,SAAS,EAAE,eAAe,CAAC;IAE3B,uBAAuB;IACvB,QAAQ,EAAE;QACN,iBAAiB,EAAE,iBAAiB,CAAC;QACrC,kBAAkB,EAAE,oBAAoB,CAAC;QACzC,cAAc,EAAE,oBAAoB,CAAC;QACrC,eAAe,EAAE,qBAAqB,CAAC;QACvC,aAAa,EAAE,mBAAmB,CAAC;KACtC,CAAC;IAEF,oCAAoC;IACpC,QAAQ,EAAE,cAAc,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,wCAAwC;IACxC,UAAU,EAAE,gBAAgB,CAAC;IAE7B,+BAA+B;IAC/B,aAAa,EAAE,IAAI,EAAE,CAAC;IAEtB,gCAAgC;IAChC,kBAAkB,EAAE,MAAM,CAAC;IAE3B,iDAAiD;IACjD,6BAA6B,EAAE,MAAM,CAAC;IAEtC,2CAA2C;IAC3C,wBAAwB,EAAE,MAAM,CAAC;IAEjC,iCAAiC;IACjC,eAAe,EAAE,MAAM,CAAC;IAExB,uCAAuC;IACvC,cAAc,EAAE,MAAM,CAAC;IAEvB,0CAA0C;IAC1C,iBAAiB,EAAE,eAAe,CAAC;IAEnC,wCAAwC;IACxC,gBAAgB,EAAE,eAAe,CAAC;IAElC,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IAEjB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IAEnB,kDAAkD;IAClD,YAAY,CAAC,EAAE,YAAY,CAAC;CAC/B;AAqYD;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,GAAG,MAAM,CAAC;AAE5E;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,gDAAgD;IAChD,UAAU,EAAE,gBAAgB,CAAC;IAE7B,4CAA4C;IAC5C,UAAU,EAAE,UAAU,CAAC;IAEvB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,gBAAgB,EAAE,kBAAkB,CAqBvE,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,gBAAgB,GAAG,kBAAkB,GAAG,SAAS,CAEtF;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,gBAAgB,EAAE,CAEzD;AAMD;;GAEG;AACH,KAAK,eAAe,GAAG;IACnB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,UAAU,EAAE,UAAU,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,yBAAyB,EAAE,MAAM,CAAC;IAClC,eAAe,EAAE,4BAA4B,GAAG,SAAS,CAAC;IAC1D,iBAAiB,CAAC,EAAE,uBAAuB,CAAC;IAC5C,aAAa,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC5C,oBAAoB,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACrD,uBAAuB,CAAC,EAAE,yBAAyB,CAAC;IACpD,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,sBAAsB,EAAE,OAAO,CAAC;CACnC,CAAC;AAsBF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,qBAAa,eAAe;IACxB,OAAO,CAAC,OAAO,CAAkB;IAGjC,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,kBAAkB,CAA2B;IACrD,OAAO,CAAC,gBAAgB,CAA6B;IACrD,OAAO,CAAC,mBAAmB,CAAsB;IACjD,OAAO,CAAC,gBAAgB,CAAmB;IAG3C,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,WAAW,CAAa;IAEhC;;;;OAIG;gBACS,OAAO,GAAE,uBAA4B;IAoDjD;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAQxB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAU/B;;OAEG;IACH,OAAO,CAAC,YAAY;IA0BpB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAgBhB;;OAEG;IACH,UAAU,IAAI,IAAI;IAMlB;;OAEG;IACH,iBAAiB,IAAI,IAAI;IASzB;;OAEG;IACH,aAAa,IAAI,UAAU;IAkC3B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO;IAMrD;;;;OAIG;IACH,UAAU,IAAI,eAAe;IAI7B;;;;;;;;;;;;OAYG;IACG,QAAQ,CACV,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,cAAc,EAC9B,MAAM,CAAC,EAAE,WAAW,EACpB,UAAU,CAAC,EAAE,gBAAgB,GAC9B,OAAO,CAAC,eAAe,CAAC;IAwI3B;;;;;;;OAOG;IACH,gBAAgB,CAAC,WAAW,EAAE,WAAW,GAAG,eAAe;IAI3D;;;;;;;OAOG;IACH,gBAAgB,CAAC,eAAe,EAAE,eAAe,GAAG,iBAAiB;IAIrE;;;;;;;;;;;;;OAaG;IACH,kBAAkB,CACd,iBAAiB,EAAE,iBAAiB,EACpC,cAAc,EAAE,cAAc,GAC/B,oBAAoB;IASvB;;;;;;;OAOG;IACH,cAAc,CAAC,OAAO,EAAE;QACpB,GAAG,EAAE,kBAAkB,CAAC;QACxB,GAAG,EAAE,kBAAkB,CAAC;QACxB,IAAI,EAAE,kBAAkB,CAAC;KAC5B,GAAG,oBAAoB;IAIxB;;;;;;;OAOG;IACH,cAAc,CAAC,gBAAgB,EAAE,oBAAoB,EAAE,GAAG,EAAE,MAAM,EAAE,oBAAoB,CAAC,EAAE,MAAM,GAAG,qBAAqB;IAIzH;;;;;;;;;;OAUG;IACH,YAAY,CACR,OAAO,EAAE,oBAAoB,EAC7B,cAAc,EAAE,oBAAoB,EACpC,eAAe,EAAE,qBAAqB,EACtC,GAAG,EAAE,MAAM,GACZ,mBAAmB;IAKtB;;;;;;;;;OASG;IACH,iBAAiB,CACb,OAAO,EAAE,oBAAoB,EAC7B,aAAa,EAAE,mBAAmB,EAClC,eAAe,EAAE,qBAAqB,EACtC,oBAAoB,CAAC,EAAE,MAAM,GAC9B,eAAe;IAIlB;;;;;;;;;OASG;IACH,0BAA0B,CACtB,SAAS,EAAE,eAAe,EAC1B,cAAc,EAAE,oBAAoB,EACpC,kBAAkB,EAAE,oBAAoB,EACxC,cAAc,EAAE,cAAc,GAC/B;QAAE,IAAI,EAAE,iBAAiB,CAAC;QAAC,MAAM,EAAE,iBAAiB,CAAC;QAAC,IAAI,EAAE,iBAAiB,CAAC;QAAC,OAAO,EAAE,iBAAiB,CAAA;KAAE;IAO9G;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAuB5B;;;;;;;;OAQG;WACU,aAAa,CACtB,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,cAAc,GAC/B,OAAO,CAAC,eAAe,CAAC;IAK3B;;;;;;;;;;OAUG;WACU,qBAAqB,CAC9B,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,qBAAqB,GAClC,OAAO,CAAC,iBAAiB,CAAC;IAU7B;;;;;;;;OAQG;IACH,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM;IA6B9C;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe;IA6BpD;;;;;OAKG;WACU,UAAU,CAAC,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYjF;;;;;OAKG;WACU,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAgBrE,OAAO,CAAC,MAAM,CAAC,0BAA0B;IAazC,OAAO,CAAC,MAAM,CAAC,4BAA4B;IAa3C,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAYnC,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAarC,OAAO,CAAC,MAAM,CAAC,2BAA2B;IAS1C,OAAO,CAAC,MAAM,CAAC,6BAA6B;IAS5C,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAWrC,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAYvC,OAAO,CAAC,MAAM,CAAC,wBAAwB;IASvC,OAAO,CAAC,MAAM,CAAC,0BAA0B;IASzC,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAarC,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAcvC,OAAO,CAAC,MAAM,CAAC,0BAA0B;IAmBzC,OAAO,CAAC,MAAM,CAAC,4BAA4B;IAwB3C,OAAO,CAAC,MAAM,CAAC,wBAAwB;IASvC,OAAO,CAAC,MAAM,CAAC,0BAA0B;IAUzC,OAAO,CAAC,MAAM,CAAC,6BAA6B;IAe5C,OAAO,CAAC,MAAM,CAAC,gCAAgC;IAa/C,OAAO,CAAC,MAAM,CAAC,oCAAoC;IAYnD,OAAO,CAAC,MAAM,CAAC,+BAA+B;IAe9C,OAAO,CAAC,MAAM,CAAC,kCAAkC;IAajD,OAAO,CAAC,MAAM,CAAC,sCAAsC;IAarD,OAAO,CAAC,MAAM,CAAC,6BAA6B;IAoB5C,OAAO,CAAC,MAAM,CAAC,+BAA+B;IAyB9C,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAYtC,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAaxC,OAAO,CAAC,MAAM,CAAC,2BAA2B;IAW1C,OAAO,CAAC,MAAM,CAAC,6BAA6B;IAc5C,OAAO,CAAC,MAAM,CAAC,8BAA8B;IAY7C,OAAO,CAAC,MAAM,CAAC,gCAAgC;IAa/C,OAAO,CAAC,MAAM,CAAC,2BAA2B;IAc1C,OAAO,CAAC,MAAM,CAAC,6BAA6B;IAe5C,OAAO,CAAC,MAAM,CAAC,4BAA4B;IAS3C,OAAO,CAAC,MAAM,CAAC,8BAA8B;CAShD"}
|