musicRAIN wins a FITC award

musicRAIN logoMy company, mediaRAIN, just won the Flash in the Can Award in the “audio category” for the musicRAIN interactive sheet music application. Robert Penner accepted the award Flash in the Can logoon our behalf. musicRAIN the leader in digital sheet music is the creation started many years ago that is revolutionizing the music industry. There were many people that helped to make musicRAIN a reality.

The original version was created for the LDS Church and can be viewed at www.lds.org/music. They were the first to believe that with technology and music combined we can bless many lives. The music player for the church has touched many lives around the world. There were many prayers and miracles from God that happened along the way to make this original version happen.

The commerical version owes many thanks to Morgan, Brooke, Blake and Shannon. They believed in us. Because of them it was possible for the player to be developed in a commerical way using and refining the indusrty standard musicXML created by Michael Goode and have the musical and Flash genius of Robert Penner to help in creating an amazing application that is light and versatile. It also owes many thanks to the amazing people at CCLI. Howard and Deryk, Gary, Pete, and everyone else.

I’m sure I will forget many people but here is a list of key contributors to the project over the years.

At the LDS Church

At CurtisMorley.com Interactive

  • Michael Chamberlain (An amazing project manager and friend)
  • Richard Lyman (intial Developer with me on musicRAIN)
  • Tyler Wright (The one that saved musicRAIN for the church)
  • Larry Lentz (design and creation)
  • Chase Brammer (Coding actionscript)
  • Gary Rogers (Back -end systems)
  • Evan Ehat (intial designs etc…)
  • Josh Buhler (Ties, Slurs and much more for the Church version)

At mediaRAIN

  • Jacob Wright (Backend, middleware, DB, security)
  • Delane Barrus(Design and interface)
  • Dave Nibley(promtional material)
  • Wayne Pullman(tradeshow booth and materials etc…)
  • Ben McElroy (font creation)

Contractors

  • Robert Penner (A true Flash Architecture genius)
  • Michael Goode (Creator of the musicXML standard)
  • Rob Taylor (Thanks for the great help)
  • Scott Johnson (Work on the midi integration)

CCLI

Key Supports

  • Morgan
  • Brooke
  • Blake

Thank you everyone for making my crazy dream into a reality and for blessing many lives along the way.

Speaking today at BYU on Flash & Google Analytics

Today I will be a guest speaker at BYU and will be talking about Google Analytics in Flash. I will be showing the students the power of using analytics and Flash. I will also be talking briefly about Omniture analytics and Flash. My talk will be centered around the capabilities of fine tuned tracking with Flash and what data should be tracked. I will also talk about the class that I am about to release that is built for Google Analytics and Flash.

Stay tuned and Happy Flashing.

SWX – A Great Idea

Aral Balkan has come up with a new way to get server side data from the server and into Flash. This is a very unique method that has great application. You are probably wondering why we need another format to do Flash and server side communication. We have LoadVars(gotta love the .txt files), XML, Remoting(Macromedia Flash Remoting, AMFPHP, WebORB, etc…), JSON, SOAP, XML-RPC, Flash Media Server, Red5, and PHPObject. Some have asked this same question.
When I look at Aral‘s latest project two reasons come to mind of why this is not only a good idea but a great idea.
  1. Mobile Devices.
  2. Data stored on the user computer/device in the form of a swf for local access later.
Some other benefits that Aral states are :

  • It’s simpler to use. (loadMovie(); is pretty easy)
  • Data is deserialized twice only as opposed to four times.
  • You don’t have to learn a new API and can reuse your existing knowledge.
  • It is useful in mobile applications with limited processing power
  • The final downloadable bundles of SWX will contain everything you need to get up and running (you don’t need to buy or download additional tools).

I would really like to focus on the first two items because these have huge implications around what is now possible for mobile devices and for persistent data.

Mobile Devices

The Flash community has been in desperate need of a slim client that doesn’t require huge XML files and can be accessed using just Flash. SWX uses the loadMovie(); command, which we all know has been around since, “Availability: ActionScript 1.0; Flash Player 3″. How easy is that. All you have to do is load a swf into the mobile device and you automatically have all of your data. You access it just like a regular Flash object.

SWX isn’t bogged down by parsing XML and freezing the player while it does so. It is able to be used without heavy load on the processor or large files that have to be parsed. Aral has this to say, “SWX, by design, is the least processor intensive method possible since it is SWF bytecode and that’s as native as you get in Flash.”

Locally Stored Data

Storing Data in a swf is a great concept. It allows the main swf to read and access data from the server without the server load and multiple pings back and forth. I would love to see this concept explored further. It is like an intermediary data base on the users computer. I would imagine that with a little ingenuity and Aral Balkan like genius there could be a way to check if the file is loaded onto the users computer already and if so check a SharedObject for the reference to the local file and only access that swf. This would entirely alleviate the need for a connection after the first time the data is passed into the SWX. Obviously, this has many ramifications, but I would love to see it explored more.

Summary

Great concept, great implementation, and a great way to be more accessible for mobile devices. This is just the solution needed for getting a heavy data app to perform well on mobile devices. I am very excited to see the future of it.

SWX is a great idea.

Alternating Rows in Flash

You can use modulo(%) to check for alternating rows in ActionScript.

var myRow:Object = new Object;
var color0:Number = 0x0000ff;
var color1:Number = 0x00ff00;
for(var i:Number=0; i<10; i++)
{
myRow.rowColor = _root["color"+(i % 2)];
trace(myRow.rowColor);
}

Here is another example of the coloring rows that is a little more compact.  ActionScript with ternary statements is a little more compact and easy to use.

var myRow:Object = new Object; for(var i:Number=0; i<10; i++)
{
i % 2 == 0 ? myRow.rowColor = 0xff00ff : myRow.rowColor = 0xff0000;
trace(myRow.rowColor);
}