You have controls for changing some basic parameters, then upon clicking Begin, you are presented with a few piano keys and a visual representation of the layer in action (red is active, yellow is predictive). Click the piano keys or type their equivalents (C, D, E, F, and G) to feed sequences into the system.
I apologize in advance for some incorrect terminology (I’ll update it after I do a little more study and memorization). I don’t have it on GitHub, so if anyone wants to look at the source, just use “view source” from the browser (warning in advance that the code is pretty ugly)
One thing that became apparent rather quickly is that memory usage is a big factor. I’m thinking that I could save some space by representing SDR arrays as a dense array of indexes (8 bits or so) to the 1’s. Or I could use even fewer bits by storing as relative indices (basically to step through from one relative index to the next). Of course I’ll need to switch to native code before I can try that.
This first implementation isn’t as accurate as I would like (but not terrible). I’m thinking it is likely due to the small number of mini columns possible without crashing the browser (tweaking some of the other properties would probably improve things as well). Could also be some logic bugs, of course. Another thing that is missing is any positional logic (connections to input as well as lateral connections between cells are initially chosen at random), so that no doubt has impact on how it behaves.
I’ll probably tinker around with it some more to see if I can improve it before starting on a native implementation.