$ account windhide
SkyMusicPlay-for-Windows is a Windows desktop application that automates piano playing inside the game Sky: Children of the Light. It is built as a two-process localhost system: an Electron + Vue 3 (Naive UI) frontend for the music library, playback controls, settings, i18n, and a custom canvas-based sheet editor; and a Python FastAPI backend (port 9899) that converts ordinary audio/MIDI files into game-compatible key sheets and replays them by injecting synthetic keyboard events into the game window. Conversion of audio uses a real pipeline: demucs source separation, Spotify basic_pitch audio-to-MIDI, pretty_midi pitch analysis, and BPM-based dynamic merge thresholds, producing JSON sheets consumed by the player. A YOLO-based vision layer (ultralytics with two custom .pt models) detects on-screen keys and friend/UI elements to power a follow-along tutorial mode, and a separate Tkinter transparent overlay (draw-follow-window) draws guidance boxes over the game. Shortcut keys arrive over a WebSocket server on port 11452. The architecture is a localhost monitor-and-worker design: Electron spawns and supervises the packaged Python server, the Vue renderer talks to it over REST, and Python runs multiple background threads (playback queue, HWND check, shortcut handling, OCR/follow detection, frame-alive watchdog), with separate Intel and AMD keyboard-robot implementations. The project is feature-rich and actively developed, but carries hobby-grade technical debt: hardcoded absolute Windows paths and fixed localhost ports, a security-sensitive eval() in the config getter, wide-open CORS, duplicated Intel/AMD modules, swallowed exceptions, stale commented-out AI providers, version inconsistencies, machine-translated locale files, and at least one corrupted macro template asset. Most automation code is Sky-specific (window class names, key maps, OCR labels), so it is not portable as-is; nonetheless, several modules illustrate clean, adaptable patterns such as producer-consumer task queues, Win32 input injection, audio-to-discrete-note mapping, and socket-driven screen overlays.