Greetings! First of all, I'd like to thank the ~25 followers this project now has. Usually people don't give two shits about the technical details of my electronics projects, as they just want to see footage of it working; I understand it's not everyone's thing (programming logic, circuit efficiency/design, etc), so for those that are actually interested in how this system is made/evolving, I sincerely thank you for giving a fuck and I genuinely look forward to any questions and/or constructive input you may have. I intend for there to be much more frequent updates, but we'll see if that actually happens or not.
First off, the versioning system used in the source code files (currently v3.5) are generally all from 3.0, onward. There are two reasons for this; I have been working on this project for a couple of years now, generally expanding and modifying it on an as-needed basis without any real documentation so-to-speak of the work. Resultantly, when I decided to standardize the code across all of the VKOS devices (both for efficiency and readability by someone other than myself), I began at a favored and reasonable major version of "3"... I'm also semi-irrationally fond of odd numbers. The individual module files are versioned from 1.0 on, though it is arbitrary as well since the split into different files occurred very recently and makes the progression through version numbers quicker than visually implied.
I hope my code and hardware documentation may be of some assistance to someone, someday, as the published work of other aspiring engineers has similarly helped me out in my work when I couldn't figure out how to do part-x. In retrospect, I now look at the circuitry of some of the devices and think of how I could have done it in a more efficient and aesthetically-pleasing manner (though I am a lover of all types of circuit porn), but it's not worth re-doing everything... This is not a commercial product, so what matters is that it works and isn't exhibiting any glaring ineffiencies.
[Source code overhaul]
The code has been successfully split into files relevant to each class, object and driver instead of the 800+ line python script that drove the control console and the few hundred lines of Arduino source that was hacked up to work with each device as needed. The code is now structured as follows:
"CS" = Curses screen (UI is in curses, mainly because I like the look)
\\ Visual K-OS Control Center
| - globals.py[All global constants/object definitions]
| - _screenCfgFBA.py[CS - FBA configuration]
| - _screenCfgMain.py[CS - Config. selection menu]
| - _screenCfgSS.py[CS - SynthStation configuration]
| - _screenCfgThor.py[CS - Thor configuration]
| - _screenClientScan.py [CS - Display status and/or scan for slave devices]
| - _screenDisplayMapping.py [CS - Display the current GamePad mapping profile]
| - _screenMain.py[CS - Main menu]
| - _screenManualFBA.py [CS - (limited) Keyboard-driven FBA control]
| - VKCC.py[Main script]
| - VKCC_Constants.py[Constants used everywhere: Serial, color, etc]
| - VKCC_objFBA.py[Flood Bank Array object definition]
| - VKCC_objGamePad.py[GamePad I/O driver]
| - VKCC_objScreenManager.py [Curses/console UI manager]
| - VKCC_objSerialManager.py [Serial I/O manager]
| - VKCC_objSynthStation.py [SynthStation object definition]
| - VKCC_objThor.py[Thor object definition]
[FBA Enclosures]
The FBA boards (2 total, currently) have finally gotten wood backings. One has had a full back piece for a while now, but the 2nd's circuitry has been exposed since its inception until last night. Now, to finish sanding down, leveling and re-painting. The good part about recycled palette wood is that it's free... The downside is that it is often semi-warped and/or irregular in dimension, which is why the enclosures have a bit of "character" that I'm attempting to minimize. They will eventually have hinging mechanisms so the boards can be angled and supported without needing to be propped up precariously on the stage.
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.