Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support projectors and screen fixtures #581

Open
wants to merge 2,493 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2493 commits
Select commit Hold shift + click to select a range
b214da2
Merge pull request #505 from baaahs/fix-app-problems
merge-when-green[bot] Oct 6, 2022
a267ce0
Bump from Kotlin 1.7.10 to 1.7.20.
xian Oct 7, 2022
db95ef7
Migrate code for ktor 2.x.
xian Oct 7, 2022
fcafe1e
Merge pull request #506 from baaahs/kotlin-1.7.20
merge-when-green[bot] Oct 7, 2022
306475a
Visualizers take model unit scale into account.
xian Oct 11, 2022
2b8de01
Visualizers take model unit scale into account.
xian Oct 11, 2022
bb65166
Merge pull request #507 from baaahs/visualizers-honor-model-scale
merge-when-green[bot] Oct 12, 2022
29f2d9a
Hack to make visualizer pixels look right for BAAAHS and grids.
xian Oct 12, 2022
b844297
Merge pull request #509 from baaahs/fix-pixel-pitch
merge-when-green[bot] Nov 5, 2022
8608dc8
Direct URL for mapper is no longer used.
xian Oct 18, 2022
f5235de
Refactor PinkyMain for clarity/DRY.
xian Oct 18, 2022
b93921c
Update link in comment.
xian Oct 18, 2022
f39ecea
Imported shaders could take their title from the containing file's name.
xian Oct 22, 2022
cf6a118
Refactoring ShaderDialect to return intermediate Analyzer object.
xian Oct 23, 2022
606f6a6
Refactored ShaderDialect to return intermediate ShaderAnalyzer object…
xian Oct 24, 2022
5669ddd
More refactoring after ShaderDialect/ShaderAnalysis split.
xian Oct 24, 2022
617fae8
ShaderDialect can hold wellKnownShaderPorts, for UI/help system expos…
xian Oct 24, 2022
14ddf10
Case-insensitive shader library matching.
xian Oct 25, 2022
53380cc
Add Earth-like planet preview shader, unusued.
xian Oct 27, 2022
1b95a61
Use KeyboardEvent.code instead of KeyboardEvent.key to distinguish sh…
xian Oct 27, 2022
e871b04
Changes to Shader Library.
xian Oct 27, 2022
dea7212
Pull out Tokenizer from GlslParser.Context.
xian Oct 29, 2022
3bdc8f5
Simplify GlslParser tokenization logic.
xian Oct 29, 2022
8d97a4c
Refactor GLSL function body rewriting to use improved token parser.
xian Oct 29, 2022
0487a90
Merge pull request #510 from baaahs/isf-shader-library-prep
merge-when-green[bot] Nov 5, 2022
46325e8
Bump to Kotlin 1.7.21.
xian Nov 9, 2022
077e5c3
Use circleci medium+ resource class for more RAM (6g > 4g).
xian Nov 9, 2022
3c24e8d
Merge pull request #511 from baaahs/kotlin-1.7.21
merge-when-green[bot] Nov 9, 2022
12735bf
Fix circleci test results.
xian Nov 10, 2022
5e936c6
Bump circleci image to JDK 18.
xian Nov 10, 2022
322d71b
Merge pull request #512 from baaahs/circleci-bump-docker-img
merge-when-green[bot] Nov 10, 2022
9d8e8e4
Remove debug output.
xian Nov 14, 2022
72226e6
Initial support for #if/elif directives in glsl.
xian Nov 14, 2022
edd21c0
Support #if/elif condition evaluation in GLSL.
xian Nov 15, 2022
e2e70ee
Merge pull request #513 from baaahs/if-directive
merge-when-green[bot] Nov 15, 2022
d0fbf49
Fix patch-editor.html.
xian Nov 15, 2022
eebed75
Change views in baaahs.app.ui to match *View convention.
xian Nov 10, 2022
1f8f29c
Move DOT/DAG support to common.
xian Nov 10, 2022
a93173a
Fix LinkedProgram.linkNodes mutability.
xian Nov 6, 2022
76885eb
Shader preview isn't built unless/until its view is visible.
xian Nov 14, 2022
678ba42
Support precision modifiers in GLSL function declarations.
xian Nov 13, 2022
384626e
Merge pull request #514 from baaahs/pre-isf
merge-when-green[bot] Nov 15, 2022
1ad1ea1
DRY creating control add menu items.
xian Nov 23, 2022
da89467
Theme and app toolbar styling cleanup.
xian Nov 24, 2022
5053fc6
Fix button group internal grid layout editing.
xian Nov 24, 2022
6079a03
Fix button group internal grid layout's Match Parent behavior.
xian Nov 24, 2022
763d974
Fix Ben's Show internal grids that shouldn't have been matching parent.
xian Nov 24, 2022
6a52ac2
"Edit" button in app toolbar is always visible.
xian Nov 24, 2022
75e4395
Merge pull request #517 from baaahs/fix-button-group-inner-grid
merge-when-green[bot] Nov 24, 2022
8f15289
Less jarring beatlink control.
xian Nov 24, 2022
87b9413
Merge pull request #518 from baaahs/prettier-beatlink-glsl
merge-when-green[bot] Nov 24, 2022
4c7b34c
Optimize initial layout/render of grids.
xian Nov 25, 2022
d1215ee
Optimize initial layout/render of visualizer control.
xian Nov 25, 2022
0abb659
DRY grid background.
xian Nov 25, 2022
1de4c3d
Tweaks to grid button layout at compact scales to fix overflow.
xian Nov 26, 2022
0c3163d
Show circular progress while shader previews are built.
xian Nov 26, 2022
c5e52d3
Merge pull request #519 from baaahs/ui-optimizations
merge-when-green[bot] Nov 26, 2022
d2c6ece
First render optimizations.
xian Nov 26, 2022
e1b8ebc
If a button is less than twice the height of a line of text, reduce l…
xian Nov 26, 2022
bfdde73
Merge pull request #520 from baaahs/ui-optimizations
xian Nov 26, 2022
543baa1
Bump kotlin-wrappers to 1.0.0.pre.451.
xian Nov 27, 2022
ff1108e
Merge pull request #521 from baaahs/kotlin-wrappers-pre-451
merge-when-green[bot] Nov 27, 2022
a67a30e
Remove 1.25mb, Peter Thiel, and blueprintjs from client.
xian Nov 27, 2022
5719409
Condense simulator layout a bit.
xian Nov 29, 2022
bffd8ef
Merge pull request #522 from baaahs/condense-sim-ui
merge-when-green[bot] Nov 30, 2022
92a3624
Rename "Feed" to "FeedContext".
xian Dec 6, 2022
4595931
Rename "EngineFeed" and "ProgramFeed" to "EngineFeedContext" and "Pro…
xian Dec 17, 2022
2a786af
Rename "DataSource" to "Feed", et al.
xian Dec 17, 2022
891044d
Rename more DataSource-related things.
xian Dec 17, 2022
36c866a
Rename even more DataSource-related things.
xian Dec 17, 2022
eabe06c
Rename still more DataSource-related things.
xian Dec 17, 2022
e90f439
Rename baaahs.plugin.core.datasource package to feed.
xian Dec 17, 2022
bb99feb
Rename yet more DataSource-related things.
xian Dec 17, 2022
af6eabb
Migrate show JSON from data sources to feeds.
xian Dec 17, 2022
f28e582
Fix tests.
xian Dec 17, 2022
acdc31a
Merge pull request #523 from baaahs/data-sources-are-feeds
xian Dec 17, 2022
6faaec7
Bump kgl to 1.6.1.
xian Dec 19, 2022
90bb527
Merge pull request #524 from baaahs/kgl-1.6.1
xian Dec 20, 2022
a6f9fa2
Bump to ace-builds 1.14.0. Regenerate stubs.
xian Dec 20, 2022
594b3c8
It's possible that both `shader` and `previewShaderBuilder` will be n…
xian Dec 28, 2022
82d6a54
Switch to JS IR backend. Fix some external lib issues.
xian Dec 28, 2022
0b5f424
Merge pull request #409 from baaahs/js-ir
xian Dec 29, 2022
3b71a77
Simulator styling.
xian Dec 30, 2022
38461ee
Extract `type` property for migrations.
xian Feb 6, 2023
1e13ce5
Draw line connecting segments of light bar models.
xian Feb 6, 2023
6aa5991
Invert sense of Grid's ColumnsThenRows/RowsThenColumns. Grid defaults…
xian Feb 7, 2023
9b80b23
Grids may have a stagger period, which causes rows or columns to be s…
xian Feb 7, 2023
d89de6b
Reimplement numberTextField as a component, allowing error states.
xian Feb 8, 2023
7c82d15
Merge pull request #525 from baaahs/grid-swap-and-stagger
xian Feb 12, 2023
6c47237
Bump to Kotlin 1.8.0.
xian Dec 29, 2022
a15171e
Fixes for Kotlin 1.8.0.
xian Dec 30, 2022
0465f39
Upgrade to Gradle 8.0.2.
xian Mar 11, 2023
f126d03
Upgrade to Kotlin 8.10.
xian Mar 11, 2023
14bfe97
Fix build task deps vs gradle 8.
xian Mar 12, 2023
de1a887
Fix compile error in tests.
xian Mar 12, 2023
e23444d
Back to Gradle 7.5.1 cuz build time was up 133% ouch.
xian Mar 12, 2023
3251bcf
Merge pull request #526 from baaahs/kotlin-1.8
xian Mar 12, 2023
9749c25
Kotlin 1.8 upgrade wasn't fully baked, revert for now.
xian Mar 31, 2023
54829ed
Add 7-channel DMX mapping for Rockpar Tris.
xian Mar 23, 2023
ad07810
Fix light bar visualization when row/column gap is negative.
xian Mar 23, 2023
c08ac1f
Fix JS executable serving.
xian Mar 23, 2023
4564dfd
Include Roboto font locally.
xian Mar 23, 2023
d181489
Add server-side gamma correction.
xian Mar 23, 2023
185c3de
Fix bug in Pasture Bedtime template.
xian Mar 31, 2023
e2d60e6
Change exception when a layout is missing from fatal to error log.
xian Mar 31, 2023
7b3b660
Oops, new grid entities should default to zigZag=true.
xian Mar 31, 2023
c845283
Add Eve Rafters show template. <3
xian Mar 31, 2023
8bc8f38
Merge pull request #527 from baaahs/eve-rafters-fixes
xian Mar 31, 2023
784ece4
ESP-IDF update to version 5.0.1! Yay! It works (probably. I mean it s…
tomseago Apr 4, 2023
aaa8c6b
Fix bug causing scene editor objects to disappear after each edit.
xian Apr 23, 2023
e177689
Don't refit scene editor camera after every edit, just on first render.
xian Apr 23, 2023
186ae1d
Merge pull request #528 from baaahs/fix-scene-editor
xian Apr 24, 2023
ed9993f
Fix control sizing in vacuity.
xian Mar 31, 2023
fd0fa71
Prevent long-press on iOS from selecting things.
xian Mar 31, 2023
d67a31a
Merge branch 'ever-afters'
xian Apr 24, 2023
c46089a
Fix disabling of incorrect file types in Open Show/Open Scene dialogs.
xian Apr 25, 2023
04405a5
Apply gamma correction to shaded pixels.
xian Jun 18, 2023
1adf481
Apply gamma correction to UI LEDs.
xian Jun 18, 2023
6572962
Ugh. Closer?
xian Jun 18, 2023
bcbe163
Minor syntax tweaks to make the build go
tomseago Jun 19, 2023
9b8fa95
MonitorUI should have its own scoped Visualizer which doesn't collide…
xian Jun 22, 2023
f3a87d2
Mark PortRef as polymorphic for serialization.
xian Jun 23, 2023
e2b36f3
Refactor fixtures.
xian Oct 12, 2022
72bdf76
Cleanup.
xian Jun 24, 2023
4cb4606
Fix some weird color warnings.
xian Oct 12, 2022
dcdc92a
Don't impose Fixture fixtureType rule yet.
xian Jun 24, 2023
6367a9d
Merge pull request #516 from baaahs/collapse-fixtures
merge-when-green[bot] Jun 24, 2023
5ecfae0
Merge pull request #533 from baaahs/brain-gamma
xian Jul 17, 2023
d61e2e7
Fix favicon.
xian Jul 25, 2023
9422fe9
Fix favicon. Better.
xian Jul 25, 2023
d1a7405
Merge pull request #536 from baaahs/favicon
xian Jul 25, 2023
4a86a17
Fix editor for DmxTransportConfig.fixtureStartsInFreshUniversel
xian Aug 1, 2023
95256e4
Fix bug causing incorrect (all-zero) light bar pixel locations. Thank…
xian Aug 1, 2023
bf1050e
Light bar and ring pixels are visible on both front and back.
xian Aug 1, 2023
f1f6ba1
Increase size of pixels for Light bar and ring simulations, for bette…
xian Aug 1, 2023
429e5ee
Improve light bar visualization.
xian Aug 1, 2023
85bba9b
Add Club Six scene as a template.
xian Aug 1, 2023
1941ed5
Include JNI libs for lwjgl for all supported platforms.
xian Aug 1, 2023
a2f078f
Add explicit resource for serving sparklemotion.js.
xian Aug 1, 2023
1272130
Merge pull request #539 from baaahs/clubsix
xian Aug 1, 2023
426a4a6
sim::image use html input instead of dropzone
kcking Aug 4, 2023
9d5d3b3
Merge pull request #541 from kcking/imageupload
xian Aug 4, 2023
e7c70dd
Add Moving head Shaders and Filters (#546)
synox Aug 7, 2023
0f9da29
Create Visual preview for Moving Heads #548
synox Aug 8, 2023
ef40837
Allow an initial viewing angle to be specified for a scene.
xian Aug 8, 2023
5c00d88
Don't render a box around entity groups except in the scene editor.
xian Aug 8, 2023
bb4f701
Add updated BAAAHS model and show for 2023.
xian Aug 8, 2023
b9b1b84
Add DJ booth lightbox.
xian Aug 8, 2023
d33072c
Add Boryli dmx channel layout
kcking Aug 6, 2023
6735551
Clarify x86 jdk requirement in README.
kcking Aug 8, 2023
c93f7b5
Merge pull request #550 from kcking/readme
kcking Aug 8, 2023
fa905d9
Merge pull request #544 from kcking/boryli-dmx
xian Aug 8, 2023
e1c5326
add shadertoy mockups for beatInfo struct
bencbartlett Aug 9, 2023
481f7f4
add sheep shrooms shader
bencbartlett Aug 9, 2023
eb9e38a
Lift GlslType output code generation to member fun
kcking Aug 6, 2023
81d3c3e
Add `prism` and `prismRotation` fields to `MovingHeadParams`.
kcking Aug 6, 2023
f8cda0a
Update to IDF v5.1(stable) although untested on hardware
tomseago Aug 9, 2023
a13d79b
Merge pull request #551 from baaahs/baaahs-2023
xian Aug 9, 2023
68050b7
add new logo drawing functions
bencbartlett Aug 9, 2023
161cc3d
Merge branch 'baaahs:main' into main
bencbartlett Aug 9, 2023
85b22c3
updates to logo drawing; added pulsing effect
bencbartlett Aug 9, 2023
eb4eeef
Merge remote-tracking branch 'origin/main'
bencbartlett Aug 9, 2023
9fcedfd
updates
bencbartlett Aug 9, 2023
635286e
add wobbly lines shader yay
bencbartlett Aug 9, 2023
0eb3dcb
updates
bencbartlett Aug 9, 2023
3c9a378
add new distortion shader - Moire's bad trip
bencbartlett Aug 11, 2023
211b9a2
Merge pull request #554 from baaahs/update-to-5.1
tomseago Aug 12, 2023
e2ad145
Fix moving head tests.
xian Aug 9, 2023
45a51aa
Merge pull request #555 from baaahs/fix-moving-head-tests
xian Aug 15, 2023
61e9877
enable VideoInPlugin
kcking Aug 4, 2023
1c0cd47
Add native webcam capture
kcking Aug 4, 2023
25d536e
fix CI
kcking Aug 16, 2023
69ab416
Merge pull request #561 from baaahs/kevin-nativewebcam
xian Aug 16, 2023
1b72c61
Fix mapping software
kcking Aug 13, 2023
6b11a50
Add kevin's mapping of F3D
kcking Aug 13, 2023
25c54cf
Reapply kotlin-1.8 upgrade.
xian Mar 31, 2023
53e7089
Revert "Kotlin 1.8 upgrade wasn't fully baked, revert for now."
xian Jul 13, 2023
6670ac3
Update to Kotlin 1.8.22.
xian Jul 13, 2023
3bea905
Update to Kotlin 1.9.0.
xian Jul 13, 2023
53a80fc
Update to kotlin-wrappers 1.0.0-pre.565.
xian Jul 14, 2023
f7a99eb
Update to kotlin-wrappers 1.0.0-pre.596, kotlinx-html 0.9.1, coroutin…
xian Jul 14, 2023
c86c910
Update to gradle 8.2.1.
xian Jul 17, 2023
ad1a047
Quiet show migration spew.
xian Jul 17, 2023
b8bc2cb
Remove dead jcenter.
xian Jul 17, 2023
c78eabb
Switch to using application gradle plugin; clean up routing and build.
xian Jul 18, 2023
3c0cb5a
Bump to logback 1.3.11.
xian Aug 16, 2023
731337a
Deprecate `runPinkyJvm` gradle task.
xian Aug 16, 2023
429ba1d
Fix gh-pages deploy.
xian Aug 16, 2023
8fc0624
Fix grid visualizer offset bug.
xian Aug 16, 2023
8173018
Merge pull request #563 from baaahs/fix-grid-visualizer-offset
xian Aug 16, 2023
b496f49
Merge pull request #562 from baaahs/kotlin-1.9
xian Aug 16, 2023
979f9c5
Fix image upload.
xian Aug 16, 2023
5a53ae8
Add JDK <20 requirement to README
kcking Aug 16, 2023
2d74fa4
Add generated data to SoundAnalysisPlugin on simulator
kcking Aug 10, 2023
abe6abd
Update FileUploadView.kt
xian Aug 16, 2023
66700aa
Merge pull request #564 from baaahs/fix-image-upload-dropzone
xian Aug 16, 2023
de8e91c
update library index, bugfixes, add beat responsiveness from mockups
bencbartlett Aug 18, 2023
da18a80
Merge pull request #553 from bencbartlett/main
bencbartlett Aug 18, 2023
17fe97c
Merge pull request #556 from bencbartlett/wobby_lines_shaders
bencbartlett Aug 18, 2023
7550ac4
Merge pull request #558 from bencbartlett/moires_bad_trip
bencbartlett Aug 18, 2023
2fd9766
bump idf to v5.1 in sync-idf.sh
tgvarik Aug 18, 2023
512fb52
Merge pull request #566 from baaahs/fix/sync-idf-v5_1
xian Aug 18, 2023
ad6b71a
Bump to kgl 0.6.2.
xian Aug 20, 2023
51f73a5
Merge pull request #567 from baaahs/kgl-0.6.2
xian Aug 20, 2023
5b07ed3
Create typesafe wrappers for interacting with uniforms in feeds.
xian Sep 13, 2023
3a0bb98
Use typesafe uniform wrappers in most feeds.
xian Sep 13, 2023
09b672e
Refactor SingleUniformFeedContext to eliminate some boilerplate.
xian Sep 13, 2023
baeaabf
More cleanup of single-uniform feed context helper.
xian Sep 14, 2023
1d19d42
Merge pull request #570 from baaahs/typesafe-uniforms
xian Sep 14, 2023
f4c4828
Fix bug setting uniforms caused by Kotlin/JS's inability to distingui…
xian Sep 16, 2023
7592981
Oops, uniform change detecting needs to happen at ProgramContext leve…
xian Sep 16, 2023
f8fe185
Fix SingleUniformFeedContext for JVM.
xian Sep 16, 2023
df9e810
Merge pull request #571 from baaahs/fix-uniforms-on-main
xian Sep 16, 2023
86ff792
Bump to kotlin-wrappers 1.0.0-pre.624 to fix mui menu popups and vari…
xian Sep 15, 2023
9da5c1e
Bump to kotlin 1.9.10.
xian Sep 16, 2023
0626087
Bump to gradle 8.3.
xian Sep 16, 2023
76ffa27
Merge pull request #572 from baaahs/bump-kotlin-wrappers
xian Sep 16, 2023
4673585
Clean up use of texture units. GlslProgram binds texture units for un…
xian Sep 17, 2023
9258f3e
Slightly improved testing of texture handling.
xian Sep 19, 2023
999338a
Merge pull request #573 from baaahs/fix-texture-units
xian Sep 19, 2023
12b8075
Add additional state ("binding") to PreviewShaderBuilder so GLSL prog…
xian Sep 25, 2023
b52757a
Use prebuilt artifacts for webcam-capture-driver-native.
xian Sep 25, 2023
966e626
Merge pull request #575 from baaahs/use-prebuilt-webcam-drivers
xian Sep 25, 2023
6def4bb
Merge pull request #574 from baaahs/parallel-shader-compilation
xian Sep 25, 2023
68053eb
Use KHR_parallel_shader_compile extension to prevent UI thread blocki…
xian Sep 27, 2023
a102fb2
Optimize logging on JVM.
xian Sep 27, 2023
bfdf5b3
Log unknown port mappings as DEBUG, not WARN.
xian Sep 27, 2023
2043de6
Fix webgl "no video" warnings.
xian Sep 27, 2023
da22099
Merge pull request #576 from baaahs/misc-fixes
xian Sep 28, 2023
ee671c6
Add ResetIcon for resetting sliders/xy pads.
xian Sep 29, 2023
1986ab4
Bump react-ace and ace-builds versions.
xian Sep 29, 2023
e6097ba
Bump react-mosaic-component.
xian Sep 29, 2023
ad09712
Remove fontawesome, use material icons instead.
xian Sep 29, 2023
57b628a
Merge pull request #577 from baaahs/bump-deps
xian Sep 29, 2023
1d866f1
MutableEditable doesn't need a generic type.
xian Aug 17, 2023
281df6f
Panels aren't used in grid layouts.
xian Aug 17, 2023
10534b7
Switch tests to use grid layouts, not legacy layouts, in preparation …
xian Aug 17, 2023
3e46f29
Remove display of legacy tabs.
xian Sep 29, 2023
90ff9bc
Remove layout editing for legacy tabs.
xian Sep 29, 2023
dad7b27
Fix alert from BrowserWebCamVideoProvider when accessed from non-secu…
xian Oct 3, 2023
4fbacc6
Switch preview paint shader from SMPTE bars to an earthy globe.
xian Sep 20, 2023
2d41eb4
Merge pull request #578 from baaahs/remove-legacy-tabs
xian Oct 4, 2023
85f534a
Merge pull request #579 from baaahs/earthy-preview
xian Oct 4, 2023
01e051e
Refactor RenderManager/RenderEngines so RenderTargets can direct thei…
xian Apr 25, 2023
bfd50df
Rename ModelRenderEngine to ComponentRenderEngine.
xian Apr 25, 2023
4918af5
Remove ShowPlayer from feed/control open phase.
xian Oct 4, 2023
0ba295d
Use a ProgramBuilder to build GLSL code.
xian Oct 4, 2023
3588ebb
Refactor away from ShowPlayer.
xian Apr 26, 2023
15e277b
Rename Monitor to Display.
xian Jul 9, 2023
bbe3306
WIP
xian Jul 9, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
82 changes: 82 additions & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
version: 2
jobs:
build:
branches:
ignore: gh-pages

docker:
# CircleCI maintains a library of pre-built images
# documented at https://circleci.com/docs/2.0/circleci-images/
- image: cimg/openjdk:18.0.2-node

resource_class: medium+

working_directory: ~/repo

environment:
NO_GPU: "true"

steps:
- checkout

- restore_cache:
keys:
- v1-dependencies-{{ checksum "build.gradle.kts" }}
- v1-dependencies-

- run:
name: Prefetch Dependencies
command: |
./gradlew model -PisProduction

- save_cache:
paths:
- ~/.gradle
key: v1-dependencies-{{ checksum "build.gradle.kts" }}

- run:
name: Build
command: |
./gradlew build -PisProduction -xjsBrowserTest --stacktrace --no-daemon --no-parallel --info

- add_ssh_keys:
fingerprints:
- "e6:55:46:24:0b:66:40:62:f9:72:10:00:de:41:37:e6"

- run:
name: Save test results
command: |
mkdir -p build/test-results-circleci
find . -type f -regex ".*/build/test-results/.*xml" -exec cp {} build/test-results-circleci/ \;
when: always

- store_test_results:
path: build/test-results

- store_artifacts:
path: build/processedResources/js/main

- store_artifacts:
path: build/reports

- run:
name: Deploy to gh-pages
command: |
if [ "${CIRCLE_BRANCH}" == "main" ]; then
mkdir -p build/gh-pages/.circleci
cp .circleci/gh-pages-config.yml build/gh-pages/.circleci/config.yml

cp -r build/dist/js/productionExecutable/* build/gh-pages

# don't ignore files starting with _
touch build/gh-pages/.nojekyll

echo "Build ${CIRCLE_BUILD_NUM:-unknown} at `date`." > build/gh-pages/BUILT.txt

git config --global user.email "[email protected]"
git config --global user.name "CI Builder"

mkdir -p deploy/node_modules
npm install --prefix deploy --silent [email protected]
`npm bin --prefix deploy`/gh-pages --dotfiles --message "Auto deploy" --dist build/gh-pages
fi
5 changes: 5 additions & 0 deletions .circleci/gh-pages-config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
version: 2
jobs:
build:
branches:
ignore: gh-pages # prevent gh-pages from triggering circleci
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
build
.idea
.gradle
node_modules
.DS_Store
306 changes: 306 additions & 0 deletions CMakeLists.txt

Large diffs are not rendered by default.

91 changes: 91 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
# BAAAHS Code of Conduct

## 1. Purpose

A primary goal of BAAAHS (Big-Ass Amazingly Awesome Homosexual Sheep) is to be inclusive to the largest number of contributors, with the most varied and diverse backgrounds possible. As such, we are committed to providing a friendly, safe and welcoming environment for all, regardless of age, gender, sexual orientation, sexual position (top, bottom, versatile), ability, ethnicity, socioeconomic status, technical ability, fashion-sense, and religion (or lack thereof).

This code of conduct outlines our expectations for all those who participate in our community, as well as the consequences for unacceptable behavior.

We invite all those who participate in BAAAHS to help us create safe and positive experiences for everyone.

## 2. Open Culture Citizenship

A supplemental goal of this Code of Conduct is to increase open culture citizenship by encouraging participants to recognize and strengthen the relationships between our actions and their effects on our community.

Communities mirror the societies in which they exist and positive action is essential to counteract the many forms of inequality and abuses of power that exist in society.

If you see someone who is making an extra effort to ensure our community is welcoming, friendly, and encourages all participants to contribute to the fullest extent, we want to know.

## 3. Expected Behavior

The following behaviors are expected and requested of all community members:

* Participate in an authentic and active way. In doing so, you contribute to the health and longevity of this community.
* Exercise consideration and respect in your speech and actions.
* Attempt collaboration before conflict.
* Refrain from demeaning, discriminatory, or harassing behavior and speech.
* Be mindful of your surroundings and of your fellow participants. Alert community leaders if you notice a dangerous situation, someone in distress, or violations of this Code of Conduct, even if they seem inconsequential.
* Remember that community event venues may be shared with members of the public; please be respectful to all patrons of these locations.

## 4. Unacceptable Behavior

The following behaviors are considered harassment and are unacceptable within our community:

* Violence, threats of violence or violent language directed against another person.
* Sexist, racist, homophobic, transphobic, ableist or otherwise discriminatory jokes and language.
* Posting or displaying violent material.
* Posting or threatening to post other people's personally identifying information ("doxing").
* Personal insults, particularly those related to gender, sexual orientation, sexual position, race, religion, or disability.
* Inappropriate photography or recording.
* Inappropriate physical contact. You should have someone's consent before touching them.
* Unwelcome sexual attention. This includes, inappropriate touching, groping, and unwelcomed sexual advances without consent.
* Deliberate intimidation, stalking or following (online or in person).
* Advocating for, or encouraging, any of the above behavior.
* Sustained disruption of community events, including talks, presentations, and parties.

## 5. Weapons Policy

No weapons will be allowed at BAAAHS events, community spaces, or in other spaces covered by the scope of this Code of Conduct. Weapons include but are not limited to guns, explosives, and large knives such as those used for hunting or display, as well as any other item used for the purpose of causing injury or harm to others. Anyone seen in possession of one of these items will be asked to leave immediately, and will only be allowed to return without the weapon. Community members are further expected to comply with all state and local laws on this matter.

## 6. Consequences of Unacceptable Behavior

Unacceptable behavior from any community member, including sponsors and those with decision-making authority, will not be tolerated.

Anyone asked to stop unacceptable behavior is expected to comply immediately.

If a community member engages in unacceptable behavior, the community organizers may take any action they deem appropriate, up to and including a temporary ban or permanent expulsion from the community without warning (and without refund in the case of a paid event).

## 7. Reporting Guidelines

If you are subject to or witness unacceptable behavior, or have any other concerns, please notify a community organizer as soon as possible. Use our email: [email protected]

Additionally, community organizers are available to help community members engage with local law enforcement or to otherwise help those experiencing unacceptable behavior feel safe. In the context of in-person events, organizers will also provide escorts as desired by the person experiencing distress.

## 8. Addressing Grievances

If you feel you have been falsely or unfairly accused of violating this Code of Conduct, you should notify [email protected] with a concise description of your grievance. Your grievance will be handled in accordance with our existing governing policies.


## 9. Scope

We expect all community participants (contributors, paid or otherwise; sponsors; and other guests) to abide by this Code of Conduct in all community venues--online and in-person--as well as in all one-on-one communications pertaining to community business.

This code of conduct and its related procedures also applies to unacceptable behavior occurring outside the scope of community activities when such behavior has the potential to adversely affect the safety and well-being of community members.

## 10. Contact info

[email protected]

## 11. License and attribution

The BAAAHS Code of Conduct is a fork of the Citizen Code of Conduct. The Citizen Code of Conduct is distributed by [Stumptown Syndicate](http://stumptownsyndicate.org) under a [Creative Commons Attribution-ShareAlike license](http://creativecommons.org/licenses/by-sa/3.0/).

Portions of text derived from the [Django Code of Conduct](https://www.djangoproject.com/conduct/) and the [Geek Feminism Anti-Harassment Policy](http://geekfeminism.wikia.com/wiki/Conference_anti-harassment/Policy).

_Revision 2.3. Posted 6 March 2017._

_Revision 2.2. Posted 4 February 2016._

_Revision 2.1. Posted 23 June 2014._

_Revision 2.0, adopted by the [Stumptown Syndicate](http://stumptownsyndicate.org) board on 10 January 2013. Posted 17 March 2013._
21 changes: 21 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
The MIT License

Copyright (c) 2013-2019 BAAAHS

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
151 changes: 148 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,151 @@
# BAAAHS Simulator 2
# Sparkle Motion

[![CircleCI:main](https://circleci.com/gh/baaahs/sparklemotion.svg?style=svg)](https://circleci.com/gh/baaahs/sparklemotion)

Sparkle Motion is the system used to control the lights on [BAAAHS](http://baaahs.org), but it's
designed so it could be applied to pretty much any lighting project. It includes a browser-based
light show designer and performance interface, 3D light mapping, IP-based control protocol, and
custom LED control hardware and firmware. We designed it all pretty much from scratch, because
we're nerds. We hope you'll have some fun with it and maybe find it useful.

| ![SparkleMotionDemo-20220308](https://user-images.githubusercontent.com/40298/157351650-5b3338b7-757a-4e76-bfe2-743a06bb2891.gif) | <img src="/brc-2019.gif" alt="BAAAHS at BRC 2019" width="400"> |
| --- | --- |
| The Sparkle Motion [Simulator](https://baaahs.github.io/sparklemotion) | BAAAHS at Black Rock City, 2019 |


> **tl;dr:**
>
> Shows are built out of small scripts called shaders, which are written in
> [GLSL](https://www.khronos.org/opengl/wiki/Core_Language_(GLSL)). Lots of [awesome](http://glslsandbox.com/)
> [free](https://www.shadertoy.com/) shaders and [dev](https://github.com/radixzz/awesome-glsl)
> [tools](https://shaderfrog.com/) already exist on the internet. In the show designer, you can create or
> import shaders, and attach them to buttons or sliders in a customizable performance UI. Shaders can be
> combined in interesting ways to create new effects. You can make shows reactive to the environment by
> connecting external sensor data—like a beat detector, midi controller, sound spectral analysis, or a
> webcam—to shader variables.
>
> Sparkle Motion can control LED strips using
> [sACN](https://artisticlicenceintegration.com/technology-brief/technology-resource/sacn-and-art-net/)
> or our custom IP protocol, and Sharpy-style moving heads
> over DMX, but it could be extended to control pretty much any kind of device. Lights can be mapped to a
> 3D model using computer vision. Individual lighting fixtures, or groups of fixtures, can be controlled
> separately. All types of lights are controlled using the same language and idioms.
>
> On the hardware side, Sparkle Motion includes specs for an ESP32-based controller which you could build
> (or [buy from us](mailto:[email protected])!) managing WS2812-family LEDs, which is controlled over
> Ethernet or WiFi.

----

## Show Designer

A _show_ is a collection of shaders, attached to UI elements, which can be arbitrarily combined and made reactive to the
environment using sensors,

(more TK)

## Scene Configuration

Sparkle Motion shows may be designed with a specific model and display fixtures in mind, but most shows can be applied to any model and fixtures.

To facilitate this, Sparkle Motion separates configuration of scene elements (the physical model and fixtures) from visuals and the performance interface.

| Term | Definition |
| --- | --- |
| **Driver** | A pluggable software component that can talk to specific types of display controller hardware, e.g. Brains, WLED, or DMX USB dongles. |
| **Controller** | A physical component directly connected to display hardware, e.g. a Sparkle Motion Brain, a WLED controller, or a DMX USB dongle. One or more fixtures may be associated with a controller. |
| **Fixture** | A physical display device, e.g. a moving head, a pixel array surface (a.k.a. panel), an LED bar, etc. |
| **Scene/Stage?** | The collection of fixtures under control of Sparkle Motion, which may be identified as model entities, or anonymous. |
| **Geometry** | The physical shape of a pixel array fixture. |
| **Model** | A 3-dimensional model to which fixtures may be mapped. Models may be composed of OBJ files and explicitly placed entities. |
| **Entity** | An object within the model, e.g. a sheep panel or eye. |

Note that in some cases a single controller may control multiple fixtures. Commonly, a physical DMX USB dongle may have
multiple moving heads attached. It's possible (but less common) for a single brain or WLED controller to be attached to
multiple physical lighting fixtures.

Also, it's possible for a DMX controller to manage multiple DMX universes, e.g. in the case of a WLED controller
managing more than 170 pixels.

ERD:

Driver <->* Controller <->* Fixture <->? Entity *<--> Model

A fixture may be *identified* or *anomnymous*.

Identified fixtures are associated with an entity in the model, and therefore have a known position and geometry.

Anonymous fixtures are mostly for stuff like bikers-by. They are randomly placed within the model. Pixel arrays are assumed to be linear.

## Mapper

Sparkle Morton's mapper lets you detect arbitrarily-placed lights on a 2D or 3D model using just a camera
connected to a laptop.

(more TK)

## Hardware

(more TK)

[More here](brain/sw/README.md).

## Simulator

The entire system can be run within a web browser in simulation mode. Every component is modeled in software
so you can see how it will behave in the real world.


-->

## Old Documentation
* [Show API](show_api.md) (outdated)
* [API docs](https://baaahs.github.io/sparklemotion/doc/sparklemotion/) (outdated)

## Prerequisites

1. Install [Java](https://www.oracle.com/java/technologies/javase-jdk11-downloads.html)
- If using an arm64 mac, DMX device support for the native build of sparklemotion requires an x86 jdk which can be
downloaded [here](https://jdk.java.net/archive/).
- Make sure to pick a JDK < version 20 as [gradle does not currently
support
it](https://youtrack.jetbrains.com/issue/KT-57669/Add-Java-20-to-JvmTarget).
1. Open as a gradle project with [IntelliJ](https://www.jetbrains.com/idea/download/)

## Running from source

* Open as a gradle project with [IntelliJ](https://www.jetbrains.com/idea/download/)
* Open `src/jsMain/resources/index.html` using "Open in Browser -> Chrome" from IntelliJ context menu
### Simulator Mode

In simulator mode, most of Sparkle Motion runs within a web browser.

Run this in a shell window; a browser window will open with the simulator:

./gradlew --continuous jsRun

### Production Mode

In production mode, Sparkle Motion runs in a JVM process and talks to real hardware.

To start it, run:

./gradlew run

If you don't have a Brain running locally, do this too:

./gradlew runBrainJvm

When running in this mode you should be able to access the UI at http://localhost:8004

### Builds the production (minified) js package

To build the production minified js package run:

```
./gradlew jsBrowserWebpack
```

## CI & Deployment

Continuous build here: https://circleci.com/gh/baaahs/sparklemotion

Passing builds are automatically deployed here: https://baaahs.github.io/sparklemotion
Loading