Archive for May, 2003

Before the good stuff, some background. As many of you know, I have been working for some time now and talking about making available a commercial version or service-based pay system for the server-based, dynamic, text-to-speech solution for Flash that I have been demonstrating and using for a little over 2 years now. Here are some previous postings on the topic: May 24th, 2002, July 24, 2002, and a few others in my blog archives. I have had some sputters and coughs in getting things going, and recently even some criticisms that I should stop teasing folks about this unless I can produce it commercially or sell it outright. Well, I think what I would like to do is simply provide the plans for folks to do it on their own, specifically, make it open source project. I have a full time job, and as much as I would like to really develop this fully, there are alternatives, and I just don’t have the time to dedicate to providing the level of commercial support I would want to provide without quitting my day job. So I have tentative plans for writing up the documentation and instructions, all the source, several versions and solutions actually, the whole shebang, and make it open source. Sounds like a good article for Macromedias DevNet or inclusion on a future DRK don’t you think? 🙂 I’ll post more as this pans out and I decide on the type of open source licensing.
Now for the other good stuff. I realize there are times when you can’t or don’t want to rely on server side solutions to drive an application, for performance issues, or more particularly for CD content, etc. I had this specific need for a solution in a recent project I developed, that would allow Flash to dynamically read and speak aloud US currency/dollar amounts, but without relying on a backend server to do the hardwork. Here is the first version I hacked together from remnants of that project. It’s kind of a proof of concept, since its not fully optimized (read that as: its got sloppy code right now) but it is functional nonetheless. I plan on fleshing this out a bit more and making it available as a component. Here are the features, ideas on usage, etc. thus far:
The projects goal is to end up with a component that provides an API to allow Flash MX apps,
specifically RIA Flash MX apps, to programmatically read aloud US
currencies (dollar/cents amounts up to billions or higher) in a voice of your own design, without
any backend server requirements.

Intended Theorized Usage:
RIA’s developed in Flash MX that deal with currencies such as:

  • Shopping cart checkouts
  • Banking/Financial applications
  • Calculators
  • ADA compliance
  • Integration into Macromedia Central applets/shopping cart
  • Enhancement to screen readers’s specialty plugins and server side technology used to generate speech in Flash
  • Tech Details:

  • The current incarnation/version only supports dollar amounts bettween 10.000.00 and 99,999.99 The reason for this is simply because that was the requirement of the app I built this for originally. I plan on fully fleshing that out
  • Few little bugs in this version to correct.
  • Depending on the audio samples and the sound output settings, the core routines and assets can go as low as a 8k or so. Typically for best results with the current voice, Ihave found it usually is around 24-60k added to your application, which can le loaded dynamically on an as needed basis, with full support for shared libraries.
  • All of the audio samples used in the app can be replaced with your own voice, a voice of a celebrity, or simply by running an AppleScript I developed which allows you to quickly regenerate the audio assets in only seconds, to allow the use of any of the built in text-to-speech voice included with all Apple Mac operating systems (About 22 individual voices). I am investigating a similar script for Windows based systems.
  • The timing will have programattical control to refine the pronunciation timing.
  • It potentially could be modified and localized for other currencies at a future
    date/time simply be changing the assets, and some of the logic used to
    determine pronunciation order.
  • Thats about it, take a look at the demonstration version and let me hear your comments and thoughts. Would love to integrate any cool ideas folks might have as I move forward with this. On a final note, I had a posting in a comment on my site about someone who used Flash MX in combination with Director MX and localconnection to allow Flash to drive the text-to-speech capabilities of the new Director Shockwave plugin. Sounds pretty interesting.

    Share
    PRINT THIS ENTRY
    Comments Off on US Currency Text-To-Speech Component for Flash MX – No Server Required

    First off, if you see this, make sure you stay all the way through the credits to the very end to see the two minute trailer for The Matrix Revolutions coming in November, you don’t want to miss it!
    Ok, I have been really stressed out lately doing a lot of running around and finishing up projects, not to mention getting engaged and all the little things that go along with that, so I was really excited to see The Matrix Reloaded last night as it gave me a couple hours to escape from everything, be entertained and relax a little.The theatre and the parking lot where I went was packed more than I had ever seen it before for any movie opening. It was even odder since it was the middle of the week and a lunar eclipse was going on, so it was quite surreal. I had ordered tickets through MoviePhone.com and was able to get tickets no problem. We got to the theatre about an hour early since you still have to wait in line to show your credit card you used to purchase the tickets, it just guarantees it wont be sold out. Even though we were an hour early they were already letting people into the theatre for seats. We darted for the theate and it was already starting to get packed, but I still managed to get the sweet spot, dead center middle of the stadium seeting, for maximum viewing and surround sound seperation. 🙂 I love going to the theatre when everyone there is pumped up and excited about seeing the movie. There was a guy in the row in front of me with a new GameBoy Advanced and it looked pretty cool, think he was playing Zelda or something. I never have time for games, but it looked pretty darn cool, and would have been fun to check out while we were waiting.
    We sat there and people watched and joked about the useless movie trivia and facts, and then finally some pretty cool trailers started playing: League of Extraordinary Gentlemen, Terminator 3 (which until I saw this new trailer I thought it was going to completely suck, not anymore), although I didn’t see the Freddy vs. Jason trailer, which sounds and looks hilarious to me. They also didn’t play the latest Hulk trailer which was dissapointing. (If you haven’t seen that yet, you must go download it now! Thats one I am really looking forward to.) Finally the movie was just starting, the reel had just spooled up and was just about to kick in, when the projector burned a whole right through it and it made that ppphhhttttt-brp-brp-brp-brp sound and sight we have all seen. It was such a cool sound and what a classic moment to have the film break, right before it started. Everyone in the theatre started laughing, it was so funny because everyone was so excited to see the film they didn’t care, it just gave us all one more chance at using the bathroom before it started up again. We turned around to see nobody in the projection booth, and the film spooling out uncontrollably all over the place behind the little glass window. It took them about 15 minutes to respool the film and getting it going again. Everyone cheered and clapped as it began to play including myself and my fiance – Ha! First time I got to use that word on my blog. 🙂
    I’m not going to offer any review of the movie other than to say I was not dissapointed, I completely enjoyed it and plan on seeing it again as soon as I get a chance. I can’t wait for Revolutions in November. Those two minutes during the trailer at the end of the credits look amazing. I felt bad for all the people that left as soon as the credits started rolling. There was only about 10 other couples and assorted folks who seemed to know about the trailer at the end like me.
    The other cool part about the film breaking was that the theatre gave us all free movie passes as we left, they even waited around for us folks who stayed all the way through the credits. So I actually got to see it for free. Very cool indeed.

    Share
    PRINT THIS ENTRY
    Comments Off on Matrix Reloaded – Matrix Revolutions

    May 14th, 2003 was a very special day for me. Why? I proposed to my girlfriend Melissa last night and she accepted, making me very happy indeed. 🙂 We have been together for the last 4 years and it was time to make it official. We are both really excited. Just wanted to share a little of my happiness with everyone. Melissa, I love you! -Rob

    Share
    PRINT THIS ENTRY
    Comments Off on Guess what? I got engaged!

    Are you ready to begin developing for a whole new audience of mobile device users with your Flash MX skills? Well check this out.Macromedia has released a CDK and updaters for Flash MX itself to, “Update Macromedia Flash MX to review, publish, and test new Macromedia Flash Lite content for DoCoMo i-mode phones.” The NTT DoCoMo 505i Sries phones have a specialized “Lite” Flash player and along with the CDK and the Flash MX updater it will help you create specialized Flash content for these mobile devices. There are Windows and Macintosh updaters and versions of the CDK available. Greg Burch and Mike Krisher both have more coverage of this release.

    Share
    PRINT THIS ENTRY
    Comments Off on Macromedia Flash Content Development Kit for the NTT DoCoMo 505i Series

    There has been a lof ot talk about “Central” lately and I am keenly interested in getting to work with it. I have found that the bits of info I am gleaning from around the web about the project code named “Royale” have me drooling about getting to play with a beta of it just as much as Central. Little bits of information about it have trickled out from events and recently during a conference call covering Macromedias recent Financial Report and today, thanks to a post by John Dowdell on his blog I found out about an interview with Rob Burgess that I just read.
    Well, now I am definitely salivating over the potential positive impact “Royale” will have on my every day development work if what is delivered is close to my expectations.

    Rob Burgess says, “It’s essentially Flash for programmers.” and that “If you’re a hardcore programmer, you really want a tool to use in a server environment, especially as content merges with logic in next-generation applications…”
    Wow. I am so ready for Royale. I was a really big Generator fan, for a lot of reasons. Generator let me merge data in realtime with my swf files. The template method that Generator relied on was sometimes cumbersome, but Generator did have a decent SDK that let you extend and create your own Java Class files and Generator objects to add more functionality. I also liked Generator because it was great for letting the server do the heavy lifting and letting the client side stay lightweight, which often provides the most optimal method of presentation and speed in an application making the end user happy. The other thing Generator did that I found extremely beneficial was that it allowed developers to do some pretty complex stuff in Flash while hiding the business logic of your application and its data sources completely from the end user (read: a developer with a copy of Buraks ActionScript Viewer). It sounds like Royale is going to be able to do all this and more in a much more elegant and efficient fashion. Think about it this way with Flash Remoting as an example:

    You have this great new idea for a RIA you want to develop in Flash. Its going to need to pull large chunks of info from a database, and merge it into a datagrid component and a user interacts with your design. Its going to be very data intensive, but also has some pretty complex aesthetic/artistics elements going on and guess what else, its going to need to run inside Central with potentially all the other Central apps fighting over CPU time. Today you would probably start out with some web services, maybe some ColdFusions CFC’s that would talk to your database and you would use Remoting to pull them into Flash, and pass that info into your Datagrid component (You did buy the DRK with the Datagrid component right?) So your RIA Flash app is now starting to bulk up with all the component code and includes necessary for using remoting and the datagrid. Forget about any sort of artwork or aesthetics yet. So right away with current methods, you have to keep an eye on the size of your files, and how efficiently your app can process the data once it has called for and received it. Lots of work going on on the client side. Remember when the first few iterations of the Flash 5 player came out and you tried to pull in that 200k of XML data…whoops! OK, so this is all common stuff and there are some very good solutions and plenty of very well built apps that take this all into consideration and pull things off quite nicely.
    However, lets think about how you might accomplish the same thing with Royale in a few months.
    Same scenario, but different approach: First you might simply open up a text based template that you have used for your last few Royale projects, and guess what you can open it in the Royale editor, or BBEdit, or Dreamweaver, or Ultraedit, and simply start typing away to set/change your database source, that of course would be local to the server that this Royael template will end up on. Then you might continue editing the same text file, or perhaps add an include statement to pull in the type of SQL query that you would like to pull your data from. A bit further down in your Royale template you have defined the static components that you want the dataset merged with. A little after that you have some instructions on how the rest of the swf files looks, and perhaps a bit of actionscript to allow the user to interact with the dataset. The next section might define how interacting with that dataset will produce a query back to the Royale server to retrieve the next 30 records in that dataset and pull back in the same lightweight server generated .swf file. After you have made a few more changes to your text based Royale template you check the syntax and publish it locally to see the results. Everything looks good, so you FTP all 4k of it up to your development server and query it over the web. A few milliseconds later in Central your lightweight .swf file is returned to you, pre-populated with your initial dataset from your query. There is no delay waiting for the data to populate, its already there. There is also not any sign of where the datasource or webservice was on your server, because, it simply doesn’t need to be in the .swf file since the server has done all the work. No more harvesting folks web services for free data feeds. You might want to make a few changes and have several variations on this Royale template you just made, so you fire up AppleScript (you are working on a Mac right?) and whip up a script to manipulate this text based Royale template and churn out a few more copies with your other clients logos in place. You also write a special version that dynamically calls other Royale templates in as they are being served to pre-render and cache a few of the ones that you know are going to be very popular so your server load wont be so dramatic. Now, your really picky designer just showed up from his 2 hour lunch break and decided that all the art assets need to be a different shade of blue and about 4 pixels up and to the left. Normally this would mean having him stick around another couple hours to break out all the .FLA files, republish them and send them back out to staging and production. With Royale you just do a global search and replace on some text files for the color values and placement of the art assets, all via Pico in an SSH terminal session and a few keystrokes later, everything is fixed and already live and in production.
    Now, that was all pure speculation, but it sounds to me from what I have read that this is what we might be able to expect from Royale. I have seen postings that the actual syntax of the Royale templates won’t be so free form, but rather some form of XML structured text file, but I feel that regardless of the syntax or formatting of the file or Royale template if you will, it is something that will make programmers very happy and very productive. Think about this: You could have your ColdFusion, PHP, Perl developers who have never touched Flash before, cranking out some decent apps in no time.
    Imagine the potential for automation and scripting and how this could improve workflow, development processes and turnaround time. I think its very exciting. If Macromedia’s Royale turns out to be something along the lines of what I have fantasized/described above, then I think we are in for some very rapid development and turnaround time on projects. If I am way off here, well then consider this my official wish list for the next development cycle. 🙂

    Share
    PRINT THIS ENTRY
    Comments Off on What I think Royale Is and Why I Want It.