{"id":16513184,"url":"https://github.com/rsmck/artnet-slide-server","last_synced_at":"2026-03-02T10:02:46.251Z","repository":{"id":161076730,"uuid":"635878354","full_name":"rsmck/artnet-slide-server","owner":"rsmck","description":"A simple static image (slides, not video) Art-Net media server in NodeJS suitable for a Raspberry Pi Kiosk Browser","archived":false,"fork":false,"pushed_at":"2024-11-01T17:32:55.000Z","size":2663,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-05T11:45:04.381Z","etag":null,"topics":["art-net","artnet","artnet-node","dmx","projection","raspberry-pi","scenic","theatre"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rsmck.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-05-03T16:41:31.000Z","updated_at":"2025-05-01T16:21:50.000Z","dependencies_parsed_at":null,"dependency_job_id":"929d8237-ad08-4aec-8053-d2700e962426","html_url":"https://github.com/rsmck/artnet-slide-server","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/rsmck/artnet-slide-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rsmck%2Fartnet-slide-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rsmck%2Fartnet-slide-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rsmck%2Fartnet-slide-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rsmck%2Fartnet-slide-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rsmck","download_url":"https://codeload.github.com/rsmck/artnet-slide-server/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rsmck%2Fartnet-slide-server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29998085,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-02T09:59:02.300Z","status":"ssl_error","status_checked_at":"2026-03-02T09:59:02.001Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["art-net","artnet","artnet-node","dmx","projection","raspberry-pi","scenic","theatre"],"created_at":"2024-10-11T16:07:58.112Z","updated_at":"2026-03-02T10:02:46.232Z","avatar_url":"https://github.com/rsmck.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# artnet-slide-server\n\nNB This is another 'works for my own use, might help someone else' type projects. It is *NOT* intended for use in a show-critical environment and hasn't been extensively tested. \n\n### Why?\n\nI voluntarily help manage a small theatre which often uses projected backdrops. We don't have the budget for a proper media server like a hippo, but also don't need any of the functionality of it. All that is required is the ability to change static slides but, ideally, in sync with lighting changes (so that the stage doesn't go dark before the projection or vice versa) \n\n### How does it work? \n\nThis is a very simple NodeJS script that listens for Art-Net data and uses it to control an (equally simple) web page which we display full screen on a kiosk-mode web browser (we use a Raspberry Pi for this, but anything with an HDMI output will do!), the images displayed and the intensity can then be controlled over Art-Net just like any lighting fixture. \n\n### Using It...\n\nPlace the slide images you want to use in the `images/` directory, named `image_XX.png` where XX is from 00-25. I recommend you keep `image_00.png` as a plain black PNG image.\n\nStart from source with `node media_server.js`, by default it will listen on Art-Net Universe 0 on port 6454 and start a web server on `http://localhost:7600` (changing these is self-explanatory in the code) \n\nAccess the `http://localhost:7600` service from any web browser (ideally a full-screen kiosk browser)\n\nThere are two versions in this repository, `media_server.js` is a simple three channel version that uses simple HTML/CSS, `media_server_extended.js` is a new (early alpha) version that uses 20 channels and provides keystoning and some image manipulation using the excellent glfx.js [https://github.com/evanw/glfx.js/] by @evanw\n\nAt present this simple version uses three channels as follows;\n\n| Channel | Description | DMX Values | Feature |\n| ----------- | ----------- | ----------- | ----------- |\n| 1 | Intensity Dimmer (0-100%) | 0-255 | Intensity from 0-100% |\n| 2 | Image Selection | 0-4 | image_00.png |\n||| 5-14 | image_01.png |\n||| 15-14 | image_02.png |\n||| 20-14 | image_03.png |\n||| 25-14 | image_04.png |\n||| 35-14 | image_05.png |\n||| 45-14 | image_06.png |\n||| ..... | image_XX.png |\n||| 225-234 | image_23.png |\n||| 235-244 | image_24.png |\n||| 244-254 | image_25.png |\n| 3 | Control Channel | 126-128 | Reload the Web Browser |\n\nThe extended version uses the following channels;\n\n| Channel | Description | DMX Values | Feature |\n| ----------- | ----------- | ----------- | ----------- |\n| 1 | Intensity Dimmer (0-100%) | 0-255 | Intensity from 0-100% |\n| 2 | Image Selection | 0-255 | As Above |\n| 3 | Vibrance | 0-5 | No Effect |\n||| 6-126 | -1 to 0 |\n||| 127 | No Effect |\n||| 128-255 | 0 to +1 |\n| 4 | Contrast | 0-5 | No Effect |\n||| 6-126 | -1 to 0 |\n||| 127 | No Effect |\n||| 128-255 | 0 to +1 |\n| 5 | Hue | 0-5 | No Effect (0) |\n||| 6-126 | -180 to 0 |\n||| 127 | No Effect (0) |\n||| 128-255 | 0 to +180 |\n| 6 | Saturation | 0-5 | No Effect (0) |\n||| 6-126 | Desaturate -1 to 0 |\n||| 127 | No Effect (0) |\n||| 128-255 | Increase Saturation 0 to 1 |\n| 7 | Sepia Filter | 0-255 | Sepia Filter 0-100% |\n| 10 | Blur (Normal) | 0-255 | Blur |\n| 11 | Blur (Lens Effect) | 0-255 | Lens Blur |\n| 12 | Keystone Adjustment | 0-255 | Top Left Horizontal Offset (0-960px) |\n| 13 | Keystone Adjustment | 0-255 | Top Right Horizontal Offset (0-960px) |\n| 14 | Keystone Adjustment | 0-255 | Bottom Left Horizontal Offset (0-960px) |\n| 15 | Keystone Adjustment | 0-255 | Bottom Right Horizontal Offset (0-960px) |\n| 16 | Keystone Adjustment | 0-255 | Top Left Vertical Offset (0-540px) |\n| 17 | Keystone Adjustment | 0-255 | Top Right Vertical Offset (0-540px) |\n| 18 | Keystone Adjustment | 0-255 | Bottom Left Vertical Offset (0-540px) |\n| 19 | Keystone Adjustment | 0-255 | Bottom Right Vertical Offset (0-540px) |\n| 20 | Control Channel | 126-128 | Reload the Web Browser |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frsmck%2Fartnet-slide-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frsmck%2Fartnet-slide-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frsmck%2Fartnet-slide-server/lists"}