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.
Files changed (345) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +352 -0
  3. package/dist/__vite-browser-external-DYxpcVy9.js +4 -0
  4. package/dist/constants/DefaultClasses.d.ts +46 -0
  5. package/dist/constants/DefaultClasses.d.ts.map +1 -0
  6. package/dist/constants/DefaultEnchantments.d.ts +337 -0
  7. package/dist/constants/DefaultEnchantments.d.ts.map +1 -0
  8. package/dist/constants/DefaultEnemies.d.ts +83 -0
  9. package/dist/constants/DefaultEnemies.d.ts.map +1 -0
  10. package/dist/constants/DefaultEquipment.d.ts +23 -0
  11. package/dist/constants/DefaultEquipment.d.ts.map +1 -0
  12. package/dist/constants/DefaultFeatures.d.ts +22 -0
  13. package/dist/constants/DefaultFeatures.d.ts.map +1 -0
  14. package/dist/constants/DefaultRaces.d.ts +102 -0
  15. package/dist/constants/DefaultRaces.d.ts.map +1 -0
  16. package/dist/constants/DefaultSkills.d.ts +26 -0
  17. package/dist/constants/DefaultSkills.d.ts.map +1 -0
  18. package/dist/constants/DefaultSpells.d.ts +41 -0
  19. package/dist/constants/DefaultSpells.d.ts.map +1 -0
  20. package/dist/constants/EncounterBalance.d.ts +208 -0
  21. package/dist/constants/EncounterBalance.d.ts.map +1 -0
  22. package/dist/constants/EnemyEquipment.d.ts +71 -0
  23. package/dist/constants/EnemyEquipment.d.ts.map +1 -0
  24. package/dist/constants/EnemyRarity.d.ts +79 -0
  25. package/dist/constants/EnemyRarity.d.ts.map +1 -0
  26. package/dist/constants/EnemyTemplates/Construct.d.ts +63 -0
  27. package/dist/constants/EnemyTemplates/Construct.d.ts.map +1 -0
  28. package/dist/constants/EnemyTemplates/Dragon.d.ts +68 -0
  29. package/dist/constants/EnemyTemplates/Dragon.d.ts.map +1 -0
  30. package/dist/constants/EnemyTemplates/Elemental.d.ts +64 -0
  31. package/dist/constants/EnemyTemplates/Elemental.d.ts.map +1 -0
  32. package/dist/constants/EnemyTemplates/Fiend.d.ts +62 -0
  33. package/dist/constants/EnemyTemplates/Fiend.d.ts.map +1 -0
  34. package/dist/constants/EnemyTemplates/Monstrosity.d.ts +63 -0
  35. package/dist/constants/EnemyTemplates/Monstrosity.d.ts.map +1 -0
  36. package/dist/constants/EnemyTemplates/Undead.d.ts +61 -0
  37. package/dist/constants/EnemyTemplates/Undead.d.ts.map +1 -0
  38. package/dist/constants/ItemTemplates.d.ts +40 -0
  39. package/dist/constants/ItemTemplates.d.ts.map +1 -0
  40. package/dist/constants/MagicItems.d.ts +30 -0
  41. package/dist/constants/MagicItems.d.ts.map +1 -0
  42. package/dist/constants/SpellSlots.d.ts +30 -0
  43. package/dist/constants/SpellSlots.d.ts.map +1 -0
  44. package/dist/constants/StatScaling.d.ts +113 -0
  45. package/dist/constants/StatScaling.d.ts.map +1 -0
  46. package/dist/core/analysis/AudioAnalyzer.d.ts +599 -0
  47. package/dist/core/analysis/AudioAnalyzer.d.ts.map +1 -0
  48. package/dist/core/analysis/ColorExtractor.d.ts +64 -0
  49. package/dist/core/analysis/ColorExtractor.d.ts.map +1 -0
  50. package/dist/core/analysis/EssentiaPitchDetector.d.ts +282 -0
  51. package/dist/core/analysis/EssentiaPitchDetector.d.ts.map +1 -0
  52. package/dist/core/analysis/LevelSerializer.d.ts +265 -0
  53. package/dist/core/analysis/LevelSerializer.d.ts.map +1 -0
  54. package/dist/core/analysis/MelodyContourAnalyzer.d.ts +283 -0
  55. package/dist/core/analysis/MelodyContourAnalyzer.d.ts.map +1 -0
  56. package/dist/core/analysis/MultiBandAnalyzer.d.ts +214 -0
  57. package/dist/core/analysis/MultiBandAnalyzer.d.ts.map +1 -0
  58. package/dist/core/analysis/MusicClassifier.d.ts +524 -0
  59. package/dist/core/analysis/MusicClassifier.d.ts.map +1 -0
  60. package/dist/core/analysis/PitchAnalyzer.d.ts +266 -0
  61. package/dist/core/analysis/PitchAnalyzer.d.ts.map +1 -0
  62. package/dist/core/analysis/PitchDetector.d.ts +251 -0
  63. package/dist/core/analysis/PitchDetector.d.ts.map +1 -0
  64. package/dist/core/analysis/SpectrumScanner.d.ts +52 -0
  65. package/dist/core/analysis/SpectrumScanner.d.ts.map +1 -0
  66. package/dist/core/analysis/beat/BeatInterpolator.d.ts +477 -0
  67. package/dist/core/analysis/beat/BeatInterpolator.d.ts.map +1 -0
  68. package/dist/core/analysis/beat/BeatMapGenerator.d.ts +170 -0
  69. package/dist/core/analysis/beat/BeatMapGenerator.d.ts.map +1 -0
  70. package/dist/core/analysis/beat/BeatStream.d.ts +316 -0
  71. package/dist/core/analysis/beat/BeatStream.d.ts.map +1 -0
  72. package/dist/core/analysis/beat/BeatSubdivider.d.ts +205 -0
  73. package/dist/core/analysis/beat/BeatSubdivider.d.ts.map +1 -0
  74. package/dist/core/analysis/beat/BeatTracker.d.ts +137 -0
  75. package/dist/core/analysis/beat/BeatTracker.d.ts.map +1 -0
  76. package/dist/core/analysis/beat/CompositeStreamGenerator.d.ts +180 -0
  77. package/dist/core/analysis/beat/CompositeStreamGenerator.d.ts.map +1 -0
  78. package/dist/core/analysis/beat/DensityAnalyzer.d.ts +246 -0
  79. package/dist/core/analysis/beat/DensityAnalyzer.d.ts.map +1 -0
  80. package/dist/core/analysis/beat/DifficultyVariantGenerator.d.ts +1082 -0
  81. package/dist/core/analysis/beat/DifficultyVariantGenerator.d.ts.map +1 -0
  82. package/dist/core/analysis/beat/GrooveAnalyzer.d.ts +192 -0
  83. package/dist/core/analysis/beat/GrooveAnalyzer.d.ts.map +1 -0
  84. package/dist/core/analysis/beat/OnsetStrengthEnvelope.d.ts +133 -0
  85. package/dist/core/analysis/beat/OnsetStrengthEnvelope.d.ts.map +1 -0
  86. package/dist/core/analysis/beat/PhraseAnalyzer.d.ts +230 -0
  87. package/dist/core/analysis/beat/PhraseAnalyzer.d.ts.map +1 -0
  88. package/dist/core/analysis/beat/RhythmQuantizer.d.ts +399 -0
  89. package/dist/core/analysis/beat/RhythmQuantizer.d.ts.map +1 -0
  90. package/dist/core/analysis/beat/RhythmicBalancer.d.ts +262 -0
  91. package/dist/core/analysis/beat/RhythmicBalancer.d.ts.map +1 -0
  92. package/dist/core/analysis/beat/StreamScorer.d.ts +275 -0
  93. package/dist/core/analysis/beat/StreamScorer.d.ts.map +1 -0
  94. package/dist/core/analysis/beat/TempoAwareQuantizer.d.ts +256 -0
  95. package/dist/core/analysis/beat/TempoAwareQuantizer.d.ts.map +1 -0
  96. package/dist/core/analysis/beat/TempoDetector.d.ts +220 -0
  97. package/dist/core/analysis/beat/TempoDetector.d.ts.map +1 -0
  98. package/dist/core/analysis/beat/TransientDetector.d.ts +303 -0
  99. package/dist/core/analysis/beat/TransientDetector.d.ts.map +1 -0
  100. package/dist/core/analysis/beat/beatKeyHelpers.d.ts +180 -0
  101. package/dist/core/analysis/beat/beatKeyHelpers.d.ts.map +1 -0
  102. package/dist/core/analysis/beat/index.d.ts +41 -0
  103. package/dist/core/analysis/beat/index.d.ts.map +1 -0
  104. package/dist/core/analysis/beat/utils/audioUtils.d.ts +204 -0
  105. package/dist/core/analysis/beat/utils/audioUtils.d.ts.map +1 -0
  106. package/dist/core/analysis/beat/utils/beatInterpolationDebug.d.ts +404 -0
  107. package/dist/core/analysis/beat/utils/beatInterpolationDebug.d.ts.map +1 -0
  108. package/dist/core/analysis/beat/utils/subdivideBeatMap.d.ts +61 -0
  109. package/dist/core/analysis/beat/utils/subdivideBeatMap.d.ts.map +1 -0
  110. package/dist/core/analysis/beat/utils/unifyBeatMap.d.ts +33 -0
  111. package/dist/core/analysis/beat/utils/unifyBeatMap.d.ts.map +1 -0
  112. package/dist/core/analysis/index.d.ts +18 -0
  113. package/dist/core/analysis/index.d.ts.map +1 -0
  114. package/dist/core/combat/AI/AICombatRunner.d.ts +108 -0
  115. package/dist/core/combat/AI/AICombatRunner.d.ts.map +1 -0
  116. package/dist/core/combat/AI/CombatAI.d.ts +179 -0
  117. package/dist/core/combat/AI/CombatAI.d.ts.map +1 -0
  118. package/dist/core/combat/AI/CombatMetricsTracker.d.ts +30 -0
  119. package/dist/core/combat/AI/CombatMetricsTracker.d.ts.map +1 -0
  120. package/dist/core/combat/Analysis/BalanceValidator.d.ts +170 -0
  121. package/dist/core/combat/Analysis/BalanceValidator.d.ts.map +1 -0
  122. package/dist/core/combat/Analysis/ComparativeAnalyzer.d.ts +231 -0
  123. package/dist/core/combat/Analysis/ComparativeAnalyzer.d.ts.map +1 -0
  124. package/dist/core/combat/Analysis/DifficultyCalculator.d.ts +203 -0
  125. package/dist/core/combat/Analysis/DifficultyCalculator.d.ts.map +1 -0
  126. package/dist/core/combat/Analysis/ParameterSweep.d.ts +201 -0
  127. package/dist/core/combat/Analysis/ParameterSweep.d.ts.map +1 -0
  128. package/dist/core/combat/AttackResolver.d.ts +220 -0
  129. package/dist/core/combat/AttackResolver.d.ts.map +1 -0
  130. package/dist/core/combat/CombatEngine.d.ts +388 -0
  131. package/dist/core/combat/CombatEngine.d.ts.map +1 -0
  132. package/dist/core/combat/DiceRoller.d.ts +115 -0
  133. package/dist/core/combat/DiceRoller.d.ts.map +1 -0
  134. package/dist/core/combat/InitiativeRoller.d.ts +62 -0
  135. package/dist/core/combat/InitiativeRoller.d.ts.map +1 -0
  136. package/dist/core/combat/PartyAnalyzer.d.ts +215 -0
  137. package/dist/core/combat/PartyAnalyzer.d.ts.map +1 -0
  138. package/dist/core/combat/SeededDiceRoller.d.ts +120 -0
  139. package/dist/core/combat/SeededDiceRoller.d.ts.map +1 -0
  140. package/dist/core/combat/Simulation/CombatSimulator.d.ts +366 -0
  141. package/dist/core/combat/Simulation/CombatSimulator.d.ts.map +1 -0
  142. package/dist/core/combat/SpellCaster.d.ts +113 -0
  143. package/dist/core/combat/SpellCaster.d.ts.map +1 -0
  144. package/dist/core/config/index.d.ts +24 -0
  145. package/dist/core/config/index.d.ts.map +1 -0
  146. package/dist/core/config/progressionConfig.d.ts +73 -0
  147. package/dist/core/config/progressionConfig.d.ts.map +1 -0
  148. package/dist/core/config/sensorConfig.d.ts +134 -0
  149. package/dist/core/config/sensorConfig.d.ts.map +1 -0
  150. package/dist/core/equipment/BoxOpener.d.ts +175 -0
  151. package/dist/core/equipment/BoxOpener.d.ts.map +1 -0
  152. package/dist/core/equipment/EquipmentEffectApplier.d.ts +189 -0
  153. package/dist/core/equipment/EquipmentEffectApplier.d.ts.map +1 -0
  154. package/dist/core/equipment/EquipmentModifier.d.ts +327 -0
  155. package/dist/core/equipment/EquipmentModifier.d.ts.map +1 -0
  156. package/dist/core/equipment/EquipmentSpawnHelper.d.ts +246 -0
  157. package/dist/core/equipment/EquipmentSpawnHelper.d.ts.map +1 -0
  158. package/dist/core/equipment/EquipmentValidator.d.ts +173 -0
  159. package/dist/core/equipment/EquipmentValidator.d.ts.map +1 -0
  160. package/dist/core/extensions/ExtensionManager.d.ts +517 -0
  161. package/dist/core/extensions/ExtensionManager.d.ts.map +1 -0
  162. package/dist/core/extensions/WeightedSelector.d.ts +156 -0
  163. package/dist/core/extensions/WeightedSelector.d.ts.map +1 -0
  164. package/dist/core/extensions/index.d.ts +11 -0
  165. package/dist/core/extensions/index.d.ts.map +1 -0
  166. package/dist/core/extensions/initializeDefaults.d.ts +170 -0
  167. package/dist/core/extensions/initializeDefaults.d.ts.map +1 -0
  168. package/dist/core/features/FeatureEffectApplier.d.ts +102 -0
  169. package/dist/core/features/FeatureEffectApplier.d.ts.map +1 -0
  170. package/dist/core/features/FeatureQuery.d.ts +368 -0
  171. package/dist/core/features/FeatureQuery.d.ts.map +1 -0
  172. package/dist/core/features/FeatureTypes.d.ts +199 -0
  173. package/dist/core/features/FeatureTypes.d.ts.map +1 -0
  174. package/dist/core/features/FeatureValidator.d.ts +149 -0
  175. package/dist/core/features/FeatureValidator.d.ts.map +1 -0
  176. package/dist/core/features/index.d.ts +12 -0
  177. package/dist/core/features/index.d.ts.map +1 -0
  178. package/dist/core/generation/AbilityScoreCalculator.d.ts +83 -0
  179. package/dist/core/generation/AbilityScoreCalculator.d.ts.map +1 -0
  180. package/dist/core/generation/AppearanceGenerator.d.ts +32 -0
  181. package/dist/core/generation/AppearanceGenerator.d.ts.map +1 -0
  182. package/dist/core/generation/BeatConverter.d.ts +127 -0
  183. package/dist/core/generation/BeatConverter.d.ts.map +1 -0
  184. package/dist/core/generation/ButtonMapper.d.ts +346 -0
  185. package/dist/core/generation/ButtonMapper.d.ts.map +1 -0
  186. package/dist/core/generation/ButtonPatternLibrary.d.ts +92 -0
  187. package/dist/core/generation/ButtonPatternLibrary.d.ts.map +1 -0
  188. package/dist/core/generation/CRLevelConverter.d.ts +242 -0
  189. package/dist/core/generation/CRLevelConverter.d.ts.map +1 -0
  190. package/dist/core/generation/CharacterGenerator.d.ts +194 -0
  191. package/dist/core/generation/CharacterGenerator.d.ts.map +1 -0
  192. package/dist/core/generation/ClassSuggester.d.ts +184 -0
  193. package/dist/core/generation/ClassSuggester.d.ts.map +1 -0
  194. package/dist/core/generation/EnemyEquipmentGenerator.d.ts +151 -0
  195. package/dist/core/generation/EnemyEquipmentGenerator.d.ts.map +1 -0
  196. package/dist/core/generation/EnemyGenerator.d.ts +595 -0
  197. package/dist/core/generation/EnemyGenerator.d.ts.map +1 -0
  198. package/dist/core/generation/EquipmentGenerator.d.ts +204 -0
  199. package/dist/core/generation/EquipmentGenerator.d.ts.map +1 -0
  200. package/dist/core/generation/LegendaryGenerator.d.ts +213 -0
  201. package/dist/core/generation/LegendaryGenerator.d.ts.map +1 -0
  202. package/dist/core/generation/LevelGenerator.d.ts +390 -0
  203. package/dist/core/generation/LevelGenerator.d.ts.map +1 -0
  204. package/dist/core/generation/NamingEngine.d.ts +136 -0
  205. package/dist/core/generation/NamingEngine.d.ts.map +1 -0
  206. package/dist/core/generation/PitchBeatLinker.d.ts +150 -0
  207. package/dist/core/generation/PitchBeatLinker.d.ts.map +1 -0
  208. package/dist/core/generation/RaceSelector.d.ts +58 -0
  209. package/dist/core/generation/RaceSelector.d.ts.map +1 -0
  210. package/dist/core/generation/RhythmGenerator.d.ts +597 -0
  211. package/dist/core/generation/RhythmGenerator.d.ts.map +1 -0
  212. package/dist/core/generation/SkillAssigner.d.ts +78 -0
  213. package/dist/core/generation/SkillAssigner.d.ts.map +1 -0
  214. package/dist/core/generation/SpellManager.d.ts +132 -0
  215. package/dist/core/generation/SpellManager.d.ts.map +1 -0
  216. package/dist/core/generation/SpellcastingGenerator.d.ts +255 -0
  217. package/dist/core/generation/SpellcastingGenerator.d.ts.map +1 -0
  218. package/dist/core/generation/index.d.ts +41 -0
  219. package/dist/core/generation/index.d.ts.map +1 -0
  220. package/dist/core/parser/MetadataExtractor.d.ts +66 -0
  221. package/dist/core/parser/MetadataExtractor.d.ts.map +1 -0
  222. package/dist/core/parser/PlaylistParser.d.ts +45 -0
  223. package/dist/core/parser/PlaylistParser.d.ts.map +1 -0
  224. package/dist/core/playback/SubdivisionPlaybackController.d.ts +333 -0
  225. package/dist/core/playback/SubdivisionPlaybackController.d.ts.map +1 -0
  226. package/dist/core/playback/index.d.ts +5 -0
  227. package/dist/core/playback/index.d.ts.map +1 -0
  228. package/dist/core/progression/CharacterUpdater.d.ts +203 -0
  229. package/dist/core/progression/CharacterUpdater.d.ts.map +1 -0
  230. package/dist/core/progression/LevelUpProcessor.d.ts +234 -0
  231. package/dist/core/progression/LevelUpProcessor.d.ts.map +1 -0
  232. package/dist/core/progression/PrestigeSystem.d.ts +217 -0
  233. package/dist/core/progression/PrestigeSystem.d.ts.map +1 -0
  234. package/dist/core/progression/RhythmXPCalculator.d.ts +182 -0
  235. package/dist/core/progression/RhythmXPCalculator.d.ts.map +1 -0
  236. package/dist/core/progression/SessionTracker.d.ts +169 -0
  237. package/dist/core/progression/SessionTracker.d.ts.map +1 -0
  238. package/dist/core/progression/XPCalculator.d.ts +128 -0
  239. package/dist/core/progression/XPCalculator.d.ts.map +1 -0
  240. package/dist/core/progression/stat/StatIncreaseStrategy.d.ts +97 -0
  241. package/dist/core/progression/stat/StatIncreaseStrategy.d.ts.map +1 -0
  242. package/dist/core/progression/stat/StatManager.d.ts +179 -0
  243. package/dist/core/progression/stat/StatManager.d.ts.map +1 -0
  244. package/dist/core/sensors/EnvironmentalSensors.d.ts +301 -0
  245. package/dist/core/sensors/EnvironmentalSensors.d.ts.map +1 -0
  246. package/dist/core/sensors/GamingPlatformSensors.d.ts +162 -0
  247. package/dist/core/sensors/GamingPlatformSensors.d.ts.map +1 -0
  248. package/dist/core/sensors/GeolocationProvider.d.ts +156 -0
  249. package/dist/core/sensors/GeolocationProvider.d.ts.map +1 -0
  250. package/dist/core/sensors/MotionDetector.d.ts +58 -0
  251. package/dist/core/sensors/MotionDetector.d.ts.map +1 -0
  252. package/dist/core/sensors/SteamAPIClient.d.ts +108 -0
  253. package/dist/core/sensors/SteamAPIClient.d.ts.map +1 -0
  254. package/dist/core/sensors/WeatherAPIClient.d.ts +360 -0
  255. package/dist/core/sensors/WeatherAPIClient.d.ts.map +1 -0
  256. package/dist/core/sensors/schemas/weather.schema.d.ts +144 -0
  257. package/dist/core/sensors/schemas/weather.schema.d.ts.map +1 -0
  258. package/dist/core/skills/SkillQuery.d.ts +159 -0
  259. package/dist/core/skills/SkillQuery.d.ts.map +1 -0
  260. package/dist/core/skills/SkillTypes.d.ts +233 -0
  261. package/dist/core/skills/SkillTypes.d.ts.map +1 -0
  262. package/dist/core/skills/SkillValidator.d.ts +146 -0
  263. package/dist/core/skills/SkillValidator.d.ts.map +1 -0
  264. package/dist/core/skills/index.d.ts +11 -0
  265. package/dist/core/skills/index.d.ts.map +1 -0
  266. package/dist/core/spells/SpellQuery.d.ts +194 -0
  267. package/dist/core/spells/SpellQuery.d.ts.map +1 -0
  268. package/dist/core/spells/SpellTypes.d.ts +71 -0
  269. package/dist/core/spells/SpellTypes.d.ts.map +1 -0
  270. package/dist/core/spells/SpellValidator.d.ts +129 -0
  271. package/dist/core/spells/SpellValidator.d.ts.map +1 -0
  272. package/dist/core/spells/index.d.ts +11 -0
  273. package/dist/core/spells/index.d.ts.map +1 -0
  274. package/dist/core/types/AudioProfile.d.ts +143 -0
  275. package/dist/core/types/AudioProfile.d.ts.map +1 -0
  276. package/dist/core/types/BeatMap.d.ts +1825 -0
  277. package/dist/core/types/BeatMap.d.ts.map +1 -0
  278. package/dist/core/types/ButtonMapping.d.ts +345 -0
  279. package/dist/core/types/ButtonMapping.d.ts.map +1 -0
  280. package/dist/core/types/Character.d.ts +397 -0
  281. package/dist/core/types/Character.d.ts.map +1 -0
  282. package/dist/core/types/ChartedBeatMap.d.ts +169 -0
  283. package/dist/core/types/ChartedBeatMap.d.ts.map +1 -0
  284. package/dist/core/types/Combat.d.ts +268 -0
  285. package/dist/core/types/Combat.d.ts.map +1 -0
  286. package/dist/core/types/CombatAI.d.ts +143 -0
  287. package/dist/core/types/CombatAI.d.ts.map +1 -0
  288. package/dist/core/types/Enemy.d.ts +447 -0
  289. package/dist/core/types/Enemy.d.ts.map +1 -0
  290. package/dist/core/types/Environmental.d.ts +213 -0
  291. package/dist/core/types/Environmental.d.ts.map +1 -0
  292. package/dist/core/types/Equipment.d.ts +309 -0
  293. package/dist/core/types/Equipment.d.ts.map +1 -0
  294. package/dist/core/types/ISessionTracker.d.ts +48 -0
  295. package/dist/core/types/ISessionTracker.d.ts.map +1 -0
  296. package/dist/core/types/LevelExport.d.ts +366 -0
  297. package/dist/core/types/LevelExport.d.ts.map +1 -0
  298. package/dist/core/types/Playlist.d.ts +70 -0
  299. package/dist/core/types/Playlist.d.ts.map +1 -0
  300. package/dist/core/types/Prestige.d.ts +94 -0
  301. package/dist/core/types/Prestige.d.ts.map +1 -0
  302. package/dist/core/types/Progression.d.ts +214 -0
  303. package/dist/core/types/Progression.d.ts.map +1 -0
  304. package/dist/core/types/RhythmXP.d.ts +398 -0
  305. package/dist/core/types/RhythmXP.d.ts.map +1 -0
  306. package/dist/core/utils/AbilityConstants.d.ts +31 -0
  307. package/dist/core/utils/AbilityConstants.d.ts.map +1 -0
  308. package/dist/core/utils/EffectApplierUtils.d.ts +56 -0
  309. package/dist/core/utils/EffectApplierUtils.d.ts.map +1 -0
  310. package/dist/core/utils/ImageValidator.d.ts +66 -0
  311. package/dist/core/utils/ImageValidator.d.ts.map +1 -0
  312. package/dist/core/utils/PrerequisiteValidator.d.ts +88 -0
  313. package/dist/core/utils/PrerequisiteValidator.d.ts.map +1 -0
  314. package/dist/essentia-wasm.es-BUEnKUts.js +2990 -0
  315. package/dist/essentia.js-model.es-CGA0xotH.js +306 -0
  316. package/dist/index.d.ts +176 -0
  317. package/dist/index.d.ts.map +1 -0
  318. package/dist/playlist-data-engine.js +124 -0
  319. package/dist/playlist-data-engine.mjs +49251 -0
  320. package/dist/utils/EnchantmentLibrary.d.ts +378 -0
  321. package/dist/utils/EnchantmentLibrary.d.ts.map +1 -0
  322. package/dist/utils/arweaveGatewayManager.d.ts +485 -0
  323. package/dist/utils/arweaveGatewayManager.d.ts.map +1 -0
  324. package/dist/utils/arweaveUtils.d.ts +118 -0
  325. package/dist/utils/arweaveUtils.d.ts.map +1 -0
  326. package/dist/utils/constants.d.ts +439 -0
  327. package/dist/utils/constants.d.ts.map +1 -0
  328. package/dist/utils/equipmentConstants.d.ts +60 -0
  329. package/dist/utils/equipmentConstants.d.ts.map +1 -0
  330. package/dist/utils/hash.d.ts +33 -0
  331. package/dist/utils/hash.d.ts.map +1 -0
  332. package/dist/utils/logger.d.ts +192 -0
  333. package/dist/utils/logger.d.ts.map +1 -0
  334. package/dist/utils/magicItemExamples.d.ts +46 -0
  335. package/dist/utils/magicItemExamples.d.ts.map +1 -0
  336. package/dist/utils/playlistUtils.d.ts +149 -0
  337. package/dist/utils/playlistUtils.d.ts.map +1 -0
  338. package/dist/utils/random.d.ts +34 -0
  339. package/dist/utils/random.d.ts.map +1 -0
  340. package/dist/utils/sensorDashboard.d.ts +60 -0
  341. package/dist/utils/sensorDashboard.d.ts.map +1 -0
  342. package/dist/utils/validators.d.ts +189 -0
  343. package/dist/utils/validators.d.ts.map +1 -0
  344. package/dist/vite.svg +1 -0
  345. package/package.json +82 -0
@@ -0,0 +1,599 @@
1
+ /**
2
+ * Audio analysis using Web Audio API with "Triple Tap" strategy
3
+ *
4
+ * Provides three audio analysis modes:
5
+ * 1. Triple Tap Real-Time Analysis - Peak detection at playhead position
6
+ * 2. Full Song Timeline Analysis - Configurable data points across entire track
7
+ * 3. Beat Detection System - Ellis DP algorithm for rhythm game support
8
+ */
9
+ import type { AudioProfile, AudioTimelineEvent } from '../types/AudioProfile.js';
10
+ import type { BeatMap, BeatStreamOptions, BeatInterpolationOptions, InterpolatedBeatMap, DownbeatConfig, BeatMapGeneratorOptions } from '../types/BeatMap.js';
11
+ import { type ProgressCallback } from './beat/BeatMapGenerator.js';
12
+ import { BeatStream } from './beat/BeatStream.js';
13
+ import { type RhythmGenerationOptions, type GeneratedRhythm } from '../generation/RhythmGenerator.js';
14
+ import { type LevelGenerationOptions, type GeneratedLevel, type LevelProgressCallback, type LevelGenerationProgress } from '../generation/LevelGenerator.js';
15
+ import type { ControllerMode } from '../types/ButtonMapping.js';
16
+ export type { LevelGenerationOptions, GeneratedLevel, LevelProgressCallback, LevelGenerationProgress };
17
+ export type SamplingStrategy = {
18
+ type: 'interval';
19
+ intervalSeconds: number;
20
+ } | {
21
+ type: 'count';
22
+ count: number;
23
+ };
24
+ export interface AudioAnalyzerOptions {
25
+ /** Include advanced metrics (spectral_centroid, spectral_rolloff, zero_crossing_rate) */
26
+ includeAdvancedMetrics?: boolean;
27
+ /** Sample rate for analysis */
28
+ sampleRate?: number;
29
+ /** FFT size (must be power of 2) */
30
+ fftSize?: number;
31
+ /**
32
+ * Treble boost multiplier (0.0-1.0+)
33
+ * Reduces treble dominance to help balance class selection.
34
+ * Default: 1
35
+ * @default 1
36
+ */
37
+ trebleBoost?: number;
38
+ /**
39
+ * Bass boost multiplier (0.0-1.0+)
40
+ * Increases bass dominance to help balance class selection.
41
+ * Default: 1
42
+ * @default 1
43
+ */
44
+ bassBoost?: number;
45
+ /**
46
+ * Mid boost multiplier (0.0-1.0+)
47
+ * Increases mid dominance to help balance class selection.
48
+ * Default: 1
49
+ * @default 1
50
+ */
51
+ midBoost?: number;
52
+ }
53
+ /**
54
+ * Audio analyzer using Web Audio API with Triple Tap sampling strategy
55
+ *
56
+ * Analyzes audio files using Fourier analysis to extract frequency band information
57
+ * (bass, mid, treble dominance). For audio longer than 3 seconds, uses Triple Tap
58
+ * sampling at 5%, 40%, and 70% positions to provide representative analysis.
59
+ */
60
+ export declare class AudioAnalyzer {
61
+ private options;
62
+ /**
63
+ * Initialize AudioAnalyzer with configuration options
64
+ *
65
+ * @param {AudioAnalyzerOptions} [options] - Configuration options
66
+ * @param {boolean} [options.includeAdvancedMetrics=false] - Include spectral analysis metrics
67
+ * @param {number} [options.sampleRate=44100] - Sample rate in Hz
68
+ * @param {number} [options.fftSize=2048] - FFT size for frequency analysis (must be power of 2)
69
+ * @param {number} [options.trebleBoost=1] - Treble boost multiplier (0.0-1.0+)
70
+ * @param {number} [options.bassBoost=1] - Bass boost multiplier (0.0-1.0+)
71
+ * @param {number} [options.midBoost=1] - Mid boost multiplier (0.0-1.0+)
72
+ *
73
+ * @example
74
+ * const analyzer = new AudioAnalyzer({
75
+ * includeAdvancedMetrics: true,
76
+ * sampleRate: 48000,
77
+ * trebleBoost: 0.6,
78
+ * bassBoost: 1.3
79
+ * });
80
+ */
81
+ constructor(options?: AudioAnalyzerOptions);
82
+ /**
83
+ * Extract sonic fingerprint from audio URL
84
+ * Uses "Triple Tap" strategy: analyze at 5%, 40%, and 70% positions
85
+ */
86
+ extractSonicFingerprint(audioUrl: string): Promise<AudioProfile>;
87
+ /**
88
+ * Perform detailed timeline analysis of the entire song
89
+ *
90
+ * @param audioUrl URL of the audio file to analyze
91
+ * @param strategy strategy for sampling (interval-based or count-based)
92
+ */
93
+ analyzeTimeline(audioUrl: string, strategy: SamplingStrategy): Promise<AudioTimelineEvent[]>;
94
+ /**
95
+ * Generate a beat map from an audio URL
96
+ *
97
+ * Uses the Ellis Dynamic Programming beat tracking algorithm to detect
98
+ * beats and downbeats throughout the entire audio track.
99
+ *
100
+ * IMPORTANT: The typical workflow is to generate FIRST with default config,
101
+ * examine the beat map to identify the correct downbeat, then use
102
+ * reapplyDownbeatConfig() to set it. You usually don't know the correct
103
+ * downbeat until after seeing the generated beat map.
104
+ *
105
+ * @param audioUrl - URL of the audio file to analyze
106
+ * @param audioId - Unique identifier for the audio source
107
+ * @param options - Beat map generation options (optional)
108
+ * @param downbeatConfig - Optional manual downbeat configuration (defaults to beat 0 = downbeat, 4/4 time)
109
+ * @param onProgress - Optional progress callback for long-running analysis
110
+ * @returns Promise resolving to the generated beat map
111
+ *
112
+ * @example
113
+ * ```typescript
114
+ * const analyzer = new AudioAnalyzer();
115
+ * const beatMap = await analyzer.generateBeatMap('song.mp3', 'track-001', {
116
+ * minBpm: 90,
117
+ * maxBpm: 180,
118
+ * dpAlpha: 680,
119
+ * });
120
+ * console.log(`Detected ${beatMap.beats.length} beats at ${beatMap.bpm} BPM`);
121
+ * ```
122
+ */
123
+ generateBeatMap(audioUrl: string, audioId: string, options?: BeatMapGeneratorOptions, downbeatConfig?: DownbeatConfig, onProgress?: ProgressCallback): Promise<BeatMap>;
124
+ /**
125
+ * Generate a beat map from an AudioBuffer
126
+ *
127
+ * Use this method when you already have the audio decoded.
128
+ *
129
+ * IMPORTANT: The typical workflow is to generate FIRST with default config,
130
+ * examine the beat map to identify the correct downbeat, then use
131
+ * reapplyDownbeatConfig() to set it. You usually don't know the correct
132
+ * downbeat until after seeing the generated beat map.
133
+ *
134
+ * @param audioBuffer - Decoded audio buffer
135
+ * @param audioId - Unique identifier for the audio source
136
+ * @param options - Beat map generation options (optional)
137
+ * @param downbeatConfig - Optional manual downbeat configuration (defaults to beat 0 = downbeat, 4/4 time)
138
+ * @param onProgress - Optional progress callback for long-running analysis
139
+ * @returns Promise resolving to the generated beat map
140
+ *
141
+ * @example
142
+ * ```typescript
143
+ * const audioBuffer = await analyzer.fetchAndDecodeAudio('song.mp3');
144
+ * const beatMap = await analyzer.generateBeatMapFromBuffer(audioBuffer, 'track-001');
145
+ * ```
146
+ */
147
+ generateBeatMapFromBuffer(audioBuffer: AudioBuffer, audioId: string, options?: BeatMapGeneratorOptions, downbeatConfig?: DownbeatConfig, onProgress?: ProgressCallback): Promise<BeatMap>;
148
+ /**
149
+ * Create a BeatStream for real-time beat event streaming
150
+ *
151
+ * The BeatStream emits beat events synchronized with audio playback,
152
+ * with configurable anticipation time for pre-rendering.
153
+ *
154
+ * @param beatMap - The beat map containing beat data
155
+ * @param audioContext - The Web Audio API AudioContext for timing
156
+ * @param options - Stream options (anticipation time, latency compensation, etc.)
157
+ * @returns BeatStream instance for subscribing to beat events
158
+ *
159
+ * @example
160
+ * ```typescript
161
+ * const beatStream = analyzer.createBeatStream(beatMap, audioContext, {
162
+ * anticipationTime: 2.0, // 2 seconds for animation pre-rendering
163
+ * compensateOutputLatency: true,
164
+ * });
165
+ *
166
+ * const unsubscribe = beatStream.subscribe((event) => {
167
+ * if (event.type === 'upcoming') {
168
+ * // Pre-render beat visual
169
+ * } else if (event.type === 'exact') {
170
+ * // Beat is happening now
171
+ * }
172
+ * });
173
+ *
174
+ * beatStream.start();
175
+ * ```
176
+ */
177
+ createBeatStream(beatMap: BeatMap, audioContext: AudioContext, options?: BeatStreamOptions): BeatStream;
178
+ /**
179
+ * Interpolate a beat map to fill gaps in detected beats
180
+ *
181
+ * This is a post-processing pass that runs AFTER BeatMap generation to fill
182
+ * gaps where detected beats are missing. Uses the Adaptive Phase-Locked Grid
183
+ * algorithm with dense section priority to determine the quarter note interval,
184
+ * then generates interpolated beats with tempo drift handling.
185
+ *
186
+ * @param beatMap - The beat map to interpolate
187
+ * @param options - Interpolation options (optional)
188
+ * @returns Interpolated beat map with two output streams
189
+ *
190
+ * @example
191
+ * ```typescript
192
+ * const analyzer = new AudioAnalyzer();
193
+ * const beatMap = await analyzer.generateBeatMap('song.mp3', 'track-001');
194
+ *
195
+ * // Interpolate with default options
196
+ * const interpolated = analyzer.interpolateBeatMap(beatMap);
197
+ *
198
+ * // Access original detected beats
199
+ * console.log(`Detected: ${interpolated.detectedBeats.length} beats`);
200
+ *
201
+ * // Access merged beats (interpolated + detected)
202
+ * console.log(`Total: ${interpolated.mergedBeats.length} beats`);
203
+ * ```
204
+ */
205
+ interpolateBeatMap(beatMap: BeatMap, options?: BeatInterpolationOptions): InterpolatedBeatMap;
206
+ /**
207
+ * Generate a beat map with interpolation in a single step
208
+ *
209
+ * Convenience method that combines beat map generation and interpolation.
210
+ * This is useful when you always want interpolated beats and don't need
211
+ * the intermediate BeatMap.
212
+ *
213
+ * @param audioUrl - URL of the audio file to analyze
214
+ * @param audioId - Unique identifier for the audio source
215
+ * @param beatMapOptions - Beat map generation options (optional)
216
+ * @param interpolationOptions - Interpolation options (optional)
217
+ * @param onProgress - Optional progress callback for long-running analysis
218
+ * @returns Promise resolving to the interpolated beat map
219
+ *
220
+ * @example
221
+ * ```typescript
222
+ * const analyzer = new AudioAnalyzer();
223
+ *
224
+ * // Generate with interpolation in one step
225
+ * const interpolated = await analyzer.generateBeatMapWithInterpolation(
226
+ * 'song.mp3',
227
+ * 'track-001',
228
+ * { minBpm: 60, maxBpm: 180 } // BeatMap options
229
+ * );
230
+ *
231
+ * console.log(`Total beats: ${interpolated.mergedBeats.length}`);
232
+ * console.log(`Quarter note: ${interpolated.quarterNoteBpm} BPM`);
233
+ * ```
234
+ */
235
+ generateBeatMapWithInterpolation(audioUrl: string, audioId: string, beatMapOptions?: BeatMapGeneratorOptions, downbeatConfig?: DownbeatConfig, interpolationOptions?: BeatInterpolationOptions, onProgress?: ProgressCallback): Promise<InterpolatedBeatMap>;
236
+ /**
237
+ * Generate a beat map with interpolation from an AudioBuffer in a single step
238
+ *
239
+ * Use this method when you already have the audio decoded and want
240
+ * interpolated beats in a single call.
241
+ *
242
+ * @param audioBuffer - Decoded audio buffer
243
+ * @param audioId - Unique identifier for the audio source
244
+ * @param beatMapOptions - Beat map generation options (optional)
245
+ * @param interpolationOptions - Interpolation options (optional)
246
+ * @param onProgress - Optional progress callback for long-running analysis
247
+ * @returns Promise resolving to the interpolated beat map
248
+ *
249
+ * @example
250
+ * ```typescript
251
+ * const analyzer = new AudioAnalyzer();
252
+ * const audioBuffer = await analyzer.fetchAndDecodeAudio('song.mp3');
253
+ *
254
+ * const interpolated = await analyzer.generateBeatMapWithInterpolationFromBuffer(
255
+ * audioBuffer,
256
+ * 'track-001'
257
+ * );
258
+ * ```
259
+ */
260
+ generateBeatMapWithInterpolationFromBuffer(audioBuffer: AudioBuffer, audioId: string, beatMapOptions?: BeatMapGeneratorOptions, downbeatConfig?: DownbeatConfig, interpolationOptions?: BeatInterpolationOptions, onProgress?: ProgressCallback): Promise<InterpolatedBeatMap>;
261
+ /**
262
+ * Serialize a beat map to JSON string
263
+ *
264
+ * @param beatMap - Beat map to serialize
265
+ * @returns JSON string
266
+ */
267
+ static beatMapToJSON(beatMap: BeatMap): string;
268
+ /**
269
+ * Parse a beat map from JSON string
270
+ *
271
+ * @param jsonString - JSON string to parse
272
+ * @returns Beat map
273
+ */
274
+ static beatMapFromJSON(jsonString: string): BeatMap;
275
+ /**
276
+ * Save a beat map to a file (Node.js only)
277
+ *
278
+ * @param beatMap - Beat map to save
279
+ * @param filePath - Path to save to
280
+ */
281
+ static saveBeatMapToFile(beatMap: BeatMap, filePath: string): Promise<void>;
282
+ /**
283
+ * Load a beat map from a file (Node.js only)
284
+ *
285
+ * @param filePath - Path to load from
286
+ * @returns Beat map
287
+ */
288
+ static loadBeatMapFromFile(filePath: string): Promise<BeatMap>;
289
+ /**
290
+ * Generate procedural rhythm patterns from an audio URL
291
+ *
292
+ * This is a convenience method that combines the full pipeline:
293
+ * 1. Fetches and decodes the audio
294
+ * 2. Generates a beat map with interpolation
295
+ * 3. Unifies the beat map
296
+ * 4. Runs the RhythmGenerator to create difficulty variants
297
+ *
298
+ * @param audioUrl - URL of the audio file to analyze
299
+ * @param audioId - Unique identifier for the audio source
300
+ * @param options - Rhythm generation options (optional)
301
+ * @param beatMapOptions - Beat map generation options (optional)
302
+ * @param downbeatConfig - Optional manual downbeat configuration
303
+ * @param onProgress - Optional progress callback for rhythm generation
304
+ * @returns Promise resolving to the generated rhythm with difficulty variants
305
+ *
306
+ * @example
307
+ * ```typescript
308
+ * const analyzer = new AudioAnalyzer();
309
+ * const rhythm = await analyzer.generateRhythm('song.mp3', 'track-001', {
310
+ * difficulty: 'medium',
311
+ * outputMode: 'composite',
312
+ * });
313
+ *
314
+ * // Access difficulty variants
315
+ * const easyBeats = rhythm.difficultyVariants.easy.beats;
316
+ * const hardBeats = rhythm.difficultyVariants.hard.beats;
317
+ *
318
+ * // Access individual band streams
319
+ * const bassBeats = rhythm.bandStreams.low.beats;
320
+ * ```
321
+ */
322
+ generateRhythm(audioUrl: string, audioId: string, options?: RhythmGenerationOptions, beatMapOptions?: BeatMapGeneratorOptions, downbeatConfig?: DownbeatConfig, onProgress?: (phase: string, progress: number, message: string) => void): Promise<GeneratedRhythm>;
323
+ /**
324
+ * Generate procedural rhythm patterns from an AudioBuffer
325
+ *
326
+ * Use this method when you already have the audio decoded.
327
+ * This combines beat map generation, interpolation, unification,
328
+ * and rhythm generation in a single call.
329
+ *
330
+ * @param audioBuffer - Decoded audio buffer
331
+ * @param audioId - Unique identifier for the audio source
332
+ * @param options - Rhythm generation options (optional)
333
+ * @param beatMapOptions - Beat map generation options (optional)
334
+ * @param downbeatConfig - Optional manual downbeat configuration
335
+ * @param onProgress - Optional progress callback for rhythm generation
336
+ * @returns Promise resolving to the generated rhythm with difficulty variants
337
+ *
338
+ * @example
339
+ * ```typescript
340
+ * const analyzer = new AudioAnalyzer();
341
+ * const audioBuffer = await analyzer.fetchAndDecodeAudio('song.mp3');
342
+ *
343
+ * const rhythm = await analyzer.generateRhythmFromBuffer(
344
+ * audioBuffer,
345
+ * 'track-001',
346
+ * { difficulty: 'hard' }
347
+ * );
348
+ *
349
+ * console.log(`Generated ${rhythm.difficultyVariants.hard.beats.length} beats`);
350
+ * ```
351
+ */
352
+ generateRhythmFromBuffer(audioBuffer: AudioBuffer, audioId: string, options?: RhythmGenerationOptions, beatMapOptions?: BeatMapGeneratorOptions, downbeatConfig?: DownbeatConfig, onProgress?: (phase: string, progress: number, message: string) => void): Promise<GeneratedRhythm>;
353
+ /**
354
+ * Generate a complete rhythm game level from an audio URL
355
+ *
356
+ * This is the main convenience method that combines:
357
+ * 1. Fetches and decodes the audio
358
+ * 2. Generates a beat map with interpolation
359
+ * 3. Unifies the beat map
360
+ * 4. Runs rhythm generation
361
+ * 5. Runs pitch analysis (if pitchInfluenceWeight > 0)
362
+ * 6. Maps buttons to beats
363
+ * 7. Converts to ChartedBeatMap
364
+ *
365
+ * @param audioUrl - URL of the audio file to analyze
366
+ * @param audioId - Unique identifier for the audio source
367
+ * @param options - Level generation options (difficulty, controller mode, etc.)
368
+ * @param beatMapOptions - Beat map generation options (optional)
369
+ * @param downbeatConfig - Optional manual downbeat configuration
370
+ * @param onProgress - Optional callback for progress updates
371
+ * @returns Promise resolving to the generated level with playable chart
372
+ *
373
+ * @example
374
+ * ```typescript
375
+ * const analyzer = new AudioAnalyzer();
376
+ * const level = await analyzer.generateRhythmLevel('song.mp3', 'track-001', {
377
+ * difficulty: 'medium',
378
+ * controllerMode: 'ddr',
379
+ * buttons: { pitchInfluenceWeight: 0.8 }
380
+ * });
381
+ *
382
+ * // Use the chart with BeatStream
383
+ * const beatStream = new BeatStream(level.chart, audioContext);
384
+ *
385
+ * // Access metadata
386
+ * console.log(`Generated ${level.metadata.chartMetadata.totalBeats} beats`);
387
+ * console.log(`Pitch influenced: ${level.metadata.buttonMetadata.pitchInfluencedBeats} beats`);
388
+ * ```
389
+ */
390
+ generateRhythmLevel(audioUrl: string, audioId: string, options: LevelGenerationOptions, beatMapOptions?: BeatMapGeneratorOptions, downbeatConfig?: DownbeatConfig, onProgress?: LevelProgressCallback): Promise<GeneratedLevel>;
391
+ /**
392
+ * Generate a complete rhythm game level from an AudioBuffer
393
+ *
394
+ * Use this method when you already have the audio decoded.
395
+ * This combines all generation phases in a single call.
396
+ *
397
+ * @param audioBuffer - Decoded audio buffer
398
+ * @param audioId - Unique identifier for the audio source
399
+ * @param options - Level generation options (difficulty, controller mode, etc.)
400
+ * @param beatMapOptions - Beat map generation options (optional)
401
+ * @param downbeatConfig - Optional manual downbeat configuration
402
+ * @param onProgress - Optional callback for progress updates
403
+ * @returns Promise resolving to the generated level with playable chart
404
+ *
405
+ * @example
406
+ * ```typescript
407
+ * const analyzer = new AudioAnalyzer();
408
+ * const audioBuffer = await analyzer.fetchAndDecodeAudio('song.mp3');
409
+ *
410
+ * const level = await analyzer.generateRhythmLevelFromBuffer(
411
+ * audioBuffer,
412
+ * 'track-001',
413
+ * {
414
+ * difficulty: 'hard',
415
+ * controllerMode: 'guitar_hero',
416
+ * buttons: { pitchInfluenceWeight: 1.0 }
417
+ * }
418
+ * );
419
+ *
420
+ * console.log(`Chart has ${level.chart.beats.length} beats`);
421
+ * ```
422
+ */
423
+ generateRhythmLevelFromBuffer(audioBuffer: AudioBuffer, audioId: string, options: LevelGenerationOptions, beatMapOptions?: BeatMapGeneratorOptions, downbeatConfig?: DownbeatConfig, onProgress?: LevelProgressCallback): Promise<GeneratedLevel>;
424
+ /**
425
+ * Preset name for level generation configurations
426
+ */
427
+ static LEVEL_PRESETS: {
428
+ casual: {
429
+ difficulty: "easy";
430
+ controllerMode: ControllerMode;
431
+ buttons: {
432
+ pitchInfluenceWeight: number;
433
+ };
434
+ description: string;
435
+ };
436
+ standard: {
437
+ difficulty: "medium";
438
+ controllerMode: ControllerMode;
439
+ buttons: {
440
+ pitchInfluenceWeight: number;
441
+ };
442
+ description: string;
443
+ };
444
+ challenge: {
445
+ difficulty: "hard";
446
+ controllerMode: ControllerMode;
447
+ buttons: {
448
+ pitchInfluenceWeight: number;
449
+ };
450
+ description: string;
451
+ };
452
+ insane: {
453
+ difficulty: "hard";
454
+ controllerMode: ControllerMode;
455
+ buttons: {
456
+ pitchInfluenceWeight: number;
457
+ consecutiveSameKeyLimit: number;
458
+ };
459
+ description: string;
460
+ };
461
+ };
462
+ /**
463
+ * Generate a rhythm game level using a preset configuration
464
+ *
465
+ * Quick generation method that uses predefined settings for common use cases.
466
+ *
467
+ * @param audioUrl - URL of the audio file to analyze
468
+ * @param audioId - Unique identifier for the audio source
469
+ * @param preset - Preset name: 'casual', 'standard', 'challenge', or 'insane'
470
+ * @param beatMapOptions - Beat map generation options (optional)
471
+ * @param downbeatConfig - Optional manual downbeat configuration
472
+ * @param onProgress - Optional callback for progress updates
473
+ * @returns Promise resolving to the generated level with playable chart
474
+ *
475
+ * @example
476
+ * ```typescript
477
+ * const analyzer = new AudioAnalyzer();
478
+ *
479
+ * // Quick casual level
480
+ * const casualLevel = await analyzer.generateRhythmLevelWithPreset(
481
+ * 'song.mp3',
482
+ * 'track-001',
483
+ * 'casual'
484
+ * );
485
+ *
486
+ * // Quick challenge level
487
+ * const challengeLevel = await analyzer.generateRhythmLevelWithPreset(
488
+ * 'song.mp3',
489
+ * 'track-001',
490
+ * 'challenge'
491
+ * );
492
+ *
493
+ * // List available presets
494
+ * console.log(AudioAnalyzer.LEVEL_PRESETS);
495
+ * ```
496
+ */
497
+ generateRhythmLevelWithPreset(audioUrl: string, audioId: string, preset: 'casual' | 'standard' | 'challenge' | 'insane', beatMapOptions?: BeatMapGeneratorOptions, downbeatConfig?: DownbeatConfig, onProgress?: LevelProgressCallback): Promise<GeneratedLevel>;
498
+ /**
499
+ * Generate a rhythm game level using a preset configuration from an AudioBuffer
500
+ *
501
+ * Use this method when you already have the audio decoded.
502
+ *
503
+ * @param audioBuffer - Decoded audio buffer
504
+ * @param audioId - Unique identifier for the audio source
505
+ * @param preset - Preset name: 'casual', 'standard', 'challenge', or 'insane'
506
+ * @param beatMapOptions - Beat map generation options (optional)
507
+ * @param downbeatConfig - Optional manual downbeat configuration
508
+ * @param onProgress - Optional callback for progress updates
509
+ * @returns Promise resolving to the generated level with playable chart
510
+ *
511
+ * @example
512
+ * ```typescript
513
+ * const analyzer = new AudioAnalyzer();
514
+ * const audioBuffer = await analyzer.fetchAndDecodeAudio('song.mp3');
515
+ *
516
+ * const level = await analyzer.generateRhythmLevelWithPresetFromBuffer(
517
+ * audioBuffer,
518
+ * 'track-001',
519
+ * 'standard'
520
+ * );
521
+ * ```
522
+ */
523
+ generateRhythmLevelWithPresetFromBuffer(audioBuffer: AudioBuffer, audioId: string, preset: 'casual' | 'standard' | 'challenge' | 'insane', beatMapOptions?: BeatMapGeneratorOptions, downbeatConfig?: DownbeatConfig, onProgress?: LevelProgressCallback): Promise<GeneratedLevel>;
524
+ /**
525
+ * Fetch and decode audio from a URL
526
+ *
527
+ * This is a convenience method for fetching audio when you need
528
+ * to reuse the decoded buffer for multiple operations.
529
+ *
530
+ * @param audioUrl - URL of the audio file
531
+ * @returns Promise resolving to the decoded AudioBuffer
532
+ *
533
+ * @example
534
+ * ```typescript
535
+ * const analyzer = new AudioAnalyzer();
536
+ * const audioBuffer = await analyzer.fetchAndDecodeAudio('song.mp3');
537
+ *
538
+ * // Reuse buffer for multiple analyses
539
+ * const profile = await analyzer.extractSonicFingerprint('song.mp3');
540
+ * const rhythm = await analyzer.generateRhythmFromBuffer(audioBuffer, 'track-001');
541
+ * ```
542
+ */
543
+ fetchAndDecodeAudio(audioUrl: string): Promise<AudioBuffer>;
544
+ /**
545
+ * Shared logic to fetch and decode audio from a URL
546
+ */
547
+ private fetchAndDecode;
548
+ /**
549
+ * Analyze audio at a specific position
550
+ */
551
+ private analyzeAtPosition;
552
+ /**
553
+ * Extract audio segment from buffer
554
+ *
555
+ * Mixes all channels down to mono and extracts the specified sample range.
556
+ * Made protected to allow beat detection classes to access audio data.
557
+ */
558
+ protected extractAudioSegment(audioBuffer: AudioBuffer, startSample: number, endSample: number): Float32Array;
559
+ /**
560
+ * Simple FFT implementation for frequency analysis
561
+ * Uses Cooley-Tukey algorithm
562
+ *
563
+ * Made protected to allow beat detection classes to access FFT functionality.
564
+ */
565
+ protected performFFT(signal: Float32Array, fftSize: number): number[];
566
+ /**
567
+ * Cooley-Tukey FFT algorithm
568
+ */
569
+ private fft;
570
+ /**
571
+ * Average frequency bands across multiple samples
572
+ */
573
+ private averageFrequencyBands;
574
+ /**
575
+ * Calculate average amplitude across all channels
576
+ */
577
+ private calculateAverageAmplitude;
578
+ /**
579
+ * Calculate RMS (Root Mean Square) energy - more representative of perceived loudness
580
+ */
581
+ private calculateRMS;
582
+ /**
583
+ * Calculate Peak amplitude
584
+ */
585
+ private calculatePeak;
586
+ /**
587
+ * Calculate spectral centroid (brightness)
588
+ */
589
+ private calculateSpectralCentroid;
590
+ /**
591
+ * Calculate spectral rolloff (frequency below which 85% of energy is contained)
592
+ */
593
+ private calculateSpectralRolloff;
594
+ /**
595
+ * Calculate zero crossing rate (measure of noisiness/percussiveness)
596
+ */
597
+ private calculateZeroCrossingRate;
598
+ }
599
+ //# sourceMappingURL=AudioAnalyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/core/analysis/AudioAnalyzer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ import type { ColorPalette } from '../types/AudioProfile';
2
+ /**
3
+ * Configuration options for ColorExtractor.
4
+ *
5
+ * Gateway resolution is automatic - Arweave URLs are resolved with fallback
6
+ * using the default arweaveGatewayManager. No configuration needed.
7
+ */
8
+ export interface ColorExtractorOptions {
9
+ }
10
+ /**
11
+ * Extract color palettes from images using k-means and median-cut algorithms
12
+ * Analyzes image pixels to identify dominant colors and brightness characteristics
13
+ */
14
+ export declare class ColorExtractor {
15
+ private canvas;
16
+ private context;
17
+ /**
18
+ * Initialize ColorExtractor with canvas for image processing
19
+ * Canvas is only created in browser environments (safe for Node.js)
20
+ *
21
+ * @param _options - Configuration options (reserved for future use)
22
+ */
23
+ constructor(_options?: ColorExtractorOptions);
24
+ /**
25
+ * Extract dominant colors from image URL
26
+ *
27
+ * Applies k-means clustering (primary) or median-cut (fallback) to identify
28
+ * the 4 most representative colors in the image. Analyzes color frequency,
29
+ * brightness, saturation, and monochrome characteristics.
30
+ *
31
+ * Arweave URLs are automatically resolved with gateway fallback via
32
+ * arweaveGatewayManager.resolveUrl - no configuration needed.
33
+ *
34
+ * @param {string} imageUrl - URL of the image to analyze
35
+ * @returns {Promise<ColorPalette>} Color palette with dominant colors and characteristics
36
+ * @throws {Error} If canvas is not supported in the environment
37
+ *
38
+ * @example
39
+ * const extractor = new ColorExtractor();
40
+ * const palette = await extractor.extractPalette('https://example.com/image.jpg');
41
+ * console.log(`Primary color: ${palette.primary_color}`);
42
+ */
43
+ extractPalette(imageUrl: string): Promise<ColorPalette>;
44
+ private loadImage;
45
+ private getPixels;
46
+ /**
47
+ * K-means clustering algorithm for color quantization
48
+ */
49
+ private kMeans;
50
+ /**
51
+ * Median cut algorithm for color quantization (fallback)
52
+ */
53
+ private medianCut;
54
+ private getBoxRange;
55
+ private sortPixelsByChannel;
56
+ private distance;
57
+ private sortColorsByFrequency;
58
+ private analyzePalette;
59
+ private getBrightness;
60
+ private getSaturation;
61
+ private rgbToHex;
62
+ private getFallbackPalette;
63
+ }
64
+ //# sourceMappingURL=ColorExtractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColorExtractor.d.ts","sourceRoot":"","sources":["../../../src/core/analysis/ColorExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAG1D;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;CAErC;AAED;;;GAGG;AACH,qBAAa,cAAc;IACvB,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,OAAO,CAAyC;IAExD;;;;;OAKG;gBACS,QAAQ,GAAE,qBAA0B;IAUhD;;;;;;;;;;;;;;;;;;OAkBG;IACU,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAgCpE,OAAO,CAAC,SAAS;IAUjB,OAAO,CAAC,SAAS;IAcjB;;OAEG;IACH,OAAO,CAAC,MAAM;IA6Dd;;OAEG;IACH,OAAO,CAAC,SAAS;IAsDjB,OAAO,CAAC,WAAW;IAmBnB,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,QAAQ;IAQhB,OAAO,CAAC,qBAAqB;IAyB7B,OAAO,CAAC,cAAc;IA2BtB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,kBAAkB;CAW7B"}