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

Add rust brain initial prototype #621

Open
wants to merge 2,729 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2729 commits
Select commit Hold shift + click to select a range
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
b53ceda
Merge pull request #580 from baaahs/less-showplayer
xian Oct 4, 2023
a66ca67
Add support for GLSL arrays.
xian Sep 13, 2023
c6ea567
Fix GlslParser to identify uniform array types.
xian Sep 14, 2023
cc71f16
Fix Glsl generation of nested structs and struct arrays.
xian Sep 14, 2023
32a655a
Start a bunch more listeners yay!
aphexcx Aug 18, 2023
a7cd2ad
BeatLinkBeatSource uses threads, so we need to worry about synchroniz…
xian Aug 21, 2023
5aab7b5
Refactor data flow in BeatLink plugin to facilitate holding more data.
xian Aug 22, 2023
641093d
BeatLink cleanup.
xian Aug 22, 2023
954ffd9
Pass around waveforms from BeatLink.
xian Aug 23, 2023
f6e8029
Pull BeatLink feeds out to separate files.
xian Aug 23, 2023
0653edc
Pull BeatLink content types out to respective feeds.
xian Aug 23, 2023
63b94ae
Fix typo.
xian Aug 23, 2023
ac12daf
New Waveforms feed for displaying track previews from BeatLink.
xian Aug 23, 2023
908ebe9
Clean up BeatLink control.
xian Aug 23, 2023
ef2db41
WIP: sync waveform start time (during ride to playa!)
xian Sep 12, 2023
b2ce5a7
Fix various bugs in GlslParser and code generation related to structs.
xian Sep 13, 2023
17e85d0
Allow uniforms to be set manually on shader previews.
xian Sep 18, 2023
19cc3ec
Fix Waveform use of texture units.
xian Sep 19, 2023
00f46e3
Rename Waveform to PlayerState.
xian Sep 19, 2023
57eb09e
Kinda working waveform visualization.
xian Sep 20, 2023
810a835
Cleanup refactors.
xian Sep 21, 2023
cee32e1
Working-ish with hardware!
xian Sep 21, 2023
5034817
Add waveform overview, track title/artist, and remaining time for eac…
xian Sep 23, 2023
994a59e
Check for waveform change before updating texture.
xian Sep 23, 2023
827521f
BeatLink control render optimization.
xian Sep 25, 2023
127defa
If neither show nor scene is loaded, just show one warning message.
xian Oct 5, 2023
181ae4c
Pull out AppMode.
xian Oct 5, 2023
87e1b88
Refactor handling of odd app states in AppIndex.
xian Oct 5, 2023
9b1d297
Improved first-use experience.
xian Oct 11, 2023
409ac05
Merge pull request #582 from baaahs/cold-open
xian Oct 12, 2023
e20b239
Oops. getResourceAsync() should use async XHR.
xian Oct 14, 2023
893741c
Don't block Pinky waiting for ShaderLibraryManager to start.
xian Oct 14, 2023
12c8556
Better layout on narrow screens e.g. iPhones.
xian Oct 15, 2023
8e8b485
Video plugin: don't open webcam unless a feed is using it.
xian Oct 15, 2023
f402f20
Fixes the bug that made buttons inoperable after adding a new button …
xian Oct 22, 2023
7513b35
Fix patchmod scale slider title.
xian Oct 24, 2023
833edeb
Inject and cache preview shaders.
xian Oct 24, 2023
4798fff
Clean up PositionAndScale patchmod to show visible area.
xian Oct 24, 2023
06281a9
Merge pull request #583 from baaahs/patchmod-cleanup
xian Oct 24, 2023
e3a9c62
Remove old disused mui lab-0.5.3 artifact.
xian Oct 24, 2023
b8ec60e
Pull TarsosDSP from repo.
xian Oct 24, 2023
b57e89a
Pull react-compound-slider's Slider into kotlin.
xian Nov 5, 2023
0908a3c
Pull react-compound-slider's Handles into kotlin.
xian Nov 6, 2023
a348784
Mostly working partial slider rewrite.
xian Nov 7, 2023
26de553
Refactor slider.
xian Nov 7, 2023
2777522
Ignore context menu button events on sliders.
xian Nov 8, 2023
e98be26
Use pointer capture for XY pad; ignore context menu button events.
xian Nov 8, 2023
93a505b
When dragging slider handle, drag relative to initial pointer-down lo…
xian Nov 8, 2023
10b7c52
Slider tracks should work when handles have been dragged past each ot…
xian Nov 8, 2023
0eaa33c
Show state changes don't require a full UI re-render.
xian Nov 9, 2023
fc61e32
Fix Vacuity to show relevant controls when show state changes.
xian Nov 14, 2023
c028587
Fix spurious UI refresh at show load when a grid layout's dimensions …
xian Nov 14, 2023
53323d5
Cleanup.
xian Nov 14, 2023
f9c17bd
Cleanup.
xian Nov 14, 2023
71a33ca
XY pad should ignore context menu button events.
xian Nov 14, 2023
c2f101e
Resize XY pad to fit container.
xian Nov 14, 2023
bad8417
Provide toggle button values in TransitionControlView to mute warnings.
xian Nov 14, 2023
fa4da7b
Manage slider handle movement internal to BetterSlider component.
xian Nov 14, 2023
ff69d9f
Show slider's default position with an orange tick.
xian Nov 15, 2023
78020e5
Refactor slider track rendering.
xian Nov 15, 2023
d3a20ae
Update slider tracks in real time during slider adjustment.
xian Nov 15, 2023
25078a0
Merge pull request #584 from baaahs/slider-multitouch
xian Nov 17, 2023
794a2d1
Extirpate react-compond-slider dependencies.
xian Nov 18, 2023
8832bd5
Move ported slider to baaahs.app.ui.gadgets.slider.
xian Nov 18, 2023
c145c62
Clean up slider files.
xian Nov 18, 2023
9324d11
Move gadget-agnostic generic slider views to baaahs.ui.slider.
xian Nov 18, 2023
7e5b184
Start refactoring sliders to use observable handles.
xian Nov 25, 2023
cfd8559
Refactor sliders back toward composition but much nicer and more perf…
xian Dec 8, 2023
ba741ac
Add some important additional preload modalities.
xian Dec 8, 2023
ee5c24b
More slider cleanup.
xian Dec 8, 2023
44bc8d1
Slider packaging cleanup.
xian Dec 8, 2023
5741d52
Merge pull request #585 from baaahs/slider-multitouch
xian Dec 9, 2023
d4bb838
Bump to kotlin 0.9.21 and fix compilation error.
xian Nov 25, 2023
b0aed51
Bump to kotlin-wrappers 1.0.0-pre.648.
xian Nov 25, 2023
e9cf835
Bump to kotlin-wrappers 1.0.0-pre.662.
xian Dec 9, 2023
5d6db33
Cleanup.
xian Dec 9, 2023
95395c2
Merge pull request #586 from baaahs/bump-versions
xian Dec 9, 2023
566c8a8
Fix react error message.
xian Dec 9, 2023
b694a91
Update README.md
xian Dec 12, 2023
2a4b9b2
Switch gadgets and show state from pubsub to commands.
xian Dec 9, 2023
6d2c95f
Bump gradle to 8.5.
xian Dec 16, 2023
aa0a9da
Refactor RPC support.
xian Dec 18, 2023
9985f29
Fix RPC ksp processor to handle return values. Convert ShowControlCom…
xian Dec 18, 2023
72f0a9f
Move DmxManager commands to use RPC @Service.
xian Dec 19, 2023
ed7a702
Switch SoundAnalysisPlugin to use RPC.
xian Dec 23, 2023
b8ec10e
Use RPC for RemoteFs. RPC ClassProcessor supports method overloading.
xian Dec 23, 2023
bc2913e
Merge pull request #587 from baaahs/tracks
xian Dec 23, 2023
b4c6305
Changes to support kotlin 2.0.0-Beta2.
xian Dec 23, 2023
27e9d0b
Rearrange migration code.
xian Dec 24, 2023
39c5064
Refactor toward less far-flung reliance on baaahs.mapper.Storage.
xian Dec 26, 2023
cd4faa0
Bump kotlin-wrappers to 1.0.0-pre.687.
xian Jan 20, 2024
c51b8f6
Remove shader libraries from baaahs.mapper.Storage.
xian Dec 26, 2023
cd97229
Remove FsServerSideSerializer from baaahs.mapper.Storage.
xian Dec 26, 2023
a723735
Remove PinkyConfig handling from baaahs.mapper.Storage.
xian Dec 26, 2023
20898ba
Remove everything unrelated to mapping from baaahs.mapper.Storage.
xian Dec 27, 2023
b5539f7
Pull ShaderLibraryIndex out to its own file.
xian Dec 27, 2023
7282422
Rename Storage to MappingStore.
xian Dec 28, 2023
0ca267b
Include JUnit tests in jvmTest target.
xian Dec 29, 2023
d27f3e9
Fix long-broken test.
xian Dec 29, 2023
a76ad66
Use kotlinx-datetime instead of klock.
xian Dec 29, 2023
a1e38b7
Fix tz injection test bug.
xian Dec 30, 2023
51604fe
Refactor double time -> instant.
xian Dec 30, 2023
047dac5
Use MappingSession migrations.
xian Dec 30, 2023
fae9182
Merge pull request #589 from baaahs/kotlinx-datetime
xian Jan 20, 2024
fd1a627
Merge branch 'main' into bump-versions
xian Jan 20, 2024
606091e
Merge pull request #590 from baaahs/bump-versions
xian Jan 20, 2024
472cb98
Bump to Kotlin 1.9.22.
xian Feb 11, 2024
6caf6e7
Better gh-pages commit messages.
xian Feb 11, 2024
25cbc72
Merge pull request #591 from baaahs/kotlin-1.9.22
xian Feb 11, 2024
0a43f34
Merge branch 'main' into waveform-preview
xian Feb 19, 2024
1f919ba
Bump to kotlin 2.0.0-Beta2.
xian Dec 24, 2023
53851c4
Kotlin 2.0-beta3
xian Jan 19, 2024
af99fcc
Bump to Kotlin 2.0.0-Beta4.
xian Feb 19, 2024
e4fa451
Add migration to remove vestigial 'varPrefix' key from XyPad feeds.
xian Mar 3, 2024
71d0fb8
Oops fix spec.
xian Mar 3, 2024
1a2f34f
Merge pull request #592 from baaahs/migrate-var-prefix
xian Mar 3, 2024
9b8b25d
Update README.md
xian Mar 9, 2024
ed3d62e
Merge branch 'main' into waveform-preview
xian Mar 21, 2024
9e8b1c0
Fix Duration.toHHMMSS() formatting.
xian Mar 21, 2024
95e6aac
Fix Time -> Instant.
xian Mar 21, 2024
b63267d
Add hairline between players.
xian Mar 21, 2024
325eeea
Bump to Kotlin 2.0.0-Beta5.
xian Mar 22, 2024
fa80dee
Bump to Kotlin 2.0.0-RC1.
xian Apr 14, 2024
d727cf5
Use IntersectionObserver and ResizeObserver from web.dom.observers.
xian Apr 14, 2024
e761a0a
Merge pull request #568 from baaahs/waveform-preview
xian May 7, 2024
f580416
Bump to Kotlin 2.0-RC2.
xian May 9, 2024
735b7b0
Add show from Ever Afters 2024.
xian May 9, 2024
acdd13a
Merge pull request #588 from baaahs/kotlin-2.0
xian May 9, 2024
5df889a
Buttons can be pressed while other pointers are down.
xian May 16, 2024
5773f87
Updates related to latest IDF. Correcting a formatting string in sysmon
tomseago May 20, 2024
384a415
Add /.kotlin to .gitignore.
xian May 23, 2024
4744b5c
Bump gradle to 8.7.
xian May 29, 2024
b279ff7
Bump kotlin to 2.0.0.
xian May 29, 2024
82f1173
Fix deprecations in build.gradle.kts.
xian May 29, 2024
cd4f469
Merge pull request #597 from baaahs/kotlin-2.0
xian May 30, 2024
2aca7de
Merge pull request #596 from baaahs/button-multitouch
xian May 30, 2024
025d776
Fixing what looks like a Kotlin 2.0 JS compiler issue.
xian Jul 6, 2024
43d3d5c
Merge pull request #598 from baaahs/fix-brain-controller-bug
xian Jul 6, 2024
f4bc92d
Fix issue where toggle buttons couldn't be turned off.
xian Jul 16, 2024
70f77a2
Merge pull request #600 from baaahs/fix-599
xian Jul 16, 2024
32975e9
Switch to local long-press-event dep.
xian Jul 25, 2024
5e7f342
Ignore long press on context click.
xian Jul 25, 2024
9d1a086
Note to undo hacks when long-press-event 2.5 is released.
xian Jul 25, 2024
d23d065
Bump gradle to 8.8.
xian Jul 26, 2024
cc03fed
Remove soon-to-be-unsupported error suppressions and fix some underly…
xian Jul 26, 2024
77426a1
Make baaahs.ui.View a concrete common interface.
xian Jul 26, 2024
642deee
Make baaahs.ui.Icon a concrete common interface.
xian Jul 26, 2024
624bfab
Make baaahs.ui.DialogHolder a concrete common interface.
xian Jul 26, 2024
7d5fe89
Merge pull request #601 from baaahs/mute-dumb-warnings
xian Jul 26, 2024
70e0f21
Merge pull request #602 from baaahs/concrete-view
xian Jul 26, 2024
d37a531
Include filename in data file migration logging.
xian Jul 27, 2024
bbe7cb1
Merge branch 'migrator-context'
xian Jul 27, 2024
e2c2532
Switch to gradle's JVM toolchain stuff.
xian Apr 27, 2024
44c8f96
Use JVM 17 / Adoptium toolchain.
xian Jul 27, 2024
1f0cf50
Add fullscreen toggle button to app toolbar.
xian Jun 30, 2024
a75dd45
Fix viewport registration and overdraw in shared GL contexts.
xian Aug 1, 2024
009f12a
Fix "No scene loaded" warning in simulator visualizer.
xian Aug 1, 2024
563a127
Add a couple nice shaders to library.
xian Aug 1, 2024
ce4d642
Allow screen brightness to be adjusted.
xian Aug 1, 2024
9a7df81
Add Full Screen toggle to display settings menu.
xian Aug 1, 2024
633351a
Merge pull request #604 from baaahs/dimmer
xian Aug 1, 2024
20b64fa
Use in param for MoverShader upstream overrides
kcking Aug 4, 2024
a8be80f
Add a dashed orange line showing where moving heads would point if th…
xian Aug 8, 2024
e27d60a
Default to dimmer level of 80%.
xian Aug 17, 2024
5a96d72
Draw slider handle as an SVG.
xian Sep 27, 2022
1e98981
Nicer min/max handles for slider in beat-linked mode.
xian Aug 20, 2024
8d37d5a
Finessing of handle drag touch areas.
xian Aug 20, 2024
5142d31
Merge pull request #607 from baaahs/slider-beatlink-cleanup
xian Aug 20, 2024
e4cefee
Files as found from the end of BAAAHS Campout 2024
xian May 27, 2024
06ae3fe
Move html linebreak escaping from DateFeed's description to help view.
xian Aug 17, 2024
c532fbe
PixelIndexFeed's glsl type is int, not float.
xian Aug 17, 2024
c2d43d5
Clean up help text for functional feeds.
xian Aug 17, 2024
d829abe
Move ShaderHelpView to help package.
xian Aug 17, 2024
b761666
Show feed descriptions in a resizable popup, not in teeny tiny box.
xian Aug 17, 2024
c68a475
Update README.md badges
xian Sep 4, 2024
9eab215
Merge pull request #609 from baaahs/better-help
xian Sep 4, 2024
11eb6ca
Switch to JDK 19, required by com.illposed.osc:javaosc-core:0.9.
xian Aug 28, 2024
4dd92e5
Merge pull request #594 from baaahs/jvm-toolchain
xian Sep 5, 2024
0d80a79
Don't start hardware simulation until user action.
xian Aug 1, 2024
f9fc6d6
Better simulation of brain restarts. Cleanup of simulator console.
xian Sep 7, 2024
2bb05df
Apply theme to simulator console.
xian Sep 7, 2024
5a67c21
Bump to kotlin 2.0.20-Beta2.
xian Jul 26, 2024
7e12d9e
Revert "Fixing what looks like a Kotlin 2.0 JS compiler issue."
xian Jul 27, 2024
1593724
Bump to kotlin 2.0.20-RC.
xian Aug 9, 2024
006cda8
Bumpe to Kotlin 2.0.20.
xian Sep 7, 2024
6f693cc
Merge pull request #603 from baaahs/kotlin-2.0.20
xian Sep 8, 2024
4b84441
Bump kotlin-wrappers to 1.0.0-pre.729 and fix broken stuff.
xian Apr 25, 2024
b728541
Bump kotlin-wrappers to 1.0.0-pre.774, and fix broken stuff.
xian Sep 8, 2024
312c98c
Bump kotlin-wrappers to 1.0.0-pre.804, and fix broken stuff.
xian Sep 8, 2024
b35723b
Merge pull request #606 from baaahs/real-time-mover-tracking
xian Sep 8, 2024
aa8bd21
Merge pull request #614 from baaahs/better-hardware-sim
xian Sep 8, 2024
8bf2905
Merge pull request #615 from baaahs/kotlin-2.0-bump-wrappers-774
xian Sep 8, 2024
cd6939e
Oops, fix kotlin-wrappers fix missed in merge.
xian Sep 8, 2024
6e6fbed
Fix simulated brains in console after react upgrade.
xian Sep 8, 2024
a98140a
Move BaseVisualizer to its own file.
xian Sep 9, 2024
b435588
Ignore moving head beams when calculating scene bounds for visualizer…
xian Sep 9, 2024
d9a61d3
Fix camera zoom in visualizer.
xian Sep 9, 2024
1bcb2ff
Merge pull request #616 from baaahs/fit-camera-ignoring-sharpy-beams
xian Sep 9, 2024
6c74010
Move ThreeJS stubs to their own gradle project.
xian Sep 9, 2024
daaae55
Bump to three 0.168.0.
xian Sep 9, 2024
6c3cb1d
Wrappers for three-0.168.0 compile.
xian Sep 10, 2024
13d610d
Kill some warnings in three-0.168.0 compilation.
xian Sep 10, 2024
ea46f93
ThreeJS wrappers: optimize imports.
xian Sep 10, 2024
60dd43b
ThreeJS wrappers: remove some excessive generics.
xian Sep 10, 2024
3a9893d
ThreeJS wrappers: simplify some not-very-useful generics, Doubles ins…
xian Sep 11, 2024
4281ec2
Move three npm dependency to ext/three. Fix @JsModule annotations.
xian Sep 11, 2024
c2d7b3c
Update README.md
xian Sep 12, 2024
567c339
Update README.md
xian Sep 12, 2024
4ec562a
Migrate to Three 1.168.
xian Sep 12, 2024
a40419f
Move from package 'three.js' to just 'three'.
xian Sep 12, 2024
090b851
Create JsMapper lazily — only on Scene -> Mapper tab.
xian Sep 12, 2024
85da426
Merge pull request #617 from baaahs/bump-three
xian Sep 12, 2024
c453cf5
Cleanup.
xian Sep 14, 2024
9913413
Update README.md
xian Sep 15, 2024
be4309d
Fix model entity transformation UI.
xian Sep 15, 2024
fc3d270
Nicer selected entity colors.
xian Sep 15, 2024
8c5d931
Refactor visualizer extensions so they can be passed into BaseVisuali…
xian Sep 15, 2024
212d264
Add wrappers for ThreeJS addons. Doesn't compile yet.
xian Sep 12, 2024
c3085fe
Wrappers for ThreeJS addons compile.
xian Sep 12, 2024
590a29c
Repackage some baaahs.visualizer classes.
xian Sep 12, 2024
f4dc841
Support text overlays in visualizers.
xian Sep 15, 2024
c725c34
Merge pull request #618 from baaahs/show-entity-info-in-viz
xian Sep 16, 2024
b541a81
On Controllers tab, show controllers full width until one is selected.
xian Sep 7, 2024
dec7aed
WIP: On Controllers tab, show controllers full width until one is sel…
xian Sep 7, 2024
1e917c6
Scroll selected fixture list item into view in scene editor.
xian Sep 16, 2024
6658fd4
Header width fix.
xian Sep 16, 2024
acccbe7
Show fixture id in controller list.
xian Sep 16, 2024
340b215
Model editor: don't show transform palette or gizmo unless edit mode …
xian Sep 16, 2024
276b1cd
Model editor: fields shouldn't be editable except in edit mode.
xian Sep 16, 2024
de81df6
Styling on edit scene properties panels.
xian Sep 17, 2024
eb410f2
Fix help text.
xian Sep 17, 2024
7b4ee86
Merge pull request #619 from baaahs/show-fixtures-for-controllers
xian Sep 17, 2024
7957c31
File dialog keyboard bindings.
xian Sep 18, 2024
db213eb
Don't undo/redo if undo stack is empty.
xian Sep 18, 2024
9df9f85
Merge pull request #620 from baaahs/file-dialog-update
xian Sep 18, 2024
a9ec90b
WIP recover from brain losing network
kcking Sep 7, 2024
afde719
Address pr comment
kcking Sep 21, 2024
2157659
ADd rust brain initial prototype
kcking Sep 21, 2024
af5ac59
update readme
kcking Sep 23, 2024
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
  •  
  •  
  •  
85 changes: 85 additions & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
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

build=${CIRCLE_BUILD_NUM:-unknown}
rev=$(git rev-parse --short HEAD)
message=$(git log -1 --pretty=%B)
echo "Build $build at `date`." > build/gh-pages/BUILT.txt

git config --global user.email "ci-build@baaahs.org"
git config --global user.name "CI Builder"

mkdir -p deploy/node_modules
npm install --prefix deploy --silent gh-pages@3.0
`npm bin --prefix deploy`/gh-pages --dotfiles --message "Deploy $build: [$rev] $message" --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
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,6 @@
build
.idea
.gradle
node_modules
.DS_Store
.kotlin
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: info@baaahs.org

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 info@baaahs.org 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

info@baaahs.org

## 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.
153 changes: 150 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,153 @@
# BAAAHS Simulator 2
# Sparkle Motion

[![CircleCI:main](https://circleci.com/gh/baaahs/sparklemotion.svg?style=svg)](https://circleci.com/gh/baaahs/sparklemotion)
[![](https://dcbadge.limes.pink/api/server/https://discord.gg/AueGMvuTnQ?style=flat-square)](https://discord.gg/AueGMvuTnQ)
[![Demo Link](https://img.shields.io/badge/Demo-baaahs.github.io/sparklemotion-blue)](https://baaahs.github.io/sparklemotion)

Sparkle Motion[^1] 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.
[^1]: It's a [Donnie Darko](https://www.youtube.com/watch?v=4QJCn04dfek) [reference](https://wakeupdonnie.fandom.com/wiki/Sparkle_Motion).

| ![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 industry-standard
[sACN](https://artisticlicenceintegration.com/technology-brief/technology-resource/sacn-and-art-net/)
(or with 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:info@baaahs.org)!) 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 Motion'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 ([here!](https://baaahs.github.io/sparklemotion)). Every component is modeled in software
so you can see how it will behave in the real world.


-->

## Very 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