Design and Documentation of a few projects from the yearly pool.

Design and Documentation of a few projects from the yearly pool.

So this year's gonna be focused on doing a few specific projects. I have a goal to release one completed game, get mantilogs cleaned up and some features added like the dashboard system and notifications, which should alert caretakers to any potential problems, build a good chunk of or finish a solid minimum viable product version of the Jake Lighting Control V4 system. Can't forget of course the constant focus on music as the primary thing to learn this year. So I will spend my learning time playing instruments and studying music theory and song writing/composition. It's nice to finally have brought music back into the mix... I had given it up so long because I had nowhere to practice without feeling like an ass.

I've been designing hardware all day, writing notes for the documentation of Jake V4.

I'll see if I can't embed a version of some of the notes here...

The node checkup system is a way of checking all nodes are healthy, running and responding while also sending out sync messages and the new animations to the controller hub nodes which are in a sort of tree shape. Old School web design version of explanation incoming. The reason for the tree-like structure is to have lower overall delay in communication between the Hub Controllers and Light Controllers as well as localize the diagnostic tools to the best of my abilities which hypothetically will allow for a much quicker to respond and highly scalable system for light displays based on the WS281X Individually addressable RGB LEDs.

          Main Server Node        
      Hub Controller Node     Hub Controller Node      
  Light Controller Node Light Controller Node   Light Controller Node     Light Controller Node Light Controller Node  
Light 1 Light 2 Light 1 Light 2 Light 1   Light 1 Light 2 Light 1 Light 2

Note: Must figure out how to do light checkups… photo resistors inside with the led panels? Would need to shield it from any outside light sources.

Each Light Controller Node (LCN) knows how many lights it controls and will send out a health check or whatever animation needs to play on their lights. It should be able to check for the health of those lights, possibly with some kind of color sensor with a photo resistor both checking if there's light and if it's within boundaries of the color range that is acceptable. It controls the lights and listens for new information from the Hub Controller Node (HCN). This information would be what animation should be playing and the occasional request to check health.

Health Check

When a health check fires, it will initiate from the Server node, travel to all known HCNs that will check all their LCNs for problems. The LCNs registered to said HCN, will run their diagnostics (Photo resistors, light color boundary checking, whatever else I come up with for diags) and report back to the HCN. The HCN will wait until TIMEOUT time (something that will take trial and error… or an oscilloscope) and if one LCN is not reporting in, send a reboot signal to the Power supply and see if it can be brought back online.

Note: A health check should run before any animation update and animation updates should take place ideally a minute or two in advance of the animation SHOULD change to allow for any error corrections to run before starting the next animation. 

If the LCN does not report back the Control Panel should show a big ol red message and show a picture of the node indicating where the shit's breaking. This could be down to a light, LCN or HCN. 

In the information package each node will add it's own ID. So the LCN will report something along the lines of

Light ID,Timestamp, Num Lights passing, Num Total lights connected, Num Color errors, Num Brightness errors, Etc.

f84hf-f922hf32,(Imagine there's a Unix epoch counter here.),4,4,0,0,… – A healthy report indicating no errors and informing the HCN of it's ID and that everything's good to go.

The HCN upon receiving all reports would then try to apply any fixes it can to any errors, then send a report back to the Main Server that can decide how to proceed. 

HCN ID, Num Lights Expected, Num Lights Reported OK, [Light, Node, IDs, With, Errors], {Light ID: Time Code}, etc…

CrystalClusterOne, 128, 128,[],{"f84hf-f922hf32": Unix Epoch Time},… – Ideal response, all lights and nodes are passing diagnostics.

The main server may have adaptive techniques such as changing how the animations would play based on nodes being out or activating a redundant node to take over for the failing node until someone can repair it and displaying on the control panel where there are errors and what kind of errors they might be.

This should allow for the system to error correct on it's own for the most part, only requiring a human to interact only when all autorepairs fail.

I will use these notes to help write documentation later... I tend to get on a roll coding and mostly just write my documentation in comments. So having a way to correlate the thoughts I have in design with the thoughts I have in implementation.

Anyway... Since I got done with that page it's guitar time. Just gonna keep on going with that forever. That's the idea. The only way to truly fail is to give up, right?

Gonna attempt to work on a few melodies, maybe some soloing practice, work in some newer techniques as I go. Learn it at my own pace, but with a little structure when needed. I've only ever been able to play kinda basically, I can move my fingers around pretty quick to play solos, riffs and scales but some chord changes still get me so I will just practice them over and over for like 15 minutes until I tune out and am just doing it automatically for a while. I find this trains muscle memory pretty good for me.

Anyway I'm gonna put on the studio monitors, plug in my guitar and crank up the distortion on my amp emulator and meditate with some noodling and practice.

I decided I wanted to learn Little Busters, it's a song that was stuck in my head for a long time. It resonated with me really well when I was younger, watching FLCL. I hadn't heard anything quite like it and it stuck to me forever. That soundtrack is probably one of if not my favorite.

I recorded a (Caution: Loud) little bit of my practice trying to listen back and see where I am making mistakes, it's kinda helpful to do this in order to understand why I make the mistakes. I'll spend some time every day on it until I can cut it together with the rhythm and lead guitars as well as a guitar for the vocals (heard in the clip)... I'll figure it out.

Well, back to guitarin'.

I'm working on the vocals and Sawao's rhythm track. I figure if I can just put those together maybe it could sound pretty good. Wow, 4 o clock already. I suppose I spent a lot of time messing with playing with different similated amps. I think the current solution is the most economical. An old laptop I bought for $160 like 7 or 8 years ago when it was arleady used. A $25 pair of studio monitors, My guitars in total are like $350 between the 3. Instrument cable I had since I was a teenager same as the adapter from instrument cable to the line in jack on the laptop.

Anyway, I should consider making dinner soon... so I will make sure I have saved all my notes and plans and yell at the broken WS2812s for a couple minutes.