var $StaticConstructors=[];var $StaticConstructor=function(f){$StaticConstructors.push(f)};if(typeof($Inherit)=='undefined'){var $Inherit=function(ce,ce2){if(typeof(Object.getOwnPropertyNames)=='undefined'){for(var p in ce2.prototype)if(typeof(ce.prototype[p])=='undefined'||ce.prototype[p]==Object.prototype[p])ce.prototype[p]=ce2.prototype[p];for(var p in ce2)if(typeof(ce[p])=='undefined')ce[p]=ce2[p];ce.$baseCtor=ce2}else{var props=Object.getOwnPropertyNames(ce2.prototype);for(var i=0;iblockBuffer.length-proccessed){while(proccessedblockBuffer.length-proccessed){this.Interpolate(generatorParams,blockBuffer,increment,proccessed,blockBuffer.length);return}else{var endProccessed=proccessed+samplesAvailable;this.Interpolate(generatorParams,blockBuffer,increment,proccessed,endProccessed);proccessed=endProccessed;switch(generatorParams.CurrentState){case AlphaSynth.Bank.Components.Generators.GeneratorState.PreLoop:generatorParams.CurrentStart=this.LoopStartPhase;generatorParams.CurrentEnd=this.LoopEndPhase;generatorParams.CurrentState=AlphaSynth.Bank.Components.Generators.GeneratorState.Loop;break;case AlphaSynth.Bank.Components.Generators.GeneratorState.Loop:generatorParams.Phase+=generatorParams.CurrentStart-generatorParams.CurrentEnd;break;case AlphaSynth.Bank.Components.Generators.GeneratorState.PostLoop:generatorParams.CurrentState=AlphaSynth.Bank.Components.Generators.GeneratorState.Finished;while(proccessed=generator.EndPhase){this.CurrentState=AlphaSynth.Bank.Components.Generators.GeneratorState.Finished}else if(this.Phase>=generator.LoopEndPhase){this.CurrentState=AlphaSynth.Bank.Components.Generators.GeneratorState.PostLoop;this.CurrentEnd=generator.EndPhase}else if(this.Phase>=generator.LoopStartPhase){this.CurrentState=AlphaSynth.Bank.Components.Generators.GeneratorState.Loop;this.CurrentEnd=generator.LoopEndPhase;this.CurrentStart=generator.LoopStartPhase}else{this.CurrentState=AlphaSynth.Bank.Components.Generators.GeneratorState.PreLoop;this.CurrentEnd=generator.LoopStartPhase}break;default:this.CurrentEnd=generator.EndPhase;if(this.Phase>=this.CurrentEnd)this.CurrentState=AlphaSynth.Bank.Components.Generators.GeneratorState.Finished;else this.CurrentState=AlphaSynth.Bank.Components.Generators.GeneratorState.PostLoop;break}}};AlphaSynth.Bank.Components.Generators.LoopMode={NoLoop:0,OneShot:1,Continuous:2,LoopUntilNoteOff:3};AlphaSynth.Bank.Components.Generators.GeneratorState={PreLoop:0,Loop:1,PostLoop:2,Finished:3};AlphaSynth.Bank.Components.Generators.DefaultGenerators=function(){};$StaticConstructor(function(){AlphaSynth.Bank.Components.Generators.DefaultGenerators.DefaultSine=new AlphaSynth.Bank.Components.Generators.SineGenerator(new AlphaSynth.Bank.Descriptors.GeneratorDescriptor());AlphaSynth.Bank.Components.Generators.DefaultGenerators.DefaultSaw=new AlphaSynth.Bank.Components.Generators.SawGenerator(new AlphaSynth.Bank.Descriptors.GeneratorDescriptor());AlphaSynth.Bank.Components.Generators.DefaultGenerators.DefaultSquare=new AlphaSynth.Bank.Components.Generators.SquareGenerator(new AlphaSynth.Bank.Descriptors.GeneratorDescriptor());AlphaSynth.Bank.Components.Generators.DefaultGenerators.DefaultTriangle=new AlphaSynth.Bank.Components.Generators.TriangleGenerator(new AlphaSynth.Bank.Descriptors.GeneratorDescriptor())});AlphaSynth.Bank.Components.LfoState={Delay:0,Sustain:1};AlphaSynth.Bank.Components.Lfo=function(){this._phase=0;this._increment=0;this._delayTime=0;this._generator=null;this.Frequency=0;this.CurrentState=AlphaSynth.Bank.Components.LfoState.Delay;this.Value=0;this.Depth=0;this.CurrentState=AlphaSynth.Bank.Components.LfoState.Delay;this._generator=AlphaSynth.Bank.Components.Generators.DefaultGenerators.DefaultSine;this._delayTime=0;this._increment=0;this._phase=0;this.Frequency=0;this.CurrentState=AlphaSynth.Bank.Components.LfoState.Delay;this.Value=0;this.Depth=0};AlphaSynth.Bank.Components.Lfo.prototype={QuickSetup:function(sampleRate,lfoInfo){this._generator=lfoInfo.Generator;this._delayTime=((sampleRate*lfoInfo.DelayTime))|0;this.Frequency=lfoInfo.Frequency;this._increment=this._generator.Period*this.Frequency/sampleRate;this.Depth=lfoInfo.Depth;this.Reset()},Increment:function(amount){if(this.CurrentState==AlphaSynth.Bank.Components.LfoState.Delay){this._phase-=amount;if(this._phase<=0){this._phase=this._generator.LoopStartPhase+this._increment*-this._phase;this.Value=this._generator.GetValue(this._phase);this.CurrentState=AlphaSynth.Bank.Components.LfoState.Sustain}}else{this._phase+=this._increment*amount;if(this._phase>=this._generator.LoopEndPhase)this._phase=this._generator.LoopStartPhase+(this._phase-this._generator.LoopEndPhase)%(this._generator.LoopEndPhase-this._generator.LoopStartPhase);this.Value=this._generator.GetValue(this._phase)}},Reset:function(){this.Value=0;if(this._delayTime>0){this._phase=this._delayTime;this.CurrentState=AlphaSynth.Bank.Components.LfoState.Delay}else{this._phase=0;this.CurrentState=AlphaSynth.Bank.Components.LfoState.Sustain}}};AlphaSynth.Bank.Components.FilterType={None:0,BiquadLowpass:1,BiquadHighpass:2,OnePoleLowpass:3};AlphaSynth.Bank.Components.Filter=function(){this._a1=0;this._a2=0;this._b1=0;this._b2=0;this._m1=0;this._m2=0;this._m3=0;this._cutOff=0;this._resonance=0;this.FilterMethod=AlphaSynth.Bank.Components.FilterType.None;this.CoeffNeedsUpdating=false;this._a1=0;this._a2=0;this._b1=0;this._b2=0;this._m1=0;this._m2=0;this._m3=0;this.FilterMethod=AlphaSynth.Bank.Components.FilterType.None;this.set_CutOff(0);this.set_Resonance(0)};AlphaSynth.Bank.Components.Filter.prototype={get_CutOff:function(){return this._cutOff},set_CutOff:function(value){this._cutOff=value;this.CoeffNeedsUpdating=true},get_Resonance:function(){return this._resonance},set_Resonance:function(value){this._resonance=value;this.CoeffNeedsUpdating=true},get_Enabled:function(){return this.FilterMethod!=AlphaSynth.Bank.Components.FilterType.None},Disable:function(){this.FilterMethod=AlphaSynth.Bank.Components.FilterType.None},QuickSetup:function(sampleRate,note,velocity,filterInfo){this.CoeffNeedsUpdating=false;this.set_CutOff(filterInfo.CutOff);this.set_Resonance(filterInfo.Resonance);this.FilterMethod=filterInfo.FilterMethod;this._a1=0;this._a2=0;this._b1=0;this._b2=0;this._m1=0;this._m2=0;this._m3=0;if(this.get_CutOff()<=0||this.get_Resonance()<=0){this.FilterMethod=AlphaSynth.Bank.Components.FilterType.None}if(this.FilterMethod!=AlphaSynth.Bank.Components.FilterType.None){this.set_CutOff(this.get_CutOff()*AlphaSynth.Synthesis.SynthHelper.CentsToPitch((note-filterInfo.RootKey)*filterInfo.KeyTrack+((velocity*filterInfo.VelTrack))|0));this.UpdateCoefficients(sampleRate)}},ApplyFilter:function(sample){switch(this.FilterMethod){case AlphaSynth.Bank.Components.FilterType.BiquadHighpass:case AlphaSynth.Bank.Components.FilterType.BiquadLowpass:this._m3=sample-this._a1*this._m1-this._a2*this._m2;sample=this._b2*(this._m3+this._m2)+this._b1*this._m1;this._m2=this._m1;this._m1=this._m3;return sample;case AlphaSynth.Bank.Components.FilterType.OnePoleLowpass:this._m1+=this._a1*(sample-this._m1);return this._m1;default:return 0}},ApplyFilter:function(data){switch(this.FilterMethod){case AlphaSynth.Bank.Components.FilterType.BiquadHighpass:case AlphaSynth.Bank.Components.FilterType.BiquadLowpass:for(var x=0;xsamples){this._index+=samples;samples=0}else{this._index=0;if(this.CurrentStage!=AlphaSynth.Bank.Components.EnvelopeState.None){do{this._stage=this._stages[++this.CurrentStage]}while(this._stage.Time==0)}samples-=neededSamples}}while(samples>0)var i=((this._stage.Graph.length*(this._index/this._stage.Time)))|0;if(this._stage.Reverse)this.Value=(1-this._stage.Graph[i])*this._stage.Scale+this._stage.Offset;else this.Value=this._stage.Graph[i]*this._stage.Scale+this._stage.Offset},Release:function(lowerLimit){if(this.Value<=lowerLimit){this._index=0;this.CurrentStage=AlphaSynth.Bank.Components.EnvelopeState.None;this._stage=this._stages[this.CurrentStage]}else if(this.CurrentStage-1?this.keyOverride:voiceparams.Note;var vel=this.velOverride>-1?this.velOverride:voiceparams.Velocity;voiceparams.GeneratorParams[0].QuickSetup(this.gen);voiceparams.Envelopes[0].QuickSetupSf2(voiceparams.SynthParams.Synth.SampleRate,note,this.keynumToModEnvHold,this.keynumToModEnvDecay,false,this.mod_env);voiceparams.Envelopes[1].QuickSetupSf2(voiceparams.SynthParams.Synth.SampleRate,note,this.keynumToVolEnvHold,this.keynumToVolEnvDecay,true,this.vel_env);voiceparams.Filters[0].Disable();voiceparams.Lfos[0].QuickSetup(voiceparams.SynthParams.Synth.SampleRate,this.mod_lfo);voiceparams.Lfos[1].QuickSetup(voiceparams.SynthParams.Synth.SampleRate,this.vib_lfo);voiceparams.PitchOffset=(note-this.gen.RootKey)*this.gen.KeyTrack+this.gen.Tune;voiceparams.PitchOffset+=((100*(voiceparams.SynthParams.MasterCoarseTune+(voiceparams.SynthParams.MasterFineTune.get_Combined()-8192)/8192)))|0;voiceparams.VolOffset=this.initialAttn;voiceparams.VolOffset-=96*AlphaSynth.Bank.Patch.Sf2Patch.CalculateModulator(AlphaSynth.Sf2.SourceTypeEnum.Concave,AlphaSynth.Sf2.TransformEnum.Linear,AlphaSynth.Sf2.DirectionEnum.MaxToMin,AlphaSynth.Sf2.PolarityEnum.Unipolar,voiceparams.Velocity,0,127);voiceparams.VolOffset-=96*AlphaSynth.Bank.Patch.Sf2Patch.CalculateModulator(AlphaSynth.Sf2.SourceTypeEnum.Concave,AlphaSynth.Sf2.TransformEnum.Linear,AlphaSynth.Sf2.DirectionEnum.MaxToMin,AlphaSynth.Sf2.PolarityEnum.Unipolar,voiceparams.SynthParams.Volume.get_Coarse(),0,127);return voiceparams.GeneratorParams[0].CurrentState!=AlphaSynth.Bank.Components.Generators.GeneratorState.Finished&&voiceparams.Envelopes[1].CurrentStage!=AlphaSynth.Bank.Components.EnvelopeState.None},Stop:function(voiceparams){this.gen.Release(voiceparams.GeneratorParams[0]);if(this.gen.LoopMode!=AlphaSynth.Bank.Components.Generators.LoopMode.OneShot){voiceparams.Envelopes[0].Release(1E-38);voiceparams.Envelopes[1].ReleaseSf2VolumeEnvelope()}},Process:function(voiceparams,startIndex,endIndex){var basePitch=AlphaSynth.Synthesis.SynthHelper.CentsToPitch(voiceparams.PitchOffset+voiceparams.SynthParams.CurrentPitch)*this.gen.Frequency/voiceparams.SynthParams.Synth.SampleRate;var baseVolume=voiceparams.SynthParams.Synth.get_MasterVolume()*voiceparams.SynthParams.CurrentVolume*voiceparams.SynthParams.Synth.get_MixGain();for(var x=startIndex;x13500)centsFc=13500;voiceparams.Filters[0].set_CutOff(AlphaSynth.Synthesis.SynthHelper.KeyToFrequency(centsFc/100,69));if(voiceparams.Filters[0].CoeffNeedsUpdating)voiceparams.Filters[0].ApplyFilterInterp(voiceparams.BlockBuffer,voiceparams.SynthParams.Synth.SampleRate);else voiceparams.Filters[0].ApplyFilter(voiceparams.BlockBuffer)}var volume=AlphaSynth.Synthesis.SynthHelper.DBtoLinear(voiceparams.VolOffset+voiceparams.Envelopes[1].Value+voiceparams.Lfos[0].Value*this.modLfoToVolume)*baseVolume;if(voiceparams.SynthParams.Synth.AudioChannels==2)voiceparams.MixMonoToStereoInterp(x,volume*this.pan.Left*voiceparams.SynthParams.CurrentPan.Left,volume*this.pan.Right*voiceparams.SynthParams.CurrentPan.Right);else voiceparams.MixMonoToMonoInterp(x,volume);if((voiceparams.Envelopes[1].CurrentStage>AlphaSynth.Bank.Components.EnvelopeState.Hold&&volume<=1E-05)||voiceparams.GeneratorParams[0].CurrentState==AlphaSynth.Bank.Components.Generators.GeneratorState.Finished){voiceparams.State=AlphaSynth.Synthesis.VoiceStateEnum.Stopped;return}}},Load:function(region,assets){this.ExclusiveGroup=region.Generators[57];this.ExclusiveGroupTarget=this.ExclusiveGroup;this.iniFilterFc=region.Generators[8];this.filterQ=AlphaSynth.Synthesis.SynthHelper.DBtoLinear(region.Generators[9]/10);this.initialAttn=-region.Generators[48]/10;this.keyOverride=region.Generators[46];this.velOverride=region.Generators[47];this.keynumToModEnvHold=region.Generators[31];this.keynumToModEnvDecay=region.Generators[32];this.keynumToVolEnvHold=region.Generators[39];this.keynumToVolEnvDecay=region.Generators[40];this.pan=new AlphaSynth.Bank.Components.PanComponent();this.pan.SetValue(region.Generators[17]/500,AlphaSynth.Bank.Components.PanFormulaEnum.Neg3dBCenter);this.modLfoToPitch=region.Generators[5];this.vibLfoToPitch=region.Generators[6];this.modEnvToPitch=region.Generators[7];this.modLfoToFilterFc=region.Generators[10];this.modEnvToFilterFc=region.Generators[11];this.modLfoToVolume=region.Generators[13]/10;this.LoadGen(region,assets);this.LoadEnvelopes(region);this.LoadLfos(region);this.LoadFilter(region)},LoadGen:function(region,assets){var sda=assets.SampleAssets[region.Generators[53]];this.gen=new AlphaSynth.Bank.Components.Generators.SampleGenerator();this.gen.EndPhase=sda.End+region.Generators[1]+32768*region.Generators[12];this.gen.Frequency=sda.SampleRate;this.gen.KeyTrack=region.Generators[56];this.gen.LoopEndPhase=sda.LoopEnd+region.Generators[3]+32768*region.Generators[50];switch(region.Generators[54]&3){case 0:case 2:this.gen.LoopMode=AlphaSynth.Bank.Components.Generators.LoopMode.NoLoop;break;case 1:this.gen.LoopMode=AlphaSynth.Bank.Components.Generators.LoopMode.Continuous;break;case 3:this.gen.LoopMode=AlphaSynth.Bank.Components.Generators.LoopMode.LoopUntilNoteOff;break}this.gen.LoopStartPhase=sda.LoopStart+region.Generators[2]+32768*region.Generators[45];this.gen.Offset=0;this.gen.Period=1;if(region.Generators[58]>-1)this.gen.RootKey=region.Generators[58];else this.gen.RootKey=sda.RootKey;this.gen.StartPhase=sda.Start+region.Generators[0]+32768*region.Generators[4];this.gen.Tune=((sda.Tune+region.Generators[52]+100*region.Generators[51]))|0;this.gen.VelocityTrack=0;(this.gen).Samples=sda.SampleData},LoadEnvelopes:function(region){this.mod_env=new AlphaSynth.Bank.Descriptors.EnvelopeDescriptor();this.mod_env.AttackTime=Math.pow(2,region.Generators[26]/1200);this.mod_env.AttackGraph=3;this.mod_env.DecayTime=Math.pow(2,region.Generators[28]/1200);this.mod_env.DelayTime=Math.pow(2,region.Generators[25]/1200);this.mod_env.HoldTime=Math.pow(2,region.Generators[27]/1200);this.mod_env.PeakLevel=1;this.mod_env.ReleaseTime=Math.pow(2,region.Generators[30]/1200);this.mod_env.StartLevel=0;this.mod_env.SustainLevel=1-AlphaSynth.Synthesis.SynthHelper.ClampS(region.Generators[29],0,1000)/1000;if(this.mod_env.AttackTime<0.001)this.mod_env.AttackTime=0.001;else if(this.mod_env.AttackTime>100)this.mod_env.AttackTime=100;if(this.mod_env.DecayTime<0.001)this.mod_env.DecayTime=0;else if(this.mod_env.DecayTime>100)this.mod_env.DecayTime=100;if(this.mod_env.DelayTime<0.001)this.mod_env.DelayTime=0;else if(this.mod_env.DelayTime>20)this.mod_env.DelayTime=20;if(this.mod_env.HoldTime<0.001)this.mod_env.HoldTime=0;else if(this.mod_env.HoldTime>20)this.mod_env.HoldTime=20;if(this.mod_env.ReleaseTime<0.001)this.mod_env.ReleaseTime=0.001;else if(this.mod_env.ReleaseTime>100)this.mod_env.ReleaseTime=100;this.vel_env=new AlphaSynth.Bank.Descriptors.EnvelopeDescriptor();this.vel_env.AttackTime=Math.pow(2,region.Generators[34]/1200);this.vel_env.AttackGraph=3;this.vel_env.DecayTime=Math.pow(2,region.Generators[36]/1200);this.vel_env.DelayTime=Math.pow(2,region.Generators[33]/1200);this.vel_env.HoldTime=Math.pow(2,region.Generators[35]/1200);this.vel_env.PeakLevel=0;this.vel_env.ReleaseTime=Math.pow(2,region.Generators[38]/1200);this.vel_env.StartLevel=-100;this.vel_env.SustainLevel=AlphaSynth.Synthesis.SynthHelper.ClampS(region.Generators[37],0,1000)/-10;if(this.vel_env.AttackTime<0.001)this.vel_env.AttackTime=0.001;else if(this.vel_env.AttackTime>100)this.vel_env.AttackTime=100;if(this.vel_env.DecayTime<0.001)this.vel_env.DecayTime=0;else if(this.vel_env.DecayTime>100)this.vel_env.DecayTime=100;if(this.vel_env.DelayTime<0.001)this.vel_env.DelayTime=0;else if(this.vel_env.DelayTime>20)this.vel_env.DelayTime=20;if(this.vel_env.HoldTime<0.001)this.vel_env.HoldTime=0;else if(this.vel_env.HoldTime>20)this.vel_env.HoldTime=20;if(this.vel_env.ReleaseTime<0.001)this.vel_env.ReleaseTime=0.001;else if(this.vel_env.ReleaseTime>100)this.vel_env.ReleaseTime=100},LoadLfos:function(region){this.mod_lfo=new AlphaSynth.Bank.Descriptors.LfoDescriptor();this.mod_lfo.DelayTime=Math.pow(2,region.Generators[21]/1200);this.mod_lfo.Frequency=(Math.pow(2,region.Generators[22]/1200)*8.176);this.mod_lfo.Generator=AlphaSynth.Bank.Components.Generators.DefaultGenerators.DefaultSine;this.vib_lfo=new AlphaSynth.Bank.Descriptors.LfoDescriptor();this.vib_lfo.DelayTime=Math.pow(2,region.Generators[23]/1200);this.vib_lfo.Frequency=(Math.pow(2,region.Generators[24]/1200)*8.176);this.vib_lfo.Generator=AlphaSynth.Bank.Components.Generators.DefaultGenerators.DefaultSine},LoadFilter:function(region){this.fltr=new AlphaSynth.Bank.Descriptors.FilterDescriptor();this.fltr.FilterMethod=AlphaSynth.Bank.Components.FilterType.BiquadLowpass;this.fltr.CutOff=AlphaSynth.Synthesis.SynthHelper.KeyToFrequency(region.Generators[8]/100,69);this.fltr.Resonance=AlphaSynth.Synthesis.SynthHelper.DBtoLinear(region.Generators[9]/10)}};AlphaSynth.Bank.Patch.Sf2Patch.CalculateModulator=function(s,t,d,p,value,min,max){var output=0;var i;value=value-min;max=max-min;if(d==AlphaSynth.Sf2.DirectionEnum.MaxToMin)value=max-value;switch(s){case AlphaSynth.Sf2.SourceTypeEnum.Linear:output=(value/max)|0;break;case AlphaSynth.Sf2.SourceTypeEnum.Concave:i=127-value;output=-0.208333333333333*(Math.log((i*i)/(max*max))/Math.LN10);break;case AlphaSynth.Sf2.SourceTypeEnum.Convex:i=value;output=1+(0.208333333333333)*(Math.log((i*i)/(max*max))/Math.LN10);break;case AlphaSynth.Sf2.SourceTypeEnum.Switch:if(value<=((max/2)|0))output=0;else output=1;break}if(p==AlphaSynth.Sf2.PolarityEnum.Bipolar)output=(output*2)-1;if(t==AlphaSynth.Sf2.TransformEnum.AbsoluteValue)output=Math.abs(output);return output};$Inherit(AlphaSynth.Bank.Patch.Sf2Patch,AlphaSynth.Bank.Patch.Patch);AlphaSynth.Bank.Patch.MultiPatch=function(name){this._intervalType=AlphaSynth.Bank.Patch.IntervalType.ChannelKeyVelocity;this._intervalList=null;AlphaSynth.Bank.Patch.Patch.call(this,name);this._intervalType=AlphaSynth.Bank.Patch.IntervalType.ChannelKeyVelocity};AlphaSynth.Bank.Patch.MultiPatch.prototype={FindPatches:function(channel,key,velocity,layers){var count=0;switch(this._intervalType){case AlphaSynth.Bank.Patch.IntervalType.ChannelKeyVelocity:for(var x=0;x>8)&255&255);loVel=(regions[x].Generators[44]&255&255);hiVel=((regions[x].Generators[44]>>8)&255&255)}else{hiKey=(regions[x].Generators[43]&255&255);loKey=((regions[x].Generators[43]>>8)&255&255);hiVel=(regions[x].Generators[44]&255&255);loVel=((regions[x].Generators[44]>>8)&255&255)}var sf2=new AlphaSynth.Bank.Patch.Sf2Patch(this.Name+"_"+x);sf2.Load(regions[x],assets);this._intervalList[x]=new AlphaSynth.Bank.Patch.PatchInterval(sf2,0,15,loKey,hiKey,loVel,hiVel)}this.DetermineIntervalType()},DetermineIntervalType:function(){var checkChannel=false;var checkVelocity=false;for(var x=0;x=this.StartChannel&&channel<=this.EndChannel)&&(key>=this.StartKey&&key<=this.EndKey)&&(velocity>=this.StartVelocity&&velocity<=this.EndVelocity)},CheckChannelAndKey:function(channel,key){return(channel>=this.StartChannel&&channel<=this.EndChannel)&&(key>=this.StartKey&&key<=this.EndKey)},CheckKeyAndVelocity:function(key,velocity){return(key>=this.StartKey&&key<=this.EndKey)&&(velocity>=this.StartVelocity&&velocity<=this.EndVelocity)},CheckKey:function(key){return(key>=this.StartKey&&key<=this.EndKey)}};AlphaSynth.Bank.SampleDataAsset=function(sample,sampleData){this.Name=null;this.Channels=0;this.SampleRate=0;this.RootKey=0;this.Tune=0;this.Start=0;this.End=0;this.LoopStart=0;this.LoopEnd=0;this.SampleData=null;this.Channels=1;this.Name=sample.Name;this.SampleRate=sample.SampleRate;this.RootKey=sample.RootKey;this.Tune=sample.Tune;this.Start=sample.Start;this.End=sample.End;this.LoopStart=sample.StartLoop;this.LoopEnd=sample.EndLoop;this.SampleData=AlphaSynth.Util.PcmData.Create(sampleData.BitsPerSample,sampleData.SampleData,true)};AlphaSynth.Bank.PatchBank=function(){this._bank=null;this._assets=null;this.Name=null;this.Comments=null;this.Reset()};AlphaSynth.Bank.PatchBank.prototype={Reset:function(){this._bank={};this._assets=new AlphaSynth.Bank.AssetManager();this.Name="";this.Comments=""},get_LoadedBanks:function(){var banks=[];for(var $i2=0,$t2=Object.keys(this._bank),$l2=$t2.length,bank=$t2[$i2];$i2<$l2;$i2++,bank=$t2[$i2]){banks.push(AlphaSynth.Platform.Std.ParseInt(bank))}return banks.slice(0)},GetBank:function(bankNumber){return this._bank.hasOwnProperty(bankNumber)?this._bank[bankNumber]:null},GetPatchByNumber:function(bankNumber,patchNumber){return this._bank.hasOwnProperty(bankNumber)?this._bank[bankNumber][patchNumber]:null},GetPatchByName:function(bankNumber,name){if(this._bank.hasOwnProperty(bankNumber)){var patches=this._bank[bankNumber];for(var $i3=0,$l3=patches.length,patch=patches[$i3];$i3<$l3;$i3++,patch=patches[$i3]){if(patch!=null&&patch.Name==name){return patch}}}return null},IsBankLoaded:function(bankNumber){return this._bank.hasOwnProperty(bankNumber)},LoadSf2:function(input){this.Reset();AlphaSynth.Util.Logger.Debug("Reading SF2");var sf=new AlphaSynth.Sf2.SoundFont();sf.Load(input);AlphaSynth.Util.Logger.Debug("Building patchbank");this.Name=sf.Info.BankName;this.Comments=sf.Info.Comments;for(var $i4=0,$t4=sf.Presets.SampleHeaders,$l4=$t4.length,sampleHeader=$t4[$i4];$i4<$l4;$i4++,sampleHeader=$t4[$i4]){this._assets.SampleAssets.push(new AlphaSynth.Bank.SampleDataAsset(sampleHeader,sf.SampleData))}var sfinsts=this.ReadSf2Instruments(sf.Presets.Instruments);for(var $i5=0,$t5=sf.Presets.PresetHeaders,$l5=$t5.length,p=$t5[$i5];$i5<$l5;$i5++,p=$t5[$i5]){var globalGens=null;var i;if(p.Zones[0].Generators.length==0||p.Zones[0].Generators[p.Zones[0].Generators.length-1].GeneratorType!=AlphaSynth.Sf2.GeneratorEnum.Instrument){globalGens=p.Zones[0].Generators;i=1}else{i=0}var regionList=[];while(i>8)&255&255)}else{presetHiKey=(p.Zones[i].Generators[0].get_AmountInt16()&255&255);presetLoKey=((p.Zones[i].Generators[0].get_AmountInt16()>>8)&255&255)}if(p.Zones[i].Generators.length>1&&p.Zones[i].Generators[1].GeneratorType==AlphaSynth.Sf2.GeneratorEnum.VelocityRange){if(AlphaSynth.Platform.TypeUtils.IsLittleEndian){presetLoVel=(p.Zones[i].Generators[1].get_AmountInt16()&255&255);presetHiVel=((p.Zones[i].Generators[1].get_AmountInt16()>>8)&255&255)}else{presetHiVel=(p.Zones[i].Generators[1].get_AmountInt16()&255&255);presetLoVel=((p.Zones[i].Generators[1].get_AmountInt16()>>8)&255&255)}}}else if(p.Zones[i].Generators[0].GeneratorType==AlphaSynth.Sf2.GeneratorEnum.VelocityRange){if(AlphaSynth.Platform.TypeUtils.IsLittleEndian){presetLoVel=(p.Zones[i].Generators[0].get_AmountInt16()&255&255);presetHiVel=((p.Zones[i].Generators[0].get_AmountInt16()>>8)&255&255)}else{presetHiVel=(p.Zones[i].Generators[0].get_AmountInt16()&255&255);presetLoVel=((p.Zones[i].Generators[0].get_AmountInt16()>>8)&255&255)}}if(p.Zones[i].Generators[p.Zones[i].Generators.length-1].GeneratorType==AlphaSynth.Sf2.GeneratorEnum.Instrument){var insts=sfinsts[p.Zones[i].Generators[p.Zones[i].Generators.length-1].get_AmountInt16()];for(var $i6=0,$l6=insts.length,inst=insts[$i6];$i6<$l6;$i6++,inst=insts[$i6]){var instLoKey;var instHiKey;var instLoVel;var instHiVel;if(AlphaSynth.Platform.TypeUtils.IsLittleEndian){instLoKey=(inst.Generators[43]&255&255);instHiKey=((inst.Generators[43]>>8)&255&255);instLoVel=(inst.Generators[44]&255&255);instHiVel=((inst.Generators[44]>>8)&255&255)}else{instHiKey=(inst.Generators[43]&255&255);instLoKey=((inst.Generators[43]>>8)&255&255);instHiVel=(inst.Generators[44]&255&255);instLoVel=((inst.Generators[44]>>8)&255&255)}if((instLoKey<=presetHiKey&&presetLoKey<=instHiKey)&&(instLoVel<=presetHiVel&&presetLoVel<=instHiVel)){var r=new AlphaSynth.Sf2.Sf2Region();AlphaSynth.Platform.Std.ArrayCopy(inst.Generators,0,r.Generators,0,r.Generators.length);this.ReadSf2Region(r,globalGens,p.Zones[i].Generators,true);regionList.push(r)}}}i++}var mp=new AlphaSynth.Bank.Patch.MultiPatch(p.Name);mp.LoadSf2(regionList.slice(0),this._assets);this._assets.PatchAssets.push(new AlphaSynth.Bank.PatchAsset(mp.Name,mp));this.AssignPatchToBank(mp,p.BankNumber,p.PatchNumber,p.PatchNumber)}},ReadSf2Instruments:function(instruments){var regions=new Array(instruments.length);for(var x=0;x>8)&255&255);lo_b=(genList[x].get_AmountInt16()&255&255);hi_b=((genList[x].get_AmountInt16()>>8)&255&255)}else{hi_a=(region.Generators[value]&255&255);lo_a=((region.Generators[value]>>8)&255&255);hi_b=(genList[x].get_AmountInt16()&255&255);lo_b=((genList[x].get_AmountInt16()>>8)&255&255)}lo_a=Math.max(lo_a,lo_b);hi_a=Math.min(hi_a,hi_b);if(lo_a>hi_a){throw $CreateException(new System.Exception.ctor$$String("Invalid sf2 region. The range generators do not intersect."),new Error());}if(AlphaSynth.Platform.TypeUtils.IsLittleEndian){region.Generators[value]=AlphaSynth.Platform.TypeUtils.ToInt16((lo_a|(hi_a<<8)))}else{region.Generators[value]=AlphaSynth.Platform.TypeUtils.ToInt16((lo_a<<8)|hi_a)}}else{region.Generators[value]=AlphaSynth.Platform.TypeUtils.ToInt16(region.Generators[value]+genList[x].get_AmountInt16())}}}},AssignPatchToBank:function(patch,bankNumber,startRange,endRange){if(bankNumber<0)return;if(startRange>endRange){var range=startRange;startRange=endRange;endRange=range}if(startRange<0||startRange>=128)throw $CreateException(new System.Exception.ctor$$String("startRange out of range"),new Error());if(endRange<0||endRange>=128)throw $CreateException(new System.Exception.ctor$$String("endRange out of range"),new Error());var patches;if(this._bank.hasOwnProperty(bankNumber)){patches=this._bank[bankNumber]}else{patches=new Array(128);this._bank[bankNumber]=patches}for(var x=startRange;x<=endRange;x++){patches[x]=patch}}};$StaticConstructor(function(){AlphaSynth.Bank.PatchBank.DrumBank=128;AlphaSynth.Bank.PatchBank.BankSize=128});AlphaSynth.Bank.PatchAsset=function(name,patch){this.Name=null;this.Patch=null;this.Name=name;this.Patch=patch};AlphaSynth.Ds=AlphaSynth.Ds||{};AlphaSynth.Ds.LinkedList=function(){this.First=null;this.Length=0;this.Length=0};AlphaSynth.Ds.LinkedList.prototype={AddFirst:function(value){var node=new AlphaSynth.Ds.LinkedListNode();node.Value=value;if(this.First==null){this.InsertNodeToEmptyList(node)}else{this.InsertNodeBefore(this.First,node);this.First=node}},AddLast:function(value){var node=new AlphaSynth.Ds.LinkedListNode();node.Value=value;if(this.First==null){this.InsertNodeToEmptyList(node)}else{this.InsertNodeBefore(this.First,node)}},RemoveFirst:function(){if(this.First==null)return null;var v=this.First.Value;this.Remove(this.First);return v},RemoveLast:function(){if(this.First==null)return null;var v=this.First._prev!=null?this.First._prev.Value:null;this.Remove(this.First._prev);return v},Remove:function(n){if(n._next==n){this.First=null}else{n._next._prev=n._prev;n._prev._next=n._next;if(this.First==n){this.First=n._next}}n.Invalidate();this.Length--},InsertNodeBefore:function(node,newNode){newNode._next=node;newNode._prev=node._prev;node._prev._next=newNode;node._prev=newNode;newNode._list=this;this.Length++},InsertNodeToEmptyList:function(node){node._next=node;node._prev=node;node._list=this;this.First=node;this.Length++}};AlphaSynth.Ds.LinkedListNode=function(){this._list=null;this._next=null;this._prev=null;this.Value=null};AlphaSynth.Ds.LinkedListNode.prototype={get_Next:function(){return this._next==null||this._list.First==this._next?null:this._next},get_Prev:function(){return this._prev==null||this==this._list.First?null:this._prev},Invalidate:function(){this._list=null;this._next=null;this._prev=null}};AlphaSynth.Ds.CircularSampleBuffer=function(size){this._buffer=null;this._writePosition=0;this._readPosition=0;this._sampleCount=0;this._buffer=new Float32Array(size);this._writePosition=0;this._readPosition=0;this._sampleCount=0};AlphaSynth.Ds.CircularSampleBuffer.prototype={get_Count:function(){return this._sampleCount},Clear:function(){this._readPosition=0;this._writePosition=0;this._sampleCount=0;this._buffer=new Float32Array(this._buffer.length)},Write:function(data,offset,count){var samplesWritten=0;if(count>this._buffer.length-this._sampleCount){count=this._buffer.length-this._sampleCount}var writeToEnd=Math.min(this._buffer.length-this._writePosition,count);this._buffer.set(data.subarray(offset,offset+writeToEnd),this._writePosition);this._writePosition+=writeToEnd;this._writePosition%=this._buffer.length;samplesWritten+=writeToEnd;if(samplesWrittenthis._sampleCount){count=this._sampleCount}var samplesRead=0;var readToEnd=Math.min(this._buffer.length-this._readPosition,count);data.set(this._buffer.subarray(this._readPosition,this._readPosition+readToEnd),offset);samplesRead+=readToEnd;this._readPosition+=readToEnd;this._readPosition%=this._buffer.length;if(samplesRead0){var newBuffer=new Uint8Array(value);if(this.Length>0)newBuffer.set(this._buffer.subarray(0,0+this.Length),0);this._buffer=newBuffer}else{this._buffer=null}this._capacity=value}},ReadByte:function(){var n=this.Length-this.get_Position();if(n<=0)return-1;var b=this._buffer[this.get_Position()];this.set_Position(this.get_Position()+1);return b},Read:function(buffer,offset,count){var n=this.Length-this.get_Position();if(n>count)n=count;if(n<=0)return 0;if(n<=8){var byteCount=n;while(--byteCount>=0)buffer[offset+byteCount]=this._buffer[this.get_Position()+byteCount]}else buffer.set(this._buffer.subarray(this.get_Position(),this.get_Position()+n),offset);this.set_Position(this.get_Position()+n);return n},WriteByte:function(value){var buffer=new Uint8Array(1);buffer[0]=value;this.Write(buffer,0,1)},Write:function(buffer,offset,count){var i=this.get_Position()+count;if(i>this.Length){if(i>this._capacity){this.EnsureCapacity(i)}this.Length=i}if((count<=8)&&(buffer!=this._buffer)){var byteCount=count;while(--byteCount>=0)this._buffer[this.get_Position()+byteCount]=buffer[offset+byteCount]}else this._buffer.set(buffer.subarray(offset,offset+count),this.get_Position());this.set_Position(i)},EnsureCapacity:function(value){if(value>this._capacity){var newCapacity=value;if(newCapacity<256)newCapacity=256;if(newCapacity>8},get_Data2:function(){return(this.Message&16711680)>>16}};AlphaSynth.Midi.Event.SystemCommonEvent=function(delta,status,data1,data2){AlphaSynth.Midi.Event.MidiEvent.call(this,delta,status,data1,data2)};AlphaSynth.Midi.Event.SystemCommonEvent.prototype={get_Channel:function(){return-1},get_Command:function(){return(this.Message&255)}};$Inherit(AlphaSynth.Midi.Event.SystemCommonEvent,AlphaSynth.Midi.Event.MidiEvent);AlphaSynth.Midi.Event.SystemExclusiveEvent=function(delta,status,id,data){this.Data=null;AlphaSynth.Midi.Event.SystemCommonEvent.call(this,delta,status,(id&255),(id>>8));this.Data=data};AlphaSynth.Midi.Event.SystemExclusiveEvent.prototype={get_ManufacturerId:function(){return this.Message>>8}};$Inherit(AlphaSynth.Midi.Event.SystemExclusiveEvent,AlphaSynth.Midi.Event.SystemCommonEvent);AlphaSynth.Midi.Event.SystemCommonTypeEnum={SystemExclusive:240,MtcQuarterFrame:241,SongPosition:242,SongSelect:243,TuneRequest:246,SystemExclusive2:247};AlphaSynth.Midi.Event.RealTimeTypeEnum={MidiClock:248,MidiTick:249,MidiStart:250,MidiContinue:252,MidiStop:253,ActiveSense:254,Reset:255};AlphaSynth.Midi.Event.RealTimeEvent=function(delta,status,data1,data2){AlphaSynth.Midi.Event.MidiEvent.call(this,delta,status,data1,data2)};AlphaSynth.Midi.Event.RealTimeEvent.prototype={get_Channel:function(){return-1},get_Command:function(){return(this.Message&255)}};$Inherit(AlphaSynth.Midi.Event.RealTimeEvent,AlphaSynth.Midi.Event.MidiEvent);AlphaSynth.Midi.Event.MidiEventTypeEnum={NoteOff:128,NoteOn:144,NoteAftertouch:160,Controller:176,ProgramChange:192,ChannelAftertouch:208,PitchBend:224,Meta:255};AlphaSynth.Midi.Event.ControllerTypeEnum={BankSelectCoarse:0,ModulationCoarse:1,BreathControllerCoarse:2,FootControllerCoarse:4,PortamentoTimeCoarse:5,DataEntryCoarse:6,VolumeCoarse:7,BalanceCoarse:8,PanCoarse:10,ExpressionControllerCoarse:11,EffectControl1Coarse:12,EffectControl2Coarse:13,GeneralPurposeSlider1:16,GeneralPurposeSlider2:17,GeneralPurposeSlider3:18,GeneralPurposeSlider4:19,BankSelectFine:32,ModulationFine:33,BreathControllerFine:34,FootControllerFine:36,PortamentoTimeFine:37,DataEntryFine:38,VolumeFine:39,BalanceFine:40,PanFine:42,ExpressionControllerFine:43,EffectControl1Fine:44,EffectControl2Fine:45,HoldPedal:64,Portamento:65,SostenutoPedal:66,SoftPedal:67,LegatoPedal:68,Hold2Pedal:69,SoundVariation:70,SoundTimbre:71,SoundReleaseTime:72,SoundAttackTime:73,SoundBrightness:74,SoundControl6:75,SoundControl7:76,SoundControl8:77,SoundControl9:78,SoundControl10:79,GeneralPurposeButton1:80,GeneralPurposeButton2:81,GeneralPurposeButton3:82,GeneralPurposeButton4:83,EffectsLevel:91,TremuloLevel:92,ChorusLevel:93,CelesteLevel:94,PhaseLevel:95,DataButtonIncrement:96,DataButtonDecrement:97,NonRegisteredParameterFine:98,NonRegisteredParameterCourse:99,RegisteredParameterFine:100,RegisteredParameterCourse:101,AllSoundOff:120,ResetControllers:121,LocalKeyboard:122,AllNotesOff:123,OmniModeOff:124,OmniModeOn:125,MonoMode:126,PolyMode:127};AlphaSynth.Midi.Event.MetaEvent=function(delta,status,data1,data2){AlphaSynth.Midi.Event.MidiEvent.call(this,delta,status,data1,data2)};AlphaSynth.Midi.Event.MetaEvent.prototype={get_Channel:function(){return-1},get_Command:function(){return(this.Message&255)},get_MetaStatus:function(){return this.get_Data1()}};$Inherit(AlphaSynth.Midi.Event.MetaEvent,AlphaSynth.Midi.Event.MidiEvent);AlphaSynth.Midi.Event.MetaTextEvent=function(delta,status,metaId,text){this.Text=null;AlphaSynth.Midi.Event.MetaEvent.call(this,delta,status,metaId,0);this.Text=text};$Inherit(AlphaSynth.Midi.Event.MetaTextEvent,AlphaSynth.Midi.Event.MetaEvent);AlphaSynth.Midi.Event.MetaNumberEvent=function(delta,status,metaId,number){this.Value=0;AlphaSynth.Midi.Event.MetaEvent.call(this,delta,status,metaId,0);this.Value=number};$Inherit(AlphaSynth.Midi.Event.MetaNumberEvent,AlphaSynth.Midi.Event.MetaEvent);AlphaSynth.Midi.Event.MetaEventTypeEnum={SequenceNumber:0,TextEvent:1,CopyrightNotice:2,SequenceOrTrackName:3,InstrumentName:4,LyricText:5,MarkerText:6,CuePoint:7,PatchName:8,PortName:9,MidiChannel:32,MidiPort:33,EndOfTrack:47,Tempo:81,SmpteOffset:84,TimeSignature:88,KeySignature:89,SequencerSpecific:127};AlphaSynth.Midi.Event.MetaDataEvent=function(delta,status,metaId,data){this.Data=null;AlphaSynth.Midi.Event.MetaEvent.call(this,delta,status,metaId,0);this.Data=data};$Inherit(AlphaSynth.Midi.Event.MetaDataEvent,AlphaSynth.Midi.Event.MetaEvent);AlphaSynth.Midi.MidiTrack=function(instPrograms,drumPrograms,activeChannels,midiEvents){this.Instruments=null;this.DrumInstruments=null;this.ActiveChannels=null;this.MidiEvents=null;this.NoteOnCount=0;this.EndTime=0;this.Instruments=instPrograms;this.DrumInstruments=drumPrograms;this.ActiveChannels=activeChannels;this.MidiEvents=midiEvents;this.NoteOnCount=0;this.EndTime=0};AlphaSynth.Midi.MidiHelper=function(){};$StaticConstructor(function(){AlphaSynth.Midi.MidiHelper.MicroSecondsPerMinute=60000000;AlphaSynth.Midi.MidiHelper.MinChannel=0;AlphaSynth.Midi.MidiHelper.MaxChannel=15;AlphaSynth.Midi.MidiHelper.DrumChannel=9});AlphaSynth.Midi.MidiFile=function(){this.Division=0;this.TrackFormat=AlphaSynth.Midi.MidiTrackFormat.SingleTrack;this.TimingStandard=AlphaSynth.Midi.MidiTimeFormat.TicksPerBeat;this.Tracks=null;this.Division=0;this.TrackFormat=AlphaSynth.Midi.MidiTrackFormat.SingleTrack;this.TimingStandard=AlphaSynth.Midi.MidiTimeFormat.TicksPerBeat};AlphaSynth.Midi.MidiFile.prototype={CombineTracks:function(){var finalTrack=this.MergeTracks();var absEvents=new Array(this.Tracks.length);for(var i=0;i0){switch(input.ReadByte()){case 77:match=1;break;case 84:match=match==1?2:0;break;case 104:match=match==2?3:0;break;case 100:if(match==3)return true;match=0;break}attempts--}return false},ReadHeader:function(input){if(AlphaSynth.Util.IOHelper.ReadInt32BE(input)!=6)throw $CreateException(new System.Exception.ctor$$String("Midi header is invalid."),new Error());this.TrackFormat=AlphaSynth.Util.IOHelper.ReadInt16BE(input);this.Tracks=new Array(AlphaSynth.Util.IOHelper.ReadInt16BE(input));var div=AlphaSynth.Util.IOHelper.ReadInt16BE(input);this.Division=div&32767;this.TimingStandard=((div&32768)>0)?AlphaSynth.Midi.MidiTimeFormat.FramesPerSecond:AlphaSynth.Midi.MidiTimeFormat.TicksPerBeat},ReadTrack:function(input){var instList=[];var drumList=[];var channelList=[];var eventList=[];var noteOnCount=0;var totalTime=0;while(AlphaSynth.Util.IOHelper.Read8BitChars(input,4)!="MTrk"){var length=AlphaSynth.Util.IOHelper.ReadInt32BE(input);while(length>0){length--;input.ReadByte()}}var endPosition=AlphaSynth.Util.IOHelper.ReadInt32BE(input)+input.get_Position();var prevStatus=0;while(input.get_Position()=128&&status<=239){prevStatus=status;eventList.push(AlphaSynth.Midi.MidiFile.ReadVoiceMessage(input,delta,status,input.ReadByte()));noteOnCount=AlphaSynth.Midi.MidiFile.TrackVoiceStats(eventList[eventList.length-1],instList,drumList,channelList,noteOnCount)}else if(status>=240&&status<=247){prevStatus=0;eventList.push(AlphaSynth.Midi.MidiFile.ReadSystemCommonMessage(input,delta,status))}else if(status>=248&&status<=255){eventList.push(AlphaSynth.Midi.MidiFile.ReadRealTimeMessage(input,delta,status))}else{if(prevStatus==0){while((status&128)!=128){status=input.ReadByte()}if(status>=128&&status<=239){prevStatus=status;eventList.push(AlphaSynth.Midi.MidiFile.ReadVoiceMessage(input,delta,status,input.ReadByte()));noteOnCount=AlphaSynth.Midi.MidiFile.TrackVoiceStats(eventList[eventList.length-1],instList,drumList,channelList,noteOnCount)}else if(status>=240&&status<=247){eventList.push(AlphaSynth.Midi.MidiFile.ReadSystemCommonMessage(input,delta,status))}else if(status>=248&&status<=255){eventList.push(AlphaSynth.Midi.MidiFile.ReadRealTimeMessage(input,delta,status))}}else{eventList.push(AlphaSynth.Midi.MidiFile.ReadVoiceMessage(input,delta,prevStatus,status));noteOnCount=AlphaSynth.Midi.MidiFile.TrackVoiceStats(eventList[eventList.length-1],instList,drumList,channelList,noteOnCount)}}}if(input.get_Position()!=endPosition)throw $CreateException(new System.Exception.ctor$$String("The track length was invalid for the current MTrk chunk."),new Error());if(Array.prototype.indexOf.call(channelList,9)!=-1){if(Array.prototype.indexOf.call(drumList,0)==-1)drumList.push(0)}else{if(Array.prototype.indexOf.call(instList,0)==-1)instList.push(0)}var track=new AlphaSynth.Midi.MidiTrack(instList.slice(0),drumList.slice(0),channelList.slice(0),eventList.slice(0));track.NoteOnCount=noteOnCount;track.EndTime=totalTime;return track}};AlphaSynth.Midi.MidiFile.ReadMetaMessage=function(input,delta,status){var metaStatus=input.ReadByte();switch(metaStatus){case AlphaSynth.Midi.Event.MetaEventTypeEnum.SequenceNumber:{var count=input.ReadByte();if(count==0)return new AlphaSynth.Midi.Event.MetaNumberEvent(delta,status,metaStatus,-1);else if(count==2){return new AlphaSynth.Midi.Event.MetaNumberEvent(delta,status,metaStatus,AlphaSynth.Util.IOHelper.ReadInt16BE(input))}else throw $CreateException(new System.Exception.ctor$$String("Invalid sequence number event."),new Error());}case AlphaSynth.Midi.Event.MetaEventTypeEnum.TextEvent:return new AlphaSynth.Midi.Event.MetaTextEvent(delta,status,metaStatus,AlphaSynth.Midi.MidiFile.ReadString(input));case AlphaSynth.Midi.Event.MetaEventTypeEnum.CopyrightNotice:return new AlphaSynth.Midi.Event.MetaTextEvent(delta,status,metaStatus,AlphaSynth.Midi.MidiFile.ReadString(input));case AlphaSynth.Midi.Event.MetaEventTypeEnum.SequenceOrTrackName:return new AlphaSynth.Midi.Event.MetaTextEvent(delta,status,metaStatus,AlphaSynth.Midi.MidiFile.ReadString(input));case AlphaSynth.Midi.Event.MetaEventTypeEnum.InstrumentName:return new AlphaSynth.Midi.Event.MetaTextEvent(delta,status,metaStatus,AlphaSynth.Midi.MidiFile.ReadString(input));case AlphaSynth.Midi.Event.MetaEventTypeEnum.LyricText:return new AlphaSynth.Midi.Event.MetaTextEvent(delta,status,metaStatus,AlphaSynth.Midi.MidiFile.ReadString(input));case AlphaSynth.Midi.Event.MetaEventTypeEnum.MarkerText:return new AlphaSynth.Midi.Event.MetaTextEvent(delta,status,metaStatus,AlphaSynth.Midi.MidiFile.ReadString(input));case AlphaSynth.Midi.Event.MetaEventTypeEnum.CuePoint:return new AlphaSynth.Midi.Event.MetaTextEvent(delta,status,metaStatus,AlphaSynth.Midi.MidiFile.ReadString(input));case AlphaSynth.Midi.Event.MetaEventTypeEnum.PatchName:return new AlphaSynth.Midi.Event.MetaTextEvent(delta,status,metaStatus,AlphaSynth.Midi.MidiFile.ReadString(input));case AlphaSynth.Midi.Event.MetaEventTypeEnum.PortName:return new AlphaSynth.Midi.Event.MetaTextEvent(delta,status,metaStatus,AlphaSynth.Midi.MidiFile.ReadString(input));case AlphaSynth.Midi.Event.MetaEventTypeEnum.MidiChannel:if(input.ReadByte()!=1)throw $CreateException(new System.Exception.ctor$$String("Invalid midi channel event. Expected size of 1."),new Error());return new AlphaSynth.Midi.Event.MetaEvent(delta,status,metaStatus,input.ReadByte());case AlphaSynth.Midi.Event.MetaEventTypeEnum.MidiPort:if(input.ReadByte()!=1)throw $CreateException(new System.Exception.ctor$$String("Invalid midi port event. Expected size of 1."),new Error());return new AlphaSynth.Midi.Event.MetaEvent(delta,status,metaStatus,input.ReadByte());case AlphaSynth.Midi.Event.MetaEventTypeEnum.EndOfTrack:return new AlphaSynth.Midi.Event.MetaEvent(delta,status,metaStatus,input.ReadByte());case AlphaSynth.Midi.Event.MetaEventTypeEnum.Tempo:if(input.ReadByte()!=3)throw $CreateException(new System.Exception.ctor$$String("Invalid tempo event. Expected size of 3."),new Error());return new AlphaSynth.Midi.Event.MetaNumberEvent(delta,status,metaStatus,(input.ReadByte()<<16)|(input.ReadByte()<<8)|input.ReadByte());case AlphaSynth.Midi.Event.MetaEventTypeEnum.SmpteOffset:if(input.ReadByte()!=5)throw $CreateException(new System.Exception.ctor$$String("Invalid smpte event. Expected size of 5."),new Error());return new AlphaSynth.Midi.Event.MetaTextEvent(delta,status,metaStatus,input.ReadByte()+":"+input.ReadByte()+":"+input.ReadByte()+":"+input.ReadByte()+":"+input.ReadByte());case AlphaSynth.Midi.Event.MetaEventTypeEnum.TimeSignature:if(input.ReadByte()!=4)throw $CreateException(new System.Exception.ctor$$String("Invalid time signature event. Expected size of 4."),new Error());return new AlphaSynth.Midi.Event.MetaTextEvent(delta,status,metaStatus,input.ReadByte()+":"+input.ReadByte()+":"+input.ReadByte()+":"+input.ReadByte());case AlphaSynth.Midi.Event.MetaEventTypeEnum.KeySignature:if(input.ReadByte()!=2)throw $CreateException(new System.Exception.ctor$$String("Invalid key signature event. Expected size of 2."),new Error());return new AlphaSynth.Midi.Event.MetaTextEvent(delta,status,metaStatus,input.ReadByte()+":"+input.ReadByte());case AlphaSynth.Midi.Event.MetaEventTypeEnum.SequencerSpecific:var length=AlphaSynth.Midi.MidiFile.ReadVariableLength(input);var data=AlphaSynth.Util.IOHelper.ReadByteArray(input,length);return new AlphaSynth.Midi.Event.MetaDataEvent(delta,status,metaStatus,data)}throw $CreateException(new System.Exception.ctor$$String("Not a valid meta message Status: "+status+" Meta: "+metaStatus),new Error());};AlphaSynth.Midi.MidiFile.ReadRealTimeMessage=function(input,delta,status){switch(status){case AlphaSynth.Midi.Event.RealTimeTypeEnum.MidiClock:return new AlphaSynth.Midi.Event.RealTimeEvent(delta,status,0,0);case AlphaSynth.Midi.Event.RealTimeTypeEnum.MidiTick:return new AlphaSynth.Midi.Event.RealTimeEvent(delta,status,0,0);case AlphaSynth.Midi.Event.RealTimeTypeEnum.MidiStart:return new AlphaSynth.Midi.Event.RealTimeEvent(delta,status,0,0);case AlphaSynth.Midi.Event.RealTimeTypeEnum.MidiContinue:return new AlphaSynth.Midi.Event.RealTimeEvent(delta,status,0,0);case AlphaSynth.Midi.Event.RealTimeTypeEnum.MidiStop:return new AlphaSynth.Midi.Event.RealTimeEvent(delta,status,0,0);case AlphaSynth.Midi.Event.RealTimeTypeEnum.ActiveSense:return new AlphaSynth.Midi.Event.RealTimeEvent(delta,status,0,0);case AlphaSynth.Midi.Event.RealTimeTypeEnum.Reset:return AlphaSynth.Midi.MidiFile.ReadMetaMessage(input,delta,status);default:throw $CreateException(new System.Exception.ctor$$String("The real time message was invalid or unsupported : "+status),new Error());}};AlphaSynth.Midi.MidiFile.ReadSystemCommonMessage=function(input,delta,status){switch(status){case AlphaSynth.Midi.Event.SystemCommonTypeEnum.SystemExclusive2:case AlphaSynth.Midi.Event.SystemCommonTypeEnum.SystemExclusive:{var maker=AlphaSynth.Util.IOHelper.ReadInt16BE(input);if(maker==0){maker=AlphaSynth.Util.IOHelper.ReadInt16BE(input)}else if(maker==247)return null;var data=[];var b=input.ReadByte();while(b!=247){data.push(b);b=input.ReadByte()}return new AlphaSynth.Midi.Event.SystemExclusiveEvent(delta,status,maker,data.slice(0))}case AlphaSynth.Midi.Event.SystemCommonTypeEnum.MtcQuarterFrame:return new AlphaSynth.Midi.Event.SystemCommonEvent(delta,status,input.ReadByte(),0);case AlphaSynth.Midi.Event.SystemCommonTypeEnum.SongPosition:return new AlphaSynth.Midi.Event.SystemCommonEvent(delta,status,input.ReadByte(),input.ReadByte());case AlphaSynth.Midi.Event.SystemCommonTypeEnum.SongSelect:return new AlphaSynth.Midi.Event.SystemCommonEvent(delta,status,input.ReadByte(),0);case AlphaSynth.Midi.Event.SystemCommonTypeEnum.TuneRequest:return new AlphaSynth.Midi.Event.SystemCommonEvent(delta,status,0,0);default:throw $CreateException(new System.Exception.ctor$$String("The system common message was invalid or unsupported : "+status),new Error());}};AlphaSynth.Midi.MidiFile.ReadVoiceMessage=function(input,delta,status,data1){switch((status&240)){case AlphaSynth.Midi.Event.MidiEventTypeEnum.NoteOff:return new AlphaSynth.Midi.Event.MidiEvent(delta,status,data1,input.ReadByte());case AlphaSynth.Midi.Event.MidiEventTypeEnum.NoteOn:var velocity=input.ReadByte();if(velocity==0)status=((status&15)|128);return new AlphaSynth.Midi.Event.MidiEvent(delta,status,data1,velocity);case AlphaSynth.Midi.Event.MidiEventTypeEnum.NoteAftertouch:return new AlphaSynth.Midi.Event.MidiEvent(delta,status,data1,input.ReadByte());case AlphaSynth.Midi.Event.MidiEventTypeEnum.Controller:return new AlphaSynth.Midi.Event.MidiEvent(delta,status,data1,input.ReadByte());case AlphaSynth.Midi.Event.MidiEventTypeEnum.ProgramChange:return new AlphaSynth.Midi.Event.MidiEvent(delta,status,data1,0);case AlphaSynth.Midi.Event.MidiEventTypeEnum.ChannelAftertouch:return new AlphaSynth.Midi.Event.MidiEvent(delta,status,data1,0);case AlphaSynth.Midi.Event.MidiEventTypeEnum.PitchBend:return new AlphaSynth.Midi.Event.MidiEvent(delta,status,data1,input.ReadByte());default:throw $CreateException(new System.Exception.ctor$$String("The status provided was not that of a voice message."),new Error());}};AlphaSynth.Midi.MidiFile.TrackVoiceStats=function(midiEvent,instList,drumList,channelList,noteOnCount){if(midiEvent.get_Command()==AlphaSynth.Midi.Event.MidiEventTypeEnum.NoteOn){var chan=midiEvent.get_Channel();if(Array.prototype.indexOf.call(channelList,chan)==-1)channelList.push(chan);noteOnCount++}else if(midiEvent.get_Command()==AlphaSynth.Midi.Event.MidiEventTypeEnum.ProgramChange){var chan=midiEvent.get_Channel();var prog=midiEvent.get_Data1();if(chan==9){if(Array.prototype.indexOf.call(drumList,prog)==-1)drumList.push(prog)}else{if(Array.prototype.indexOf.call(instList,prog)==-1)instList.push(prog)}}return noteOnCount};AlphaSynth.Midi.MidiFile.ReadVariableLength=function(input){var value=0;var next;do{next=input.ReadByte();value=value<<7;value=value|(next&127)}while((next&128)==128)return value};AlphaSynth.Midi.MidiFile.ReadString=function(input){var length=AlphaSynth.Midi.MidiFile.ReadVariableLength(input);return AlphaSynth.Util.IOHelper.Read8BitChars(input,length)};AlphaSynth.Midi.MidiTrackFormat={SingleTrack:0,MultiTrack:1,MultiSong:2};AlphaSynth.Midi.MidiTimeFormat={TicksPerBeat:0,FramesPerSecond:1};AlphaSynth.Player.SynthPlayerState={Stopped:0,Playing:1,Paused:2};AlphaSynth.Player.SynthPlayer=function(){this._tickPosition=0;this._timePosition=0;this.PositionChanged=null;this.PlayerStateChanged=null;this.Finished=null;this.SoundFontLoad=null;this.SoundFontLoaded=null;this.SoundFontLoadFailed=null;this.MidiLoad=null;this.MidiLoaded=null;this.MidiLoadFailed=null;this.ReadyForPlay=null;this.Output=null;this.Synth=null;this.Sequencer=null;this.State=AlphaSynth.Player.SynthPlayerState.Stopped;this.IsSoundFontLoaded=false;this.IsMidiLoaded=false;AlphaSynth.Util.Logger.Debug("Initializing player");this.State=AlphaSynth.Player.SynthPlayerState.Stopped;this.OnPlayerStateChanged(new AlphaSynth.Player.PlayerStateChangedEventArgs(this.State));AlphaSynth.Util.Logger.Debug("Creating synthesizer");this.Synth=new AlphaSynth.Synthesis.Synthesizer(44100,2,441,3,100);this.Sequencer=new AlphaSynth.Sequencer.MidiFileSequencer(this.Synth);AlphaSynth.Util.Logger.Debug("Opening output");this.Output=AlphaSynth.Platform.Platform.CreateOutput(this.Synth);this.Sequencer.AddFinishedListener($CreateDelegate(this.Output,this.Output.SequencerFinished));this.Output.add_Finished($CreateAnonymousDelegate(this,function(){this.Stop();AlphaSynth.Util.Logger.Debug("Finished playback");this.OnFinished()}));this.Output.add_SampleRequest($CreateAnonymousDelegate(this,function(){this.Sequencer.FillMidiEventQueue();this.Synth.Synthesize();this.Output.AddSamples(this.Synth.SampleBuffer)}));this.Output.add_PositionChanged($CreateAnonymousDelegate(this,function(pos){this.FirePositionChanged(pos)}));this.Output.Open()};AlphaSynth.Player.SynthPlayer.prototype={get_TickPosition:function(){return this._tickPosition},set_TickPosition:function(value){this.set_TimePosition(this.Sequencer.TicksToMillis(value))},get_MasterVolume:function(){return this.Synth.get_MasterVolume()},set_MasterVolume:function(value){this.Synth.set_MasterVolume(value)},get_TimePosition:function(){return this._timePosition},set_TimePosition:function(value){AlphaSynth.Util.Logger.Debug("Seeking to position "+value+"ms");if(this.State==AlphaSynth.Player.SynthPlayerState.Playing){this.Sequencer.Pause();this.Output.Pause()}this.Sequencer.Seek(value);this.Output.Seek(value);if(this.State==AlphaSynth.Player.SynthPlayerState.Playing){this.Sequencer.Play();this.Output.Play()}},get_IsReady:function(){return this.IsSoundFontLoaded&&this.IsMidiLoaded},Play:function(){if(this.State==AlphaSynth.Player.SynthPlayerState.Playing||!this.get_IsReady())return;AlphaSynth.Util.Logger.Debug("Starting playback");this.Sequencer.Play();this.Output.Play();this.State=AlphaSynth.Player.SynthPlayerState.Playing;this.OnPlayerStateChanged(new AlphaSynth.Player.PlayerStateChangedEventArgs(this.State))},Pause:function(){if(this.State!=AlphaSynth.Player.SynthPlayerState.Playing||!this.get_IsReady())return;AlphaSynth.Util.Logger.Debug("Pausing playback");this.Sequencer.Pause();this.Output.Pause();this.State=AlphaSynth.Player.SynthPlayerState.Paused;this.OnPlayerStateChanged(new AlphaSynth.Player.PlayerStateChangedEventArgs(this.State))},PlayPause:function(){if(this.State==AlphaSynth.Player.SynthPlayerState.Playing||!this.get_IsReady())this.Pause();else this.Play()},Stop:function(){if(this.State==AlphaSynth.Player.SynthPlayerState.Stopped||!this.get_IsReady())return;AlphaSynth.Util.Logger.Debug("Stopping playback");this.Sequencer.Stop();this.Synth.Stop();this.Output.Stop();this.State=AlphaSynth.Player.SynthPlayerState.Stopped;this.OnPlayerStateChanged(new AlphaSynth.Player.PlayerStateChangedEventArgs(this.State));this.FirePositionChanged(0)},LoadSoundFontUrl:function(url){if(this.State!=AlphaSynth.Player.SynthPlayerState.Stopped)return;AlphaSynth.Util.Logger.Info("Start loading soundfont from url "+url);var loader=new AlphaSynth.Util.UrlLoader();loader.Url=url;loader.Method="GET";loader.Complete=$CreateDelegate(this,this.LoadSoundFontBytes);loader.Progress=$CreateDelegate(this,this.OnLoaderSoundFontLoad);try{loader.Load()}catch(e){AlphaSynth.Util.Logger.Error("Could not load soundfont from url: "+e)}},LoadSoundFontBytes:function(data){if(this.State!=AlphaSynth.Player.SynthPlayerState.Stopped)return;var input=AlphaSynth.IO.ByteBuffer.FromBuffer(data);try{AlphaSynth.Util.Logger.Info("Loading soundfont from bytes");var bank=new AlphaSynth.Bank.PatchBank();bank.LoadSf2(input);this.Synth.LoadBank(bank);this.IsSoundFontLoaded=true;this.OnSoundFontLoaded();AlphaSynth.Util.Logger.Info("soundFont successfully loaded");if(this.get_IsReady())this.OnReadyForPlay()}catch(e){AlphaSynth.Util.Logger.Error("Could not load soundfont from bytes "+e);this.IsSoundFontLoaded=false;this.Synth.UnloadBank();this.OnSoundFontLoadFailed()}},LoadMidiUrl:function(url){if(this.State!=AlphaSynth.Player.SynthPlayerState.Stopped)return;AlphaSynth.Util.Logger.Info("Start loading midi from url "+url);var loader=new AlphaSynth.Util.UrlLoader();loader.Url=url;loader.Method="GET";loader.Complete=$CreateDelegate(this,this.LoadMidiBytes);loader.Progress=$CreateDelegate(this,this.OnLoaderMidiLoad);try{loader.Load()}catch(e){AlphaSynth.Util.Logger.Error("Could not load midi from url: "+e)}},LoadMidiBytes:function(data){if(this.State!=AlphaSynth.Player.SynthPlayerState.Stopped)return;var input=AlphaSynth.IO.ByteBuffer.FromBuffer(data);try{AlphaSynth.Util.Logger.Info("Loading midi from bytes");var midi=new AlphaSynth.Midi.MidiFile();midi.Load(input);this.Sequencer.LoadMidi(midi);this.IsMidiLoaded=true;this.OnMidiLoaded();AlphaSynth.Util.Logger.Info("Midi successfully loaded");if(this.get_IsReady())this.OnReadyForPlay();this.FirePositionChanged(0)}catch(e){AlphaSynth.Util.Logger.Error("Could not load midi from bytes "+e);this.IsMidiLoaded=false;this.Sequencer.UnloadMidi();this.OnMidiLoadFailed()}},OnLoaderSoundFontLoad:function(loaded,total){AlphaSynth.Util.Logger.Debug("Soundfont downloading: "+loaded+"/"+total+" bytes");this.OnSoundFontLoad(new AlphaSynth.Player.ProgressEventArgs(loaded,total))},OnLoaderMidiLoad:function(loaded,total){AlphaSynth.Util.Logger.Debug("Midi downloading: "+loaded+"/"+total+" bytes");this.OnMidiLoad(new AlphaSynth.Player.ProgressEventArgs(loaded,total))},FirePositionChanged:function(pos){var endTime=(((this.Sequencer.EndTime/this.Synth.SampleRate)|0)*1000);var currentTime=pos;var endTick=this.Sequencer.MillisToTicks(endTime);var currentTick=this.Sequencer.MillisToTicks(currentTime);this._tickPosition=currentTick;this._timePosition=currentTime;AlphaSynth.Util.Logger.Debug("Position changed: (time: "+currentTime+"/"+endTime+", tick: "+currentTick+"/"+endTime+")");this.OnPositionChanged(new AlphaSynth.Player.PositionChangedEventArgs(currentTime,endTime,currentTick,endTick))},add_PositionChanged:function(value){this.PositionChanged=$CombineDelegates(this.PositionChanged,value)},remove_PositionChanged:function(value){this.PositionChanged=$RemoveDelegate(this.PositionChanged,value)},OnPositionChanged:function(e){var handler=this.PositionChanged;if(handler!=null)handler(this,e)},add_PlayerStateChanged:function(value){this.PlayerStateChanged=$CombineDelegates(this.PlayerStateChanged,value)},remove_PlayerStateChanged:function(value){this.PlayerStateChanged=$RemoveDelegate(this.PlayerStateChanged,value)},OnPlayerStateChanged:function(e){var handler=this.PlayerStateChanged;if(handler!=null)handler(this,e)},add_Finished:function(value){this.Finished=$CombineDelegates(this.Finished,value)},remove_Finished:function(value){this.Finished=$RemoveDelegate(this.Finished,value)},OnFinished:function(){var handler=this.Finished;if(handler!=null)handler(this,AlphaSynth.Player.EmptyEventArgs.Instance)},add_SoundFontLoad:function(value){this.SoundFontLoad=$CombineDelegates(this.SoundFontLoad,value)},remove_SoundFontLoad:function(value){this.SoundFontLoad=$RemoveDelegate(this.SoundFontLoad,value)},OnSoundFontLoad:function(e){var handler=this.SoundFontLoad;if(handler!=null)handler(this,e)},add_SoundFontLoaded:function(value){this.SoundFontLoaded=$CombineDelegates(this.SoundFontLoaded,value)},remove_SoundFontLoaded:function(value){this.SoundFontLoaded=$RemoveDelegate(this.SoundFontLoaded,value)},OnSoundFontLoaded:function(){var handler=this.SoundFontLoaded;if(handler!=null)handler(this,AlphaSynth.Player.EmptyEventArgs.Instance)},add_SoundFontLoadFailed:function(value){this.SoundFontLoadFailed=$CombineDelegates(this.SoundFontLoadFailed,value)},remove_SoundFontLoadFailed:function(value){this.SoundFontLoadFailed=$RemoveDelegate(this.SoundFontLoadFailed,value)},OnSoundFontLoadFailed:function(){var handler=this.SoundFontLoadFailed;if(handler!=null)handler(this,AlphaSynth.Player.EmptyEventArgs.Instance)},add_MidiLoad:function(value){this.MidiLoad=$CombineDelegates(this.MidiLoad,value)},remove_MidiLoad:function(value){this.MidiLoad=$RemoveDelegate(this.MidiLoad,value)},OnMidiLoad:function(e){var handler=this.MidiLoad;if(handler!=null)handler(this,e)},add_MidiLoaded:function(value){this.MidiLoaded=$CombineDelegates(this.MidiLoaded,value)},remove_MidiLoaded:function(value){this.MidiLoaded=$RemoveDelegate(this.MidiLoaded,value)},OnMidiLoaded:function(){var handler=this.MidiLoaded;if(handler!=null)handler(this,AlphaSynth.Player.EmptyEventArgs.Instance)},add_MidiLoadFailed:function(value){this.MidiLoadFailed=$CombineDelegates(this.MidiLoadFailed,value)},remove_MidiLoadFailed:function(value){this.MidiLoadFailed=$RemoveDelegate(this.MidiLoadFailed,value)},OnMidiLoadFailed:function(){var handler=this.MidiLoadFailed;if(handler!=null)handler(this,AlphaSynth.Player.EmptyEventArgs.Instance)},add_ReadyForPlay:function(value){this.ReadyForPlay=$CombineDelegates(this.ReadyForPlay,value)},remove_ReadyForPlay:function(value){this.ReadyForPlay=$RemoveDelegate(this.ReadyForPlay,value)},OnReadyForPlay:function(){var handler=this.ReadyForPlay;if(handler!=null)handler(this,AlphaSynth.Player.EmptyEventArgs.Instance)}};AlphaSynth.Player.EmptyEventArgs=function(){};$StaticConstructor(function(){AlphaSynth.Player.EmptyEventArgs.Instance=new AlphaSynth.Player.EmptyEventArgs()});AlphaSynth.Player.ProgressEventArgs=function(loaded,total){this.Loaded=0;this.Total=0;this.Loaded=loaded;this.Total=total};AlphaSynth.Player.PlayerStateChangedEventArgs=function(state){this.State=AlphaSynth.Player.SynthPlayerState.Stopped;this.State=state};AlphaSynth.Player.PositionChangedEventArgs=function(currentTime,endTime,currentTick,endTick){this.CurrentTime=0;this.EndTime=0;this.CurrentTick=0;this.EndTick=0;this.CurrentTime=currentTime;this.EndTime=endTime;this.CurrentTick=currentTick;this.EndTick=endTick};AlphaSynth.Sequencer=AlphaSynth.Sequencer||{};AlphaSynth.Sequencer.MidiFileSequencer=function(synth){this._synthData=null;this._tempoChanges=null;this._finished=null;this._blockList=null;this._playbackRate=0;this._eventIndex=0;this._division=0;this.Synth=null;this.IsPlaying=false;this.CurrentTempo=0;this.CurrentTime=0;this.EndTime=0;this.Synth=synth;this._eventIndex=0;this._division=0;this._playbackRate=1;this.IsPlaying=false;this._blockList=new Array(16);this._finished=[];synth.AddMidiMessageProcessed($CreateDelegate(this,this.MidiEventProcessed))};AlphaSynth.Sequencer.MidiFileSequencer.prototype={get_IsMidiLoaded:function(){return this._synthData!=null},get_PlaySpeed:function(){return this._playbackRate},set_PlaySpeed:function(value){this._playbackRate=AlphaSynth.Synthesis.SynthHelper.ClampF(value,0.125,8)},AddFinishedListener:function(listener){this._finished.push(listener)},FireFinished:function(){for(var i=0;ithis.CurrentTime){this.SilentProcess(targetSampleTime-this.CurrentTime)}else if(targetSampleTime=this.EndTime){this.CurrentTime=0;this._eventIndex=0;this.IsPlaying=false;this.Synth.NoteOffAll(true);this.Synth.ResetPrograms();this.Synth.ResetSynthControls();this.FireFinished();return}var newMSize=((this.Synth.MicroBufferSize*this._playbackRate))|0;var endSample=this.CurrentTime+(newMSize*this.Synth.MicroBufferCount);for(var x=0;x1||midiFile.Tracks[0].EndTime==0)midiFile.CombineTracks();this._synthData=new Array(midiFile.Tracks[0].MidiEvents.length);this._division=midiFile.Division;this._eventIndex=0;this.CurrentTime=0;this.CurrentTempo=bpm|0;var absDelta=0;var absTick=0;var absTime=0;for(var x=0;x>10);this._controllerSource=((raw&127)&65535)};AlphaSynth.Sf2.Instrument=function(){this.Name=null;this.Zones=null};AlphaSynth.Sf2.Generator=function(input){this._rawAmount=0;this.GeneratorType=AlphaSynth.Sf2.GeneratorEnum.StartAddressOffset;this.GeneratorType=AlphaSynth.Util.IOHelper.ReadUInt16LE(input);this._rawAmount=AlphaSynth.Util.IOHelper.ReadUInt16LE(input)};AlphaSynth.Sf2.Generator.prototype={get_AmountInt16:function(){return AlphaSynth.Platform.TypeUtils.ToInt16(this._rawAmount)},set_AmountInt16:function(value){this._rawAmount=(value&65535)},get_LowByteAmount:function(){return(this._rawAmount&255&255)},set_LowByteAmount:function(value){this._rawAmount=((this._rawAmount&65280)+(value&255)&65535)},get_HighByteAmount:function(){return((this._rawAmount&65280)>>8&255)},set_HighByteAmount:function(value){this._rawAmount=((this._rawAmount&255)+((value&255)<<8)&65535)}};AlphaSynth.Sf2.SFSampleLink={MonoSample:1,RightSample:2,LeftSample:4,LinkedSample:8,RomMonoSample:32769,RomRightSample:32770,RomLeftSample:32772,RomLinkedSample:32776};AlphaSynth.Sf2.GeneratorEnum={StartAddressOffset:0,EndAddressOffset:1,StartLoopAddressOffset:2,EndLoopAddressOffset:3,StartAddressCoarseOffset:4,ModulationLFOToPitch:5,VibratoLFOToPitch:6,ModulationEnvelopeToPitch:7,InitialFilterCutoffFrequency:8,InitialFilterQ:9,ModulationLFOToFilterCutoffFrequency:10,ModulationEnvelopeToFilterCutoffFrequency:11,EndAddressCoarseOffset:12,ModulationLFOToVolume:13,Unused1:14,ChorusEffectsSend:15,ReverbEffectsSend:16,Pan:17,Unused2:18,Unused3:19,Unused4:20,DelayModulationLFO:21,FrequencyModulationLFO:22,DelayVibratoLFO:23,FrequencyVibratoLFO:24,DelayModulationEnvelope:25,AttackModulationEnvelope:26,HoldModulationEnvelope:27,DecayModulationEnvelope:28,SustainModulationEnvelope:29,ReleaseModulationEnvelope:30,KeyNumberToModulationEnvelopeHold:31,KeyNumberToModulationEnvelopeDecay:32,DelayVolumeEnvelope:33,AttackVolumeEnvelope:34,HoldVolumeEnvelope:35,DecayVolumeEnvelope:36,SustainVolumeEnvelope:37,ReleaseVolumeEnvelope:38,KeyNumberToVolumeEnvelopeHold:39,KeyNumberToVolumeEnvelopeDecay:40,Instrument:41,Reserved1:42,KeyRange:43,VelocityRange:44,StartLoopAddressCoarseOffset:45,KeyNumber:46,Velocity:47,InitialAttenuation:48,Reserved2:49,EndLoopAddressCoarseOffset:50,CoarseTune:51,FineTune:52,SampleID:53,SampleModes:54,Reserved3:55,ScaleTuning:56,ExclusiveClass:57,OverridingRootKey:58,Unused5:59,UnusedEnd:60};AlphaSynth.Sf2.TransformEnum={Linear:0,AbsoluteValue:2};AlphaSynth.Sf2.ControllerSourceEnum={NoController:0,NoteOnVelocity:2,NoteOnKeyNumber:3,PolyPressure:10,ChannelPressure:13,PitchWheel:14,PitchWheelSensitivity:16,Link:127};AlphaSynth.Sf2.DirectionEnum={MinToMax:0,MaxToMin:1};AlphaSynth.Sf2.PolarityEnum={Unipolar:0,Bipolar:1};AlphaSynth.Sf2.SourceTypeEnum={Linear:0,Concave:1,Convex:2,Switch:3};AlphaSynth.Synthesis=AlphaSynth.Synthesis||{};AlphaSynth.Synthesis.CCValue=function(coarse,fine){this._coarseValue=0;this._fineValue=0;this._combined=0;this._coarseValue=coarse;this._fineValue=fine;this._combined=0;this.UpdateCombined()};AlphaSynth.Synthesis.CCValue=function(combined){this._coarseValue=0;this._fineValue=0;this._combined=0;this._coarseValue=0;this._fineValue=0;this._combined=combined;this.UpdateCoarseFinePair()};AlphaSynth.Synthesis.CCValue.prototype={get_Coarse:function(){return this._coarseValue},set_Coarse:function(value){this._coarseValue=value;this.UpdateCombined()},get_Fine:function(){return this._fineValue},set_Fine:function(value){this._fineValue=value;this.UpdateCombined()},get_Combined:function(){return this._combined},set_Combined:function(value){this._combined=value;this.UpdateCoarseFinePair()},UpdateCombined:function(){if(AlphaSynth.Platform.TypeUtils.IsLittleEndian)this._combined=(((this._coarseValue<<7)|this._fineValue))|0;else this._combined=(((this._fineValue<<7)|this._coarseValue))|0},UpdateCoarseFinePair:function(){if(AlphaSynth.Platform.TypeUtils.IsLittleEndian){this._coarseValue=(this._combined>>7);this._fineValue=(this._combined&127)}else{this._fineValue=(this._combined>>7);this._coarseValue=(this._combined&127)}}};AlphaSynth.Synthesis.SynthParameters=function(synth){this.Program=0;this.BankSelect=0;this.ChannelAfterTouch=0;this.Pan=null;this.Volume=null;this.Expression=null;this.ModRange=null;this.PitchBend=null;this.PitchBendRangeCoarse=0;this.PitchBendRangeFine=0;this.MasterCoarseTune=0;this.MasterFineTune=null;this.HoldPedal=false;this.LegatoPedal=false;this.Rpn=null;this.Synth=null;this.CurrentVolume=0;this.CurrentPitch=0;this.CurrentMod=0;this.CurrentPan=null;this.Synth=synth;this.Pan=new AlphaSynth.Synthesis.CCValue(0);this.Volume=new AlphaSynth.Synthesis.CCValue(0);this.Expression=new AlphaSynth.Synthesis.CCValue(0);this.ModRange=new AlphaSynth.Synthesis.CCValue(0);this.PitchBend=new AlphaSynth.Synthesis.CCValue(0);this.MasterFineTune=new AlphaSynth.Synthesis.CCValue(0);this.Rpn=new AlphaSynth.Synthesis.CCValue(0);this.CurrentPan=new AlphaSynth.Bank.Components.PanComponent();this.ResetControllers()};AlphaSynth.Synthesis.SynthParameters.prototype={ResetControllers:function(){this.Program=0;this.BankSelect=0;this.ChannelAfterTouch=0;this.Pan.set_Combined(8192);this.Volume.set_Fine(0);this.Volume.set_Coarse(100);this.Expression.set_Combined(16383);this.ModRange.set_Combined(0);this.PitchBend.set_Combined(8192);this.PitchBendRangeCoarse=2;this.PitchBendRangeFine=0;this.MasterCoarseTune=0;this.MasterFineTune.set_Combined(8192);this.HoldPedal=false;this.LegatoPedal=false;this.Rpn.set_Combined(16383);this.UpdateCurrentPan();this.UpdateCurrentPitch();this.UpdateCurrentVolume()},UpdateCurrentVolume:function(){this.CurrentVolume=this.Expression.get_Combined()/16383;this.CurrentVolume*=this.CurrentVolume},UpdateCurrentPitch:function(){this.CurrentPitch=((((this.PitchBend.get_Combined()-8192)/8192)*((100*this.PitchBendRangeCoarse)+this.PitchBendRangeFine)))|0},UpdateCurrentMod:function(){this.CurrentMod=((100*(this.ModRange.get_Combined()/16383)))|0},UpdateCurrentPan:function(){var value=1.5707963267949*(this.Pan.get_Combined()/16383);this.CurrentPan.Left=Math.cos(value);this.CurrentPan.Right=Math.sin(value)}};AlphaSynth.Synthesis.VoiceParameters=function(){this.mix1=0;this.mix2=0;this.Channel=0;this.Note=0;this.Velocity=0;this.NoteOffPending=false;this.State=AlphaSynth.Synthesis.VoiceStateEnum.Stopped;this.PitchOffset=0;this.VolOffset=0;this.BlockBuffer=null;this.PData=null;this.SynthParams=null;this.GeneratorParams=null;this.Envelopes=null;this.Filters=null;this.Lfos=null;this.BlockBuffer=new Float32Array(64);this.PData=new Array(4);this.GeneratorParams=new Array(4);this.Envelopes=new Array(4);this.Filters=new Array(4);this.Lfos=new Array(4);for(var x=0;x<4;x++){this.GeneratorParams[x]=new AlphaSynth.Bank.Components.Generators.GeneratorParameters();this.Envelopes[x]=new AlphaSynth.Bank.Components.Envelope();this.Filters[x]=new AlphaSynth.Bank.Components.Filter();this.Lfos[x]=new AlphaSynth.Bank.Components.Lfo()}};AlphaSynth.Synthesis.VoiceParameters.prototype={get_CombinedVolume:function(){return this.mix1+this.mix2},Reset:function(){this.NoteOffPending=false;this.PitchOffset=0;this.VolOffset=0;for(var i=0;i0){var voice=this.FreeVoices.First.Value;this.FreeVoices.RemoveFirst();return voice}switch(this.StealingMethod){case AlphaSynth.Synthesis.VoiceStealingMethod.Oldest:return this.StealOldest();case AlphaSynth.Synthesis.VoiceStealingMethod.Quietest:return this.StealQuietestVoice();default:return null}},AddToRegistry:function(voice){var node=this._vNodes.RemoveLast();node.Value=voice;node.Next=this.Registry[voice.VoiceParams.Channel][voice.VoiceParams.Note];this.Registry[voice.VoiceParams.Channel][voice.VoiceParams.Note]=node},RemoveFromRegistry:function(channel,note){var node=this.Registry[channel][note];while(node!=null){this._vNodes.AddLast(node);node=node.Next}this.Registry[channel][note]=null},RemoveVoiceFromRegistry:function(voice){var node=this.Registry[voice.VoiceParams.Channel][voice.VoiceParams.Note];if(node==null)return;if(node.Value==voice){this.Registry[voice.VoiceParams.Channel][voice.VoiceParams.Note]=node.Next;this._vNodes.AddLast(node)}else{var node2=node;node=node.Next;while(node!=null){if(node.Value==voice){node2.Next=node.Next;this._vNodes.AddLast(node);return}node2=node;node=node.Next}}},ClearRegistry:function(){var node=this.ActiveVoices.First;while(node!=null){var vnode=this.Registry[node.Value.VoiceParams.Channel][node.Value.VoiceParams.Note];while(vnode!=null){this._vNodes.AddLast(vnode);vnode=vnode.Next}this.Registry[node.Value.VoiceParams.Channel][node.Value.VoiceParams.Note]=null;node=node.get_Next()}},UnloadPatches:function(){for(var $i8=0,$t8=this._voicePool,$l8=$t8.length,v=$t8[$i8];$i8<$l8;$i8++,v=$t8[$i8]){v.Configure(0,0,0,null,null);var current=this._vNodes.First;while(current!=null){current.Value.Value=null;current=current.get_Next()}}},StealOldest:function(){var node=this.ActiveVoices.First;while(node!=null&&node.Value.VoiceParams.State==AlphaSynth.Synthesis.VoiceStateEnum.Playing)node=node.get_Next();if(node==null)node=this.ActiveVoices.First;this.RemoveVoiceFromRegistry(node.Value);this.ActiveVoices.Remove(node);node.Value.VoiceParams.State=AlphaSynth.Synthesis.VoiceStateEnum.Stopped;return node.Value},StealQuietestVoice:function(){var voiceVolume=1000;var quietest=null;var node=this.ActiveVoices.First;while(node!=null){if(node.Value.VoiceParams.State!=AlphaSynth.Synthesis.VoiceStateEnum.Playing){var volume=node.Value.VoiceParams.get_CombinedVolume();if(volume=max)return max;else return value};AlphaSynth.Synthesis.SynthHelper.ClampF=function(value,min,max){if(value<=min)return min;else if(value>=max)return max;else return value};AlphaSynth.Synthesis.SynthHelper.ClampI=function(value,min,max){if(value<=min)return min;else if(value>=max)return max;else return value};AlphaSynth.Synthesis.SynthHelper.ClampS=function(value,min,max){if(value<=min)return min;else if(value>=max)return max;else return value};AlphaSynth.Synthesis.SynthHelper.NearestPowerOfTwo=function(value){return Math.pow(2,Math.Round(Math.Log(value,2)))};AlphaSynth.Synthesis.SynthHelper.SamplesFromTime=function(sampleRate,seconds){return sampleRate*seconds};AlphaSynth.Synthesis.SynthHelper.TimeFromSamples=function(sampleRate,samples){return samples/sampleRate};AlphaSynth.Synthesis.SynthHelper.DBtoLinear=function(dBvalue){return Math.pow(10,(dBvalue/20))};AlphaSynth.Synthesis.SynthHelper.LineartoDB=function(linearvalue){return 20*(Math.log(linearvalue)/Math.LN10)};AlphaSynth.Synthesis.SynthHelper.FrequencyToKey=function(frequency,rootkey){return 12*Math.Log(frequency/440,2)+rootkey};AlphaSynth.Synthesis.SynthHelper.KeyToFrequency=function(key,rootkey){return Math.pow(2,(key-rootkey)/12)*440};AlphaSynth.Synthesis.SynthHelper.SemitoneToPitch=function(key){if(key<-127)key=-127;else if(key>127)key=127;return AlphaSynth.Util.Tables.SemitoneTable(127+key)};AlphaSynth.Synthesis.SynthHelper.CentsToPitch=function(cents){var key=(cents/100)|0;cents-=key*100;if(key<-127)key=-127;else if(key>127)key=127;return AlphaSynth.Util.Tables.SemitoneTable(127+key)*AlphaSynth.Util.Tables.CentTable(100+cents)};AlphaSynth.Synthesis.SynthEvent=function(e){this.Event=null;this.Delta=0;this.Event=e};AlphaSynth.Synthesis.Synthesizer=function(sampleRate,audioChannels,bufferSize,bufferCount,polyphony){this._voiceManager=null;this._synthChannels=null;this._masterVolume=0;this._synthGain=0;this._midiMessageProcessed=null;this._layerList=null;this.MidiEventQueue=null;this.MidiEventCounts=null;this.SampleBuffer=null;this.AudioChannels=0;this.LittleEndian=false;this.SoundBank=null;this.SampleRate=0;this.MicroBufferSize=0;this.MicroBufferCount=0;var MinSampleRate=8000;var MaxSampleRate=96000;if(sampleRateMaxSampleRate)throw $CreateException(new System.Exception.ctor$$String("Invalid paramater: (sampleRate) Valid ranges are "+MinSampleRate+" to "+MaxSampleRate),new Error());if(audioChannels<1||audioChannels>2)throw $CreateException(new System.Exception.ctor$$String("Invalid paramater: (audioChannels) Valid ranges are "+1+" to "+2),new Error());this._midiMessageProcessed=[];this._synthGain=0.35;this._masterVolume=1;this.SampleRate=sampleRate;this.AudioChannels=audioChannels;this.MicroBufferSize=AlphaSynth.Synthesis.SynthHelper.ClampI(bufferSize,((0.001*sampleRate))|0,((0.05*sampleRate))|0);this.MicroBufferSize=((Math.ceil(this.MicroBufferSize/64)*64))|0;this.MicroBufferCount=(Math.max(1,bufferCount));this.SampleBuffer=new Float32Array((this.MicroBufferSize*this.MicroBufferCount*audioChannels));this.LittleEndian=true;this._synthChannels=new Array(16);for(var x=0;x0){for(var i=0;i=0;i--){if(this._layerList[x].ExclusiveGroupTarget==this._layerList[i].ExclusiveGroupTarget){notseen=false;break}}if(this._layerList[x].ExclusiveGroupTarget!=0&¬seen){var node=this._voiceManager.ActiveVoices.First;while(node!=null){if(this._layerList[x].ExclusiveGroupTarget==node.Value.Patch.ExclusiveGroup){node.Value.Stop();this._voiceManager.RemoveVoiceFromRegistry(node.Value)}node=node.get_Next()}}}for(var x=0;x63))this.ReleaseHoldPedal(channel);this._synthChannels[channel].HoldPedal=data2>63;break;case AlphaSynth.Midi.Event.ControllerTypeEnum.LegatoPedal:this._synthChannels[channel].LegatoPedal=data2>63;break;case AlphaSynth.Midi.Event.ControllerTypeEnum.NonRegisteredParameterCourse:this._synthChannels[channel].Rpn.set_Combined(16383);break;case AlphaSynth.Midi.Event.ControllerTypeEnum.NonRegisteredParameterFine:this._synthChannels[channel].Rpn.set_Combined(16383);break;case AlphaSynth.Midi.Event.ControllerTypeEnum.RegisteredParameterCourse:this._synthChannels[channel].Rpn.set_Coarse(data2);break;case AlphaSynth.Midi.Event.ControllerTypeEnum.RegisteredParameterFine:this._synthChannels[channel].Rpn.set_Fine(data2);break;case AlphaSynth.Midi.Event.ControllerTypeEnum.AllNotesOff:this.NoteOffAll(false);break;case AlphaSynth.Midi.Event.ControllerTypeEnum.DataEntryCoarse:switch(this._synthChannels[channel].Rpn.get_Combined()){case 0:this._synthChannels[channel].PitchBendRangeCoarse=data2;this._synthChannels[channel].UpdateCurrentPitch();break;case 1:this._synthChannels[channel].MasterFineTune.set_Coarse(data2);break;case 2:this._synthChannels[channel].MasterCoarseTune=((data2-64))|0;break}break;case AlphaSynth.Midi.Event.ControllerTypeEnum.DataEntryFine:switch(this._synthChannels[channel].Rpn.get_Combined()){case 0:this._synthChannels[channel].PitchBendRangeFine=data2;this._synthChannels[channel].UpdateCurrentPitch();break;case 1:this._synthChannels[channel].MasterFineTune.set_Fine(data2);break}break;case AlphaSynth.Midi.Event.ControllerTypeEnum.ResetControllers:this._synthChannels[channel].Expression.set_Combined(16383);this._synthChannels[channel].ModRange.set_Combined(0);if(this._synthChannels[channel].HoldPedal)this.ReleaseHoldPedal(channel);this._synthChannels[channel].HoldPedal=false;this._synthChannels[channel].LegatoPedal=false;this._synthChannels[channel].Rpn.set_Combined(16383);this._synthChannels[channel].PitchBend.set_Combined(8192);this._synthChannels[channel].ChannelAfterTouch=0;this._synthChannels[channel].UpdateCurrentPitch();this._synthChannels[channel].UpdateCurrentVolume();break;default:return}break;case AlphaSynth.Midi.Event.MidiEventTypeEnum.ProgramChange:this._synthChannels[channel].Program=data1;break;case AlphaSynth.Midi.Event.MidiEventTypeEnum.ChannelAftertouch:this._synthChannels[channel].ChannelAfterTouch=data2;break;case AlphaSynth.Midi.Event.MidiEventTypeEnum.PitchBend:this._synthChannels[channel].PitchBend.set_Coarse(data2);this._synthChannels[channel].PitchBend.set_Fine(data1);this._synthChannels[channel].UpdateCurrentPitch();break}this.FireMidiMessageProcessed(e)},AddMidiMessageProcessed:function(listener){this._midiMessageProcessed.push(listener)},FireMidiMessageProcessed:function(e){for(var i=0;i>16)/32768}};$Inherit(AlphaSynth.Util.PcmData16Bit,AlphaSynth.Util.PcmData);AlphaSynth.Util.PcmData24Bit=function(bits,pcmData,isDataInLittleEndianFormat){AlphaSynth.Util.PcmData.call(this,bits,pcmData,isDataInLittleEndianFormat)};AlphaSynth.Util.PcmData24Bit.prototype={get_Item:function(index){index*=3;return(((this.Data[index]|(this.Data[index+1]<<8)|(this.Data[index+2]<<16))<<12)>>12)/8388608}};$Inherit(AlphaSynth.Util.PcmData24Bit,AlphaSynth.Util.PcmData);AlphaSynth.Util.PcmData32Bit=function(bits,pcmData,isDataInLittleEndianFormat){AlphaSynth.Util.PcmData.call(this,bits,pcmData,isDataInLittleEndianFormat)};AlphaSynth.Util.PcmData32Bit.prototype={get_Item:function(index){index*=4;return(this.Data[index]|(this.Data[index+1]<<8)|(this.Data[index+2]<<16)|(this.Data[index+3]<<24))/2.147484E+09}};$Inherit(AlphaSynth.Util.PcmData32Bit,AlphaSynth.Util.PcmData);AlphaSynth.Util.Tables=function(){};$StaticConstructor(function(){AlphaSynth.Util.Tables._isInitialized=false;AlphaSynth.Util.Tables._envelopeTables=null;AlphaSynth.Util.Tables._semitoneTable=null;AlphaSynth.Util.Tables._centTable=null;AlphaSynth.Util.Tables._sincTable=null});AlphaSynth.Util.Tables.EnvelopeTables=function(index){if(!AlphaSynth.Util.Tables._isInitialized)AlphaSynth.Util.Tables.Init();return AlphaSynth.Util.Tables._envelopeTables[index]};AlphaSynth.Util.Tables.SemitoneTable=function(index){if(!AlphaSynth.Util.Tables._isInitialized)AlphaSynth.Util.Tables.Init();return AlphaSynth.Util.Tables._semitoneTable[index]};AlphaSynth.Util.Tables.CentTable=function(index){if(!AlphaSynth.Util.Tables._isInitialized)AlphaSynth.Util.Tables.Init();return AlphaSynth.Util.Tables._centTable[index]};AlphaSynth.Util.Tables.SincTable=function(index){if(!AlphaSynth.Util.Tables._isInitialized)AlphaSynth.Util.Tables.Init();return AlphaSynth.Util.Tables._sincTable[index]};AlphaSynth.Util.Tables.Init=function(){var EnvelopeSize=64;var ExponentialCoeff=0.09;AlphaSynth.Util.Tables._envelopeTables=new Array(4);AlphaSynth.Util.Tables._envelopeTables[0]=(AlphaSynth.Util.Tables.RemoveDenormals(AlphaSynth.Util.Tables.CreateSustainTable(EnvelopeSize)));AlphaSynth.Util.Tables._envelopeTables[1]=(AlphaSynth.Util.Tables.RemoveDenormals(AlphaSynth.Util.Tables.CreateLinearTable(EnvelopeSize)));AlphaSynth.Util.Tables._envelopeTables[2]=(AlphaSynth.Util.Tables.RemoveDenormals(AlphaSynth.Util.Tables.CreateExponentialTable(EnvelopeSize,ExponentialCoeff)));AlphaSynth.Util.Tables._envelopeTables[3]=(AlphaSynth.Util.Tables.RemoveDenormals(AlphaSynth.Util.Tables.CreateSineTable(EnvelopeSize)));AlphaSynth.Util.Tables._centTable=AlphaSynth.Util.Tables.CreateCentTable();AlphaSynth.Util.Tables._semitoneTable=AlphaSynth.Util.Tables.CreateSemitoneTable();AlphaSynth.Util.Tables._sincTable=AlphaSynth.Util.Tables.CreateSincTable(16,64,0.43,AlphaSynth.Util.Tables.HammingWindow);AlphaSynth.Util.Tables._isInitialized=true};AlphaSynth.Util.Tables.CreateSquareTable=function(size,k){var FourOverPi=1.27323954473516;var squaretable=new Float32Array(size);var inc=1/size;var phase=0;for(var x=0;x1E-05)sinc=Math.sin(sinc)/sinc;else sinc=1;table[x*64+y]=(gain*sinc*windowFunction(a,windowSize))}}return table};AlphaSynth.Util.SynthConstants=function(){};$StaticConstructor(function(){AlphaSynth.Util.SynthConstants.InterpolationMode=AlphaSynth.Bank.Components.Generators.Interpolation.Linear;AlphaSynth.Util.SynthConstants.SampleRate=44100;AlphaSynth.Util.SynthConstants.Pi=3.14159265358979;AlphaSynth.Util.SynthConstants.TwoPi=6.28318530717958;AlphaSynth.Util.SynthConstants.HalfPi=1.5707963267949;AlphaSynth.Util.SynthConstants.InverseSqrtOfTwo=0.707106781186;AlphaSynth.Util.SynthConstants.DefaultLfoFrequency=8;AlphaSynth.Util.SynthConstants.DefaultModDepth=100;AlphaSynth.Util.SynthConstants.DefaultPolyphony=40;AlphaSynth.Util.SynthConstants.MinPolyphony=5;AlphaSynth.Util.SynthConstants.MaxPolyphony=250;AlphaSynth.Util.SynthConstants.DefaultBlockSize=64;AlphaSynth.Util.SynthConstants.MaxBufferSize=0.05;AlphaSynth.Util.SynthConstants.MinBufferSize=0.001;AlphaSynth.Util.SynthConstants.DenormLimit=1E-38;AlphaSynth.Util.SynthConstants.NonAudible=1E-05;AlphaSynth.Util.SynthConstants.SincWidth=16;AlphaSynth.Util.SynthConstants.SincResolution=64;AlphaSynth.Util.SynthConstants.MaxVoiceComponents=4;AlphaSynth.Util.SynthConstants.DefaultChannelCount=16;AlphaSynth.Util.SynthConstants.DefaultKeyCount=128});AlphaSynth.Util.IOHelper=function(){};AlphaSynth.Util.IOHelper.ReadInt32LE=function(input){var ch1=input.ReadByte();var ch2=input.ReadByte();var ch3=input.ReadByte();var ch4=input.ReadByte();return((ch4<<24)|(ch3<<16)|(ch2<<8)|(ch1<<0))};AlphaSynth.Util.IOHelper.ReadUInt16LE=function(input){var ch1=input.ReadByte();var ch2=input.ReadByte();return((ch2<<8)|(ch1<<0)&65535)};AlphaSynth.Util.IOHelper.ReadInt16LE=function(input){var ch1=input.ReadByte();var ch2=input.ReadByte();return AlphaSynth.Platform.TypeUtils.ToInt16((ch2<<8)|(ch1<<0))};AlphaSynth.Util.IOHelper.ReadInt32BE=function(input){var ch1=input.ReadByte();var ch2=input.ReadByte();var ch3=input.ReadByte();var ch4=input.ReadByte();return((ch1<<24)|(ch2<<16)|(ch3<<8)|(ch4<<0))};AlphaSynth.Util.IOHelper.ReadUInt16BE=function(input){var ch1=input.ReadByte();var ch2=input.ReadByte();return((ch1<<8)|(ch2<<0)&65535)};AlphaSynth.Util.IOHelper.ReadInt16BE=function(input){var ch1=input.ReadByte();var ch2=input.ReadByte();return AlphaSynth.Platform.TypeUtils.ToInt16((ch1<<8)|(ch2<<0))};AlphaSynth.Util.IOHelper.ReadByteArray=function(input,length){var v=new Uint8Array(length);input.Read(v,0,length);return v};AlphaSynth.Util.IOHelper.Read8BitChars=function(input,length){var s=new Array();for(var i=0;i=0)return t.substr(0,z);return t};AlphaSynth.Util.IOHelper.ReadSInt8=function(input){var v=input.ReadByte();return((((v&255)>>7)*(-256))+(v&255))};AlphaSynth.Util.IOHelper.ReadUInt32=function(input){var ch1=input.ReadByte();var ch2=input.ReadByte();var ch3=input.ReadByte();var ch4=input.ReadByte();return(ch1<<24)|(ch2<<16)|(ch3<<8)|(ch4<<0)};AlphaSynth.Util.IOHelper.ReadInt24=function(input,index){var i;if(AlphaSynth.Platform.TypeUtils.IsLittleEndian){i=input[index]|(input[index+1]<<8)|(input[index+2]<<16);if((i&8388608)==8388608)i=i|(-16777216)}else{i=(input[index]<<16)|(input[index+1]<<8)|input[index+2];if((i&256)==256)i=i|255}return i};AlphaSynth.Util.IOHelper.ReadInt16=function(input,index){if(AlphaSynth.Platform.TypeUtils.IsLittleEndian){return AlphaSynth.Platform.TypeUtils.ToInt16(input[index]|(input[index+1]<<8))}else{return AlphaSynth.Platform.TypeUtils.ToInt16((input[index]<<8)|input[index+1])}};AlphaSynth.Util.WaveHelper=function(){};AlphaSynth.Util.WaveHelper.SwapEndianess=function(data,bits){bits/=8;var swapArray=new Uint8Array(bits);for(var x=0;x