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

Create mac app launcher #610

Open
wants to merge 2,668 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2668 commits
Select commit Hold shift + click to select a range
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
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
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
724c9e7
Adding a gradle task to build Sparkle Motion into a Mac app.
xian Sep 5, 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 "[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 "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: [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.
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 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 ([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