Texture World is a location-based, social composition app for iPhone. Users can create and upload simple sonic "textures" made by setting a selection of ten parameters. These values are set a slider screen, and are used as parameters for FM synthesis. The data is uploaded and tagged with the user's current GPS location. Then, by using the GPS, compass and gryoscope data, a user can navigate and explore existing textures that have been previously uploaded by other users. As all textures are inherently tied to GPS locations, Texture World serves as a constantly-growing augmented-reality overlay that responds as the users navigate through the real world.
For the purposes of prototyping and demonstrating this app, I added an additional feature called "virtual travel". Toggling virtual travel allows the user to move around the virtual environment using the touchscreen. Pressing or moving your finger on the screen will begin advancing your current location (represented by a small white circle) towards the touch point. This causes the nearby textures to pan past the screen.
Instructions for Building Project
Download the two .zip files and and uncompress. Navigate to the TextureWorld_Server folder and start the server by typing 'rails server'. (You will need to have Ruby on Rails installed on your machine.) Next, navigate to the TextureWorld folder and open the .xcodeproj file with Xcode. Before your device can communicate with the server, you will need to hard-code the server's IP address. In the file TextureWorldAppDelegate.h, change the line that starts with '#define serv' to include your computer's IP address. Be sure to leave the ':3000' at the end, as that represents the communication port you will be using. With an iPhone plugged into the computer, press the 'Build and Run' button. The app should load onto the device. If the server is running, textures will load onto the screen, unless there are no previously uploaded textures nearby. (If you're at CCRMA there will be!) If that is the case, try to add a texture by going to the compose screen and hitting the submit button.