Micah Arvey | Music 256a Final Project | takeTwo

A Short Musical Game. Hit the Notes on Time. Ride the Wave.

I kept the aesthetic simple. The purpose is to enjoy watching the waveform and challenging yourself to hit every note perfectly in time. You control the absolute timing of the notes, as you generate the midi. Explosions and sounds are your rewards.

My Design Process

I first wrote a simple looper for milestone 1. Though a functional looper, the interesting factor was lacking.

Temple run supplied the in-hallway motion provided in the drum mode (see below image). Guitar Hero and Magic Piano served as the inspiration the note hitting aspect.

One might think of takeTwo as Teapot Hero. The song is the ultimate meaning of the software. It guides you though a simple musical experience, which is actually quite challenging.

My Code

My code is organized similarly to bokeh. I removed the music engine (my synth is Globals::synth) and the specialized sim, just used a Globals::sim YEntity for root YEntity. The only YEntities or TTEntities that were outside that root was Globals::hud which has its own cascade function.

I kept more code than I used. Simplicity overtook the eagerness to make crazy hallways that ungulate. I'm proud of my decisions to cut unnecessary fat. TTEntities were a lot of my work. The two main thrusts of the game are the 'piano mode' and the 'drum mode' which take place from two different camera angles, and two different purposes. Lots of Global Variables, some good explosion areas, hud functionality, key press -> correct note or missed note? ttScene enum, Global::now counts in samples since program started. The Audio card clocks everything.

Run it on mac (no windows, sorry)

takeTwo.zip

Final Thoughts

I hope you enjoy. I will work on a simple file type for note input, make my code more abstract, and add incentives to continue playing past 2:00 minutes.