In this lab we had to design and implement our own Instrument for the iPhone. My instrument is called VoxCarina and it's based on the Ocarina by Smule. The big difference is that there is no need to blow to produce sound, so that you can use your mouth to modulate the sound, like a Talk Box. It makes use of the accelerometer, audio, and OpenGL, STK and the Mopho API. Below there is download link and also a more detailed description of VoxCarina.
CLICK HERE TO DOWNLOAD (XCode with the latest SDK required). All required libraries are included in this package.
VoxCarina and the STK and Mopho API comes in the same package (that you can download from here).
To install them on your iPhone, open the hw3.xcodeproj with your latest version of the XCode with the SDK 3.1.2. Choose to compile for Device (IT WON'T WORK ON THE iPHONE SIMULATOR), click Build'n'Go and you're ready to Go!
The VoxCarina is an Ocarina where the sound is intended to be modulated by your mouth like a Talk Box. There is no need to blow, and by putting the mouth close to the speaker of the iPhone, you will filter the sound of the Ocarina, creating the Talk Box effect. You can also tilt the device to add some vibrato if this feature is turned on in the settings screen.
Since there is no need to blow, by only pressing one of the four buttons of the VoxCarina, the sound will come out of the speaker. The notes are mapped following the same rules as the Ocarina by smule (except for the "no button pressed", which would be exactly the same in VoxCarina as pressing the top-left one only).
You can change some settings on this applications by pressing the "i" button
- Reverb: Add/Remove reverb to the sound (Default: On)
- Accelerometer: When turned on, you can make move your tilt to create a vibrato (Default: On)
- Glissando: Add/Remove ability to add glissando bewteen notes. You can choose the amount of Glissando you want by moving the slider (Default: Off)
- Color: You can choose any of the 5 different colors (Default: Cyan)
Before the VoxCarina I was design the Druminator, however it could not be possible due to the compass low refresh time. You can find the presentation HERE. Then I come up with the idea of doing the VoxCarina, since I really like Talk Boxes and the Ocarina, and I thought I would have enough time to implement it for this assignment.
In terms of the design, all the objects that appear in the screen are subclasses of a GLObject. This is a custom class that keeps the required information to show an object in the screen. The subclasses are: GLCircle and GLHole. Each of these have a draw() method, that gets called in the main render loop. Most of the action takes place in the ES1Render.mm and GLObject.mm files.
For more information about the implementation, please, refer to the Source Code.