Don’t Worry, Be Happy

Current Build: http://www.tinyurl.com/collaborativesoundscape

Observations: While the user interface doesn’t look too different at the moment, the code running the program has been completely overhauled. Based on feedback I’ve received, I have decided to give the program “Basic” and “Advanced” mode. Many users are attracted to the colors and want to draw pictures. On more than one occasion I have seen people draw smiley faces as they explore. As such, just having the glockenspiel sound would be best for those situations. The advanced mode will have each color representing a different sound, including some loops that are designed to take 4 to 8 beats to play (such as a guitar strumming pattern of a chord for 4 beats.)

An additional observation, many people randomly create whole tone scales when they first play with the program. This is likely because of the visual pattern of skipping a block is a appealing to the eye. This project could actually turn in to some interest research regarding how people navigate a geometric interface without any instructions.

The Back End: The data logging is the biggest upgrade in this version. While it’s not writing to a file at the moment, it does track which block was clicked, the current color, the new color, who changed it (player name is assigned to a random number between 1 and 1000 at the time they join the room), and the time of the change. That data is printed as a string to the debug console in Unity.

In addition, I’ve made it so the program will only show one button to join the game (or start the server if nobody is connected.)

Next Steps: Figure out the interface for any buttons (change modes, mute, About), continue to build the complete sound library, and figure out how to log to a CSV file (probably enabled by a hidden keystroke so it doesn’t happen on everybody’s computers when they log on).

Know Your Audience

Over the last few days, I have had a chance to share my project with peers, students, and faculty to get their feedback. My approach is fairly simple: 1) I ask if they would like to try the project, 2) The only instruction I give is “Explore!”, and 3) I ask them to tell me what they thought would/should happen when they click on various items.

The feedback has been extremely consistent:

1) Everybody thinks the different colors should represent different sounds.

2) People want either a visual or auditory feedback when they click on a colored sky block.

3) It might be nice to see how many people are connected, or have a running log on the screen of who make the changes (such as “Block 3-5 Changed to Red by Anonymous Platypus.”)

4) The data needs to be captured to make this project useful for research.

5) People hate having to install a the Webplayer to use the application (no workaround for that problem during the time frame of the project.)

Next steps: Learn more about possible data collection methods, and figure out a method of adding up to 17 different sounds to represent the different colors.

Playing Around with Design

My solution for having the user pick their own color is a scrolling “sky” of color blocks. There are a total of 17 color choices. True to the “soundscape” name, I’ve started to design the environment to look like a cityscape of skyscrapers. Perhaps a UT Austin tower will end up in there 😉

No performance issues in terms of graphics yet. Later today I plan on switching the networking to PUN and seeing if it still all runs smoothly.

Networked and Synced

After a lot of troubleshooting I finally have a collaborative sequencer that actually works over the internet. Based on how well it is working I may use my desktop computer at home as a server for this collaboration experiment instead of PUN as I originally intended.

Since the RPC requires so little bandwidth, I’m going to see if the server runs well allowing up to 32 clients to connect. I imagine there would be quite a bit of chaos with 32 people.

Based on some feedback I received from coworkers and peers the next feature to add before I expand this in to a bigger project is user color selections so you can tell what blocks you’ve added, or even draw pictures. At this time I do not plan on having the colors represent anything more than a “triggered” block. I will likely keep the white color as off since black blocks are really hard to see.

Once I’ve livened up the project with some additional color it will be time to explore how to make this a “soundscape” with more than drums. The plan is to use the 3D environment to make it an immersive experience. For the time being I am not planning on adding 3D characters/avatars (even as simple as a cube you can move) since the focus is the soundscape.

Eureka!

Eureka! I found a solution to my synchronizing problem and have tested it on my local network. While not pretty, it does work. Time will tell if it transfers to my full project.

At the moment if I click on a block with either the server or the client the blocks change color on all connections. For some weird reason they are both changing with one click, but I predict that is a small bug to correct.

Next Steps:

1) Fix the bug so only one cube will change at a time.

2) Transfer the code over to my current build of the step-sequencer.

CollaborativeSoundScape - Sync test

Reaching out for help

My project has hit a roadblock as I try to figure out how to toggle a block between “on” and “off” on both the server and client computers.

So, time to reach out to the Unity3D forums to see if anybody has advice to work around my current problem.

Asking for help in the networking forum 

Asking for help/sharing in the “Works in progess” forum

Also, I noticed that Unity does have a Collaboration forum for people looking to work on projects together.

Bug squashed

To see the latest version of the project:  http://tinyurl.com/collaborativesoundscape

News: Corrected the problem with the first beat not playing. As a workaround for the “0” in the array of the beats I was using step = step – 1, to turn off the sound, but arrays cannot have a negative value. As a solution I told the program to turn off the sound if step != currentStep.

Next Steps: 1) Clean up the code, eliminate extra lines that are inefficient, and add missing comments as needed.

2) With what I learned on creating the basic “drum machine”, it will not be difficult to build in other sounds. As such, I think it is time to focus on building in the Photon Unity Network so multiple people can use the current drum machine at once.