Project Summary
Frequency is a browser-based action/puzzle game built with Vite, Phaser, and Tone.js. The project began as an experiment in combining my background in music, sound design, and interactive development into a small but polished web game that could run directly in the browser on desktop and mobile devices. The game is playable through GitHub Pages and can also be run locally using a standard Node/Vite development workflow.
The central idea behind Frequency is built around sound, signal, and resonance. The player controls Signal, a small glowing character who moves through abstract, musical environments and uses a tuning mechanic to interact with the world. Rather than treating audio as a layer added after the game was designed, the project was developed around the idea that music and gameplay could share the same language: timing, tuning, tension, release, and harmonic resolution.
Music + Audio
Music and audio were central to the design of Frequency. The opening and ending scenes feature original algorithmic music programmed directly in Tone.js, reinforcing the game’s focus on signal, resonance, and procedural systems.
For the gameplay music, I created a dark, minimalist arrangement of “Closer” by Nine Inch Nails. I initially attempted to generate the arrangement procedurally in the browser from MIDI data, with each voice handled through Tone.js. While that approach fit the concept of the game, it created performance issues once the music and gameplay systems were running simultaneously.
I ultimately moved the MIDI material into Logic Pro, rebuilt the arrangement voice-by-voice, and shaped the parts to better match the game’s visual and emotional tone. The completed track was exported as a WAV file, then played and looped in-game using Tone.js.
To keep the music connected to gameplay, I added a real-time filtering effect during the player death and respawn sequence. When Signal loses a life, the upper and upper-mid frequencies of the music are temporarily rolled off, creating a muffled effect that makes the moment feel disorienting — as if the character has been knocked out of phase before returning to the world.
Design + Development
Visually, the game takes inspiration from minimalist arcade games, atmospheric puzzle platformers, and abstract musical interfaces. I wanted the world to feel like a space between noise and broken signal paths; simple enough to read quickly during gameplay, but expressive enough to support a larger emotional tone.
From a development standpoint, Frequency was built as a modern front-end web project using Vite for fast iteration and production builds, Phaser for the core game loop and rendering, and Tone.js for browser-based synthesized audio. The project includes keyboard, gamepad, and mobile touch controls, along with a virtual gamepad overlay for phone and tablet play. Because mobile browsers require a user gesture before audio can begin, the game also accounts for web audio startup behavior during title-screen and gameplay transitions.
As the project grew, I began migrating level design into Tiled, allowing levels to be authored visually and exported as runtime .tmj maps. This made the level-building process more scalable and gave me a cleaner workflow for defining static boundaries, platforms, gravity zones, tuner nodes, player spawn points, and enemy paths. The game automatically discovers exported level maps through a Vite-powered manifest, which makes it easier to add new playable levels without manually wiring each one into the codebase.
A major part of the process involved designing around the constraints of browser deployment. The game needed to work in a desktop browser, adapt to mobile screens, support fullscreen-style play where possible, and remain easy to distribute without an app store. GitHub Pages became a natural release target because it allowed the project to be published as a lightweight playable web game while keeping the source code and deployment process tied to a standard Git-based workflow.
Frequency is still a compact project, but it represents a meaningful intersection of several areas of my work: music composition, sound design, game design, web development, interactive systems, and creative technology. It gave me a chance to build a complete playable experience from the ground up while exploring how sound can become more than atmosphere — it can become the organizing principle of the game itself.