Beat Mixer & Song Playback

Hello kirupa!=)

Okay, well I’m making this little thing called BeatBox. Basically you get to create little beats in a mixer, then submit them to a “portal” where people can rate them and listen to them.

You can see it so far here: http://flash.jonanin.com/music.html

Anyways, If you play it, you can see it lags and the music is a bit out of sync when you play it. So, I need help optimizing my code a bit!

For song playback, I use setTimeout and step through a 2-dimensional array at each interval. For each step, I use a for loop and loop through every block in the column it is currently being played and check if that block in the array is a 1. If its a 1, that means the block is “on” and should be played, and I start the sound for it.

heres the code:

playSongPart = function() {
    
    for (var i=0; i < _root.map.length; i++) {
                // if the current place in the map array is a 1, that means that that we should play a sound because it is "On". Otherwise it would be 0.
        if (_root.map*[_root.step] == 1) {
                        // play the song
            _root.sounds*.start(0,0);
        }
    }
        // this just moves the little red playhead thing.
    ph._x = rx + (bw/2) - bw + .5 + ((step)*bw);

    _root.step++;
        // loop the song when its reached the end
    if (_root.step > _root.song_len) {
        _root.playSong();
    }
}

Is there a better way to do this? I really need help optimizing my code so that it doesn’t lag – especially on older computers.

Thanks in advance,
Jon