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,524 @@
1
+ import type { MusicClassificationProfile } from '../types/AudioProfile.js';
2
+ /**
3
+ * Supported model architectures for audio feature extraction.
4
+ * Each architecture requires different mel-band configurations:
5
+ * - `musicnn`: 96 mel bands - MusiCNN / MSD style models
6
+ * - `effnet`: 128 mel bands - Discogs-EffNet embedding models
7
+ * - `vggish`: 64 mel bands - VGGish-based models (e.g., audioset classifiers)
8
+ * - `tempocnn`: 40 mel bands - TempoCNN-based models (e.g., tempo estimation)
9
+ */
10
+ export type ModelArchitecture = 'musicnn' | 'effnet' | 'vggish' | 'tempocnn';
11
+ /**
12
+ * Supported genre list types for different model sources.
13
+ * Each genre model was trained on a specific dataset with its own genre taxonomy:
14
+ * - `jamendo`: MTG Jamendo dataset (87 genres)
15
+ * - `discogs400`: Discogs 400-style taxonomy (400+ subgenres)
16
+ * - `tzanetakis`: GTZAN dataset (10 classic genres)
17
+ * - `mtt_musicnn`: MTT (MagnaTagATune) with MusiCNN tags (50 tags)
18
+ */
19
+ export type GenreListType = 'jamendo' | 'discogs400' | 'tzanetakis' | 'mtt_musicnn';
20
+ /**
21
+ * Configuration for two-step model architectures where embedding
22
+ * and classifier models are separate files.
23
+ *
24
+ * This enables using models like:
25
+ * - Discogs-EffNet (embedding) + MTG Jamendo Genre (classifier)
26
+ * - Discogs-EffNet (embedding) + MTG Jamendo Mood (classifier)
27
+ */
28
+ export interface TwoStepModelConfig {
29
+ /** URL to the embedding model (e.g., discogs-effnet-bs64-1.json) */
30
+ embedding: string;
31
+ /** URL to the classifier model that operates on embeddings */
32
+ classifier: string;
33
+ /** Optional custom labels for classifier output */
34
+ labels?: string[];
35
+ /** Explicit embedding architecture type (overrides URL detection) */
36
+ embeddingType?: ModelArchitecture;
37
+ /** Explicit classifier type for genre models (overrides URL detection) */
38
+ classifierType?: GenreListType;
39
+ }
40
+ /**
41
+ * Configuration for single-step model architecture where one model
42
+ * handles feature extraction and classification internally.
43
+ */
44
+ export interface SingleStepModelConfig {
45
+ /** URL to the model file */
46
+ modelUrl: string;
47
+ /** Explicit model architecture type (overrides URL detection) */
48
+ modelType: ModelArchitecture;
49
+ /**
50
+ * Explicit genre list type for genre models (overrides URL detection).
51
+ * Required when using Arweave URLs that don't contain genre identifiers.
52
+ */
53
+ genreType?: GenreListType;
54
+ /** Optional custom labels for model output */
55
+ labels?: string[];
56
+ }
57
+ /**
58
+ * Model configuration that accepts either:
59
+ * - SingleStepModelConfig: One model with explicit architecture type
60
+ * - TwoStepModelConfig: Separate embedding + classifier models chained together
61
+ *
62
+ * @example
63
+ * // Single-step with explicit type (for Arweave URLs)
64
+ * genre: {
65
+ * modelUrl: 'https://arweave.net/xxx/model.json',
66
+ * modelType: 'musicnn'
67
+ * }
68
+ *
69
+ * // Two-step
70
+ * genre: {
71
+ * embedding: '/models/discogs-effnet-bs64-1.json',
72
+ * classifier: '/models/mtg_jamendo_genre-discogs-effnet-1.json',
73
+ * embeddingType: 'effnet',
74
+ * classifierType: 'jamendo'
75
+ * }
76
+ */
77
+ export type ModelConfig = SingleStepModelConfig | TwoStepModelConfig;
78
+ /**
79
+ * Preset names for genre classification models.
80
+ */
81
+ export type GenrePreset = 'discogs400' | 'jamendo' | 'tzanetakis' | 'musicnn';
82
+ /**
83
+ * Preset names for mood classification models.
84
+ */
85
+ export type MoodPreset = 'jamendo' | 'happyMusicnn';
86
+ /**
87
+ * Preset names for danceability classification models.
88
+ */
89
+ export type DanceabilityPreset = 'default';
90
+ /**
91
+ * Configuration that selects models by preset name instead of raw URLs.
92
+ * Presets are resolved to full model configs internally.
93
+ *
94
+ * @example
95
+ * // Use presets
96
+ * const classifier = new MusicClassifier({ preset: { genre: 'discogs400', mood: 'jamendo' } });
97
+ *
98
+ * // Mix presets with custom URLs
99
+ * const classifier = new MusicClassifier({
100
+ * preset: { genre: 'jamendo' },
101
+ * models: { mood: { modelUrl: 'https://...', modelType: 'musicnn' } }
102
+ * });
103
+ */
104
+ export interface ClassifierPreset {
105
+ genre?: GenrePreset;
106
+ mood?: MoodPreset;
107
+ danceability?: DanceabilityPreset;
108
+ }
109
+ export interface MusicClassifierOptions {
110
+ /**
111
+ * Model preset names. When provided, these are resolved to full model configs
112
+ * internally. Can be combined with `models` for partial override — explicit
113
+ * `models` entries take precedence over `preset` entries for the same category.
114
+ */
115
+ preset?: ClassifierPreset;
116
+ /**
117
+ * URLs to pre-trained TensorFlow.js models.
118
+ * Each model option accepts EITHER:
119
+ * - Single string URL (1-step process)
120
+ * - Object with { embedding, classifier } for 2-step process
121
+ */
122
+ models?: {
123
+ genre?: ModelConfig;
124
+ mood?: ModelConfig;
125
+ danceability?: ModelConfig;
126
+ voice?: ModelConfig;
127
+ acoustic?: ModelConfig;
128
+ };
129
+ /** Maximum number of tags to return per category */
130
+ topN?: number;
131
+ /** Minimum confidence threshold (0.0 to 1.0) */
132
+ threshold?: number;
133
+ /**
134
+ * When true, embedding models are cached and reused across multiple
135
+ * predictions. Useful when using the same embedding model for both
136
+ * genre and mood classification.
137
+ * @default true
138
+ */
139
+ cacheEmbeddings?: boolean;
140
+ /**
141
+ * Optional callback to resolve Arweave URLs before loading models.
142
+ * Used by the ArweaveGatewayManager to try alternate gateways if
143
+ * the primary gateway fails (e.g., turbo-gateway.com returning 499 errors).
144
+ *
145
+ * The callback takes a URL string and returns a Promise that resolves
146
+ * to the working URL (possibly from a different gateway).
147
+ *
148
+ * @example
149
+ * ```typescript
150
+ * import { arweaveGatewayManager } from 'playlist-data-engine';
151
+ *
152
+ * const classifier = new MusicClassifier({
153
+ * resolveUrl: arweaveGatewayManager.resolveUrl.bind(arweaveGatewayManager),
154
+ * models: { genre: 'https://arweave.net/...' }
155
+ * });
156
+ * ```
157
+ */
158
+ resolveUrl?: (url: string) => Promise<string>;
159
+ }
160
+ export declare const DISCOGS400_GENRES: string[];
161
+ /**
162
+ * Type guard to check if a model config is a two-step configuration
163
+ * (embedding + classifier) or a single model URL string.
164
+ */
165
+ export declare function isTwoStepModel(config: ModelConfig): config is TwoStepModelConfig;
166
+ /**
167
+ * Type guard to check if a model config is a single-step configuration.
168
+ */
169
+ export declare function isSingleStepModel(config: ModelConfig): config is SingleStepModelConfig;
170
+ /**
171
+ * Detects the model architecture from a model URL.
172
+ * Used to select the correct feature extractor (mel-band count) and model class.
173
+ *
174
+ * Architecture → Mel Bands mapping:
175
+ * - effnet: 128 bands (Discogs-EffNet)
176
+ * - vggish: 64 bands
177
+ * - tempocnn: 40 bands
178
+ * - musicnn: 96 bands (default)
179
+ *
180
+ * @param modelUrl - URL to the model file
181
+ * @param explicitType - Optional explicit architecture type (overrides URL detection)
182
+ * @returns The detected architecture type
183
+ */
184
+ export declare function detectModelArchitecture(modelUrl: string, explicitType?: ModelArchitecture): ModelArchitecture;
185
+ /**
186
+ * Detects which genre list to use based on the model URL.
187
+ * Different genre models were trained on different datasets with different taxonomies:
188
+ *
189
+ * Model path keywords → Genre list:
190
+ * - 'jamendo' → JAMENDO_GENRES (MTG Jamendo dataset)
191
+ * - 'discogs400' or 'discogs' → DISCOGS400_GENRES (Discogs taxonomy)
192
+ * - 'tzanetakis' → tzanetakis_GENRES (GTZAN 10-class dataset)
193
+ * - 'mtt_musicnn' or 'mtt' → MTT_MUSICNN (MagnaTagATune tags)
194
+ *
195
+ * @param modelUrl - URL to the genre model file
196
+ * @param explicitType - Optional explicit genre list type (overrides URL detection)
197
+ * @returns The detected genre list type
198
+ */
199
+ export declare function detectGenreListType(modelUrl: string, explicitType?: GenreListType): GenreListType;
200
+ /**
201
+ * Gets the genre labels array for a given genre list type.
202
+ *
203
+ * @param genreType - The genre list type
204
+ * @returns Array of genre label strings
205
+ */
206
+ export declare function getGenreLabels(genreType: GenreListType): string[];
207
+ /**
208
+ * Formats a model config for display in metadata.
209
+ * - Single-step: just the URL
210
+ * - Two-step: "embedding -> classifier" format
211
+ */
212
+ export declare function formatModelForMetadata(config: ModelConfig): string;
213
+ /**
214
+ * Averages embeddings across all audio frames.
215
+ * Used in two-step model architecture to aggregate frame-level embeddings
216
+ * before passing to the classifier.
217
+ *
218
+ * @param embeddings - 2D array of embeddings, shape [frames][embedding_dim]
219
+ * @returns 1D array of averaged embeddings, shape [embedding_dim]
220
+ *
221
+ * @example
222
+ * const frameEmbeddings = [[0.1, 0.2, 0.3], [0.2, 0.3, 0.4]];
223
+ * const avgEmbedding = averageEmbeddings(frameEmbeddings);
224
+ * // Result: [0.15, 0.25, 0.35]
225
+ */
226
+ export declare function averageEmbeddings(embeddings: number[][]): number[];
227
+ /**
228
+ * Default model configurations using Arweave-hosted models.
229
+ * These work out-of-the-box without any local model files.
230
+ *
231
+ * @example
232
+ * import { MusicClassifier, DEFAULT_ARWEAVE_MODELS } from 'playlist-data-engine';
233
+ *
234
+ * const classifier = new MusicClassifier({
235
+ * models: DEFAULT_ARWEAVE_MODELS
236
+ * });
237
+ */
238
+ export declare const DEFAULT_ARWEAVE_MODELS: {
239
+ readonly genre: {
240
+ readonly embedding: "https://arweave.net/tVO0RIu2Ly_Di5cZccw_wB3x6Vs_2KSqxhl8bdhhimE/model.json";
241
+ readonly classifier: "https://arweave.net/ZY-GSfMe7crJUITAtHITcoLCNfNWVP1HMwywivZ_LAQ/model.json";
242
+ readonly embeddingType: ModelArchitecture;
243
+ readonly classifierType: GenreListType;
244
+ };
245
+ readonly mood: {
246
+ readonly embedding: "https://arweave.net/tVO0RIu2Ly_Di5cZccw_wB3x6Vs_2KSqxhl8bdhhimE/model.json";
247
+ readonly classifier: "https://arweave.net/BUXf3AoFuIsrNDkV2hW6BhiwSVTuFllWOUQv5mu6qQ8/model.json";
248
+ readonly embeddingType: ModelArchitecture;
249
+ };
250
+ readonly danceability: {
251
+ readonly modelUrl: "https://turbo-gateway.com/nX9KX1OVhEaT1dStNcsRiZKCQTWuHjAMl4MWprIFyZU/model.json";
252
+ readonly modelType: ModelArchitecture;
253
+ };
254
+ };
255
+ /**
256
+ * Registry of genre model presets.
257
+ * Each preset maps a name to a full ModelConfig with Arweave-hosted URLs.
258
+ */
259
+ export declare const GENRE_PRESETS: Record<GenrePreset, ModelConfig>;
260
+ /**
261
+ * Registry of mood model presets.
262
+ */
263
+ export declare const MOOD_PRESETS: Record<MoodPreset, ModelConfig>;
264
+ /**
265
+ * Registry of danceability model presets.
266
+ */
267
+ export declare const DANCEABILITY_PRESETS: Record<DanceabilityPreset, ModelConfig>;
268
+ /**
269
+ * All available preset names for enumeration.
270
+ *
271
+ * @example
272
+ * import { AVAILABLE_PRESETS } from 'playlist-data-engine';
273
+ * console.log(AVAILABLE_PRESETS.genre); // ['discogs400', 'jamendo', 'tzanetakis', 'musicnn']
274
+ */
275
+ export declare const AVAILABLE_PRESETS: {
276
+ readonly genre: GenrePreset[];
277
+ readonly mood: MoodPreset[];
278
+ readonly danceability: DanceabilityPreset[];
279
+ };
280
+ export declare class MusicClassifier {
281
+ private options;
282
+ private essentiaWASM;
283
+ private essentiaModel;
284
+ private extractor;
285
+ private initialized;
286
+ /**
287
+ * Cache for embedding models by URL.
288
+ * Key: model URL, Value: initialized model instance
289
+ * Used to avoid re-loading the same embedding model when shared across
290
+ * multiple classifiers (e.g., genre and mood using the same discogs-effnet).
291
+ */
292
+ private embeddingModelCache;
293
+ /**
294
+ * Optional cache for classifier models.
295
+ * Key: model URL, Value: initialized model instance
296
+ * Useful when repeatedly analyzing audio with the same classifier.
297
+ */
298
+ private classifierModelCache;
299
+ /**
300
+ * Cache for resolved Arweave URLs.
301
+ * Key: original URL, Value: resolved URL (possibly from different gateway)
302
+ * Avoids repeated gateway resolution calls for the same URL.
303
+ */
304
+ private resolvedUrlCache;
305
+ /**
306
+ * Architecture-specific feature extractors.
307
+ * Each architecture requires different mel-band configurations:
308
+ * - musicnn: 96 bands (default extractor)
309
+ * - effnet: 128 bands (custom extractor)
310
+ * - vggish: 64 bands
311
+ * - tempocnn: 40 bands
312
+ */
313
+ private extractors;
314
+ constructor(options?: MusicClassifierOptions);
315
+ /**
316
+ * Initialize essentia.js modules for browser environment.
317
+ * Must be called before any analysis.
318
+ */
319
+ private initializeEssentia;
320
+ /**
321
+ * Resolves a URL using the resolveUrl callback with caching.
322
+ *
323
+ * If a resolveUrl callback is provided in options, this method will:
324
+ * 1. Check the cache first to avoid repeated resolution calls
325
+ * 2. Call the resolveUrl callback if not cached
326
+ * 3. Cache the result for future use
327
+ *
328
+ * If no resolveUrl callback is provided, returns the original URL unchanged.
329
+ *
330
+ * @param url - The URL to resolve
331
+ * @returns Promise resolving to the resolved URL (or original if no resolver)
332
+ */
333
+ private resolveUrlWithCache;
334
+ /**
335
+ * Loads a TensorFlow.js GraphModel with retry logic for network resilience.
336
+ *
337
+ * This method handles transient network failures (common with remote URLs
338
+ * like Arweave) by retrying with exponential backoff. If a `resolveUrl`
339
+ * callback is provided in options, it will be called to resolve the URL
340
+ * before loading (e.g., for Arweave gateway fallback).
341
+ *
342
+ * @param modelUrl - URL to the model file
343
+ * @param maxRetries - Maximum number of retry attempts (default: 3)
344
+ * @param baseDelayMs - Base delay for exponential backoff in ms (default: 1000)
345
+ * @returns Promise resolving to the loaded GraphModel
346
+ */
347
+ private loadModelWithRetry;
348
+ /**
349
+ * Initializes an Essentia model with retry logic for network resilience.
350
+ *
351
+ * Essentia models (TensorflowMusiCNN, TensorflowVGGish) have their own
352
+ * initialize() method that loads the model from URL. This wrapper adds
353
+ * retry logic similar to loadModelWithRetry.
354
+ *
355
+ * @param model - Essentia model instance (TensorflowMusiCNN or TensorflowVGGish)
356
+ * @param modelUrl - URL to the model file (for logging)
357
+ * @param maxRetries - Maximum number of retry attempts (default: 3)
358
+ * @param baseDelayMs - Base delay for exponential backoff in ms (default: 1000)
359
+ */
360
+ private initializeEssentiaModelWithRetry;
361
+ /**
362
+ * Gets or creates an embedding model instance with caching support.
363
+ *
364
+ * This method implements intelligent model caching to avoid re-loading
365
+ * the same embedding model when it's shared across multiple classifiers
366
+ * (e.g., genre and mood both using discogs-effnet).
367
+ *
368
+ * @param modelUrl - URL to the embedding model
369
+ * @param explicitType - Optional explicit architecture type (overrides URL detection)
370
+ * @returns Promise resolving to the initialized model instance
371
+ */
372
+ private getEmbeddingModel;
373
+ /**
374
+ * Clears the embedding model cache, disposing of any cached models.
375
+ * Call this to free memory when switching to different models or
376
+ * when done with analysis.
377
+ *
378
+ * Handles both:
379
+ * - GraphModel instances (effnet) - use dispose()
380
+ * - Essentia model instances (musicnn, vggish) - use terminate()
381
+ */
382
+ clearEmbeddingCache(): void;
383
+ /**
384
+ * Clears the classifier model cache, disposing of any cached models.
385
+ */
386
+ clearClassifierCache(): void;
387
+ /**
388
+ * Clears all model caches (embedding, classifier, and resolved URLs).
389
+ */
390
+ clearAllCaches(): void;
391
+ /**
392
+ * Computes 128-band mel-spectrogram features for Discogs-EffNet models.
393
+ *
394
+ * Unlike the standard musicnn extractor (96 bands), EffNet requires 128 mel bands.
395
+ * This method uses Essentia WASM's core MelBands algorithm directly.
396
+ *
397
+ * @param audioSignal - Mono audio signal at 16kHz sample rate
398
+ * @returns 2D array of mel-spectrogram frames, shape [frames][128]
399
+ */
400
+ /**
401
+ * Creates a wrapper object that combines EssentiaJS algorithms with WASM utility methods.
402
+ * This is needed because EssentiaJS has algorithms (Windowing, Spectrum, etc.) but lacks
403
+ * utility methods like arrayToVector/vectorToArray which are on the WASM module directly.
404
+ */
405
+ private createEssentiaWrapper;
406
+ private computeEffnetFeatures;
407
+ /**
408
+ * Gets the appropriate mel-spectrogram features for a given model architecture.
409
+ *
410
+ * Different architectures require different mel-band configurations:
411
+ * - musicnn: 96 bands (default)
412
+ * - effnet: 128 bands (custom)
413
+ * - vggish: 64 bands
414
+ * - tempocnn: 40 bands
415
+ *
416
+ * @param audioSignal - Mono audio signal at 16kHz sample rate
417
+ * @param architecture - The model architecture type
418
+ * @returns 2D array of mel-spectrogram frames
419
+ */
420
+ private getFeaturesForArchitecture;
421
+ /**
422
+ * Analyzes audio to extract genre, mood, and vibe data.
423
+ */
424
+ analyze(audioUrl: string): Promise<MusicClassificationProfile>;
425
+ /**
426
+ * Runs a classifier model on pre-computed embeddings.
427
+ *
428
+ * This method is used in the two-step model architecture:
429
+ * 1. Embedding model produces embeddings from audio features
430
+ * 2. Classifier model produces class predictions from embeddings
431
+ *
432
+ * @param classifierUrl - URL to the classifier model (GraphModel format)
433
+ * @param embeddings - 2D array of embeddings, shape [frames][embedding_dim]
434
+ * @returns Promise resolving to 1D array of averaged class predictions
435
+ */
436
+ private runClassifierOnEmbeddings;
437
+ /**
438
+ * Runs a two-step model architecture prediction.
439
+ *
440
+ * This method implements the complete two-step flow:
441
+ * 1. Detect embedding architecture from config
442
+ * 2. Extract architecture-specific features (96 vs 128 mel bands!)
443
+ * 3. Load embedding model (with caching)
444
+ * 4. Run embedding model to get feature vectors
445
+ * 5. Run classifier on embeddings
446
+ * 6. Return predictions
447
+ *
448
+ * @param config - Two-step model configuration with embedding and classifier URLs
449
+ * @param audioSignal - Mono audio signal at 16kHz sample rate
450
+ * @returns Promise resolving to 1D array of class predictions
451
+ */
452
+ private predictWithTwoStepModel;
453
+ /**
454
+ * Discovers the input names from a TensorFlow.js GraphModel.
455
+ *
456
+ * Different model versions and sources may have different input naming conventions.
457
+ * This method inspects the model's signature to find the correct input names.
458
+ *
459
+ * @param model - TensorFlow.js GraphModel instance
460
+ * @returns Array of input names expected by the model
461
+ */
462
+ private getModelInputNames;
463
+ /**
464
+ * Runs effnet embedding model inference on mel-spectrogram features.
465
+ *
466
+ * EffNet models are TensorFlow.js GraphModels that expect:
467
+ * - Named inputs discovered dynamically from model signature
468
+ * - Mel-spectrogram shape: [batch=64, mel_bands=128, time_frames=96]
469
+ *
470
+ * The 'bs64' in model name means fixed batch size of 64.
471
+ *
472
+ * @param model - TensorFlow.js GraphModel instance
473
+ * @param features - 2D array of mel-spectrogram frames, shape [frames][128]
474
+ * @returns 2D array of embeddings, shape [segments][embedding_dim]
475
+ */
476
+ private runEffnetEmbedding;
477
+ /**
478
+ * Runs Essentia embedding model inference on mel-spectrogram features.
479
+ *
480
+ * This handles TensorflowMusiCNN and TensorflowVGGish models from Essentia.js.
481
+ * These models have a predict() method that returns frame-level outputs.
482
+ *
483
+ * @param model - Essentia model instance (TensorflowMusiCNN or TensorflowVGGish)
484
+ * @param features - 2D array of mel-spectrogram frames
485
+ * @returns 2D array of embeddings, shape [frames][embedding_dim]
486
+ */
487
+ private runEssentiaEmbedding;
488
+ /**
489
+ * Unified model prediction method that handles both single-step and two-step model architectures.
490
+ *
491
+ * This is the primary entry point for model predictions. It automatically:
492
+ * - Detects if the config is single-step or two-step
493
+ * - Detects the model architecture and uses the correct feature extractor
494
+ * - Calls the appropriate prediction method
495
+ * - Maps predictions to labeled ClassificationTags
496
+ *
497
+ * @param config - Model configuration (SingleStepModelConfig or TwoStepModelConfig)
498
+ * @param audioSignal - Mono audio signal at 16kHz sample rate
499
+ * @param labels - Array of class labels for the model output
500
+ * @returns Promise resolving to array of ClassificationTags sorted by confidence
501
+ *
502
+ * @example
503
+ * // Single-step prediction
504
+ * const tags = await classifier.runModelPrediction(
505
+ * { modelUrl: '/models/genre-classifier.json', modelType: 'musicnn' },
506
+ * audioSignal,
507
+ * JAMENDO_GENRES
508
+ * );
509
+ *
510
+ * // Two-step prediction
511
+ * const tags = await classifier.runModelPrediction(
512
+ * { embedding: '/models/effnet.json', classifier: '/models/genre-cls.json' },
513
+ * audioSignal,
514
+ * JAMENDO_GENRES
515
+ * );
516
+ */
517
+ private runModelPrediction;
518
+ /**
519
+ * Run TensorFlow model inference on pre-computed features.
520
+ */
521
+ private predictWithModel;
522
+ private mapPredictions;
523
+ }
524
+ //# sourceMappingURL=MusicClassifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MusicClassifier.d.ts","sourceRoot":"","sources":["../../../src/core/analysis/MusicClassifier.ts"],"names":[],"mappings":"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"}