add shape morphing with linear gesture
task id: voxbox-shape-morphing2024-06-27 08:48: Deprioritizing. #voxbox-shape-morphing
2024-06-30 09:52: core mechanic for this shouldn't be too hard #voxbox-shape-morphing
2024-06-30 11:37: Initial voxbox-ing setup #voxbox-shape-morphing
2024-06-30 11:39: Oh, right. I need to build mplayer form source #voxbox-shape-morphing #mplayer-jack-thinkpad
This thinkpad isn't fully provisioned yet. Upstream mplayer doesn't have jack support, so I need to build it from source.
I remember this taking a while. Uh, maybe I should look at other things.
Nevermind? It just finsihed as I wrote this. That's not a great sign.
Ran into build issues. Great. Downloading from git, using the APKBUILD as hints.
MPlayer is kinda SVN? But this build script is using git?
2024-06-30 13:51: Finally getting around to implementing initial shape morphing #voxbox-shape-morphing #timelog:00:09:00
I think...
2024-06-30 13:58: This isn't going to work the way I thought, and I'm happy about that. #voxbox-shape-morphing
Initially I was going to add a small method to the tract that linearly interpolates two DRM tract shapes, given a position. BUT, the DRM shapes aren't in there. So, I actually have to plan out a new interface.
2024-06-30 14:00: Working out interface (ink and paper) #voxbox-shape-morphing #timelog:00:14:34
2024-06-30 14:48: Re-examining GSG code. Generics possible? #voxbox-shape-morphing #timelog:00:25:03
Basically, I want to generalize the values that can be interpolated. It is currently set to be 32-bit floats, BUT, it'd be nice to make them generics. That way, the shape morphing can work on those generics.
2024-06-30 15:01: some initial refactoring completed #voxbox-shape-morphing
The core Gesture and GestureVertex structs take in generic arguments, with the rest hardcoded to take in f32. This was much less friction than I expected.
Next steps: have the linear gesture signal generator take in generics as well. After that, the generics can be refit to take in shapes. Somehow. (Indices? references?)
2024-06-30 19:37: refactor linear gesture to take in generics #voxbox-shape-morphing #timelog:00:21:41
Okay that didn't work.
2024-06-30 19:49: stop writing code, think about the problem. Why generics? #voxbox-shape-morphing
This gesture is currently hard-coded to work with floats as values. Which, most of the time, is fine. However, for shape morphing, the values that need to be interpolated aren't floating point values, but tables.
The hope with generics was to be able to elegantly use the existing linear gesture logic to create gestures that morphed between DRM shapes.
Things would be set up in such a way that when tick()
would be called, it would know to interplate between two DRM tables and store it somewhere in another table. That table could then be taken and passed to the vocal tract.
Stopping for now because I've had enough of a day.
2024-07-01 10:24: Chattering gibberish sounds are needed for critter #poke-demo #create-chatter-sounds #voxbox-shape-morphing
This could also be a good pre-cursor to the shape morphing stuff, as all the code could be a bit more relaxed and inside some sample rust code.
2024-07-02 08:40: Chatter sounds are precursor to morphing shapes with gesture #voxbox-shape-morphing
The chatter sound model will feature DRM shape morphing using a pre-defined set of tract shapes. This will be a simplified version of what I'm expecting to do with the Gesture shape morphing. The chatter system will interpolate using a phasor, but there won't be the rephasor component. The code structure will also attempt to be simplified as well.
2024-07-08 08:18: Downgrading shape morphing #voxbox-shape-morphing
The approach here isn't interactive enough, and I think I need to keep focusing on interaction. I'd rather have one mediocre vowel shape and interaction than several excellent vowel shapes and no interaction.
It's going to need to get done, but I can't have it in the priority bin like this.