Sonata
Platform: PC
Engine: Unity 3D
Production Time: 6 Months
Size of Team: Solo
Role: Developer
Roles and Responsibilities
Developed an audio soundstage including detailed reverb rooms for adaptive audio.
Created a data pipeline in which MIDI audio files are automatically converted into easily readable Scriptable Objects
Designed a song auto playing system that would read and play song files on the piano while also converting the notes to playable “bars” that mirror “Guitar Hero” and other rhythm games.
Designed environmental lighting to create a comfortable warm atmosphere, complimenting gameplay.
Created an 11-page in depth Game Design Document outlining the story, characters, gameplay, and future of Sonata.
Overview
Sonata is a single player narrative-focused rhythm game based on Billy Joel’s “Piano Man.” In this gentle and reflective story, experience the life of a pianist playing in a small, warmly lit bar tucked away in a rainy city. The world outside is bustling, but inside this bar, time slows and conversations flow like jazz. As patrons converse, choose music to set the scene and watch the tone of their conversations change to match your lead.
You play as a nameless, soft-spoken pianist new to the job, new to the city, and new to the instrument. Each evening, you take your seat at the piano and begin to play. The bar is home to a rotating cast of patrons: an overworked teacher, a lonely retiree, a pair of estranged siblings, a startup founder on the brink, and others, each with their own evolving stories and relationships.
Sonata is a low-pressure rhythm game wrapped in narrative. Players choose songs and their preferred difficulty (from no timing to full rhythm input), play them on a virtual piano, and watch as conversations between patrons subtly change based on musical tone. The player receives a score and visual feedback in the form of animated reactions and tips in their cup. Between each night, players return to their apartment to read emails that slowly unravel a more personal narrative.
Sonata is designed to feel gentle, reflective, and emotionally grounded. It’s a game for slowing down, an antidote to overstimulation. It leans into feelings of solitude, warmth, quiet connection, and the bittersweet undercurrent of everyday human experience.
Wwise middleware was used in conjunction with this project.
MIDI File Parser
This file parser is made to be as easy as possible while passing through any needed variables attached to each note such as their timestamp, velocity, and length. By simply uploading any MIDI file, inserting it into the parser, and hitting play, a new song will be added to your songs folder ready to be played. This is done using the Melanchall DryWetMidi library which is able to extract data from MIDI files.
Here are some songs that have already been converted:
“Piano Man” by Billy Joel
“He’s a Pirate!” by Klaus Badelt and Hans Zimmer for “Pirates of the Caribbean”
“Rush E” by Andrew Wrangell
Piano Auto Playing
Given a song seen above, the Sonata piano is able to execute one of two functions. It can present the player with Guitar Hero style bars requiring users to play it as a rhythm game, or it can automatically play the songs for you.
It does this by keeping an internal reference to when the song began, and then playing any notes that have a timestamp between this and the current time. This avoids floating point issues that arise with frame-based timer systems.
Currently, the gameplay “bars” are made by collapsing all notes into 5 sections: A/B, C, D, E, F/G. This does cause gameplay difficulty, as more complex songs tend to have overlapping notes.
The audio was made by recording online piano systems and uploading each audio clip to Wwise, where it was then further mixed and applied to each piano key, creating an immersive musical experience.