Overview
Eclipse IO is a high level, addressable led control system to allow mapping your patterns in the context of patches, patterns, and layers, to allow you to reuse work for future projects easier, and overall give a generalized structure to any addressable led device.
NOTE: MAJOR CODE PUSH GOING PUBLIC SOON
THERE IS MORE HERE
System Goals
After making around four addressable led projects, I found myself constantly feeling limited by the fact I was restarting a lot of my codebase. I was looking for a uniform way to create modular led patterns with ability to animate values cleanly and have the values represent that. My inspiration came from using my music production DAW / synthesizers, where you could have mappable parameters related to a pattern, then create a layers system to allow blending between patterns and states.
The priority at the time was to make a core base layer that really covered as much of the boilerplate, gameplay system side of things, while maintaining a huge amount of flexibility on how you decide to structure your system.
This code is meant to be read through, at least the headers. It's simple in my opinion, but I'm biased.
I plan to keep expanding the feature set as new projects have further integrations they want.
Features
Pattern Generator Framework
EclipseOS takes a designer-friendly approach using a pattern generation pipeline that allows maximum flexibility in determining how we transition between states.
It runs everything in HSV colorspace, allowing for much cleaner blending between colors.
The system has a custom palette/gradient system to allow for easily selecting colors based on configured pattern generator.
The system is also heavily focused on giving extension points and has been in partial-active development to expand its feature sets, including:
- adding unique pattern generator types
- palette driven pipeline to make generators more versatile.
- layering pipeline to allow stacking pattern generators
- generic 2D / alternative mapping contexts, patterns choose how they implement it.
Generalized IO Structure
EclipseOS abstracts away IO from the patterns themselves, letting you remap to a new device, new pin pattern, or any other circumstance much easier.
Small form Finite State Machine
EclipseOS has a small form finite state machine that utilizes the abilities of our Pattern Generators and Generalized IO buffers to do seamless blending of states.