** Guide to seemless loops in my player (for those who already know how to make a seemless loop): 1) Save your loop file as WAV. 2) Encode from lame cmd line app in 192kbps 44.1kHz Joint-Stereo (lame -b 192 file.wav) 3) Take note of the number of total samples of your loop in the ORIGINAL WAV (not the mp3). You'll need to set samples= to this number for a seemless loop. 4) If you are doing a mid-file loop, take note of the sample number at the position you'd like to seek back to. 5) You can either pass the variables through the SWF Loader (flashvars), or embed them in the COMM (ID3v2 Comments) of the MP3. If you embed them into the MP3, use the same format as flashvars (samples=1000&start=0&loop=500) 6) Note that variables passed to the SWF using flashvars will override any variables in ID3. ************************************** **** player.php documentation **** ************************************** player.php parameters: loop - url to file flashvars - pass flashvars to player (see loopplayer.swf parameters below) seekopt - determines which method to use to seek (with samples param below) (0 = milliseconds, 1 = samples, 2 = percent) samples - position to seek to, using method selected via seekopt param above playspeed - playback rate (0.75 = 75%, 1 = 100%, 1.33 = 133%) doseek - Automatically seek when player starts for the first time, requires autostart=1 looper - like samples= but for the auto looper (see doloop= param below) doloop - loops between samples= and looper=, using seekopt= param. hidden - if defined, loads the player in a 1x1 container, otherwise loads in normal 150x55 container ** player.php javascript functions: ** The player.php javascript functions are just existing functions and wrappers to access the loopplayer.swf functions and parameters below. See loopplayer.swf documentation below for more info. newLoopLoader - spawns player with new loop, or if player already exists, tells it to load a new loop setPlaySpeed - sets play speed setSeek - seeks via percent method setSeekRaw - seeks via raw sample value method setSeekMs - seeks via millisecond method setVolume - sets volume swfGetSampleData - not used in embedded demo, but used on original page http://media.zefie.com/Audio/Loops/MP3/ ... I left this here to show you how to process the raw data returned from the swf player. triggerSWFSampleCall - not used in embedded demo, but used on origina page http://media.zefie.com/Audio/Loops/MP3/ ... This function triggers the player to call the above function togglePlayback - self explainatory ************************************** **** loopplayer.swf documentation **** ************************************** ** loopplayer.swf parameters: file - url to file (semi-required) samples - raw wav samples (obtain from decent editor such as Goldwave. Use source wav file, as explained above.) buffer - decoder buffer, 2048 - 8192. (default 4096 if not specified) volume - initial playback volume 0 - 100 (default 50) start - start position in samples (default 0) loop - loop position in samples. This is where the player returns to when it reaches the the value of the samples param (See #4 above). (default 0) autostart - starts the playback automatically once loaded (true or false, 0 or 1) (default false) playspeed - Set playback speed. 1 = normal, 0.5 = half, ect band1 - Sets low frequency EQ Band settings (0.00 - 3.00) band2 - Sets mid frequency EQ Band settings (0.00 - 3.00) band3 - Sets high frequency EQ Band settings (0.00 - 3.00) ** loopplayer.swf javascript functions: setVolume(int) - Sets volume to specified percentage setSeekPercent(perc) - Seeks playback to specified percentage loadFile(newfile) - Loads a file. Requires above parameters to be embedded into COMM in ID3 of mp3 (you cannot pass flashvars to an existing player instance) togglePlayback() - Pauses the playback if it is playing, unpauses if it is not. setSeekRaw(int) - Seeks playback to specified sample. getSampleData() - Tells the SWF to call JS swfGetSampleData(), passing current and total sample values. setPlaySpeed() - Set playback speed. 1 = normal, 0.5 = half, ect setEQBand1 - Sets low frequency EQ Band settings (0.00 - 3.00) setEQBand2 - Sets mid frequency EQ Band settings (0.00 - 3.00) setEQBand3 - Sets high frequency EQ Band settings (0.00 - 3.00) ** loopplayer.swf equalizer information The SWF expects a float value of 0.00 - 3.00. 0.00 = mute band 1.00 = normal processing 2.00 = 2x overdrive 3.00 = 3x overdrive Any value outside this range, or any invalid value, will simply be ignored by the swf. If you are implementing a slider such as on my main page, be sure to correctly devide the result so that the number sent to the player is within this range. An easy method of doing so is setting your slider to a range of 0-300 and then deviding the result by 100 before passing it to the swf.