Tonight, I will be adding microswitches into the mouth mechanism in order to sense when the mouth is open or closed. I decided I needed to do this because there are times when I want to have the mouth left open, for example when singing. I can really only envision needing to know when it is open, not when it is closed, but while I am in there, I will just add both.
Microswitches are ridiculously expensive even on the surplus market (unless you order from china). I will be scavenging the switches from old CDROM drives or other equipment.
Some simple mods to my controlling code is all that will be needed to sense the mouth movements and I can still "run" it (just cycling open and closed) while ignoring the switches for normal talking.
I will also be installing the speaker in the head while I am in there. I will also throw together an amp circuit on breadboard tonight. Final circuit will use SMD components and a properly laid out board.
I have also started working on the serial command format that will be encoded in the left audio track.
Right now, there is only:
Thinking logically here, the idea is to sync movements to the audio. So, at the bare miminum, all that would be required is periods of mouth running and not running. Adding in commands for opening/closing the book would also be useful.
Once I add switches for sensing opened/closed state of the mouth, this would add two other commands. To seem moderately realistic there are times when opening the mouth and keeping it open for a period of time would better match the audio. For singing, this would be appropriate.
I have no current plans for speed control, though that is a possibility for a little more syncing realism. That would require encoding speed data on the audio as well.
Some experiments might be to even listen to the audio and do some auto-lipsyncing. This would probably be fairly straightforward for talking, but with singing, you would have to distinguish between vocals and instruments. Or have one track with only the vocals. Measuring the beat frequency would indicate speed, amplitude would indicate how open or closed to make the mouth. Though, without linear feedback, I imagine the code would be fairly simple. Again, cleanly separating vocals from background noise/instruments is the real issue. Thankfully that could be processed ahead of time.
Moving along, but still open to great ideas and suggestions. What would you do with this project?