nerddisco / luminave Goto Github PK
View Code? Open in Web Editor NEWOperate all the lights with your web browser and create stunning visual experiences.
License: MIT License
Operate all the lights with your web browser and create stunning visual experiences.
License: MIT License
Keeping the strobe in sync on all fixtures (hardware) is really difficult, because all of them have different frequency ranges. That's why it would be cool to have a strobe that is the same on all devices.
ALSO it would be nice to have the strobe in sync with the music.
The state is saved into localStorage for the universe, but the properties of the DMX fixtures are not set based on their values from the corresponding universe.
Use https://github.com/FloEdelmann/open-fixture-library instead of hard coded fixture objects.
When the timeline-manager is started it will update all fixtures that are defined in VisionLord, instead of just the ones that are a part of a scene.
Only the fixtures that are part of a scene get updated.
All fixtures are updated when the timeline is running.
I guess this is happening because the dmx-fixture itself is listening to changes to the timeline-manager: https://github.com/NERDDISCO/VisionLord/blob/feat/redux/src/components/dmx-fixture/index.js#L62-L66
Use Polymer 3 and lit-element instead of the old pre-release of Polymer and the Polymer Element.
@polymer/[email protected]
to @polymer/[email protected]
@polymer/[email protected]
to @polymer/[email protected]
@polymer/[email protected]
instead of polymer-element
polymer serve
The port in main.go is hard coded to 1337
, but it should be configurable trough the bash via a -port
cmd argument.
Instead of just showing a number, the degree should be of type "slider".
When pausing the timeline the animation loop is still triggered one more time.
When I pause the timeline it stop immediately
There is at least one more frame being executed
When attaching the USB DMX controller to the computer and opening VisionLord, all attached DMX fixtures go cray cray and show random stuff
Send the universe from VisionLord to the USB DMX controller by starting the timeline
In order to use luminave in other browsers, we have to add a transpiler like webpack to get an ES5 version.
Even if the other browser doesn't support WebUSB, you can use the other integrations.
When using another browser and reusing a configuration, the status of the USB connection might be connected, even when the device was never paired.
The animation is using the updated keyframes
The animation is using the old keyframes
When a scene is stopped, the last values of that scene are still in the global array of DMX values.
Do we want that? Does this make sense? Or should we reset the values to a configurable default value after the scene is not active anymore?
Load all DMX fixtures by using dynamic imports: https://developers.google.com/web/updates/2017/11/dynamic-import
Create a WebSocket connection to the fivetwelve-bridge in order to send the universe to dmxpen.
A connection was hacked into VisionLord for JSConf Budapest 2017 in https://github.com/NERDDISCO/VisionLord/tree/feat/fivetwelveWebsocketLink
The dmx-properties are not correct after a fixture was removed
The fixtures can only be removed when they are re-triggered in the order they were added via the MIDI controller:
When removing a fixture from a scene the corresponding values in the universe are not reset. Instead the last values for that fixture are still in the universe.
It would be nice to use the see the color that gets transmitted by modV to luminave in the UI, so that someone can check if everything is working.
When interpolation between a "static" value, the value jumps to a lower value even when nothing should be changed at all.
0: {
dimmer: 255
},
1: {
dimmer: 255
}
No change in the value
Value is jumping from 255 to 254 and back to 255:
selectors.getScenes(getState()).map(scene => {
if (scene.fixtures.indexOf(fixtureId) > -1) {
dispatch(removeFixtureFromScene(scene.id, scene.fixtures.indexOf(fixtureId)));
}
});
-> scene.fixtures.indexOf
There are a lot of ideas currently living inside ideas.js, which should be issues on GitHub. Also some classes have Todos which are also issues.
Interpolate between values if you have something like this:
strobe(80)
strobe(120)
Instead of just using the string
as we do right now.
When using play then pause then play the progress should continue where it left of the last time.
The progress resets itself after the second play
At https://github.com/Polymer/pwa-starter-kit you can find the PWA Starter Kit and it has some awesome things to kickstart an application:
and much more.
When you load VisionLord with the state live
set to true
, the universe-manager
is not instantiated and therefore can't update the existing universes.
After a page load switch from live
to edit
to live
mode.
It is not possible to create a custom property for an instance of a dom-repeat element: Polymer/polymer#3534
A computed property can't be used, because we only know the ID inside the dom-repeat and as far as I know I can't pass arguments into a computed property:
getScene(sceneId) {
return this.sceneManager.filter(scene => scene.id === sceneId)
}
static get template() {
return `
<template is="dom-repeat" items="{{scenes}}" as="sceneId">
{{getScene(sceneId)}}
</template>
`
}
If it would be possible to create a custom property inside dom-repeat, I would not have to call getScene(sceneId)
all the time to retrieve the data for the scene.
For example the position and rotation for Moving Head should have an initial value.
Maybe having a default scene is already enough? Not sure yet.
In order to plan in advance where the fixtures are in a specific venue, it would be nice to have a VenueManager
{
"venueManager": [{
"id": "uuid",
"name": "hall",
"width": 5,
"height": 10,
"slots": [{
"id": "uuid",
"name": "washer 1",
"x": 1,
"y": 4,
"fixtures": ["uuid", "uuid"],
"animations": ["uuid", "uuid"],
"sceneId": "uuid",
"modV": 40
},
{
"id": "uuid",
"name": "spot 1",
"x": 3,
"y": 4,
"fixtures": ["uuid"],
"animations": ["uuid", "uuid"],
"sceneId": "uuid",
"modV": 20
}
]
}]
}
Instead of rendering a input type=range
for a MappedParam, it would be awesome to see the different mappings, maybe in a select
?
When you set the property of a dmx-fixture and the timeline is paused, the value gets not updated in the universe.
This was done because of performance problems when updating too many devices + properties in an animation loop.
The value gets updated in the universe
When scenes are added to the timelineManager
with addSceneToTimeline
only the sceneId
is used.
If the same scene is added x times to the timelineManager
, it's impossible to remove the scene that was added by a for example MIDI controller input.
When I attach a MIDI controller via USB, the input connected
is fired twice.
When I refresh the page with the MIDI controller already attached, the input connected
is fired once as expected.
Component: midi-controller
When resetting the timeline-manager all scenes are removed and the attached fixtures are reset as well.
When resetting the timeline-manager all scenes are removed but the fixtures still have all their properties with the last value.
Instead of having a WebSocket connection it would be nice to use a ReadableStream to improve the performance of sending data to fivetwelve.
Integrate modV 1.0 so that every color
property can be overridden by the color that was transmitted by modV.
From time to time (after a few refresh) it is not possible to control the fixtures anymore. The animation fires, but the lights don't do anything.
๐ค
The PixBar 600 PRO has a 12 LEDs and all of them have their own sub-property:
// ...
params: {
dimmer: new RangeParam(1, { min: 0, max: 255 }),
strobe: new RangeParam(2, { min: 0, max: 255 }),
led1: {
color: new RgbParam([3, 4, 5]),
white: new RangeParam(6, { min: 0, max: 255 }),
amber: new RangeParam(7, { min: 0, max: 255 }),
uv: new RangeParam(8, { min: 0, max: 255 })
},
led2: {
color: new RgbParam([9, 10, 11]),
white: new RangeParam(12, { min: 0, max: 255 }),
amber: new RangeParam(13, { min: 0, max: 255 }),
uv: new RangeParam(14, { min: 0, max: 255 })
},
// ...
Right now this is not handled so it's not possible to set a color
In order to activate a specific MIDI button without the actual MIDI controller being connected, it would be nice to trigger the MIDI event that is associated with a MIDI button by using the UI.
This would be useful when going into a venue and trying to play with the fixtures and creating keyframes based on the values of the fixtures.
Related to #50
When you attach the MIDI controller via USB, you get a input connected
and a output connected
event. If you reload the page, you only get the input connected
event and not the output connected
again.
This might cause problems when we want to use the output
to send data back to the MIDI controller.
Group buttons / scenes in groups, so that they can react to changed in the same group
Same applies for Scenes in the Timeline.
Add a filter to the scene-manager to be able to filter scenes by name and assigned fixtures.
Maybe even create a search component that can be used in other *-manager as well ๐
In order to control the VisionLord fixtures directly from Dekk, we need to create an API that works via WebRTC.
The properties that are changed because of the animation are reset to 0
The properties that are changed because of the animation are still there with the last value the animation gave them
When using libs/abcq/uuid.js
it is possible that the same UUID is returned multiple times. This only happens in combination with a persisted state (e.g. localStorage), because the generated UUID is saved and loaded when the application is reloaded.
Saving the last UUID into localStorage could be an option, but because we are using the UUID also in https://github.com/NERDDISCO/VisionLord/blob/feat/redux/src/constants/index.js, it is not possible to access the localStorage at this point. Also adding a new constant would mean that everything that was added afterwards (e.g. a universe or fixture) is not unique again.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.