views:

312

answers:

1

I need to realize a multiple-track player. The user can upload multiple tracks and mix (play them together). My problem is to allow the user to define an exact start position of each track to allow a synchronization between them, something like this:

Track 1: start at [x] sec.

Track 2: start at [y] sec.

play/stop

where the user can set the x and y. I've tried to realize it with AS2 (using netstream and setInterval) and AS3 (using netstream or sound and timer). Only if I set the same x and y both tracks are playing simultaneously.

+1  A: 

Suppose you have a timeline "engine" that has an internal clock of some kind. every "tick" of the clock you will check some array or vector that holds your Track objects and see if it contains an object with a startTime of n ticks from the beginning of the timeline. Or Maybe its more efficient to make a Vector of starttimes that exist in the TrackObjs Vector and check that, then if one is found run the TrackObjs vector and get all the audio that needs to be started at that time.

Here ticks could be seconds, 10ths, milliseconds, whatever. see http://as3.casalib.org/docs/ org.casalib.time classes for framebased timekeeping

class Track() {
  var startTime:int;
  var trackName:String;
  var fileName:String;
}

For the actual playing of the multiple mixed sounds there are various libs out there that might do most of the heavy lifting for you.

http://www.gaiaflashframework.com/wiki/index.php?title=Sound%5FGroups
This may have some useful code for you, though you may need to decouple it from the Gaia framework. Maybe better:
Matt Przybylski's SoundManager class http://www.reintroducing.com
Guttershark SoundManager class http://codeendeavor.com/guttershark

Also these might be of interest for dynamic sound generation:
http://code.google.com/p/benstucki/
"Flaudio is a dynamic runtime audio generation and processing library for ActionScript 3"

http://code.google.com/p/popforge/
"Popforge AS3 audio library allows you to create a valid flash.media.Sound object with your own samples. This opens up new perspectives for sound design with the current Adobe Flash Player 9. You can create synthesizers, effects and sample-players of any kind. The supplied AudioBuffer class allows you to create endless audio playback. "

ransomweaver