Felt great today. Meant to finish up early, get to the gym, do laundry and finish the new talk animation.
Work took longer than I'd hoped. Gym was crowded and I didn't stay long. Laundry happened. Made a stab at the software. Practiced fiddle for nearly an hour instead.
I'd say I'd passed another milestone. I'm still mostly in first position and my intonation still sucks, but I'm now comfortable with just swinging it onto my shoulder and trying out a tune. String crossings are no longer a nightmare, nor is shifting. Not saying they are easy, or smooth, but I can do them.
As a perhaps measure of my growing comfort with the instrument, the evening part of today's practice was without tuner, shoulder rest, or light (that is, I wasn't spending the time looking at my fingers or the bow.) I am still more comfortable with the shoulder rest, but I can do pretty much everything without it. Even work on getting to a proper vibrato.
On the software, less obvious progress. There's about three things left before I can ship Holocrons, and making a better animation that plays when the user triggers the sensor is one of them. What I'm trying is the particular look of a light that is being driven by an actor's voice.
My first approach was just a sequence of up and down fades, with spaces between them. The fades are at different speeds to simulate hard and soft consonants. This fails because we speak in words; in groups of syllables. The next attempt organized the fades into one to five "syllable" groups, with short "word" gaps between them. Better, but still not right. See, most speakers have a cadence. The cadence however follows the phonemes (exceptions include long vowels). So regardless of whether the leading sound is "soft" or "hard" (rises quickly or slowly to the peak energy) the total dwell time of the vowel should be similar.
Oh, and I thought of another wrinkle I want to add. The default "pulse" animation ignores the fact that the four LEDs are individually addressable. But if I randomize the peak levels between the LEDs during the "talk" animation, the lighting will seem to flicker or dance from side to side.
That only requires writing a whole new function to display the final result of all the other calculations. Minor stuff. (The pulse animation is now redone with variables for color center and overall brightness; these are read from EEPROM on boot time so, eventually, I can write some routines to let the end-user modify those values and have them stored in non-volatile memory.)