vizcore 0.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 (71) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +21 -0
  3. data/README.md +170 -0
  4. data/docs/GETTING_STARTED.md +105 -0
  5. data/examples/assets/complex_demo_loop.wav +0 -0
  6. data/examples/basic.rb +9 -0
  7. data/examples/complex_audio_showcase.rb +261 -0
  8. data/examples/custom_shader.rb +21 -0
  9. data/examples/file_audio_demo.rb +74 -0
  10. data/examples/intro_drop.rb +38 -0
  11. data/examples/midi_scene_switch.rb +32 -0
  12. data/examples/shaders/custom_wave.frag +30 -0
  13. data/exe/vizcore +6 -0
  14. data/frontend/index.html +148 -0
  15. data/frontend/src/main.js +304 -0
  16. data/frontend/src/renderer/engine.js +135 -0
  17. data/frontend/src/renderer/layer-manager.js +456 -0
  18. data/frontend/src/renderer/shader-manager.js +69 -0
  19. data/frontend/src/shaders/builtins.js +244 -0
  20. data/frontend/src/shaders/post-effects.js +85 -0
  21. data/frontend/src/visuals/geometry.js +66 -0
  22. data/frontend/src/visuals/particle-system.js +148 -0
  23. data/frontend/src/visuals/text-renderer.js +143 -0
  24. data/frontend/src/visuals/vj-effects.js +56 -0
  25. data/frontend/src/websocket-client.js +131 -0
  26. data/lib/vizcore/analysis/band_splitter.rb +63 -0
  27. data/lib/vizcore/analysis/beat_detector.rb +70 -0
  28. data/lib/vizcore/analysis/bpm_estimator.rb +86 -0
  29. data/lib/vizcore/analysis/fft_processor.rb +224 -0
  30. data/lib/vizcore/analysis/fftw_ffi.rb +50 -0
  31. data/lib/vizcore/analysis/pipeline.rb +72 -0
  32. data/lib/vizcore/analysis/smoother.rb +74 -0
  33. data/lib/vizcore/analysis.rb +14 -0
  34. data/lib/vizcore/audio/base_input.rb +39 -0
  35. data/lib/vizcore/audio/dummy_sine_input.rb +40 -0
  36. data/lib/vizcore/audio/file_input.rb +163 -0
  37. data/lib/vizcore/audio/input_manager.rb +133 -0
  38. data/lib/vizcore/audio/mic_input.rb +121 -0
  39. data/lib/vizcore/audio/midi_input.rb +246 -0
  40. data/lib/vizcore/audio/portaudio_ffi.rb +243 -0
  41. data/lib/vizcore/audio/ring_buffer.rb +92 -0
  42. data/lib/vizcore/audio.rb +16 -0
  43. data/lib/vizcore/cli.rb +115 -0
  44. data/lib/vizcore/config.rb +46 -0
  45. data/lib/vizcore/dsl/engine.rb +229 -0
  46. data/lib/vizcore/dsl/file_watcher.rb +108 -0
  47. data/lib/vizcore/dsl/layer_builder.rb +182 -0
  48. data/lib/vizcore/dsl/mapping_resolver.rb +81 -0
  49. data/lib/vizcore/dsl/midi_map_executor.rb +188 -0
  50. data/lib/vizcore/dsl/scene_builder.rb +44 -0
  51. data/lib/vizcore/dsl/shader_source_resolver.rb +71 -0
  52. data/lib/vizcore/dsl/transition_controller.rb +166 -0
  53. data/lib/vizcore/dsl.rb +16 -0
  54. data/lib/vizcore/errors.rb +27 -0
  55. data/lib/vizcore/renderer/frame_scheduler.rb +75 -0
  56. data/lib/vizcore/renderer/scene_serializer.rb +73 -0
  57. data/lib/vizcore/renderer.rb +10 -0
  58. data/lib/vizcore/server/frame_broadcaster.rb +351 -0
  59. data/lib/vizcore/server/rack_app.rb +183 -0
  60. data/lib/vizcore/server/runner.rb +357 -0
  61. data/lib/vizcore/server/websocket_handler.rb +163 -0
  62. data/lib/vizcore/server.rb +12 -0
  63. data/lib/vizcore/templates/basic_scene.rb +10 -0
  64. data/lib/vizcore/templates/custom_shader_scene.rb +22 -0
  65. data/lib/vizcore/templates/custom_wave.frag +31 -0
  66. data/lib/vizcore/templates/intro_drop_scene.rb +40 -0
  67. data/lib/vizcore/templates/midi_control_scene.rb +33 -0
  68. data/lib/vizcore/templates/project_readme.md +35 -0
  69. data/lib/vizcore/version.rb +6 -0
  70. data/lib/vizcore.rb +37 -0
  71. metadata +186 -0
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Vizcore
4
+ # Current gem version.
5
+ VERSION = "0.1.0"
6
+ end
data/lib/vizcore.rb ADDED
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "vizcore/version"
4
+ require_relative "vizcore/errors"
5
+ require_relative "vizcore/dsl"
6
+ require "pathname"
7
+
8
+ # Main namespace for the Vizcore runtime and DSL entrypoints.
9
+ module Vizcore
10
+ # Base exception for Vizcore runtime failures.
11
+ class Error < StandardError; end
12
+ # Raised when an optional external dependency is required but unavailable.
13
+ class MissingDependencyError < Error; end
14
+
15
+ # @return [Pathname] absolute root path for this gem source tree.
16
+ def self.root
17
+ Pathname.new(__dir__).join("..").expand_path
18
+ end
19
+
20
+ # @return [Pathname] absolute path to bundled frontend assets.
21
+ def self.frontend_root
22
+ root.join("frontend")
23
+ end
24
+
25
+ # @return [Pathname] absolute path to scaffold template files.
26
+ def self.templates_root
27
+ root.join("lib", "vizcore", "templates")
28
+ end
29
+
30
+ # Evaluate a Vizcore DSL definition block.
31
+ #
32
+ # @yield DSL configuration block (`audio`, `scene`, `midi_map`, etc.)
33
+ # @return [Hash] serialized DSL definition
34
+ def self.define(&block)
35
+ DSL::Engine.define(&block)
36
+ end
37
+ end
metadata ADDED
@@ -0,0 +1,186 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: vizcore
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Yudai Takada
8
+ bindir: exe
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: faye-websocket
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '0.11'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '0.11'
26
+ - !ruby/object:Gem::Dependency
27
+ name: ffi
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '1.17'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '1.17'
40
+ - !ruby/object:Gem::Dependency
41
+ name: puma
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '6.0'
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '6.0'
54
+ - !ruby/object:Gem::Dependency
55
+ name: rack
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: 2.2.0
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: 2.2.0
68
+ - !ruby/object:Gem::Dependency
69
+ name: thor
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '1.3'
75
+ type: :runtime
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '1.3'
82
+ description: Vizcore provides a Ruby-first workflow to define scenes and render audio-reactive
83
+ visuals in the browser.
84
+ email:
85
+ - t.yudai92@gmail.com
86
+ executables:
87
+ - vizcore
88
+ extensions: []
89
+ extra_rdoc_files: []
90
+ files:
91
+ - LICENSE.txt
92
+ - README.md
93
+ - docs/GETTING_STARTED.md
94
+ - examples/assets/complex_demo_loop.wav
95
+ - examples/basic.rb
96
+ - examples/complex_audio_showcase.rb
97
+ - examples/custom_shader.rb
98
+ - examples/file_audio_demo.rb
99
+ - examples/intro_drop.rb
100
+ - examples/midi_scene_switch.rb
101
+ - examples/shaders/custom_wave.frag
102
+ - exe/vizcore
103
+ - frontend/index.html
104
+ - frontend/src/main.js
105
+ - frontend/src/renderer/engine.js
106
+ - frontend/src/renderer/layer-manager.js
107
+ - frontend/src/renderer/shader-manager.js
108
+ - frontend/src/shaders/builtins.js
109
+ - frontend/src/shaders/post-effects.js
110
+ - frontend/src/visuals/geometry.js
111
+ - frontend/src/visuals/particle-system.js
112
+ - frontend/src/visuals/text-renderer.js
113
+ - frontend/src/visuals/vj-effects.js
114
+ - frontend/src/websocket-client.js
115
+ - lib/vizcore.rb
116
+ - lib/vizcore/analysis.rb
117
+ - lib/vizcore/analysis/band_splitter.rb
118
+ - lib/vizcore/analysis/beat_detector.rb
119
+ - lib/vizcore/analysis/bpm_estimator.rb
120
+ - lib/vizcore/analysis/fft_processor.rb
121
+ - lib/vizcore/analysis/fftw_ffi.rb
122
+ - lib/vizcore/analysis/pipeline.rb
123
+ - lib/vizcore/analysis/smoother.rb
124
+ - lib/vizcore/audio.rb
125
+ - lib/vizcore/audio/base_input.rb
126
+ - lib/vizcore/audio/dummy_sine_input.rb
127
+ - lib/vizcore/audio/file_input.rb
128
+ - lib/vizcore/audio/input_manager.rb
129
+ - lib/vizcore/audio/mic_input.rb
130
+ - lib/vizcore/audio/midi_input.rb
131
+ - lib/vizcore/audio/portaudio_ffi.rb
132
+ - lib/vizcore/audio/ring_buffer.rb
133
+ - lib/vizcore/cli.rb
134
+ - lib/vizcore/config.rb
135
+ - lib/vizcore/dsl.rb
136
+ - lib/vizcore/dsl/engine.rb
137
+ - lib/vizcore/dsl/file_watcher.rb
138
+ - lib/vizcore/dsl/layer_builder.rb
139
+ - lib/vizcore/dsl/mapping_resolver.rb
140
+ - lib/vizcore/dsl/midi_map_executor.rb
141
+ - lib/vizcore/dsl/scene_builder.rb
142
+ - lib/vizcore/dsl/shader_source_resolver.rb
143
+ - lib/vizcore/dsl/transition_controller.rb
144
+ - lib/vizcore/errors.rb
145
+ - lib/vizcore/renderer.rb
146
+ - lib/vizcore/renderer/frame_scheduler.rb
147
+ - lib/vizcore/renderer/scene_serializer.rb
148
+ - lib/vizcore/server.rb
149
+ - lib/vizcore/server/frame_broadcaster.rb
150
+ - lib/vizcore/server/rack_app.rb
151
+ - lib/vizcore/server/runner.rb
152
+ - lib/vizcore/server/websocket_handler.rb
153
+ - lib/vizcore/templates/basic_scene.rb
154
+ - lib/vizcore/templates/custom_shader_scene.rb
155
+ - lib/vizcore/templates/custom_wave.frag
156
+ - lib/vizcore/templates/intro_drop_scene.rb
157
+ - lib/vizcore/templates/midi_control_scene.rb
158
+ - lib/vizcore/templates/project_readme.md
159
+ - lib/vizcore/version.rb
160
+ homepage: https://github.com/ydah/vizcore
161
+ licenses:
162
+ - MIT
163
+ metadata:
164
+ homepage_uri: https://github.com/ydah/vizcore
165
+ source_code_uri: https://github.com/ydah/vizcore
166
+ changelog_uri: https://github.com/ydah/vizcore/blob/main/CHANGELOG.md
167
+ documentation_uri: https://github.com/ydah/vizcore/blob/main/docs/GETTING_STARTED.md
168
+ rubygems_mfa_required: 'true'
169
+ rdoc_options: []
170
+ require_paths:
171
+ - lib
172
+ required_ruby_version: !ruby/object:Gem::Requirement
173
+ requirements:
174
+ - - ">="
175
+ - !ruby/object:Gem::Version
176
+ version: 3.2.0
177
+ required_rubygems_version: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - ">="
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ requirements: []
183
+ rubygems_version: 4.0.6
184
+ specification_version: 4
185
+ summary: Ruby DSL audio visualizer for DJ/VJ workflows.
186
+ test_files: []