|
7-18-02
ResExcellence Laugh Track Machine by
Erick Tejkowski
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:
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:
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!
6-17-02
REALbasic News
by
Erick Tejkowski
Three New Plug-ins
Francis Lessard has announced three new plug-ins for REALbasic.
- Icon Util 2.5 - Change the state of cicn and icl icons. You can set state to: disabled, selected, offline, open and more.
- Custom Icon 1.5 - Use the OS X system icons: alert, note, stop and others.
- DrawControl 1.5 - For OS X: small check box, small radio button, Arrow Button, Round bevel button, and icon support.
You can find them here.
Relevance, QuickTime, and the Weasel that Made Them
Seth Willits (aka "Weasel" Willits) has posted a Relevance Bar control plug-in. Introduced in Mac OS X,
the relevance bar is used to display the relevance of such things as search response.
Download it here.
Seth also updated his
FSPlayQTMovie package.
Now it contains an example project that demonstrates how to implement
looping for a movie without using a movie player control.
PaletteCanvas
Boris Segerstahl has created a new class named PaletteCanvas.
It is a canvas subclass for the creation of palettes. Typical examples are tool palettes in paint programs and format palettes in.
It is free and open source. Download the class here.
Need a Project Idea?
Lorin Rivers from REAL Software posted this interesting info on the RB-NUG mailing lists.
These are the top 20 categories for downloads in the last month at Download.com. If you are
looking for an area to focus on for your next project, you might consider these categories as a start.
- MP3 Search Tools
- Chat
- Video
- System Utilities
- File Compression
- Download Managers
- Browsing Companions
- Security Encryption
- Players
- Rippers Encoders
- Action
- Arcade
- Offline Browsers
- Miscellaneous
- Online Privacy
- Plug-ins
- Antivirus
- File Disk Management
- FTP
- Image Editing
Of course, programming "outside-the-lines" can work great too! :-)
KRAM it!
James Baxter has announced KRAM,
a benchmark utility Made 100% with REALbasic.
Check Your Links
Link Checker is a tool for checking the links on your website.
You can filter certain links so they don't get
checked and specify how many connections you would
like to have open for your website. Link Checker can
check all your websites if they are online or stored
locally on your hard drive. Link Checker is also
smart. If your website has a sub directory it will
decide if the link belongs to the subdirectory or the
main site. Link Check
your website today! Made with REALbasic.
High Precision Plugin
Bob Delaney has posted Precision Plugin 1.7 for PPC, Carbon, and x86.
Precision Plugin 1.7 adds a pseudo-random number generator, with the ability for the user to reseed.
Further, Precision Plugin provides almost all the math functions built into REALbasic at precisions up to 30,000 digits.
Download Page:http://homepage.mac.com/delaneyrm/PrecisionPlugin.html
|