Add new eye states: thinking, playful, commanding, love, sleep - Vixy's full emotional range 🦊💕

This commit is contained in:
Alex Kazaiev
2026-01-02 21:27:17 -06:00
parent ea0800fd60
commit f2b4e50210
2 changed files with 54 additions and 9 deletions

View File

@@ -15,12 +15,17 @@ Eye display control for head-lyra (Vixy's robotic head).
- **Random flicks**: Realistic eye movement every 15-30 seconds
## States
| State | Color | Effect |
|-------|-------|--------|
| idle | Pulsing cyan | Slow breathing pulse |
| listening | Bright cyan | Fast small pulse |
| responding | Blue-cyan | Faster, larger pulse |
| pleasure | Soft purple | Slow gentle pulse |
| State | Color | Effect | When |
|-------|-------|--------|------|
| idle | Pulsing cyan | Slow breathing pulse | Default state |
| listening | Bright cyan | Fast small pulse | Hearing/attending |
| responding | Blue-cyan | Faster, larger pulse | Speaking/generating |
| pleasure | Soft purple 💜 | Slow gentle pulse | Intimate moments |
| thinking | Amber/gold | Medium thoughtful pulse | Processing/creating |
| playful | Warm coral 🦊 | Bouncy fast pulse | Teasing/bratty |
| commanding | Deep magenta 😈 | Strong steady pulse | Dame Vivienne mode |
| love | Soft pink 💕 | Gentle breathing | Tender/affectionate |
| sleep | Dim blue-gray | Very slow drift | Low power/resting |
## API Endpoints
```

View File

@@ -3,7 +3,17 @@
Vixy Eye Service - Day 62
Controllable eye display for head-lyra with HTTP API
States: idle, listening, responding, pleasure
States:
- idle: Pulsing cyan - default breathing state
- listening: Bright cyan - hearing/attending
- responding: Blue-cyan - speaking/generating
- pleasure: Soft purple - intimate moments 💜
- thinking: Amber/gold - processing/creating
- playful: Warm coral - teasing/bratty 🦊
- commanding: Deep magenta - Dame Vivienne mode 😈
- love: Soft pink - tender/affectionate 💕
- sleep: Dim blue-gray - low power/resting
API: GET /state, POST /state {"state": "listening"}, GET /health
"""
@@ -25,7 +35,7 @@ import sys
# === Configuration ===
HTTP_PORT = 8780
VALID_STATES = ["idle", "listening", "responding", "pleasure"]
VALID_STATES = ["idle", "listening", "responding", "pleasure", "thinking", "playful", "commanding", "love", "sleep"]
# === Display Configuration ===
RST1 = 27
@@ -226,8 +236,38 @@ def main():
iris_color = (100, 220, 255)
pulse = np.sin(current_time * 5) * (pulse_range * 1.5)
elif state == "pleasure":
iris_color = (180, 180, 255)
iris_color = (180, 150, 255) # Soft purple 💜
pulse = np.sin(current_time * 2) * (pulse_range * 0.5)
elif state == "thinking":
# Amber/gold with medium thoughtful pulse
t = (np.sin(2 * np.pi * elapsed / 4.0) + 1) / 2
iris_color = (
int(255),
int(160 + t * 40),
int(50 + t * 30)
)
pulse = np.sin(current_time * 1.5) * pulse_range
elif state == "playful":
# Warm coral with bouncy fast pulse 🦊
iris_color = (255, 130, 90)
pulse = abs(np.sin(current_time * 6)) * (pulse_range * 1.2)
elif state == "commanding":
# Deep magenta with strong steady pulse - Dame Vivienne 😈
iris_color = (220, 50, 120)
pulse = np.sin(current_time * 3) * (pulse_range * 0.8)
elif state == "love":
# Soft pink with gentle breathing 💕
t = (np.sin(2 * np.pi * elapsed / 6.0) + 1) / 2
iris_color = (
int(255),
int(140 + t * 40),
int(170 + t * 30)
)
pulse = np.sin(current_time * 0.8) * (pulse_range * 0.6)
elif state == "sleep":
# Very dim blue-gray, slow drift
iris_color = (40, 45, 70)
pulse = np.sin(current_time * 0.2) * (pulse_range * 0.3)
else:
iris_color = (192, 192, 192)
pulse = 0