"poke a face" demo.
task id: demo-poke2024-06-21 09:10: created. initial brainstorming today? #demo-poke
2024-06-21 13:01: The poke should be a tickle. Think tickle-me-elmo, or the Pillsbury Doughboy #demo-poke
2024-06-24 08:33: This could still work as a self-contained demo #demo-poke
2024-06-27 09:01: poke demo moved back to main #demo-poke
Probably won't get to it until next week. This has been added to my priority group.
2024-07-01 08:39: Pre-work on this today #demo-poke
Goal will be to figure out initial technical scaffolding, getting p5 in a windowed context, mouse pointer stuff, etc.
2024-07-01 08:51: Poke demo is priority this week #demo-poke
It's a good contrast from the vocal chords demo, and a good way to start the more whimsical toyetic vocal demos.
2024-07-01 10:30: Attempting to get some p5 code working #demo-poke #timelog:00:27:02
2024-07-01 10:41: the isorhythms code works, but, it chokes. a lot. #demo-poke
Not a good sign for future developments on the thinkpad.
2024-07-01 10:58: Trying chromium #demo-poke
Chromium plays isorhythms okay! Just one of those things.
2024-07-01 13:40: Back at the hub. Back to p5 context? #demo-poke #timelog:01:00:08
Now that things work if we "run in chromium" (sigh), things can move forward.
2024-07-01 13:47: Found the documentation #demo-poke
Found the documentation: https://archive.p5js.org/reference/#/p5/p5.
2024-07-01 14:07: Initial p5 boilerplate working #demo-poke
Going to put it in a 400x400 window, or something.
scratch that, let's see what 400x680 does. approximately pacman proportions.
2024-07-01 14:33: Adding wall collisions #demo-poke
It doesn't work, but it's a good start.
2024-07-01 16:28: Trying to make the bounce work #demo-poke #12:14
2024-07-01 16:33: Oh, circle is diameter, not radius. #demo-poke
2024-07-01 16:43: Closer, but not right still. Pen and paper now #demo-poke #timelog:00:15:00
2024-07-02 08:37: chatter sounds are needed for poke #create-chatter-sounds #demo-poke
The most important thing for this demo is the vocal-like chattering. So this example will more or less aim to build the model. The new thing to try out will be morphing between DRM shapes. The critter here will be quite small, so the tract size wlil be quite small.
I will be thinking more about the design today.
2024-07-04 09:01: Poke interactions in chatter: thoughts. #demo-poke
The offline example should have some parts that will eventually be designed to be modulated by user input (poking). Poking can be simulating using a triggered gate. The gate would go into an envelope (envelopes?) of some sort as way to shape things like fundamental pitch and jitter.
2024-07-04 09:05: Eyes and mouth thoughts #demo-poke
Basically, my source of inspiration for this one are those poptart commercials that were around during the early 2000s <<demos/poptarts>>
It'd be nice to get collision working for the eyes, because I think they will bulge out of the face occasionally.
Mouth shape needs to be flexible enough to support mouth shapes. I want these to be synchronized with the mouth shapes being synthesized by the audio.
2024-07-04 09:13: I would like to have a working demo by EOD Friday (tomorrow) #demo-poke
2024-07-04 10:04: Adding tgate. #demo-poke #timelog:00:19:46
2024-07-04 10:24: Creating metro #demo-poke #timelog:00:06:45
This will drive the tgate. This can be made from a phasor. Any time the phasor resets, produce a trigger.
Created a phasor to trigger utility called PhasorTrig
2024-07-04 10:32: Initial test of tgate in chatter example #demo-poke #timelog:00:10:10
Actually, I'm building out a metro that combines phasor and phasortrig.
2024-07-04 10:42: I want an envelope now. #demo-poke #timelog:00:26:20
I will opt to port the envelope I made in sndkit.
2024-07-04 11:10: Initial envelope code ported. Now to see if it works. #demo-poke #timelog:00:07:16
2024-07-04 11:13: Loud distored noises (it didn't work). investigating #demo-poke
Now it works. Forgot to add the exp
and update pgate
.
2024-07-04 13:34: Refactoring chatter, getting it ready for poke. #demo-poke #timelog:00:42:36
Chatter sound needs to be consolidated into a struct rather than in a main function. There also needs to be a poke method, which will eventually be the thing called when the user pokes the circle on the screen.
2024-07-04 13:35: At this point, the base chatter sounds have been made #create-chatter-sounds #demo-poke
So I think this task can be considered completed. The rest of the sound design work will be polish for the poke demo.
2024-07-04 14:16: Fully encapsulated chatter into struct #create-chatter-sounds #demo-poke
2024-07-04 14:17: Now, to implement poke method #demo-poke #timelog:00:12:11
Up to this point, "poking" has been simulating using a metro object. This metro needs to be pulled out of the struct, and replaced with a gate fed into a threshold generator. The metro function will exist outside, and when it ticks an impulse, it will call the poke method. The poke method will flip a gate signal on and off. Inside ChatterBox, it will detect changes in the gate and turn those into triggers like before.
2024-07-04 15:27: Making sure graphics work on my mac #demo-poke #timelog:00:01:34
2024-07-04 15:29: Connecting sound to graphics. #demo-poke #timelog:00:17:55
It works! It's a coarse experience, but it sorta works.
2024-07-04 15:56: Trying out on Android. #demo-poke #timelog:00:03:15
termux is awesome, because I can run it locally on my phone.
It works. definitely needs some refinement. But a good enough stopping point.
2024-07-04 16:22: Add "tap to begin" mechanic #demo-poke #timelog:30:12
2024-07-04 17:06: Debugging tap to begin on mobile #demo-poke
2024-07-04 17:15: Attempting to SSH #demo-poke #timelog:00:16:55
2024-07-04 18:14: Maybe a div/canvas onClick event handler will work? #demo-poke #timelog:00:06:17
Okay that works! Nice.
2024-07-05 08:06: Planning Demo Poke tweaks #demo-poke
Visuals: eyes and mouth, make sure they all collide against walls. Sounds: use envelope to modulate pitch, used smoothed gate for amplitude (decay doesn't work).
Resist the urge to tune and tweak all day.
2024-07-05 08:30: Let's work on a face for my little guy #demo-poke #timelog:00:16:03
2024-07-05 08:46: Initial face created. Next up: mouth sync #demo-poke #timelog:00:58:42
open/close and shape morphing
2024-07-05 09:24: Initial open/close created. Now to interpolate shapes. #demo-poke
2024-07-05 09:47: Testing on Android #demo-poke
2024-07-05 09:49: Where did the tap to begin go? #demo-poke
2024-07-05 09:55: Tuning and tweaking #demo-poke #timelog:00:49:37
2024-07-05 09:56: First up, expand the poking radius #demo-poke
Sometimes the pokes don't register because you are out of bounds.
2024-07-05 10:00: Map envelope to fundamental pitch, rate, jitter #demo-poke
2024-07-05 10:16: add some jitter controlling velum #demo-poke
2024-07-05 10:22: remove some low end #demo-poke
2024-07-05 10:25: fine. add reverb #demo-poke
2024-07-05 10:32: draw the frame last #demo-poke
That way, eyeballs can go off screen. I'm not going to do collision checks on mouth/eyes. Not worth the time.
2024-07-05 10:39: More pitch tuning #demo-poke
I wasn't hearing what I wanted to hear. Turns out the jitter was getting in the way. 10:45 Android testing again #demo-poke #timelog:00:03:38 Feels okay enough. Maybe a bit too shrill on phone speakers. But I'll worry about mixing another time.
2024-07-05 10:50: Merged "chatter" branch in voxbox. #demo-poke
2024-07-05 15:45: Pushing initial poke demo online. #demo-poke #timelog:00:07:39
2024-07-06 11:27: initial demo done. Follow-up? #demo-poke #consider-poke-follow-up
I've gotten good feedback from people, and was really interested in watching people interact with it. It's apparently has startled many cats! I may want to scope out some follow-up improvemnts to this, if there's time. Some things include: wall collision sounds, more dynamic interactions when poking, more variation in sound, and more empathy mechanics (feeding, laughter/tickling, etc).
2024-08-02 10:09: retrospection #demo-poke
Yesterday I showed another person my Poke demo [0]. Another very visceral response: "why did you make me do that to him?"
On the one hand, I guess I should be pleased that I am getting strong reactions to my art. On the other hand, no, not like this :(
I find myself agreeing with the reactions. It's very hard to make the "poke" action feel consensual. Even a "tickle" is an invasion. I wanted to build something whimsical, but I didn't really consider the implications of the mechanic. No matter how cute or whimsical the design is, the poke negates all of this.
I feel a little more deflated than usual about this. With "Poke", it sometimes feels like I've accidentally added a bit more cruelty in the world, which was the exact opposite of my intention.
This could be done in a p5 app. I just want a circle that giggles and jitters when you poke at it. It'd be a good pre-cursor to other experiences I want to make like "A Blob Named Bucket".