image ResEx Logo
ResExcellence www : Powered by Google
Cell Phone Themes Icons Mighty Mouse Cursors Software Reviews Widgets & Widgets

Articles
   3D
   Audio
   Custom Controls
   General RB
   Graphics
   Hacks
   Mac OS X
   Menus
   Novelty
   Printing
   REALbasic 2005
   REALbasic 2006
   Registration
   Resources
   Reviews
   Serial
   Speech
   Sockets
   XML
   Video
Resource Links
News
   Current News
   February 2006
   January 2006
   December 2005
   November 2005
   October 2005
   September 2005
   August 2005
   July 2005
   June 2005
   May 2005
   April 2005
   March 2005









REALbasic for Dummies
by Erick Tejkowski


Learning REALbasic through Applications
by Clayton E., Crooks II


REALbasic for Macintosh
by Michael Swaine


REALbasic Cross-Platform Application Development
by Mark S. Choate





Older files are in Stuffit 5 or greater format. Newer files are ".Zip". Download StuffIt Expander
Tell us about a bad link. Thank You!

Laugh Track Machine by Erick Tejkowsi
07-18-02

Printer Version




07-18-02_laugher.jpg (6k) At MacWorld New York today, REAL Software announced the release of REALbasic 4.5. In honor of their new release, today we'll build a Laugh track Editor. With it, you can add a laugh track to your favorite QuickTime movies. This works great for post-processing your favorite iMovie creation. So, get ready to laugh!


Build the Interface

NOTE: This project requires REALbasic 4.5 or newer!

Launch REALbasic and open Window1 from the Project window. To this window, add the following controls:

Control Type Control Name Other Properties
PushButton OpenButton  
PushButton RemoveButton Enabled=FALSE
PushButton SaveButton Enabled=FALSE
Listbox Listbox1  
StaticText StaticText1 Enabled=FALSE
Text="Press the Space bar to add a laugh track to the current movie position"
MoviePlayer MoviePlayer1  

Arrange the interface to your liking. It might look like this:

07-18-02_interface.jpg (14k)

The final step in completing your interface is to add a control binding. Hold Cmd-Shift and drag from the RemoveButton to Listbox1. When you let go of the mouse, a Bindings dialog appears. Click OK to select the first (and only) item in the Binding list and close the window.

Source Code

Before you begin adding code, you need to complete a few preparatory steps. First, add a new file type to your project by selecting Edit-File Types. Fill out the fields to look this:

07-18-02_filetypes.jpg (22k)

Close the File Types window and double-click Window1 to open its Code Editor. Using Edit-New Property, create three new properties.

  • acceptLaughs As Boolean
  • originalFile as folderItem
  • originalMovie as Movie

Finally, it's time to add some code. In the Open event of Window1, add the following code:

originalMovie as Movie

Next, navigate to the KeyDown event of Window1 and add this code:

  if acceptLaughs then
    if key = " " then
      listBox1.addrow format(MoviePlayer1.Position,"##########")
    end if
  end if

In the Action event of OpenButton add some code:

  //get a movie file
  originalFile=GetOpenFolderItem("video/quicktime")
  if originalFile<>nil then
    
    //open the movie in that file
    originalMovie=originalFile.openAsMovie
    
    //load this movie into the MoviePlayer
    MoviePlayer1.movie=originalMovie 
    
    //enable the remaining controls
    StaticText1.enabled=TRUE 
    SaveButton.enabled=TRUE 
    acceptLaughs = TRUE
  end if

In the Action event of RemoveButton add this code:

listBox1.removeRow listBox1.listindex 

The final code goes in the Action event of SaveButton:

  
  dim i,destPosition as integer
  dim laughMovie,exportMovie as editableMovie
  dim srcTrack,destTrack as QTSoundTrack
  dim f as folderItem 
  
  if listBox1.listcount>0 then
    f=GetSaveFolderItem("video/quicktime","WithLaughTrack.mov")
    if f<>nil then
      
      //copy the original movie to a new movie
      if originalFIle<>nil then
        originalFile.copyFileTo f 
        
        laughMovie = GetFolderItem("laugh.aif").openeditableMovie
        if laughMovie<>nil then
          //we don't want to change the laugh file
          laughMovie.SaveOnClose=FALSE
          //grab the laugh from the laugh file
          srcTrack = laughMovie.SoundTrack(1)
          //create a new movie
          exportMovie = f.OpenEditableMovie
          //add a new soundtrack to the movie
          destTrack = exportMovie.NewSoundTrack
          
          for i=0 to listBox1.listcount-1
            //loop through each laughtrack position
            //and add a laugh to the new movie's new soundtrack
            destPosition = val(listBox1.list(i))
            //Beware of line-wrap on this next line!!!             destTrack.InsertSoundTrackSegment srcTrack,0,
            srcTrack.Duration,destPosition,TRUE,TRUE
          next
          
        end if// laughMovie<>nil then
      end if// originalFIle<>nil then
    end if// f<>nil then
  else
    MsgBox "Please add some laughter to the movie!"
  end if// listBox1.listcount>0 then
  

Conclusion

To test the project, select Debug-Run and follow these steps:

  • Press the Open button to load a QuickTime movie
  • Position the MoviePlayer to wherever you would like some laughter. Press the space bar to add a "laughter point". Keep in mind that you can do this by moving the MoviePlayer controller, or by playing the movie in real time.
  • Press the Remove button to remove any errant laughs you added.
  • Press the Save button to create a new movie complete with laughtrack.
  • IMPORTANT NOTE: This project requires that you have a file named "laugh.aif" within the same folder as the project. The download for this project includes a sample "laugh.aif" file.

That's it for this week! As you might imagine, there are many improvements you could make to this project. For example, you could add more than one kind of laugh and trigger each one using a different key. That way, as you review the movie, you could add strong laughs for really funny parts, or maybe snickers for less funny sections. As usual, you can download the completed project here. Have fun and see you next week!




Cell Phone Themes Icons Mighty Mouse Cursors Software Reviews Widgets & Widgets

Maintained by the Staff of ResExcellence. This entire site ©1997-2006 ResExcellence
Privacy Statement? Sure we gotta Privacy Statement. [an error occurred while processing this directive]