SoftBits Live

Related projects:
LittleBits Softbits
LittleBits Korg Synth Kit
LittleBits Midi Interface
LittleBits Arduino Synth Fun
LittleBits Broomstick Guitar
Broomstick MIDI guitar
Mouse Organ

Day 8. Basic bytecode being generated and executed in the browser. wire_split and arith_invert do stuff.

Day 9. Added a counter, dimmer and setValue to the action set. wire split only works correctly when both output snaps have bits docked to them. If only one of the wire split output snaps is connected then it should just act as a passthru.

Day 10. Changed the wire graphics and the background. Did some internal re-factoring. Started to add support for 'controls' such as a slider and indicators such as a bar graph. Added auto select of scanning snap when dragging the bit body rather than a snap.

Day 12: Added flip and remove handles for un-docked bits. Made the cursor change as you move over bits. Drag by the snap to dock/undock a bit.

Day 13: Docking now copes with 'overshoot' and now 'backs up'. Fixed issue where if there were two paths to a bit such as using a split and bargraph2, part of the connected bits were moved twice as far as the move relative function moved the connected parts once through the first docked snap and then again via the second docked snap. This also showed up an issue where you could not un snap a bit when it was connected twice to the same 'net'. Now when one snap is un-docked, all other snaps on the bit to the same net are also undocked. Now when you dock a bit or net, all un docked snaps are tested to see if there is a dockable snap in range and automatically connected. Working on the backend serial port server so the web page will be able to communicate with the Arduino. I am going to use Midi messages as the data ex format. Will use Midi SYSEX messages to send bulk data between web page and the Arduino.

Day 14. Busy day, mostly working on the softbitslive backend that talks to the arduino.

Day 15. Got a basic backend and can send note data to arduino. Added a input "piano" keyboard that can be played using the letters qwertyuiop and the numbers 23 567 90.

Day 16. It Works! Debugged the Midi System Exclusive message processing so that the javascript in the web page sends the current program bytes to the backend which routes them to the softbitslive proxy which then sends the midi data over the serial link to the Arduino. The SoftBits Live sketch decodes the midi sysex message and loads the codes and executes them.

Day 17. Having got the bare bones time to add some error checking and functionality.

Day 18. Finally have got the LittleBits Arduino module to talk to the serial server. Making a demo video.

Day 19. Re did the video, first attempt and sound issues. New video is available HERE.

Global variables, the main tables and some of the sysex msg functions used to send to the backend.
The Arduino and Piano controls. Controls have to draw themselves and have more complex behaviours.
The rest of the javascript.

Day 22. Splitting the Javascript into pieces. It was getting too large to find things easily.

Day 24. Christmas Eve, been a busy day. Done a few things to the code. Working on labling each bit with the domin it runs in. EG. 1 is Arduino only, 2 is WEB page only. Starting to generate seperate code bytes for web page and arduino.

Day 25. Christmas Day, been a good day. Plenty of food, a few naps and got the basic domain labling working.

Day 27. Main functionality in place. filling out the arduino softbits and making sure that the web page matches.

Day 29. Down to a few bugs and some features to go before release. Need at add Save/Load so the circuit can be saved and loaded later. Need to add a sequence number so the web page knows if the Arduino is running the current code. Wire_recv is not always getting the data from the expected chain but could just be the out of date code issue.

Day 32. Happy New year! 2015 should be fun! Save and Load added and working. Also New and Reload.
The webpage can be Saved as an html file using the browsers "Save page As" and run from the file system. In this mode the networking is disabled.
Extra cuteness factor - most output snaps now show a little bargraph of the current value.

Day 35. Working on making "wire" ( straight connecting pieces) variable length. If one end of a wire is docked with a bit, then the undocked snap can be dragged to make the "wire" longer or shorter. next need to re-factor that bit of the code so I can make "wire" automatically fit the gap it is being moved into.