{"id":22221097,"url":"https://github.com/nerddisco/luminave","last_synced_at":"2025-10-24T20:50:56.488Z","repository":{"id":39886112,"uuid":"86910361","full_name":"NERDDISCO/luminave","owner":"NERDDISCO","description":"Operate all the lights with your web browser and create stunning visual experiences.","archived":false,"fork":false,"pushed_at":"2023-02-17T08:28:50.000Z","size":22097,"stargazers_count":77,"open_issues_count":60,"forks_count":8,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-05-10T03:46:07.698Z","etag":null,"topics":["arduino","chrome","dmx512","es6-modules","fivetwelve","lit-element","lit-html","localstorage","midi-controller","polymer","polymerx-cli","pwa-starter-kit","webmidi","webusb"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NERDDISCO.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-04-01T11:57:49.000Z","updated_at":"2024-04-28T06:59:09.000Z","dependencies_parsed_at":"2023-02-14T16:45:32.452Z","dependency_job_id":null,"html_url":"https://github.com/NERDDISCO/luminave","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NERDDISCO%2Fluminave","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NERDDISCO%2Fluminave/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NERDDISCO%2Fluminave/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NERDDISCO%2Fluminave/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NERDDISCO","download_url":"https://codeload.github.com/NERDDISCO/luminave/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":227817166,"owners_count":17824199,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino","chrome","dmx512","es6-modules","fivetwelve","lit-element","lit-html","localstorage","midi-controller","polymer","polymerx-cli","pwa-starter-kit","webmidi","webusb"],"created_at":"2024-12-02T23:12:11.849Z","updated_at":"2025-10-24T20:50:51.440Z","avatar_url":"https://github.com/NERDDISCO.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":" ![luminave 3.0.0](src/assets/luminave_logo.gif)\n\n[![3.0.0](https://img.shields.io/badge/Stable-3.0.0-00f557.svg?style=flat)](https://github.com/NERDDISCO/luminave/releases/tag/3.0.0)\n\nUse luminave to manage all the lights with your web browser and create stunning visual experiences.\n\n* *lumi* = \"Light\" in different languages\n* *nave* = \"A hub of a wheel\"\n\n\n[![LitElement](https://img.shields.io/badge/LitElement-2.1.0-2196F3.svg?style=flat)](https://lit-element.polymer-project.org/)\n[![Polymer 3](https://img.shields.io/badge/polymer-3.0.0-f50057.svg?style=flat)](https://www.polymer-project.org/)\n[![Built with pwa–starter–kit](https://img.shields.io/badge/built_with-pwa–starter–kit_-blue.svg)](https://github.com/Polymer/pwa-starter-kit \"Built with pwa–starter–kit\")\n[![PolymerX CLI](https://img.shields.io/badge/CLI-PolymerX-9f33ff.svg?style=flat)](https://github.com/PolymerX/polymerx-cli)\n[![Redux](https://img.shields.io/badge/Redux-3.7.2-9f33ff.svg?style=flat)](https://redux.js.org/)\n[![ES6 modules](https://img.shields.io/badge/ES6-modules-1e88e5.svg?style=flat)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import)\n[![WebUSB](https://img.shields.io/badge/API-WebUSB-1e88e5.svg?style=flat)](https://wicg.github.io/webusb/)\n[![WebMIDI](https://img.shields.io/badge/API-WebMIDI-1e88e5.svg?style=flat)](https://webaudio.github.io/web-midi-api/)\n[![WebSocket](https://img.shields.io/badge/API-WebSocket-1e88e5.svg?style=flat)](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket)\n[![localStorage](https://img.shields.io/badge/API-localStorage-1e88e5.svg?style=flat)](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage)\n\n---\n\n[![Video of modV + luminave in love with Chiptune](src/assets/luminave_modV_in_love_with_chiptune_2018.jpg)](http://www.youtube.com/watch?v=GiTkwz9AKhM \"modV + luminave in ❤️ with Chiptune\")\n\n_Video of modV + luminave in ❤️ with Chiptune (Caution: Flashing lights \u0026 music!)_\n\n---\n\u003c!-- toc --\u003e\n- [Getting started](#getting-started)\n  - [Requirements](#requirements)\n  - [Setup](#setup)\n  - [Run](#run)\n- [Features](#features)\n- [Integrations](#integrations)\n  - [WebUSB DMX512 Controller](#webusb-dmx512-controller)\n  - [modV](#modv)\n    - [In luminave](#in-luminave)\n    - [In modV 1.0](#in-modv-10)\n    - [In modV 2.0](#in-modv-20)\n  - [Thorium](#thorium)\n  - [Dekk](#dekk)\n    - [In luminave](#in-luminave-1)\n    - [In dekk](#in-dekk)\n  - [fivetwelve](#fivetwelve)\n- [Contribution](#contribution)\n  - [Contributors](#contributors)\n- [Thanks to](#thanks-to)\n\n\u003c!-- tocstop --\u003e\n\n---\n\n# Getting started\n\n## Requirements\n\n* Browser Chrome 61+ (to support other browsers [see #41](https://github.com/NERDDISCO/luminave/issues/41))\n* npm ([How to install](https://nodejs.org/en/download/package-manager/))\n\n## Setup\n\n```bash\n# clone luminave\ngit clone git@github.com:NERDDISCO/luminave.git\n\n# go into directory\ncd luminave\n\n# install dependencies\nnpm install\n```\n\n## Run\n\nStart the local HTTPS server on http://localhost:8081:\n\n```bash\nnpm start\n```\n\n---\n\n# Features\n\n* Handle one DMX512 universe\n* Add fixtures of different types (using the [DmxDevice](https://github.com/beyondscreen/fivetwelve/blob/master/lib/device/DmxDevice.js) implementation of [fivetwelve](https://github.com/beyondscreen/fivetwelve)) to have an abstraction of the fixture and to be able to use properties instead of setting the values on the channels itself. So for example you can set the `color` property, which accepts an RGB value as `[255, 0, 125]` and fivetwelve knows how to split that into the corresponding channels\n* You can change the properties of a fixture with various input fields depending on which property you want to change\n* Add animations, which can contain a variable amount of keyframes. Each keyframe can have a variable amount of fixture properties. In terms of code this looks like this:\n```json\n{\n    \"0\": {\n      \"color\": [255, 0, 0],\n      \"dimmer\": 255\n    },\n    \"1\": {\n      \"color\": [0, 0, 50],\n      \"dimmer\": 120\n    }\n}\n```\n* The animation itself has no idea about time, it always goes from 0 to 1. You can add as many steps inbetween as you want\n* Scenes are the way to go to bring fixtures and animations together\n* Connect a MIDI controller via USB to your computer and add it as a MIDI controller into luminave. With \"MIDI learn\" you can push a button on your MIDI controller and luminave saves the corresponding note into it's config, so you don't have to manually find out what note is on with button\n* Add scenes to MIDI controller buttons to activate them when the MIDI button is pushed\n* When a scene is active it is added to the timeline. The timeline handles all scenes and can be started / stopped\n* Connect to a USB DMX controller that implements the WebUSB specification\n* Connect to a modV WebSocket bridge to get colors from modV instead of setting the colors yourself\n* Connect to a fivetwelve WebSocket bridge to send your universe to a DMX controller that is controlled by fivetwelve\n\n---\n\n# Integrations\n\n## WebUSB DMX512 Controller\n\n* Connect your Arduino to the computer via USB\n* Click the \"USB\" button in the top left in luminave\n* Choose the \"Arduino\" in the browser dialog\n\n[Do you want to create your own WebUSB DMX512 Controller?](https://github.com/NERDDISCO/webusb-dmx512-controller)\n\n\n## modV\n\nIf you want to use modV you have to start the local WebSocket server:\n\n### In luminave\n\n* Start the server with `npm run modv-integration`\n* Click the \"connect\" button of the modV component in the luminave UI\n\n### In modV 1.0\n\n* Drop the \"grabCanvas\" component into the list of modules\n* This should connect to the local WebSocket server on localhost:3000\n\n\n### In modV 2.0\n\n* Activate the \"grab-canvas\" plugin\n* Set the amounts of areas you want to grab\n\n\n\n## Thorium\n\nTake a look at the [Thorium docs](docs/Thorium.md). \n\n\n## Dekk\n\nIf you want to use [Dekk](https://github.com/sinnerschrader/dekk) you have to start the local WebSocket server too:\n\n### In luminave\n\n* Start the server with `npm run dekk-integration`\n* Click the \"connect\" button of the dekk component in the luminave UI\n\n### In dekk\n\n* Connect to the WebSocket server on localhost:3001\n\n\n\n## fivetwelve\n\nIf you want to use [fivetwelve](https://github.com/beyondscreen/fivetwelve):\n\n* Download and install [fivetwelve-bridge](https://github.com/usefulthink/fivetwelve-bridge/)\n* Start the WebSocket server provided by fivetwelve-bridge with `npm start`\n* In luminave: Click the \"connect\" button of the fivetwelve component\n\nWhen you start the timeline all data is also send to fivetwelve.\n\n---\n\n\n# Contribution\n\nPlease read the [Contribution guideline](.github/CONTRIBUTING.md). \n\n##  Contributors\n\n* [Gregor Adams](https://github.com/pixelass)\n* [Kevin Gimbel](https://github.com/kevingimbel)\n\n\n---\n\n\n# Thanks to\n\n* [Gregor Adams](https://github.com/pixelass) for working with me on luminave, hours and hours of pair-programming and knowledge transfer, partner in debugging the most ugly performance problems and everything else ❤️\n* [Martin Schuhfuss](https://github.com/usefulthink) for fivetwelve and a lot of DMX512 knowledge ❤️\n* [Sam Wray](https://github.com/2xaa) for creating [modV](https://github.com/2xAA/modV) and helping me to integrate modV into everything related to NERD DISCO ❤️\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnerddisco%2Fluminave","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnerddisco%2Fluminave","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnerddisco%2Fluminave/lists"}