Skip to content

Instantly share code, notes, and snippets.

@MadeByPi
Last active December 18, 2015 17:49
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save MadeByPi/5821484 to your computer and use it in GitHub Desktop.
Save MadeByPi/5821484 to your computer and use it in GitHub Desktop.
Haxe externs for SoundManager2
/**
* ...
*
* Haxe extern for SoundManager2
* http://www.schillmania.com/projects/soundmanager2/doc/
*
* @author Mike Almond
* https://github.com/MadeByPi
* https://github.com/mikedotalmond
*
*/
@:final extern class SoundManager2 {
// public properties
public var allowScriptAccess:String;
public var altURL:String;
public var audioFormats:Dynamic;
public var bgColor:String;
public var consoleOnly:Bool;
public var debugFlash:Bool;
public var debugMode:Bool;
public var defaultOptions:SMOptions;
public var flash9Options:Dynamic;
public var features:Dynamic;
public var flashLoadTimeout:Int;
public var flashPollingInterval:Int;
public var flashVersion:Int;
public var html5Only(default, null):Bool;
public var html5PollingInterval:Int;
public var movieStarOptions:Dynamic;
public var preferFlash:Bool;
public var useConsole:Bool;
public var useFastPolling:Bool;
public var useFlashBlock:Bool;
public var useHighPerformance:Bool;
public var useHTML5Audio:Bool;
public var waitForWindowLoad:Bool;
public var wmode:String;
public var url:String;
// public functions
public function setup(options:SMOptions):Void;
public function createSound(options:SMSoundOptions):SMSound;
public function getSoundById(id:String):SMSound;
public function canPlayLink(value:String):Bool;
public function canPlayMIME(value:String):Bool;
public function canPlayURL(value:String):Bool;
public function onPosition(id:String, msecOffset:Int, cb:Float->Void, ?scope:Dynamic):Void;
public function clearOnPosition(id:String, msecOffset:Int, ?cb:Float->Void):Void;
public function destroySound(id:String):Void;
public function getMemoryUse():Int;
public function load(id:String, ?options:Dynamic):SMSound;
public function mute(?id:String):SMSound;
public function play(id:String, ?options:Dynamic):SMSound;
public function pause(id:String):SMSound;
public function pauseAll():Void;
public function resume(id:String):SMSound;
public function resumeAll():Void;
public function stop(id:String):SMSound;
public function stopAll():Void;
public function toggleMute(id:String):SMSound;
public function togglePause(id:String):SMSound;
public function reboot():Void;
public function reset():Void;
public function unload(id:String):SMSound;
public function unmute(?id:String):SMSound;
public function setPan(id:String,value:Int):SMSound;
public function setPosition(id:String,value:Int):SMSound;
public function setVolume(id:String, value:Int):SMSound;
public function onready(cb:Void->Void, ?scope:Dynamic):Void;
public function ontimeout(cb:Dynamic->Void, ?scope:Dynamic):Void;
public function beginDelayedInit():Void;
}
/* */
/* SMSound */
@:final extern class SMSound {
public var id(default, null) :String;
public var sID(default, null) :String;
public var url(default, null) :String;
public var isBuffering(default, null) :Bool;
public var loaded(default, null) :Bool;
public var muted(default, null) :Bool;
public var paused(default, null) :Bool;
public var connected(default, null) :Bool;
public var isHTML5(default, null) :Bool;
public var id3(default, null) :Dynamic;
public var metadata(default, null) :Dynamic;
public var pan(default, null) :Int;
public var volume(default, null) :Int;
public var instanceCount(default, null) :Int;
public var readyState(default, null) :Int; // @see SMSoundReadyState
public var bytesLoaded(default, null) :Int;
public var bytesTotal(default, null) :Int;
public var duration(default, null) :Int;
public var durationEstimate(default, null) :Int;
public var failures(default, null) :Int;
public var playState(default, null) :Int;
public var position(default, null) :Int;
public var bufferLength(default, null) :Int;
public var options(default, null) :SMSoundOptions;
// fft - needs flash 9 + policy file if audio was loaded cross-domain
public var eqData(default, null) :SMWaveformData;
public var waveformData(default, null) :SMWaveformData;
public var buffered(default, null) :Array<SMBufferData>;
public var peakData(default, null) :SMPeakDataData;
public function new():Void;
public function play(?options:SMSoundOptions):SMSound;
public function start():SMSound;
public function stop():SMSound;
public function pause():SMSound;
public function resume():SMSound;
public function togglePause():SMSound;
public function mute():SMSound;
public function unmute():SMSound;
public function toggleMute():SMSound;
public function load():SMSound;
public function unload():SMSound;
public function destruct():Void;
public function setPosition(val:Int):Void;
public function setAutoPlay(val:Bool):Void;
public function getAutoPlay():Bool;
public function onPosition(position:Int):SMSound;
public function onposition(position:Int):SMSound;
public function setPan(pan:Int):SMSound;
public function setVolume(volume:Int):SMSound;
public function clearOnPosition():SMSound;
}
@:final class SMSoundReadyState {
/*0 = uninitialised, 1 = loading, 2 = failed/error, 3 = loaded/success*/
public static inline var UNINITIALISED :Int = 0;
public static inline var LOADING :Int = 1;
public static inline var ERROR :Int = 2;
public static inline var SUCCESS :Int = 3;
}
extern typedef SMWaveformData = {
var left :Array<Float>;
var right:Array<Float>;
}
extern typedef SMBufferData = {
var start:Int;
var end:Int;
}
extern typedef SMPeakDataData = {
var left:Float;
var right:Float;
}
//http://www.schillmania.com/projects/soundmanager2/doc/#sm-config
extern typedef SMOptions = {
@:optional var url : String; // path to swfs,
@:optional var debugMode : Bool;
@:optional var consoleOnly : Bool;
@:optional var useConsole : Bool;
@:optional var useFlashBlock : Bool;
@:optional var useHighPerformance : Bool;
@:optional var useHTML5Audio : Bool;
@:optional var waitForWindowLoad : Bool;
@:optional var allowScriptAccess : String;
@:optional var bgColor : String;
@:optional var debugFlash : Bool;
@:optional var preferFlash : Bool;
@:optional var noSWFCache : Bool;
@:optional var flashVersion : Int;
@:optional var flashLoadTimeout : Int;
@:optional var flashPollingInterval : Int;
@:optional var wmode : String;
@:optional var html5PollingInterval : Int;
@:optional var idPrefix : String;
@:optional var html5Test : EReg;
@:optional var onready : Void->Void;
@:optional var ontimeout : String->Void;
@:optional var defaultOptions :SMSoundOptions;
}
extern typedef SMSoundOptions = {
@:optional var id :String;
@:optional var url :String;
@:optional var type :String; // MIME-like hint for canPlay() tests, eg. 'audio/mp3'
@:optional var multiShot :Bool; // let sounds "restart" or "chorus" when played multiple times..
@:optional var stream :Bool; // allows playing before entire file has loaded (recommended)
@:optional var autoLoad :Bool; // enable automatic loading (otherwise .load() will call with .play())
@:optional var autoPlay :Bool; // enable playing of file ASAP (much faster if "stream" is true)
@:optional var multiShotEvents :Bool; // allow events (onfinish()) to fire for each shot, if supported.
@:optional var usePolicyFile :Bool; // enable crossdomain.xml request for remote domains (for ID3/waveform access)
@:optional var onload :Void->Void; // callback function for "load finished"
@:optional var onfailure :Void->Void;
@:optional var onfinish :Void->Void; // callback function for "sound finished playing"
@:optional var onplay :Void->Void; // callback for "play" start
@:optional var onpause :Void->Void; // callback for "pause"
@:optional var onresume :Void->Void; // callback for "resume" (pause toggle)
@:optional var onstop :Void->Void; // callback for "user stop"
@:optional var onposition :Void->Void;
@:optional var whileplaying :Int->Void; // callback during play (position update)
@:optional var whileloading :Int->Int->Void; // callback function for updating progress (X of Y bytes received)
@:optional var onid3 :Void->Void; // callback function for "ID3 data is added/available"
@:optional var loops :Int; // number of times to play the sound. Related: looping (API demo)
@:optional var position :Int; // playhead position, ms
@:optional var volume :Int; // self-explanatory. 0-100, the latter being the max.
@:optional var pan :Int; // "pan" settings, left-to-right, -100 to 100
@:optional var to :Int; // position to end playback within a sound (msec), see demo
@:optional var from :Int; // position to start playback within a sound (msec), see demo
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment