Using YUI3, RaphaelJS, SoundManager and Cufon to make a text at the beach effect with sound. View a demo here.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Beach Effect - Animated Fonts and Paths with Audio</title>
<link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/combo?3.1.1/build/cssfonts/fonts-min.css&3.1.1/build/cssreset/reset-min.css" />
<script type="text/javascript" src="../raphael.js"></script>
<script type="text/javascript" src="cufon-yui.js"></script>
<script type="text/javascript" src="Arial_400-Arial_700.font.js"></script>
<script type="text/javascript" src="http://yui.yahooapis.com/combo?3.1.1/build/yui/yui-min.js"></script>
<script type="text/javascript" src="soundmanager/script/soundmanager2.js"></script>
<style type="text/css">
.hidden {
opacity:0;
}
</style>
</head>
<body>
<script type="text/javascript">
/* <![CDATA[ */
soundManager.url = 'soundmanager/swf/';
soundManager.debugMode = false;
soundManager.onload = function() {
YUI().use('node','anim',function(Y){
var sounds = soundManager.createSound('beach_sounds','brightonbeach.mp3');
sounds.load();
Y.on('domready',function(){
var winHeight = Y.DOM.winHeight();
var winWidth = Y.DOM.winWidth();
Y.one('body').append('<div id="container"><img src="beach_optimized.jpg" id="beach" class="hidden" /></div>');
var container = Y.one('#container');
container.setStyles({
'height':winHeight,
'width':winWidth,
'overflow':'hidden',
'position':'relative'
});
var beach = Y.one('#beach');
beach.setStyles({
'width':(winWidth+300),
'opacity':'0'
});
var showBeach = new Y.Anim({
node: beach,
to: {
opacity:'.4',
width: winWidth
},
duration: 10
});
var paper = Raphael(0, 0, winWidth, winHeight);
var txt = paper.print(winWidth/3.5, winHeight/2.5, "chaosm.net", paper.getFont("Arial"), 100).attr({fill: "#000"});
//c
txt[0].attr({'fill':'#00A0B0'});
//h
txt[1].attr({'fill':'#6A4A3C'});
//a
txt[2].attr({'fill':'#CC333F'});
//o
txt[3].attr({'fill':'#EB6841'});
//s
txt[4].attr({'fill':'#EDC951'});
//m
txt[5].attr({'fill':'#00A0B0'});
//.
txt[6].attr({'fill':'#CC333F'});
//n
txt[7].attr({'fill':'#EDC951'});
//e
txt[8].attr({'fill':'#EB6841'});
//t
txt[9].attr({'fill':'#6A4A3C'});
txt.hide();
//coordinates of the dot
dotX = txt[6].getPointAtLength(0).x;
dotY = txt[6].getPointAtLength(0).y;
//draw lines going to dot
var line1 = paper.path("M 0 0").attr({'stroke':'#CC333F','fill':'#CC333F','stroke-width':'2'});
line1.animate({'path':('M 0 0 L '+dotX+' '+dotY)},1200,function(){
this.animate({'path':('M '+dotX+' '+dotY)},1200);
});
var line2 = paper.path('M '+winWidth+' 0').attr({'stroke':'#CC333F','fill':'#CC333F','stroke-width':'2'});
line2.animate({'path':('M '+winWidth+' 0 L '+dotX+' '+dotY)},1200,function(){
this.animate({'path':('M '+dotX+' '+dotY)},1200);
});
var line3 = paper.path('M 0 '+winHeight).attr({'stroke':'#CC333F','fill':'#CC333F','stroke-width':'2'});
line3.animate({'path':('M 0 '+winHeight+' L '+dotX+' '+txt[6].getPointAtLength(0).y)},1200,function(){
this.animate({'path':('M '+dotX+' '+dotY)},1200);
});
var line4 = paper.path('M '+winWidth+' '+winHeight).attr({'stroke':'#CC333F','fill':'#CC333F','stroke-width':'2'});
line4.animate({'path':('M '+winWidth+' '+winHeight+' L '+dotX+' '+dotY)},1200,function(){
this.animate({'path':('M '+dotX+' '+dotY)},1200, function() {
this.animate({'path':txt[6].attrs.path},600,function(){
animLogo();
sounds.play({volume:75});
});
});
});//end draw lines
//draw the text
function animLogo() {
txt[6].show();
var pA = txt[6].clone();
pA.animate({'path':txt[5].attrs.path,'fill':txt[5].attrs.fill},800, function() {
var pB = pA.clone();
pB.animate({'path':txt[4].attrs.path,'fill':txt[4].attrs.fill},800, function() {
var pC = pB.clone();
pC.animate({'path':txt[3].attrs.path,'fill':txt[3].attrs.fill},800, function() {
var pD = pC.clone();
pD.animate({'path':txt[2].attrs.path,'fill':txt[2].attrs.fill},800, function() {
var pE = pD.clone();
pE.animate({'path':txt[1].attrs.path,'fill':txt[1].attrs.fill},800, function() {
var pF = pE.clone();
pF.animate({'path':txt[0].attrs.path,'fill':txt[0].attrs.fill},800, function() {
//do the .net part
var pG = txt[6].clone();
pG.animate({'path':txt[7].attrs.path,'fill':txt[7].attrs.fill},800, function() {
var pH = pG.clone();
pH.animate({'path':txt[8].attrs.path,'fill':txt[8].attrs.fill},800, function() {
var pI = pH.clone();
pI.animate({'path':txt[9].attrs.path,'fill':txt[9].attrs.fill},800, function() {
//show the beach whne the text is done
showBeach.run();
});
});
});
});
});
});
});
});
});
}//end draw text
});//end dom ready
});
};//end soundManager.onload
/* ]]> */
</script>
</body>
</html>