framerudiments 0.4.3__tar.gz → 0.4.4__tar.gz

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 (259) hide show
  1. {framerudiments-0.4.3/src/framerudiments.egg-info → framerudiments-0.4.4}/PKG-INFO +2 -2
  2. {framerudiments-0.4.3 → framerudiments-0.4.4}/README.md +1 -1
  3. {framerudiments-0.4.3 → framerudiments-0.4.4}/RELEASE_NOTES.md +5 -0
  4. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/spectrum.md +3 -1
  5. {framerudiments-0.4.3 → framerudiments-0.4.4}/pyproject.toml +1 -1
  6. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/__init__.py +1 -1
  7. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/rudiment_renderers.py +6 -1
  8. {framerudiments-0.4.3 → framerudiments-0.4.4/src/framerudiments.egg-info}/PKG-INFO +2 -2
  9. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_spectrum.py +12 -0
  10. {framerudiments-0.4.3 → framerudiments-0.4.4}/AGENTS.md +0 -0
  11. {framerudiments-0.4.3 → framerudiments-0.4.4}/LICENSE +0 -0
  12. {framerudiments-0.4.3 → framerudiments-0.4.4}/MANIFEST.in +0 -0
  13. {framerudiments-0.4.3 → framerudiments-0.4.4}/analysis-releases.json +0 -0
  14. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/ECOSYSTEM.md +0 -0
  15. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/FrameRudiments-PATCH_WORKFLOW.md +0 -0
  16. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/annular-modulation.md +0 -0
  17. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/authoring-workspace.md +0 -0
  18. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/beat-alignment.md +0 -0
  19. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/controlled-audio-response.md +0 -0
  20. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/expanded-effects.md +0 -0
  21. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/extraction.md +0 -0
  22. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/full-preset-analysis.md +0 -0
  23. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/hybrid-preset-analysis.md +0 -0
  24. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/keyframed-mattes.md +0 -0
  25. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/media/beat-alignment-evidence.json +0 -0
  26. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/media/beat-alignment.mp4 +0 -0
  27. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/media/beat-alignment.png +0 -0
  28. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/media/demo-transcript.md +0 -0
  29. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/media/effects-pipeline.svg +0 -0
  30. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/media/full-frame-comparison.png +0 -0
  31. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/media/full-frame-demo.mp4 +0 -0
  32. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/media/media-evidence.json +0 -0
  33. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/media/natural-materials.mp4 +0 -0
  34. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/media/natural-materials.png +0 -0
  35. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/media/preset-test-cards.png +0 -0
  36. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/media/rangoli-transcript.md +0 -0
  37. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/media/rangoli.mp4 +0 -0
  38. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/media/rangoli.png +0 -0
  39. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/media/test-card-inputs/colour-bars.png +0 -0
  40. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/media/test-card-inputs/grid-rings.png +0 -0
  41. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/media/test-card-inputs/text-card.png +0 -0
  42. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/multi-stem-modulation.md +0 -0
  43. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/music-reactive-3d.md +0 -0
  44. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/natural-materials.md +0 -0
  45. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/particle-smoke.md +0 -0
  46. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/phase3-compositing.md +0 -0
  47. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/preset-behaviour.md +0 -0
  48. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/preset-profiling.md +0 -0
  49. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/project-format.md +0 -0
  50. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/projectm-local-runtime.md +0 -0
  51. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/quality-effects.md +0 -0
  52. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/rangoli.md +0 -0
  53. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/rich-lyric-effects.md +0 -0
  54. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/rudiment-renderers.md +0 -0
  55. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/scoped-post-effects.md +0 -0
  56. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/solid-spatial-renderers.md +0 -0
  57. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/spatial-renderers.md +0 -0
  58. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/spatiotemporal-supersampling.md +0 -0
  59. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/sprite-visualisations.md +0 -0
  60. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/stem-sources-and-masks.md +0 -0
  61. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/variable-bpm-word-subtitles.md +0 -0
  62. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/visualisation-atlas.md +0 -0
  63. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/visualisation-coverage-matrix.md +0 -0
  64. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/visualiser-routing.md +0 -0
  65. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/visualisers.md +0 -0
  66. {framerudiments-0.4.3 → framerudiments-0.4.4}/docs/workflow-media.md +0 -0
  67. {framerudiments-0.4.3 → framerudiments-0.4.4}/integration/test_fire_volume_gpu.py +0 -0
  68. {framerudiments-0.4.3 → framerudiments-0.4.4}/integration/test_music_spatial_gpu.py +0 -0
  69. {framerudiments-0.4.3 → framerudiments-0.4.4}/integration/test_preset_analysis.py +0 -0
  70. {framerudiments-0.4.3 → framerudiments-0.4.4}/integration/test_released_preset_analysis.py +0 -0
  71. {framerudiments-0.4.3 → framerudiments-0.4.4}/integration/test_visualisers_gpu.py +0 -0
  72. {framerudiments-0.4.3 → framerudiments-0.4.4}/scripts/Run-ControlledPresetAnalysis.ps1 +0 -0
  73. {framerudiments-0.4.3 → framerudiments-0.4.4}/scripts/Run-FullPresetAnalysis.ps1 +0 -0
  74. {framerudiments-0.4.3 → framerudiments-0.4.4}/scripts/Run-HybridPresetAnalysis.ps1 +0 -0
  75. {framerudiments-0.4.3 → framerudiments-0.4.4}/scripts/Run-PresetBehaviourAnalysis.ps1 +0 -0
  76. {framerudiments-0.4.3 → framerudiments-0.4.4}/scripts/authoring_preview.py +0 -0
  77. {framerudiments-0.4.3 → framerudiments-0.4.4}/scripts/bake_mantaflow_fire.py +0 -0
  78. {framerudiments-0.4.3 → framerudiments-0.4.4}/scripts/build_sprite_assets.py +0 -0
  79. {framerudiments-0.4.3 → framerudiments-0.4.4}/scripts/check_projectm_runtime.py +0 -0
  80. {framerudiments-0.4.3 → framerudiments-0.4.4}/scripts/check_release_packages.py +0 -0
  81. {framerudiments-0.4.3 → framerudiments-0.4.4}/scripts/controlled_preset_analysis.py +0 -0
  82. {framerudiments-0.4.3 → framerudiments-0.4.4}/scripts/ensure_projectm_runtime.py +0 -0
  83. {framerudiments-0.4.3 → framerudiments-0.4.4}/scripts/full_preset_analysis.py +0 -0
  84. {framerudiments-0.4.3 → framerudiments-0.4.4}/scripts/generate_particle_gallery.py +0 -0
  85. {framerudiments-0.4.3 → framerudiments-0.4.4}/scripts/generate_post_effect_gallery.py +0 -0
  86. {framerudiments-0.4.3 → framerudiments-0.4.4}/scripts/generate_quality_gallery.py +0 -0
  87. {framerudiments-0.4.3 → framerudiments-0.4.4}/scripts/generate_rich_lyric_gallery.py +0 -0
  88. {framerudiments-0.4.3 → framerudiments-0.4.4}/scripts/generate_sprite_gallery.py +0 -0
  89. {framerudiments-0.4.3 → framerudiments-0.4.4}/scripts/generate_supersampling_gallery.py +0 -0
  90. {framerudiments-0.4.3 → framerudiments-0.4.4}/scripts/generate_timing_gallery.py +0 -0
  91. {framerudiments-0.4.3 → framerudiments-0.4.4}/scripts/generate_visualisation_gallery.py +0 -0
  92. {framerudiments-0.4.3 → framerudiments-0.4.4}/scripts/generate_visualiser_routing_gallery.py +0 -0
  93. {framerudiments-0.4.3 → framerudiments-0.4.4}/scripts/install_analysis_releases.py +0 -0
  94. {framerudiments-0.4.3 → framerudiments-0.4.4}/scripts/prepare_fire_atlas.py +0 -0
  95. {framerudiments-0.4.3 → framerudiments-0.4.4}/scripts/prepare_pixelcue_taggers.py +0 -0
  96. {framerudiments-0.4.3 → framerudiments-0.4.4}/scripts/preset_behaviour_pipeline.py +0 -0
  97. {framerudiments-0.4.3 → framerudiments-0.4.4}/scripts/profile_visualisation_coverage.py +0 -0
  98. {framerudiments-0.4.3 → framerudiments-0.4.4}/scripts/profile_visualisers.py +0 -0
  99. {framerudiments-0.4.3 → framerudiments-0.4.4}/scripts/projectm_dll_diagnostics.py +0 -0
  100. {framerudiments-0.4.3 → framerudiments-0.4.4}/scripts/render_natural_material_demo.py +0 -0
  101. {framerudiments-0.4.3 → framerudiments-0.4.4}/scripts/repair_projectm_mingw.py +0 -0
  102. {framerudiments-0.4.3 → framerudiments-0.4.4}/scripts/select_projectm_generator.py +0 -0
  103. {framerudiments-0.4.3 → framerudiments-0.4.4}/scripts/validate_patch.py +0 -0
  104. {framerudiments-0.4.3 → framerudiments-0.4.4}/setup.cfg +0 -0
  105. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/__main__.py +0 -0
  106. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/advanced_renderers.py +0 -0
  107. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/atlas.py +0 -0
  108. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/audio_probes.py +0 -0
  109. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/beat_alignment.py +0 -0
  110. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/beat_timeline.py +0 -0
  111. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/choreography.py +0 -0
  112. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/circular_renderers.py +0 -0
  113. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/cli.py +0 -0
  114. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/compositor.py +0 -0
  115. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/controlled_profiling.py +0 -0
  116. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/demo.py +0 -0
  117. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/effect_catalogue.py +0 -0
  118. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/effect_renderers.py +0 -0
  119. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/effects.py +0 -0
  120. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/encoding.py +0 -0
  121. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/fire_assets/mantaflow/NOTICE.md +0 -0
  122. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/fire_assets/mantaflow/atlas.json +0 -0
  123. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/fire_assets/mantaflow/flames.png +0 -0
  124. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/fire_assets/marburg/NOTICE.md +0 -0
  125. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/fire_assets/marburg/atlas.json +0 -0
  126. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/fire_assets/marburg/flames.png +0 -0
  127. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/fire_assets.py +0 -0
  128. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/fire_fluid.py +0 -0
  129. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/fire_renderer.py +0 -0
  130. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/fire_volume.py +0 -0
  131. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/flight.py +0 -0
  132. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/gpu_spatial_backend.py +0 -0
  133. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/io.py +0 -0
  134. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/keyframes.py +0 -0
  135. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/layer_animation.py +0 -0
  136. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/layer_displacement.py +0 -0
  137. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/layer_masks.py +0 -0
  138. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/lyric_indicator.py +0 -0
  139. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/modulation.py +0 -0
  140. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/motion.py +0 -0
  141. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/music_spatial_renderers.py +0 -0
  142. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/natural_materials.py +0 -0
  143. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/output_quality.py +0 -0
  144. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/particle_engine.py +0 -0
  145. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/post_effects.py +0 -0
  146. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/preset_library.py +0 -0
  147. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/preset_profiling.py +0 -0
  148. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/profile_analysis.py +0 -0
  149. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/project.py +0 -0
  150. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/projectm_backend.py +0 -0
  151. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/quality_effects.py +0 -0
  152. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/rangoli_renderer.py +0 -0
  153. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/render.py +0 -0
  154. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/rich_subtitles.py +0 -0
  155. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/scoped_effects.py +0 -0
  156. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/solid_spatial_renderers.py +0 -0
  157. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/spatial_renderers.py +0 -0
  158. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/spectrum.py +0 -0
  159. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/sprite_assets/arcade.png +0 -0
  160. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/sprite_assets/crystal.png +0 -0
  161. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/sprite_assets/fire.png +0 -0
  162. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/sprite_assets/generated-neon.png +0 -0
  163. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/sprite_assets/glass.png +0 -0
  164. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/sprite_assets/hud.png +0 -0
  165. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/sprite_assets/ice.png +0 -0
  166. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/sprite_assets/lcd-amber.png +0 -0
  167. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/sprite_assets/lcd-green.png +0 -0
  168. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/sprite_assets/lcd.png +0 -0
  169. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/sprite_assets/led.png +0 -0
  170. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/sprite_assets/manifest.json +0 -0
  171. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/sprite_assets/metal.png +0 -0
  172. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/sprite_assets/mono.png +0 -0
  173. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/sprite_assets/neon.png +0 -0
  174. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/sprite_assets/pixel.png +0 -0
  175. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/sprite_assets/plasma.png +0 -0
  176. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/sprite_assets/vfd.png +0 -0
  177. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/sprite_catalogue.py +0 -0
  178. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/sprite_renderers.py +0 -0
  179. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/stem_blend.py +0 -0
  180. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/stemlab.py +0 -0
  181. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/subtitles.py +0 -0
  182. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/super_sampling.py +0 -0
  183. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/terrain_field.py +0 -0
  184. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/timeline.py +0 -0
  185. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/visual_style.py +0 -0
  186. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/visualisation_catalogue.py +0 -0
  187. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/visualiser_assets/butterchurn-page.js +0 -0
  188. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/visualiser_assets/butterchurn-worker.mjs +0 -0
  189. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/visualiser_assets/feedback.json +0 -0
  190. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/visualiser_assets/feedback.milk +0 -0
  191. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/visualiser_assets/julia.json +0 -0
  192. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/visualiser_assets/julia.milk +0 -0
  193. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/visualiser_assets/kaleidoscope.json +0 -0
  194. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/visualiser_assets/kaleidoscope.milk +0 -0
  195. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/visualiser_assets/package-lock.json +0 -0
  196. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/visualiser_assets/package.json +0 -0
  197. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/visualiser_assets/rangoli-background.milk +0 -0
  198. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/visualiser_routing.py +0 -0
  199. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/visualiser_setup.py +0 -0
  200. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/visualisers.py +0 -0
  201. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments/word_timing.py +0 -0
  202. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments.egg-info/SOURCES.txt +0 -0
  203. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments.egg-info/dependency_links.txt +0 -0
  204. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments.egg-info/entry_points.txt +0 -0
  205. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments.egg-info/requires.txt +0 -0
  206. {framerudiments-0.4.3 → framerudiments-0.4.4}/src/framerudiments.egg-info/top_level.txt +0 -0
  207. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/conftest.py +0 -0
  208. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_adapters.py +0 -0
  209. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_advanced_renderers.py +0 -0
  210. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_authoring_preview.py +0 -0
  211. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_beat_alignment.py +0 -0
  212. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_behaviour_pipeline.py +0 -0
  213. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_checkpoint_batches.py +0 -0
  214. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_controlled_audio.py +0 -0
  215. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_coverage_matrix.py +0 -0
  216. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_default_antialias.py +0 -0
  217. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_effect_batch.py +0 -0
  218. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_extracted_helpers.py +0 -0
  219. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_fire_methods.py +0 -0
  220. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_flight.py +0 -0
  221. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_full_preset_analysis.py +0 -0
  222. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_gpu_ci_isolation.py +0 -0
  223. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_hybrid_launcher.py +0 -0
  224. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_keyframes.py +0 -0
  225. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_layer_masks.py +0 -0
  226. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_lyrics.py +0 -0
  227. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_music_spatial_pipeline.py +0 -0
  228. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_music_spatial_renderers.py +0 -0
  229. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_natural_materials.py +0 -0
  230. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_particle_engine.py +0 -0
  231. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_patch_validation.py +0 -0
  232. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_phase3_animation.py +0 -0
  233. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_phase3_gpu_injection.py +0 -0
  234. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_pipeline.py +0 -0
  235. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_preset_profiling.py +0 -0
  236. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_projectm_dll_diagnostics.py +0 -0
  237. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_projectm_generator.py +0 -0
  238. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_projectm_runtime_preflight.py +0 -0
  239. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_pytest_temp_isolation.py +0 -0
  240. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_quality_effects.py +0 -0
  241. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_rangoli_renderer.py +0 -0
  242. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_release_metadata.py +0 -0
  243. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_repair_projectm_mingw.py +0 -0
  244. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_rich_subtitles.py +0 -0
  245. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_rudiment_renderers.py +0 -0
  246. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_scoped_effects.py +0 -0
  247. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_solid_spatial_integration.py +0 -0
  248. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_solid_spatial_renderers.py +0 -0
  249. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_spatial_renderers.py +0 -0
  250. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_sprite_renderers.py +0 -0
  251. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_stem_blend.py +0 -0
  252. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_stem_source_integration.py +0 -0
  253. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_supersampling.py +0 -0
  254. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_timeline.py +0 -0
  255. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_variable_bpm_words.py +0 -0
  256. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_visualisation_modulation.py +0 -0
  257. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_visualiser_routing.py +0 -0
  258. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_visualisers.py +0 -0
  259. {framerudiments-0.4.3 → framerudiments-0.4.4}/tests/test_windows_launcher_splitpath.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: framerudiments
3
- Version: 0.4.3
3
+ Version: 0.4.4
4
4
  Summary: Deterministic Shorts and lyric visualisers using DanceRudiments and StemLab evidence.
5
5
  Author: Kieran Simkin
6
6
  License-Expression: MIT
@@ -152,7 +152,7 @@ its own tone, sprite, LRC, CUE and four-dimensional recording.
152
152
  stills, a poster, phone preview, input/output hashes, commands and logs.
153
153
 
154
154
  The [spectrum guide](docs/spectrum.md) covers saved StemLab Fourier calibration,
155
- frequency labels, peak controls and per-frame JSONL effect signals. Run
155
+ frequency labels, independent fixed-grid visibility, peak controls and per-frame JSONL effect signals. Run
156
156
  `framerudiments renderers` for the current built-in names. The optional
157
157
  `demo --spectrum` generator uses StemLab 1.6+; rendering its saved recording
158
158
  keeps the core package lightweight.
@@ -121,7 +121,7 @@ its own tone, sprite, LRC, CUE and four-dimensional recording.
121
121
  stills, a poster, phone preview, input/output hashes, commands and logs.
122
122
 
123
123
  The [spectrum guide](docs/spectrum.md) covers saved StemLab Fourier calibration,
124
- frequency labels, peak controls and per-frame JSONL effect signals. Run
124
+ frequency labels, independent fixed-grid visibility, peak controls and per-frame JSONL effect signals. Run
125
125
  `framerudiments renderers` for the current built-in names. The optional
126
126
  `demo --spectrum` generator uses StemLab 1.6+; rendering its saved recording
127
127
  keeps the core package lightweight.
@@ -1,3 +1,8 @@
1
+ # FrameRudiments 0.4.4
2
+
3
+ - Spectrum views accept a validated `style.grid` boolean. Set it to `false` to remove the three fixed dB guide lines while retaining calibrated bars and moving peak holds; label visibility remains independent.
4
+ - The existing default remains `true` for backward compatibility. Documentation and focused regression coverage include the no-grid, no-label presentation used by clean campaign visualisers.
5
+
1
6
  # FrameRudiments 0.4.3
2
7
 
3
8
  - Atlas fire accepts an evidence-recorded three-stop CSS palette ordered as
@@ -26,7 +26,8 @@ the ordinary FrameRudiments dependencies.
26
26
  "min_peak_db": -60,
27
27
  "min_peak_contrast_db": 3,
28
28
  "min_peak_distance": 2,
29
- "labels": true
29
+ "labels": true,
30
+ "grid": true
30
31
  }
31
32
  }
32
33
  ```
@@ -112,6 +113,7 @@ In addition to the common `colours`, `padding` and `background`, spectrum accept
112
113
  | `gap` | 1 pixel, nonnegative |
113
114
  | `peak_colour`, `label_colour` | CSS colours |
114
115
  | `labels`, `font_size` | true; responsive default font size, explicit range 6..128 pixels |
116
+ | `grid` | true; set false to omit the three horizontal dB reference lines while retaining bars and peak holds |
115
117
 
116
118
  Every render/preflight streams active spectrum reports into
117
119
  `rudiment-analysis.jsonl`, binding the sidecar hash in the final manifest.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "framerudiments"
7
- version = "0.4.3"
7
+ version = "0.4.4"
8
8
  description = "Deterministic Shorts and lyric visualisers using DanceRudiments and StemLab evidence."
9
9
  requires-python = ">=3.11"
10
10
  readme = "README.md"
@@ -1,6 +1,6 @@
1
1
  """Offline frame composition on a traceable musical clock."""
2
2
 
3
- __version__ = "0.4.3"
3
+ __version__ = "0.4.4"
4
4
 
5
5
  from .project import Project
6
6
  from .render import render, preflight
@@ -280,6 +280,7 @@ class SpectrumRenderer(_Viewport):
280
280
  "label_colour",
281
281
  "font_size",
282
282
  "labels",
283
+ "grid",
283
284
  },
284
285
  )
285
286
  self.floor = number(style.get("floor_db", -72), "spectrum floor", minimum=-240, maximum=0)
@@ -306,6 +307,9 @@ class SpectrumRenderer(_Viewport):
306
307
  self.labels = style.get("labels", True)
307
308
  if not isinstance(self.labels, bool):
308
309
  raise ValueError("Spectrum labels must be boolean")
310
+ self.grid = style.get("grid", True)
311
+ if not isinstance(self.grid, bool):
312
+ raise ValueError("Spectrum grid must be boolean")
309
313
  self.font_size = integer(
310
314
  style.get("font_size", max(6, min(14, size[0] // 30))), "spectrum font", minimum=6, maximum=128
311
315
  )
@@ -346,7 +350,8 @@ class SpectrumRenderer(_Viewport):
346
350
  return bottom - max(0, min(1, (db - self.floor) / (self.ceiling - self.floor))) * (bottom - top)
347
351
 
348
352
  for db in (self.floor, (self.floor + self.ceiling) / 2, self.ceiling):
349
- draw.line((left, y(db), right, y(db)), fill="#40516a")
353
+ if self.grid:
354
+ draw.line((left, y(db), right, y(db)), fill="#40516a")
350
355
  if self.labels:
351
356
  draw.text(
352
357
  (self.padding, y(db) - self.font_size / 2),
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: framerudiments
3
- Version: 0.4.3
3
+ Version: 0.4.4
4
4
  Summary: Deterministic Shorts and lyric visualisers using DanceRudiments and StemLab evidence.
5
5
  Author: Kieran Simkin
6
6
  License-Expression: MIT
@@ -152,7 +152,7 @@ its own tone, sprite, LRC, CUE and four-dimensional recording.
152
152
  stills, a poster, phone preview, input/output hashes, commands and logs.
153
153
 
154
154
  The [spectrum guide](docs/spectrum.md) covers saved StemLab Fourier calibration,
155
- frequency labels, peak controls and per-frame JSONL effect signals. Run
155
+ frequency labels, independent fixed-grid visibility, peak controls and per-frame JSONL effect signals. Run
156
156
  `framerudiments renderers` for the current built-in names. The optional
157
157
  `demo --spectrum` generator uses StemLab 1.6+; rendering its saved recording
158
158
  keeps the core package lightweight.
@@ -4,6 +4,7 @@ import os
4
4
 
5
5
  from dancerudiments_authoring.recording import Recording, RecordingClock, write_recording
6
6
  import pytest
7
+ from PIL import ImageColor
7
8
 
8
9
  from framerudiments import Project, render
9
10
  from framerudiments.compositor import Compositor
@@ -93,6 +94,17 @@ def test_peak_hold_decays_deterministically_without_hidden_state(spectrum_projec
93
94
  assert comp.frame(30)[0].tobytes() == first
94
95
 
95
96
 
97
+ def test_spectrum_grid_can_be_omitted_without_removing_bars_or_peak_holds(spectrum_project):
98
+ project, _, _ = spectrum_project
99
+ project.data["layers"][0]["style"] = {"grid": False, "labels": False}
100
+ comp = Compositor(Project(project.data, project.base))
101
+ view = comp.layers[0]
102
+ assert view.renderer.grid is False
103
+ image = view.renderer.render(view.data(comp.context(0)))
104
+ assert ImageColor.getcolor("#40516a", "RGBA") not in set(image.get_flattened_data())
105
+ assert image.getbbox() is not None
106
+
107
+
96
108
  def test_local_peak_plateaus_threshold_contrast_and_minimum_distance():
97
109
  assert peak_indices(
98
110
  [-60, -10, -10, -60, -20, -60], floor=-72, threshold=-50, contrast=3, distance=2, count=3
File without changes
File without changes
File without changes