unit IMP_GamePlayer;
interface
uses
  Dynamic_Bass,
  microutils,
  windows,
  microwin,
  messages,
  pluginctrl,
  GamePlayer,
  Variants,
  BASE_SYS,
  BASE_EXTERN,
  PaxScripter;
procedure RegisterIMP_GamePlayer;
implementation
function TGPFX_EAX__GetEnabled(Self:TGPFX_EAX):boolean;
begin
  result := Self.Enabled;
end;
procedure TGPFX_EAX__PutEnabled(Self:TGPFX_EAX;const Value: boolean);
begin
  Self.Enabled := Value;
end;
function TGPFX_EAX__GetSupportEAX(Self:TGPFX_EAX):boolean;
begin
  result := Self.SupportEAX;
end;
function TGPFX_EAX__GetEnvironment(Self:TGPFX_EAX):Cardinal;
begin
  result := Self.Environment;
end;
procedure TGPFX_EAX__PutEnvironment(Self:TGPFX_EAX;const Value: Cardinal);
begin
  Self.Environment := Value;
end;
function TGPFX_EAX__GetVolume(Self:TGPFX_EAX):FLOAT;
begin
  result := Self.Volume;
end;
procedure TGPFX_EAX__PutVolume(Self:TGPFX_EAX;const Value: FLOAT);
begin
  Self.Volume := Value;
end;
function TGPFX_EAX__GetDecay(Self:TGPFX_EAX):FLOAT;
begin
  result := Self.Decay;
end;
procedure TGPFX_EAX__PutDecay(Self:TGPFX_EAX;const Value: FLOAT);
begin
  Self.Decay := Value;
end;
function TGPFX_EAX__GetDamp(Self:TGPFX_EAX):FLOAT;
begin
  result := Self.Damp;
end;
procedure TGPFX_EAX__PutDamp(Self:TGPFX_EAX;const Value: FLOAT);
begin
  Self.Damp := Value;
end;
procedure TGPFX_Chorus_RestoreDefaults(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
TGPFX_Chorus(Self).RestoreDefaults();
end;
function TGPFX_Chorus__GetWetDryMix(Self:TGPFX_Chorus):FLOAT;
begin
  result := Self.WetDryMix;
end;
procedure TGPFX_Chorus__PutWetDryMix(Self:TGPFX_Chorus;const Value: FLOAT);
begin
  Self.WetDryMix := Value;
end;
function TGPFX_Chorus__GetDepth(Self:TGPFX_Chorus):FLOAT;
begin
  result := Self.Depth;
end;
procedure TGPFX_Chorus__PutDepth(Self:TGPFX_Chorus;const Value: FLOAT);
begin
  Self.Depth := Value;
end;
function TGPFX_Chorus__GetFeedback(Self:TGPFX_Chorus):FLOAT;
begin
  result := Self.Feedback;
end;
procedure TGPFX_Chorus__PutFeedback(Self:TGPFX_Chorus;const Value: FLOAT);
begin
  Self.Feedback := Value;
end;
function TGPFX_Chorus__GetFrequency(Self:TGPFX_Chorus):FLOAT;
begin
  result := Self.Frequency;
end;
procedure TGPFX_Chorus__PutFrequency(Self:TGPFX_Chorus;const Value: FLOAT);
begin
  Self.Frequency := Value;
end;
function TGPFX_Chorus__GetWaveForm(Self:TGPFX_Chorus):DWORD;
begin
  result := Self.WaveForm;
end;
procedure TGPFX_Chorus__PutWaveForm(Self:TGPFX_Chorus;const Value: DWORD);
begin
  Self.WaveForm := Value;
end;
function TGPFX_Chorus__GetDelay(Self:TGPFX_Chorus):FLOAT;
begin
  result := Self.Delay;
end;
procedure TGPFX_Chorus__PutDelay(Self:TGPFX_Chorus;const Value: FLOAT);
begin
  Self.Delay := Value;
end;
function TGPFX_Chorus__GetPhase(Self:TGPFX_Chorus):DWORD;
begin
  result := Self.Phase;
end;
procedure TGPFX_Chorus__PutPhase(Self:TGPFX_Chorus;const Value: DWORD);
begin
  Self.Phase := Value;
end;
procedure TGPFX_Compressor_RestoreDefaults(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
   result.AsBoolean := TGPFX_Compressor(Self).RestoreDefaults();
end;
function TGPFX_Compressor__GetGain(Self:TGPFX_Compressor):FLOAT;
begin
  result := Self.Gain;
end;
procedure TGPFX_Compressor__PutGain(Self:TGPFX_Compressor;const Value: FLOAT);
begin
  Self.Gain := Value;
end;
function TGPFX_Compressor__GetAttack(Self:TGPFX_Compressor):FLOAT;
begin
  result := Self.Attack;
end;
procedure TGPFX_Compressor__PutAttack(Self:TGPFX_Compressor;const Value: FLOAT);
begin
  Self.Attack := Value;
end;
function TGPFX_Compressor__GetRelease(Self:TGPFX_Compressor):FLOAT;
begin
  result := Self.Release;
end;
procedure TGPFX_Compressor__PutRelease(Self:TGPFX_Compressor;const Value: FLOAT);
begin
  Self.Release := Value;
end;
function TGPFX_Compressor__GetThreshold(Self:TGPFX_Compressor):FLOAT;
begin
  result := Self.Threshold;
end;
procedure TGPFX_Compressor__PutThreshold(Self:TGPFX_Compressor;const Value: FLOAT);
begin
  Self.Threshold := Value;
end;
function TGPFX_Compressor__GetRatio(Self:TGPFX_Compressor):FLOAT;
begin
  result := Self.Ratio;
end;
procedure TGPFX_Compressor__PutRatio(Self:TGPFX_Compressor;const Value: FLOAT);
begin
  Self.Ratio := Value;
end;
function TGPFX_Compressor__GetPredelay(Self:TGPFX_Compressor):FLOAT;
begin
  result := Self.Predelay;
end;
procedure TGPFX_Compressor__PutPredelay(Self:TGPFX_Compressor;const Value: FLOAT);
begin
  Self.Predelay := Value;
end;
procedure TGPFX_Distortion_RestoreDefaults(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
   result.AsBoolean := TGPFX_Distortion(Self).RestoreDefaults();
end;
function TGPFX_Distortion__GetGain(Self:TGPFX_Distortion):FLOAT;
begin
  result := Self.Gain;
end;
procedure TGPFX_Distortion__PutGain(Self:TGPFX_Distortion;const Value: FLOAT);
begin
  Self.Gain := Value;
end;
function TGPFX_Distortion__GetEdge(Self:TGPFX_Distortion):FLOAT;
begin
  result := Self.Edge;
end;
procedure TGPFX_Distortion__PutEdge(Self:TGPFX_Distortion;const Value: FLOAT);
begin
  Self.Edge := Value;
end;
function TGPFX_Distortion__GetPostEQCenterFrequency(Self:TGPFX_Distortion):FLOAT;
begin
  result := Self.PostEQCenterFrequency;
end;
procedure TGPFX_Distortion__PutPostEQCenterFrequency(Self:TGPFX_Distortion;const Value: FLOAT);
begin
  Self.PostEQCenterFrequency := Value;
end;
function TGPFX_Distortion__GetPostEQBandwidth(Self:TGPFX_Distortion):FLOAT;
begin
  result := Self.PostEQBandwidth;
end;
procedure TGPFX_Distortion__PutPostEQBandwidth(Self:TGPFX_Distortion;const Value: FLOAT);
begin
  Self.PostEQBandwidth := Value;
end;
function TGPFX_Distortion__GetPreLowpassCutoff(Self:TGPFX_Distortion):FLOAT;
begin
  result := Self.PreLowpassCutoff;
end;
procedure TGPFX_Distortion__PutPreLowpassCutoff(Self:TGPFX_Distortion;const Value: FLOAT);
begin
  Self.PreLowpassCutoff := Value;
end;
procedure TGPFX_Echo_RestoreDefaults(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
   result.AsBoolean := TGPFX_Echo(Self).RestoreDefaults();
end;
function TGPFX_Echo__GetWetDryMix(Self:TGPFX_Echo):FLOAT;
begin
  result := Self.WetDryMix;
end;
procedure TGPFX_Echo__PutWetDryMix(Self:TGPFX_Echo;const Value: FLOAT);
begin
  Self.WetDryMix := Value;
end;
function TGPFX_Echo__GetFeedback(Self:TGPFX_Echo):FLOAT;
begin
  result := Self.Feedback;
end;
procedure TGPFX_Echo__PutFeedback(Self:TGPFX_Echo;const Value: FLOAT);
begin
  Self.Feedback := Value;
end;
function TGPFX_Echo__GetLeftDelay(Self:TGPFX_Echo):FLOAT;
begin
  result := Self.LeftDelay;
end;
procedure TGPFX_Echo__PutLeftDelay(Self:TGPFX_Echo;const Value: FLOAT);
begin
  Self.LeftDelay := Value;
end;
function TGPFX_Echo__GetRightDelay(Self:TGPFX_Echo):FLOAT;
begin
  result := Self.RightDelay;
end;
procedure TGPFX_Echo__PutRightDelay(Self:TGPFX_Echo;const Value: FLOAT);
begin
  Self.RightDelay := Value;
end;
function TGPFX_Echo__GetPanDelay(Self:TGPFX_Echo):BOOL;
begin
  result := Self.PanDelay;
end;
procedure TGPFX_Echo__PutPanDelay(Self:TGPFX_Echo;const Value: BOOL);
begin
  Self.PanDelay := Value;
end;
procedure TGPFX_Flanger_RestoreDefaults(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
   result.AsBoolean := TGPFX_Flanger(Self).RestoreDefaults();
end;
function TGPFX_Flanger__GetWetDryMix(Self:TGPFX_Flanger):FLOAT;
begin
  result := Self.WetDryMix;
end;
procedure TGPFX_Flanger__PutWetDryMix(Self:TGPFX_Flanger;const Value: FLOAT);
begin
  Self.WetDryMix := Value;
end;
function TGPFX_Flanger__GetDepth(Self:TGPFX_Flanger):FLOAT;
begin
  result := Self.Depth;
end;
procedure TGPFX_Flanger__PutDepth(Self:TGPFX_Flanger;const Value: FLOAT);
begin
  Self.Depth := Value;
end;
function TGPFX_Flanger__GetFeedback(Self:TGPFX_Flanger):FLOAT;
begin
  result := Self.Feedback;
end;
procedure TGPFX_Flanger__PutFeedback(Self:TGPFX_Flanger;const Value: FLOAT);
begin
  Self.Feedback := Value;
end;
function TGPFX_Flanger__GetFrequency(Self:TGPFX_Flanger):FLOAT;
begin
  result := Self.Frequency;
end;
procedure TGPFX_Flanger__PutFrequency(Self:TGPFX_Flanger;const Value: FLOAT);
begin
  Self.Frequency := Value;
end;
function TGPFX_Flanger__GetWaveform(Self:TGPFX_Flanger):DWORD;
begin
  result := Self.Waveform;
end;
procedure TGPFX_Flanger__PutWaveform(Self:TGPFX_Flanger;const Value: DWORD);
begin
  Self.Waveform := Value;
end;
function TGPFX_Flanger__GetDelay(Self:TGPFX_Flanger):FLOAT;
begin
  result := Self.Delay;
end;
procedure TGPFX_Flanger__PutDelay(Self:TGPFX_Flanger;const Value: FLOAT);
begin
  Self.Delay := Value;
end;
function TGPFX_Flanger__GetPhase(Self:TGPFX_Flanger):DWORD;
begin
  result := Self.Phase;
end;
procedure TGPFX_Flanger__PutPhase(Self:TGPFX_Flanger;const Value: DWORD);
begin
  Self.Phase := Value;
end;
procedure TGPFX_Gargle_RestoreDefaults(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
   result.AsBoolean := TGPFX_Gargle(Self).RestoreDefaults();
end;
function TGPFX_Gargle__GetRateHz(Self:TGPFX_Gargle):DWORD;
begin
  result := Self.RateHz;
end;
procedure TGPFX_Gargle__PutRateHz(Self:TGPFX_Gargle;const Value: DWORD);
begin
  Self.RateHz := Value;
end;
function TGPFX_Gargle__GetWaveShape(Self:TGPFX_Gargle):DWORD;
begin
  result := Self.WaveShape;
end;
procedure TGPFX_Gargle__PutWaveShape(Self:TGPFX_Gargle;const Value: DWORD);
begin
  Self.WaveShape := Value;
end;
procedure TGPFX_I3DL2Reverb_RestoreDefaults(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
   result.AsBoolean := TGPFX_I3DL2Reverb(Self).RestoreDefaults();
end;
function TGPFX_I3DL2Reverb__GetRoom(Self:TGPFX_I3DL2Reverb):Integer;
begin
  result := Self.Room;
end;
procedure TGPFX_I3DL2Reverb__PutRoom(Self:TGPFX_I3DL2Reverb;const Value: Integer);
begin
  Self.Room := Value;
end;
function TGPFX_I3DL2Reverb__GetRoomHF(Self:TGPFX_I3DL2Reverb):Integer;
begin
  result := Self.RoomHF;
end;
procedure TGPFX_I3DL2Reverb__PutRoomHF(Self:TGPFX_I3DL2Reverb;const Value: Integer);
begin
  Self.RoomHF := Value;
end;
function TGPFX_I3DL2Reverb__GetRoomRolloffFactor(Self:TGPFX_I3DL2Reverb):FLOAT;
begin
  result := Self.RoomRolloffFactor;
end;
procedure TGPFX_I3DL2Reverb__PutRoomRolloffFactor(Self:TGPFX_I3DL2Reverb;const Value: FLOAT);
begin
  Self.RoomRolloffFactor := Value;
end;
function TGPFX_I3DL2Reverb__GetDecayTime(Self:TGPFX_I3DL2Reverb):FLOAT;
begin
  result := Self.DecayTime;
end;
procedure TGPFX_I3DL2Reverb__PutDecayTime(Self:TGPFX_I3DL2Reverb;const Value: FLOAT);
begin
  Self.DecayTime := Value;
end;
function TGPFX_I3DL2Reverb__GetDecayHFRatio(Self:TGPFX_I3DL2Reverb):FLOAT;
begin
  result := Self.DecayHFRatio;
end;
procedure TGPFX_I3DL2Reverb__PutDecayHFRatio(Self:TGPFX_I3DL2Reverb;const Value: FLOAT);
begin
  Self.DecayHFRatio := Value;
end;
function TGPFX_I3DL2Reverb__GetReflections(Self:TGPFX_I3DL2Reverb):Integer;
begin
  result := Self.Reflections;
end;
procedure TGPFX_I3DL2Reverb__PutReflections(Self:TGPFX_I3DL2Reverb;const Value: Integer);
begin
  Self.Reflections := Value;
end;
function TGPFX_I3DL2Reverb__GetReflectionsDelay(Self:TGPFX_I3DL2Reverb):FLOAT;
begin
  result := Self.ReflectionsDelay;
end;
procedure TGPFX_I3DL2Reverb__PutReflectionsDelay(Self:TGPFX_I3DL2Reverb;const Value: FLOAT);
begin
  Self.ReflectionsDelay := Value;
end;
function TGPFX_I3DL2Reverb__GetReverb(Self:TGPFX_I3DL2Reverb):Integer;
begin
  result := Self.Reverb;
end;
procedure TGPFX_I3DL2Reverb__PutReverb(Self:TGPFX_I3DL2Reverb;const Value: Integer);
begin
  Self.Reverb := Value;
end;
function TGPFX_I3DL2Reverb__GetReverbDelay(Self:TGPFX_I3DL2Reverb):FLOAT;
begin
  result := Self.ReverbDelay;
end;
procedure TGPFX_I3DL2Reverb__PutReverbDelay(Self:TGPFX_I3DL2Reverb;const Value: FLOAT);
begin
  Self.ReverbDelay := Value;
end;
function TGPFX_I3DL2Reverb__GetDiffusion(Self:TGPFX_I3DL2Reverb):FLOAT;
begin
  result := Self.Diffusion;
end;
procedure TGPFX_I3DL2Reverb__PutDiffusion(Self:TGPFX_I3DL2Reverb;const Value: FLOAT);
begin
  Self.Diffusion := Value;
end;
function TGPFX_I3DL2Reverb__GetDensity(Self:TGPFX_I3DL2Reverb):FLOAT;
begin
  result := Self.Density;
end;
procedure TGPFX_I3DL2Reverb__PutDensity(Self:TGPFX_I3DL2Reverb;const Value: FLOAT);
begin
  Self.Density := Value;
end;
function TGPFX_I3DL2Reverb__GetHFReference(Self:TGPFX_I3DL2Reverb):FLOAT;
begin
  result := Self.HFReference;
end;
procedure TGPFX_I3DL2Reverb__PutHFReference(Self:TGPFX_I3DL2Reverb;const Value: FLOAT);
begin
  Self.HFReference := Value;
end;
procedure TGPFX_Reverb_RestoreDefaults(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
   result.AsBoolean := TGPFX_Reverb(Self).RestoreDefaults();
end;
function TGPFX_Reverb__GetInGain(Self:TGPFX_Reverb):FLOAT;
begin
  result := Self.InGain;
end;
procedure TGPFX_Reverb__PutInGain(Self:TGPFX_Reverb;const Value: FLOAT);
begin
  Self.InGain := Value;
end;
function TGPFX_Reverb__GetReverbMix(Self:TGPFX_Reverb):FLOAT;
begin
  result := Self.ReverbMix;
end;
procedure TGPFX_Reverb__PutReverbMix(Self:TGPFX_Reverb;const Value: FLOAT);
begin
  Self.ReverbMix := Value;
end;
function TGPFX_Reverb__GetReverbTime(Self:TGPFX_Reverb):FLOAT;
begin
  result := Self.ReverbTime;
end;
procedure TGPFX_Reverb__PutReverbTime(Self:TGPFX_Reverb;const Value: FLOAT);
begin
  Self.ReverbTime := Value;
end;
function TGPFX_Reverb__GetHighFreqRTRatio(Self:TGPFX_Reverb):FLOAT;
begin
  result := Self.HighFreqRTRatio;
end;
procedure TGPFX_Reverb__PutHighFreqRTRatio(Self:TGPFX_Reverb;const Value: FLOAT);
begin
  Self.HighFreqRTRatio := Value;
end;
procedure TGPFX_Equalizer_RestoreDefaults(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
   result.AsBoolean := TGPFX_Equalizer(Self).RestoreDefaults();
end;
function TGPFX_Equalizer__GetEQBand(Self:TGPFX_Equalizer;Index:Integer):FLOAT;
begin
  result := Self.EQBand[Index];
end;
procedure TGPFX_Equalizer__PutEQBand(Self:TGPFX_Equalizer;Index:Integer;const Value: FLOAT);
begin
  Self.EQBand[Index] := Value;
end;
procedure TGPEffects_Remove_Chorus(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
TGPEffects(Self).Remove_Chorus();
end;
procedure TGPEffects_Remove_Compressor(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
TGPEffects(Self).Remove_Compressor();
end;
procedure TGPEffects_Remove_Distortion(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
TGPEffects(Self).Remove_Distortion();
end;
procedure TGPEffects_Remove_Echo(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
TGPEffects(Self).Remove_Echo();
end;
procedure TGPEffects_Remove_Flanger(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
TGPEffects(Self).Remove_Flanger();
end;
procedure TGPEffects_Remove_Gargle(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
TGPEffects(Self).Remove_Gargle();
end;
procedure TGPEffects_Remove_I3DL2Reverb(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
TGPEffects(Self).Remove_I3DL2Reverb();
end;
procedure TGPEffects_Remove_Reverb(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
TGPEffects(Self).Remove_Reverb();
end;
procedure TGPEffects_Remove_Equalizer(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
TGPEffects(Self).Remove_Equalizer();
end;
function TGPEffects__GetChorus(Self:TGPEffects):TGPFX_Chorus;
begin
  result := Self.Chorus;
end;
function TGPEffects__GetCompressor(Self:TGPEffects):TGPFX_Compressor;
begin
  result := Self.Compressor;
end;
function TGPEffects__GetDistortion(Self:TGPEffects):TGPFX_Distortion;
begin
  result := Self.Distortion;
end;
function TGPEffects__GetEcho(Self:TGPEffects):TGPFX_Echo;
begin
  result := Self.Echo;
end;
function TGPEffects__GetFlanger(Self:TGPEffects):TGPFX_Flanger;
begin
  result := Self.Flanger;
end;
function TGPEffects__GetGargle(Self:TGPEffects):TGPFX_Gargle;
begin
  result := Self.Gargle;
end;
function TGPEffects__GetI3DL2Reverb(Self:TGPEffects):TGPFX_I3DL2Reverb;
begin
  result := Self.I3DL2Reverb;
end;
function TGPEffects__GetReverb(Self:TGPEffects):TGPFX_Reverb;
begin
  result := Self.Reverb;
end;
function TGPEffects__GetEqualizer(Self:TGPEffects):TGPFX_Equalizer;
begin
  result := Self.Equalizer;
end;
procedure TGPMusic_Open(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
   result.AsBoolean := TGPMusic(Self).Open(Params[0].AsString);
end;
procedure TGPMusic_Pause(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
   result.AsBoolean := TGPMusic(Self).Pause();
end;
procedure TGPMusic_UnPause(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
   result.AsBoolean := TGPMusic(Self).UnPause();
end;
procedure TGPMusic_TogglePause(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
   result.AsBoolean := TGPMusic(Self).TogglePause();
end;
procedure TGPMusic_Stop(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
   result.AsBoolean := TGPMusic(Self).Stop();
end;
procedure TGPMusic_Close(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
   result.AsBoolean := TGPMusic(Self).Close();
end;
procedure TGPMusic_Reload(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
   result.AsBoolean := TGPMusic(Self).Reload(Params[0].AsBoolean);
end;
function TGPMusic__GetHandle(Self:TGPMusic):Cardinal;
begin
  result := Self.Handle;
end;
function TGPMusic__GetisSound(Self:TGPMusic):boolean;
begin
  result := Self.isSound;
end;
function TGPMusic__GetUseEAX(Self:TGPMusic):boolean;
begin
  result := Self.UseEAX;
end;
procedure TGPMusic__PutUseEAX(Self:TGPMusic;const Value: boolean);
begin
  Self.UseEAX := Value;
end;
function TGPMusic__GetFileName(Self:TGPMusic):string;
begin
  result := Self.FileName;
end;
function TGPMusic__GetMusicType(Self:TGPMusic):TGPMusicType;
begin
  result := Self.MusicType;
end;
function TGPMusic__GetMusicState(Self:TGPMusic):TGPMusicState;
begin
  result := Self.MusicState;
end;
function TGPMusic__GetnLoops(Self:TGPMusic):Word;
begin
  result := Self.nLoops;
end;
procedure TGPMusic__PutnLoops(Self:TGPMusic;const Value: Word);
begin
  Self.nLoops := Value;
end;
function TGPMusic__GetEffects(Self:TGPMusic):TGPEffects;
begin
  result := Self.Effects;
end;
function TGPMusic__GetPosition(Self:TGPMusic):Integer;
begin
  result := Self.Position;
end;
procedure TGPMusic__PutPosition(Self:TGPMusic;const Value: Integer);
begin
  Self.Position := Value;
end;
function TGPMusic__GetPan(Self:TGPMusic):integer;
begin
  result := Self.Pan;
end;
procedure TGPMusic__PutPan(Self:TGPMusic;const Value: integer);
begin
  Self.Pan := Value;
end;
function TGPMusic__GetVolume(Self:TGPMusic):integer;
begin
  result := Self.Volume;
end;
procedure TGPMusic__PutVolume(Self:TGPMusic;const Value: integer);
begin
  Self.Volume := Value;
end;
function TGPMusic__GetChannelLength(Self:TGPMusic):Cardinal;
begin
  result := Self.ChannelLength;
end;
function TGPMusic__GetTitle(Self:TGPMusic):string;
begin
  result := Self.Title;
end;
function TGPMusic__GetIndex(Self:TGPMusic):integer;
begin
  result := Self.Index;
end;
function TGPMusic__GetTag(Self:TGPMusic):integer;
begin
  result := Self.Tag;
end;
procedure TGPMusic__PutTag(Self:TGPMusic;const Value: integer);
begin
  Self.Tag := Value;
end;
function TGPMusic__GetLevel(Self:TGPMusic):DWORD;
begin
  result := Self.Level;
end;
function TGPMusic__GetEndOffset(Self:TGPMusic):Cardinal;
begin
  result := Self.EndOffset;
end;
procedure TGPMusic__PutEndOffset(Self:TGPMusic;const Value: Cardinal);
begin
  Self.EndOffset := Value;
end;
procedure TGPPlayList_PlayNext(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
   result.AsBoolean := TGPPlayList(Self).PlayNext();
end;
procedure TGPPlayList_PlayPrev(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
   result.AsBoolean := TGPPlayList(Self).PlayPrev();
end;
procedure TGPPlayList_PlayCurrent(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
   result.AsBoolean := TGPPlayList(Self).PlayCurrent();
end;
function TGPPlayList__GetFiles(Self:TGPPlayList;Index:integer):string;
begin
  result := Self.Files[Index];
end;
function TGPPlayList__GetTitles(Self:TGPPlayList;Index:integer):string;
begin
  result := Self.Titles[Index];
end;
procedure TGPPlayList_AddFile(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
   result.AsBoolean := TGPPlayList(Self).AddFile(Params[0].AsString);
end;
procedure TGPPlayList_Delete(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
   result.AsInteger := TGPPlayList(Self).Delete(Params[0].AsInteger);
end;
procedure TGPPlayList_Clear(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
TGPPlayList(Self).Clear();
end;
procedure TGPPlayList_Exchange(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
TGPPlayList(Self).Exchange(Params[0].AsInteger,Params[1].AsInteger);
end;
procedure TGPPlayList_PlayMusic(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
   result.AsBoolean := TGPPlayList(Self).PlayMusic(Params[0].AsInteger);
end;
procedure TGPPlayList_SaveToFile(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
   result.AsBoolean := TGPPlayList(Self).SaveToFile(Params[0].AsString);
end;
function TGPPlayList__GetMode(Self:TGPPlayList):TGPPlayListMode;
begin
  result := Self.Mode;
end;
procedure TGPPlayList__PutMode(Self:TGPPlayList;const Value: TGPPlayListMode);
begin
  Self.Mode := Value;
end;
function TGPPlayList__GetCount(Self:TGPPlayList):integer;
begin
  result := Self.Count;
end;
function TGPPlayList__GetMusicIndex(Self:TGPPlayList):integer;
begin
  result := Self.MusicIndex;
end;
procedure TGPPlayList__PutMusicIndex(Self:TGPPlayList;const Value: integer);
begin
  Self.MusicIndex := Value;
end;
function TGPPlayList__GetInfoOnLoad(Self:TGPPlayList):boolean;
begin
  result := Self.InfoOnLoad;
end;
procedure TGPPlayList__PutInfoOnLoad(Self:TGPPlayList;const Value: boolean);
begin
  Self.InfoOnLoad := Value;
end;
function TGPPlayList__GetTempDisable(Self:TGPPlayList):boolean;
begin
  result := Self.TempDisable;
end;
function TGPPlugins__GetNumberPlugins(Self:TGPPlugins):integer;
begin
  result := Self.NumberPlugins;
end;
function TGPPlugins__GetPluginsOK(Self:TGPPlugins):boolean;
begin
  result := Self.PluginsOK;
end;
function TGPPlugins__GetPlugins(Self:TGPPlugins;Index:Integer):TPlugin;
begin
  result := Self.Plugins[Index];
end;
function TGPPlugins__GetPluginsInfo(Self:TGPPlugins;Index:Integer):TPluginInfo;
begin
  result := Self.PluginsInfo[Index];
end;
function TGPPlugins__GetCurrentPlugin(Self:TGPPlugins):TPlugin;
begin
  result := Self.CurrentPlugin;
end;
procedure TGPPlugins_LoadPlugin(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
   result.AsBoolean := TGPPlugins(Self).LoadPlugin(Params[0].AsString);
end;
procedure TGPPlugins_UnLoadPlugin(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
TGPPlugins(Self).UnLoadPlugin(Params[0].AsInteger);
end;
procedure TGPPlugins_LoadPlugins(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
   result.AsBoolean := TGPPlugins(Self).LoadPlugins(Params[0].AsString);
end;
procedure TGPPlugins_LoadWinampPlugins(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
   result.AsBoolean := TGPPlugins(Self).LoadWinampPlugins();
end;
procedure TGPPlugins_UnLoadPlugins(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
TGPPlugins(Self).UnLoadPlugins();
end;
procedure TGPPlugins_ShowConfigWindow(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
TGPPlugins(Self).ShowConfigWindow(Params[0].AsInteger);
end;
procedure TGPPlugins_ShowAboutWindow(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
TGPPlugins(Self).ShowAboutWindow(Params[0].AsInteger);
end;
procedure TGPPlugins_ActivatePlugin(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
   result.AsBoolean := TGPPlugins(Self).ActivatePlugin(Params[0].AsString);
end;
procedure TGPPlugins_GetWinampPluginsDir(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
   result.AsString := TGPPlugins(Self).GetWinampPluginsDir();
end;
function TGamePlayer__GetSupportedExtensions(Self:TGamePlayer;Index:Integer):string;
begin
  result := Self.SupportedExtensions[Index];
end;
procedure TGamePlayer_ConfigCurrentPlugin(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
   result.AsBoolean := TGamePlayer(Self).ConfigCurrentPlugin();
end;
procedure TGamePlayer_FastSound(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
   result.AsBoolean := TGamePlayer(Self).FastSound(Params[0].AsString);
end;
function TGamePlayer__GetMainWindow(Self:TGamePlayer):HWND;
begin
  result := Self.MainWindow;
end;
function TGamePlayer__GetCallBackProc(Self:TGamePlayer):TGP_MessageCallBack;
begin
  result := Self.CallBackProc;
end;
procedure TGamePlayer__PutCallBackProc(Self:TGamePlayer;const Value: TGP_MessageCallBack);
begin
  Self.CallBackProc := Value;
end;
function TGamePlayer__GetMusics(Self:TGamePlayer;Index:Integer):TGPMusic;
begin
  result := Self.Musics[Index];
end;
procedure TGamePlayer_Stop(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
TGamePlayer(Self).Stop();
end;
procedure TGamePlayer_IsSupportedURL(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
   result.AsBoolean := TGamePlayer(Self).IsSupportedURL(Params[0].AsString);
end;
function TGamePlayer__GetPlayerOK(Self:TGamePlayer):boolean;
begin
  result := Self.PlayerOK;
end;
function TGamePlayer__GetEAX(Self:TGamePlayer):TGPFX_EAX;
begin
  result := Self.EAX;
end;
function TGamePlayer__GetMusic(Self:TGamePlayer):TGPMusic;
begin
  result := Self.Music;
end;
function TGamePlayer__GetSupportDS9(Self:TGamePlayer):boolean;
begin
  result := Self.SupportDS9;
end;
function TGamePlayer__GetSupport32Float(Self:TGamePlayer):boolean;
begin
  result := Self.Support32Float;
end;
function TGamePlayer__GetDeviceName(Self:TGamePlayer):string;
begin
  result := Self.DeviceName;
end;
function TGamePlayer__GetDeviceDriver(Self:TGamePlayer):string;
begin
  result := Self.DeviceDriver;
end;
function TGamePlayer__GetBassVer(Self:TGamePlayer):string;
begin
  result := Self.BassVer;
end;
function TGamePlayer__GetMusicSupport(Self:TGamePlayer):string;
begin
  result := Self.MusicSupport;
end;
function TGamePlayer__GetFilter(Self:TGamePlayer):string;
begin
  result := Self.Filter;
end;
function TGamePlayer__GetNumberOfExtensions(Self:TGamePlayer):integer;
begin
  result := Self.NumberOfExtensions;
end;
function TGamePlayer__GetVolume(Self:TGamePlayer):integer;
begin
  result := Self.Volume;
end;
procedure TGamePlayer__PutVolume(Self:TGamePlayer;const Value: integer);
begin
  Self.Volume := Value;
end;
function TGamePlayer__GetPlayList(Self:TGamePlayer):TGPPlayList;
begin
  result := Self.PlayList;
end;
function TGamePlayer__GetPlugins(Self:TGamePlayer):TGPPlugins;
begin
  result := Self.Plugins;
end;
function TGamePlayer__GetTag(Self:TGamePlayer):integer;
begin
  result := Self.Tag;
end;
procedure TGamePlayer__PutTag(Self:TGamePlayer;const Value: integer);
begin
  Self.Tag := Value;
end;
function TGamePlayer__GetMusicCount(Self:TGamePlayer):integer;
begin
  result := Self.MusicCount;
end;
procedure RegisterIMP_GamePlayer;
var H: Integer;
begin
  H := -1;
  RegisterConstant('WM_GP', 2000, H);
  RegisterConstant('GP_BASSEXTCOUNT', 13, H);
  // Begin of class TGPFX_EAX
  RegisterClassType(TGPFX_EAX, H);
  RegisterMethod(TGPFX_EAX,
       'constructor Create;',
       @TGPFX_EAX.Create);
  RegisterMethod(TGPFX_EAX,
       'function TGPFX_EAX__GetEnabled(Self:TGPFX_EAX):boolean;',
       @TGPFX_EAX__GetEnabled, true);
  RegisterMethod(TGPFX_EAX,
       'procedure TGPFX_EAX__PutEnabled(Self:TGPFX_EAX;const Value: boolean);',
       @TGPFX_EAX__PutEnabled, true);
  RegisterProperty(TGPFX_EAX,
       'property Enabled:boolean read TGPFX_EAX__GetEnabled write TGPFX_EAX__PutEnabled;');
  RegisterMethod(TGPFX_EAX,
       'function TGPFX_EAX__GetSupportEAX(Self:TGPFX_EAX):boolean;',
       @TGPFX_EAX__GetSupportEAX, true);
  RegisterProperty(TGPFX_EAX,
       'property SupportEAX:boolean read TGPFX_EAX__GetSupportEAX;');
  RegisterMethod(TGPFX_EAX,
       'function TGPFX_EAX__GetEnvironment(Self:TGPFX_EAX):Cardinal;',
       @TGPFX_EAX__GetEnvironment, true);
  RegisterMethod(TGPFX_EAX,
       'procedure TGPFX_EAX__PutEnvironment(Self:TGPFX_EAX;const Value: Cardinal);',
       @TGPFX_EAX__PutEnvironment, true);
  RegisterProperty(TGPFX_EAX,
       'property Environment:Cardinal read TGPFX_EAX__GetEnvironment write TGPFX_EAX__PutEnvironment;');
  RegisterMethod(TGPFX_EAX,
       'function TGPFX_EAX__GetVolume(Self:TGPFX_EAX):FLOAT;',
       @TGPFX_EAX__GetVolume, true);
  RegisterMethod(TGPFX_EAX,
       'procedure TGPFX_EAX__PutVolume(Self:TGPFX_EAX;const Value: FLOAT);',
       @TGPFX_EAX__PutVolume, true);
  RegisterProperty(TGPFX_EAX,
       'property Volume:FLOAT read TGPFX_EAX__GetVolume write TGPFX_EAX__PutVolume;');
  RegisterMethod(TGPFX_EAX,
       'function TGPFX_EAX__GetDecay(Self:TGPFX_EAX):FLOAT;',
       @TGPFX_EAX__GetDecay, true);
  RegisterMethod(TGPFX_EAX,
       'procedure TGPFX_EAX__PutDecay(Self:TGPFX_EAX;const Value: FLOAT);',
       @TGPFX_EAX__PutDecay, true);
  RegisterProperty(TGPFX_EAX,
       'property Decay:FLOAT read TGPFX_EAX__GetDecay write TGPFX_EAX__PutDecay;');
  RegisterMethod(TGPFX_EAX,
       'function TGPFX_EAX__GetDamp(Self:TGPFX_EAX):FLOAT;',
       @TGPFX_EAX__GetDamp, true);
  RegisterMethod(TGPFX_EAX,
       'procedure TGPFX_EAX__PutDamp(Self:TGPFX_EAX;const Value: FLOAT);',
       @TGPFX_EAX__PutDamp, true);
  RegisterProperty(TGPFX_EAX,
       'property Damp:FLOAT read TGPFX_EAX__GetDamp write TGPFX_EAX__PutDamp;');
  // End of class TGPFX_EAX
  // Begin of class TGPFX_Chorus
  RegisterClassType(TGPFX_Chorus, H);
  RegisterMethod(TGPFX_Chorus,
       'constructor Create(MusicHandle:HMUSIC);',
       @TGPFX_Chorus.Create);
  RegisterMethod(TGPFX_Chorus,
       'destructor Destroy;override;',
       @TGPFX_Chorus.Destroy);
  RegisterStdMethodEx(TGPFX_Chorus,'RestoreDefaults',TGPFX_Chorus_RestoreDefaults,0,[typeVARIANT]);
  RegisterMethod(TGPFX_Chorus,
       'function TGPFX_Chorus__GetWetDryMix(Self:TGPFX_Chorus):FLOAT;',
       @TGPFX_Chorus__GetWetDryMix, true);
  RegisterMethod(TGPFX_Chorus,
       'procedure TGPFX_Chorus__PutWetDryMix(Self:TGPFX_Chorus;const Value: FLOAT);',
       @TGPFX_Chorus__PutWetDryMix, true);
  RegisterProperty(TGPFX_Chorus,
       'property WetDryMix:FLOAT read TGPFX_Chorus__GetWetDryMix write TGPFX_Chorus__PutWetDryMix;');
  RegisterMethod(TGPFX_Chorus,
       'function TGPFX_Chorus__GetDepth(Self:TGPFX_Chorus):FLOAT;',
       @TGPFX_Chorus__GetDepth, true);
  RegisterMethod(TGPFX_Chorus,
       'procedure TGPFX_Chorus__PutDepth(Self:TGPFX_Chorus;const Value: FLOAT);',
       @TGPFX_Chorus__PutDepth, true);
  RegisterProperty(TGPFX_Chorus,
       'property Depth:FLOAT read TGPFX_Chorus__GetDepth write TGPFX_Chorus__PutDepth;');
  RegisterMethod(TGPFX_Chorus,
       'function TGPFX_Chorus__GetFeedback(Self:TGPFX_Chorus):FLOAT;',
       @TGPFX_Chorus__GetFeedback, true);
  RegisterMethod(TGPFX_Chorus,
       'procedure TGPFX_Chorus__PutFeedback(Self:TGPFX_Chorus;const Value: FLOAT);',
       @TGPFX_Chorus__PutFeedback, true);
  RegisterProperty(TGPFX_Chorus,
       'property Feedback:FLOAT read TGPFX_Chorus__GetFeedback write TGPFX_Chorus__PutFeedback;');
  RegisterMethod(TGPFX_Chorus,
       'function TGPFX_Chorus__GetFrequency(Self:TGPFX_Chorus):FLOAT;',
       @TGPFX_Chorus__GetFrequency, true);
  RegisterMethod(TGPFX_Chorus,
       'procedure TGPFX_Chorus__PutFrequency(Self:TGPFX_Chorus;const Value: FLOAT);',
       @TGPFX_Chorus__PutFrequency, true);
  RegisterProperty(TGPFX_Chorus,
       'property Frequency:FLOAT read TGPFX_Chorus__GetFrequency write TGPFX_Chorus__PutFrequency;');
  RegisterMethod(TGPFX_Chorus,
       'function TGPFX_Chorus__GetWaveForm(Self:TGPFX_Chorus):DWORD;',
       @TGPFX_Chorus__GetWaveForm, true);
  RegisterMethod(TGPFX_Chorus,
       'procedure TGPFX_Chorus__PutWaveForm(Self:TGPFX_Chorus;const Value: DWORD);',
       @TGPFX_Chorus__PutWaveForm, true);
  RegisterProperty(TGPFX_Chorus,
       'property WaveForm:DWORD read TGPFX_Chorus__GetWaveForm write TGPFX_Chorus__PutWaveForm;');
  RegisterMethod(TGPFX_Chorus,
       'function TGPFX_Chorus__GetDelay(Self:TGPFX_Chorus):FLOAT;',
       @TGPFX_Chorus__GetDelay, true);
  RegisterMethod(TGPFX_Chorus,
       'procedure TGPFX_Chorus__PutDelay(Self:TGPFX_Chorus;const Value: FLOAT);',
       @TGPFX_Chorus__PutDelay, true);
  RegisterProperty(TGPFX_Chorus,
       'property Delay:FLOAT read TGPFX_Chorus__GetDelay write TGPFX_Chorus__PutDelay;');
  RegisterMethod(TGPFX_Chorus,
       'function TGPFX_Chorus__GetPhase(Self:TGPFX_Chorus):DWORD;',
       @TGPFX_Chorus__GetPhase, true);
  RegisterMethod(TGPFX_Chorus,
       'procedure TGPFX_Chorus__PutPhase(Self:TGPFX_Chorus;const Value: DWORD);',
       @TGPFX_Chorus__PutPhase, true);
  RegisterProperty(TGPFX_Chorus,
       'property Phase:DWORD read TGPFX_Chorus__GetPhase write TGPFX_Chorus__PutPhase;');
  // End of class TGPFX_Chorus
  // Begin of class TGPFX_Compressor
  RegisterClassType(TGPFX_Compressor, H);
  RegisterMethod(TGPFX_Compressor,
       'constructor Create(MusicHandle:Cardinal);',
       @TGPFX_Compressor.Create);
  RegisterMethod(TGPFX_Compressor,
       'destructor Destroy;override;',
       @TGPFX_Compressor.Destroy);
  RegisterStdMethodEx(TGPFX_Compressor,'RestoreDefaults',TGPFX_Compressor_RestoreDefaults,0,[typeBOOLEAN]);
  RegisterMethod(TGPFX_Compressor,
       'function TGPFX_Compressor__GetGain(Self:TGPFX_Compressor):FLOAT;',
       @TGPFX_Compressor__GetGain, true);
  RegisterMethod(TGPFX_Compressor,
       'procedure TGPFX_Compressor__PutGain(Self:TGPFX_Compressor;const Value: FLOAT);',
       @TGPFX_Compressor__PutGain, true);
  RegisterProperty(TGPFX_Compressor,
       'property Gain:FLOAT read TGPFX_Compressor__GetGain write TGPFX_Compressor__PutGain;');
  RegisterMethod(TGPFX_Compressor,
       'function TGPFX_Compressor__GetAttack(Self:TGPFX_Compressor):FLOAT;',
       @TGPFX_Compressor__GetAttack, true);
  RegisterMethod(TGPFX_Compressor,
       'procedure TGPFX_Compressor__PutAttack(Self:TGPFX_Compressor;const Value: FLOAT);',
       @TGPFX_Compressor__PutAttack, true);
  RegisterProperty(TGPFX_Compressor,
       'property Attack:FLOAT read TGPFX_Compressor__GetAttack write TGPFX_Compressor__PutAttack;');
  RegisterMethod(TGPFX_Compressor,
       'function TGPFX_Compressor__GetRelease(Self:TGPFX_Compressor):FLOAT;',
       @TGPFX_Compressor__GetRelease, true);
  RegisterMethod(TGPFX_Compressor,
       'procedure TGPFX_Compressor__PutRelease(Self:TGPFX_Compressor;const Value: FLOAT);',
       @TGPFX_Compressor__PutRelease, true);
  RegisterProperty(TGPFX_Compressor,
       'property Release:FLOAT read TGPFX_Compressor__GetRelease write TGPFX_Compressor__PutRelease;');
  RegisterMethod(TGPFX_Compressor,
       'function TGPFX_Compressor__GetThreshold(Self:TGPFX_Compressor):FLOAT;',
       @TGPFX_Compressor__GetThreshold, true);
  RegisterMethod(TGPFX_Compressor,
       'procedure TGPFX_Compressor__PutThreshold(Self:TGPFX_Compressor;const Value: FLOAT);',
       @TGPFX_Compressor__PutThreshold, true);
  RegisterProperty(TGPFX_Compressor,
       'property Threshold:FLOAT read TGPFX_Compressor__GetThreshold write TGPFX_Compressor__PutThreshold;');
  RegisterMethod(TGPFX_Compressor,
       'function TGPFX_Compressor__GetRatio(Self:TGPFX_Compressor):FLOAT;',
       @TGPFX_Compressor__GetRatio, true);
  RegisterMethod(TGPFX_Compressor,
       'procedure TGPFX_Compressor__PutRatio(Self:TGPFX_Compressor;const Value: FLOAT);',
       @TGPFX_Compressor__PutRatio, true);
  RegisterProperty(TGPFX_Compressor,
       'property Ratio:FLOAT read TGPFX_Compressor__GetRatio write TGPFX_Compressor__PutRatio;');
  RegisterMethod(TGPFX_Compressor,
       'function TGPFX_Compressor__GetPredelay(Self:TGPFX_Compressor):FLOAT;',
       @TGPFX_Compressor__GetPredelay, true);
  RegisterMethod(TGPFX_Compressor,
       'procedure TGPFX_Compressor__PutPredelay(Self:TGPFX_Compressor;const Value: FLOAT);',
       @TGPFX_Compressor__PutPredelay, true);
  RegisterProperty(TGPFX_Compressor,
       'property Predelay:FLOAT read TGPFX_Compressor__GetPredelay write TGPFX_Compressor__PutPredelay;');
  // End of class TGPFX_Compressor
  // Begin of class TGPFX_Distortion
  RegisterClassType(TGPFX_Distortion, H);
  RegisterMethod(TGPFX_Distortion,
       'constructor Create(MusicHandle:Cardinal);',
       @TGPFX_Distortion.Create);
  RegisterMethod(TGPFX_Distortion,
       'destructor Destroy;override;',
       @TGPFX_Distortion.Destroy);
  RegisterStdMethodEx(TGPFX_Distortion,'RestoreDefaults',TGPFX_Distortion_RestoreDefaults,0,[typeBOOLEAN]);
  RegisterMethod(TGPFX_Distortion,
       'function TGPFX_Distortion__GetGain(Self:TGPFX_Distortion):FLOAT;',
       @TGPFX_Distortion__GetGain, true);
  RegisterMethod(TGPFX_Distortion,
       'procedure TGPFX_Distortion__PutGain(Self:TGPFX_Distortion;const Value: FLOAT);',
       @TGPFX_Distortion__PutGain, true);
  RegisterProperty(TGPFX_Distortion,
       'property Gain:FLOAT read TGPFX_Distortion__GetGain write TGPFX_Distortion__PutGain;');
  RegisterMethod(TGPFX_Distortion,
       'function TGPFX_Distortion__GetEdge(Self:TGPFX_Distortion):FLOAT;',
       @TGPFX_Distortion__GetEdge, true);
  RegisterMethod(TGPFX_Distortion,
       'procedure TGPFX_Distortion__PutEdge(Self:TGPFX_Distortion;const Value: FLOAT);',
       @TGPFX_Distortion__PutEdge, true);
  RegisterProperty(TGPFX_Distortion,
       'property Edge:FLOAT read TGPFX_Distortion__GetEdge write TGPFX_Distortion__PutEdge;');
  RegisterMethod(TGPFX_Distortion,
       'function TGPFX_Distortion__GetPostEQCenterFrequency(Self:TGPFX_Distortion):FLOAT;',
       @TGPFX_Distortion__GetPostEQCenterFrequency, true);
  RegisterMethod(TGPFX_Distortion,
       'procedure TGPFX_Distortion__PutPostEQCenterFrequency(Self:TGPFX_Distortion;const Value: FLOAT);',
       @TGPFX_Distortion__PutPostEQCenterFrequency, true);
  RegisterProperty(TGPFX_Distortion,
       'property PostEQCenterFrequency:FLOAT read TGPFX_Distortion__GetPostEQCenterFrequency write TGPFX_Distortion__PutPostEQCenterFrequency;');
  RegisterMethod(TGPFX_Distortion,
       'function TGPFX_Distortion__GetPostEQBandwidth(Self:TGPFX_Distortion):FLOAT;',
       @TGPFX_Distortion__GetPostEQBandwidth, true);
  RegisterMethod(TGPFX_Distortion,
       'procedure TGPFX_Distortion__PutPostEQBandwidth(Self:TGPFX_Distortion;const Value: FLOAT);',
       @TGPFX_Distortion__PutPostEQBandwidth, true);
  RegisterProperty(TGPFX_Distortion,
       'property PostEQBandwidth:FLOAT read TGPFX_Distortion__GetPostEQBandwidth write TGPFX_Distortion__PutPostEQBandwidth;');
  RegisterMethod(TGPFX_Distortion,
       'function TGPFX_Distortion__GetPreLowpassCutoff(Self:TGPFX_Distortion):FLOAT;',
       @TGPFX_Distortion__GetPreLowpassCutoff, true);
  RegisterMethod(TGPFX_Distortion,
       'procedure TGPFX_Distortion__PutPreLowpassCutoff(Self:TGPFX_Distortion;const Value: FLOAT);',
       @TGPFX_Distortion__PutPreLowpassCutoff, true);
  RegisterProperty(TGPFX_Distortion,
       'property PreLowpassCutoff:FLOAT read TGPFX_Distortion__GetPreLowpassCutoff write TGPFX_Distortion__PutPreLowpassCutoff;');
  // End of class TGPFX_Distortion
  // Begin of class TGPFX_Echo
  RegisterClassType(TGPFX_Echo, H);
  RegisterMethod(TGPFX_Echo,
       'constructor Create(MusicHandle:Cardinal);',
       @TGPFX_Echo.Create);
  RegisterMethod(TGPFX_Echo,
       'destructor Destroy;override;',
       @TGPFX_Echo.Destroy);
  RegisterStdMethodEx(TGPFX_Echo,'RestoreDefaults',TGPFX_Echo_RestoreDefaults,0,[typeBOOLEAN]);
  RegisterMethod(TGPFX_Echo,
       'function TGPFX_Echo__GetWetDryMix(Self:TGPFX_Echo):FLOAT;',
       @TGPFX_Echo__GetWetDryMix, true);
  RegisterMethod(TGPFX_Echo,
       'procedure TGPFX_Echo__PutWetDryMix(Self:TGPFX_Echo;const Value: FLOAT);',
       @TGPFX_Echo__PutWetDryMix, true);
  RegisterProperty(TGPFX_Echo,
       'property WetDryMix:FLOAT read TGPFX_Echo__GetWetDryMix write TGPFX_Echo__PutWetDryMix;');
  RegisterMethod(TGPFX_Echo,
       'function TGPFX_Echo__GetFeedback(Self:TGPFX_Echo):FLOAT;',
       @TGPFX_Echo__GetFeedback, true);
  RegisterMethod(TGPFX_Echo,
       'procedure TGPFX_Echo__PutFeedback(Self:TGPFX_Echo;const Value: FLOAT);',
       @TGPFX_Echo__PutFeedback, true);
  RegisterProperty(TGPFX_Echo,
       'property Feedback:FLOAT read TGPFX_Echo__GetFeedback write TGPFX_Echo__PutFeedback;');
  RegisterMethod(TGPFX_Echo,
       'function TGPFX_Echo__GetLeftDelay(Self:TGPFX_Echo):FLOAT;',
       @TGPFX_Echo__GetLeftDelay, true);
  RegisterMethod(TGPFX_Echo,
       'procedure TGPFX_Echo__PutLeftDelay(Self:TGPFX_Echo;const Value: FLOAT);',
       @TGPFX_Echo__PutLeftDelay, true);
  RegisterProperty(TGPFX_Echo,
       'property LeftDelay:FLOAT read TGPFX_Echo__GetLeftDelay write TGPFX_Echo__PutLeftDelay;');
  RegisterMethod(TGPFX_Echo,
       'function TGPFX_Echo__GetRightDelay(Self:TGPFX_Echo):FLOAT;',
       @TGPFX_Echo__GetRightDelay, true);
  RegisterMethod(TGPFX_Echo,
       'procedure TGPFX_Echo__PutRightDelay(Self:TGPFX_Echo;const Value: FLOAT);',
       @TGPFX_Echo__PutRightDelay, true);
  RegisterProperty(TGPFX_Echo,
       'property RightDelay:FLOAT read TGPFX_Echo__GetRightDelay write TGPFX_Echo__PutRightDelay;');
  RegisterMethod(TGPFX_Echo,
       'function TGPFX_Echo__GetPanDelay(Self:TGPFX_Echo):BOOL;',
       @TGPFX_Echo__GetPanDelay, true);
  RegisterMethod(TGPFX_Echo,
       'procedure TGPFX_Echo__PutPanDelay(Self:TGPFX_Echo;const Value: BOOL);',
       @TGPFX_Echo__PutPanDelay, true);
  RegisterProperty(TGPFX_Echo,
       'property PanDelay:BOOL read TGPFX_Echo__GetPanDelay write TGPFX_Echo__PutPanDelay;');
  // End of class TGPFX_Echo
  // Begin of class TGPFX_Flanger
  RegisterClassType(TGPFX_Flanger, H);
  RegisterMethod(TGPFX_Flanger,
       'constructor Create(MusicHandle:Cardinal);',
       @TGPFX_Flanger.Create);
  RegisterMethod(TGPFX_Flanger,
       'destructor Destroy;override;',
       @TGPFX_Flanger.Destroy);
  RegisterStdMethodEx(TGPFX_Flanger,'RestoreDefaults',TGPFX_Flanger_RestoreDefaults,0,[typeBOOLEAN]);
  RegisterMethod(TGPFX_Flanger,
       'function TGPFX_Flanger__GetWetDryMix(Self:TGPFX_Flanger):FLOAT;',
       @TGPFX_Flanger__GetWetDryMix, true);
  RegisterMethod(TGPFX_Flanger,
       'procedure TGPFX_Flanger__PutWetDryMix(Self:TGPFX_Flanger;const Value: FLOAT);',
       @TGPFX_Flanger__PutWetDryMix, true);
  RegisterProperty(TGPFX_Flanger,
       'property WetDryMix:FLOAT read TGPFX_Flanger__GetWetDryMix write TGPFX_Flanger__PutWetDryMix;');
  RegisterMethod(TGPFX_Flanger,
       'function TGPFX_Flanger__GetDepth(Self:TGPFX_Flanger):FLOAT;',
       @TGPFX_Flanger__GetDepth, true);
  RegisterMethod(TGPFX_Flanger,
       'procedure TGPFX_Flanger__PutDepth(Self:TGPFX_Flanger;const Value: FLOAT);',
       @TGPFX_Flanger__PutDepth, true);
  RegisterProperty(TGPFX_Flanger,
       'property Depth:FLOAT read TGPFX_Flanger__GetDepth write TGPFX_Flanger__PutDepth;');
  RegisterMethod(TGPFX_Flanger,
       'function TGPFX_Flanger__GetFeedback(Self:TGPFX_Flanger):FLOAT;',
       @TGPFX_Flanger__GetFeedback, true);
  RegisterMethod(TGPFX_Flanger,
       'procedure TGPFX_Flanger__PutFeedback(Self:TGPFX_Flanger;const Value: FLOAT);',
       @TGPFX_Flanger__PutFeedback, true);
  RegisterProperty(TGPFX_Flanger,
       'property Feedback:FLOAT read TGPFX_Flanger__GetFeedback write TGPFX_Flanger__PutFeedback;');
  RegisterMethod(TGPFX_Flanger,
       'function TGPFX_Flanger__GetFrequency(Self:TGPFX_Flanger):FLOAT;',
       @TGPFX_Flanger__GetFrequency, true);
  RegisterMethod(TGPFX_Flanger,
       'procedure TGPFX_Flanger__PutFrequency(Self:TGPFX_Flanger;const Value: FLOAT);',
       @TGPFX_Flanger__PutFrequency, true);
  RegisterProperty(TGPFX_Flanger,
       'property Frequency:FLOAT read TGPFX_Flanger__GetFrequency write TGPFX_Flanger__PutFrequency;');
  RegisterMethod(TGPFX_Flanger,
       'function TGPFX_Flanger__GetWaveform(Self:TGPFX_Flanger):DWORD;',
       @TGPFX_Flanger__GetWaveform, true);
  RegisterMethod(TGPFX_Flanger,
       'procedure TGPFX_Flanger__PutWaveform(Self:TGPFX_Flanger;const Value: DWORD);',
       @TGPFX_Flanger__PutWaveform, true);
  RegisterProperty(TGPFX_Flanger,
       'property Waveform:DWORD read TGPFX_Flanger__GetWaveform write TGPFX_Flanger__PutWaveform;');
  RegisterMethod(TGPFX_Flanger,
       'function TGPFX_Flanger__GetDelay(Self:TGPFX_Flanger):FLOAT;',
       @TGPFX_Flanger__GetDelay, true);
  RegisterMethod(TGPFX_Flanger,
       'procedure TGPFX_Flanger__PutDelay(Self:TGPFX_Flanger;const Value: FLOAT);',
       @TGPFX_Flanger__PutDelay, true);
  RegisterProperty(TGPFX_Flanger,
       'property Delay:FLOAT read TGPFX_Flanger__GetDelay write TGPFX_Flanger__PutDelay;');
  RegisterMethod(TGPFX_Flanger,
       'function TGPFX_Flanger__GetPhase(Self:TGPFX_Flanger):DWORD;',
       @TGPFX_Flanger__GetPhase, true);
  RegisterMethod(TGPFX_Flanger,
       'procedure TGPFX_Flanger__PutPhase(Self:TGPFX_Flanger;const Value: DWORD);',
       @TGPFX_Flanger__PutPhase, true);
  RegisterProperty(TGPFX_Flanger,
       'property Phase:DWORD read TGPFX_Flanger__GetPhase write TGPFX_Flanger__PutPhase;');
  // End of class TGPFX_Flanger
  // Begin of class TGPFX_Gargle
  RegisterClassType(TGPFX_Gargle, H);
  RegisterMethod(TGPFX_Gargle,
       'constructor Create(MusicHandle:Cardinal);',
       @TGPFX_Gargle.Create);
  RegisterMethod(TGPFX_Gargle,
       'destructor Destroy;override;',
       @TGPFX_Gargle.Destroy);
  RegisterStdMethodEx(TGPFX_Gargle,'RestoreDefaults',TGPFX_Gargle_RestoreDefaults,0,[typeBOOLEAN]);
  RegisterMethod(TGPFX_Gargle,
       'function TGPFX_Gargle__GetRateHz(Self:TGPFX_Gargle):DWORD;',
       @TGPFX_Gargle__GetRateHz, true);
  RegisterMethod(TGPFX_Gargle,
       'procedure TGPFX_Gargle__PutRateHz(Self:TGPFX_Gargle;const Value: DWORD);',
       @TGPFX_Gargle__PutRateHz, true);
  RegisterProperty(TGPFX_Gargle,
       'property RateHz:DWORD read TGPFX_Gargle__GetRateHz write TGPFX_Gargle__PutRateHz;');
  RegisterMethod(TGPFX_Gargle,
       'function TGPFX_Gargle__GetWaveShape(Self:TGPFX_Gargle):DWORD;',
       @TGPFX_Gargle__GetWaveShape, true);
  RegisterMethod(TGPFX_Gargle,
       'procedure TGPFX_Gargle__PutWaveShape(Self:TGPFX_Gargle;const Value: DWORD);',
       @TGPFX_Gargle__PutWaveShape, true);
  RegisterProperty(TGPFX_Gargle,
       'property WaveShape:DWORD read TGPFX_Gargle__GetWaveShape write TGPFX_Gargle__PutWaveShape;');
  // End of class TGPFX_Gargle
  // Begin of class TGPFX_I3DL2Reverb
  RegisterClassType(TGPFX_I3DL2Reverb, H);
  RegisterMethod(TGPFX_I3DL2Reverb,
       'constructor Create(MusicHandle:Cardinal);',
       @TGPFX_I3DL2Reverb.Create);
  RegisterMethod(TGPFX_I3DL2Reverb,
       'destructor Destroy;override;',
       @TGPFX_I3DL2Reverb.Destroy);
  RegisterStdMethodEx(TGPFX_I3DL2Reverb,'RestoreDefaults',TGPFX_I3DL2Reverb_RestoreDefaults,0,[typeBOOLEAN]);
  RegisterMethod(TGPFX_I3DL2Reverb,
       'function TGPFX_I3DL2Reverb__GetRoom(Self:TGPFX_I3DL2Reverb):Integer;',
       @TGPFX_I3DL2Reverb__GetRoom, true);
  RegisterMethod(TGPFX_I3DL2Reverb,
       'procedure TGPFX_I3DL2Reverb__PutRoom(Self:TGPFX_I3DL2Reverb;const Value: Integer);',
       @TGPFX_I3DL2Reverb__PutRoom, true);
  RegisterProperty(TGPFX_I3DL2Reverb,
       'property Room:Integer read TGPFX_I3DL2Reverb__GetRoom write TGPFX_I3DL2Reverb__PutRoom;');
  RegisterMethod(TGPFX_I3DL2Reverb,
       'function TGPFX_I3DL2Reverb__GetRoomHF(Self:TGPFX_I3DL2Reverb):Integer;',
       @TGPFX_I3DL2Reverb__GetRoomHF, true);
  RegisterMethod(TGPFX_I3DL2Reverb,
       'procedure TGPFX_I3DL2Reverb__PutRoomHF(Self:TGPFX_I3DL2Reverb;const Value: Integer);',
       @TGPFX_I3DL2Reverb__PutRoomHF, true);
  RegisterProperty(TGPFX_I3DL2Reverb,
       'property RoomHF:Integer read TGPFX_I3DL2Reverb__GetRoomHF write TGPFX_I3DL2Reverb__PutRoomHF;');
  RegisterMethod(TGPFX_I3DL2Reverb,
       'function TGPFX_I3DL2Reverb__GetRoomRolloffFactor(Self:TGPFX_I3DL2Reverb):FLOAT;',
       @TGPFX_I3DL2Reverb__GetRoomRolloffFactor, true);
  RegisterMethod(TGPFX_I3DL2Reverb,
       'procedure TGPFX_I3DL2Reverb__PutRoomRolloffFactor(Self:TGPFX_I3DL2Reverb;const Value: FLOAT);',
       @TGPFX_I3DL2Reverb__PutRoomRolloffFactor, true);
  RegisterProperty(TGPFX_I3DL2Reverb,
       'property RoomRolloffFactor:FLOAT read TGPFX_I3DL2Reverb__GetRoomRolloffFactor write TGPFX_I3DL2Reverb__PutRoomRolloffFactor;');
  RegisterMethod(TGPFX_I3DL2Reverb,
       'function TGPFX_I3DL2Reverb__GetDecayTime(Self:TGPFX_I3DL2Reverb):FLOAT;',
       @TGPFX_I3DL2Reverb__GetDecayTime, true);
  RegisterMethod(TGPFX_I3DL2Reverb,
       'procedure TGPFX_I3DL2Reverb__PutDecayTime(Self:TGPFX_I3DL2Reverb;const Value: FLOAT);',
       @TGPFX_I3DL2Reverb__PutDecayTime, true);
  RegisterProperty(TGPFX_I3DL2Reverb,
       'property DecayTime:FLOAT read TGPFX_I3DL2Reverb__GetDecayTime write TGPFX_I3DL2Reverb__PutDecayTime;');
  RegisterMethod(TGPFX_I3DL2Reverb,
       'function TGPFX_I3DL2Reverb__GetDecayHFRatio(Self:TGPFX_I3DL2Reverb):FLOAT;',
       @TGPFX_I3DL2Reverb__GetDecayHFRatio, true);
  RegisterMethod(TGPFX_I3DL2Reverb,
       'procedure TGPFX_I3DL2Reverb__PutDecayHFRatio(Self:TGPFX_I3DL2Reverb;const Value: FLOAT);',
       @TGPFX_I3DL2Reverb__PutDecayHFRatio, true);
  RegisterProperty(TGPFX_I3DL2Reverb,
       'property DecayHFRatio:FLOAT read TGPFX_I3DL2Reverb__GetDecayHFRatio write TGPFX_I3DL2Reverb__PutDecayHFRatio;');
  RegisterMethod(TGPFX_I3DL2Reverb,
       'function TGPFX_I3DL2Reverb__GetReflections(Self:TGPFX_I3DL2Reverb):Integer;',
       @TGPFX_I3DL2Reverb__GetReflections, true);
  RegisterMethod(TGPFX_I3DL2Reverb,
       'procedure TGPFX_I3DL2Reverb__PutReflections(Self:TGPFX_I3DL2Reverb;const Value: Integer);',
       @TGPFX_I3DL2Reverb__PutReflections, true);
  RegisterProperty(TGPFX_I3DL2Reverb,
       'property Reflections:Integer read TGPFX_I3DL2Reverb__GetReflections write TGPFX_I3DL2Reverb__PutReflections;');
  RegisterMethod(TGPFX_I3DL2Reverb,
       'function TGPFX_I3DL2Reverb__GetReflectionsDelay(Self:TGPFX_I3DL2Reverb):FLOAT;',
       @TGPFX_I3DL2Reverb__GetReflectionsDelay, true);
  RegisterMethod(TGPFX_I3DL2Reverb,
       'procedure TGPFX_I3DL2Reverb__PutReflectionsDelay(Self:TGPFX_I3DL2Reverb;const Value: FLOAT);',
       @TGPFX_I3DL2Reverb__PutReflectionsDelay, true);
  RegisterProperty(TGPFX_I3DL2Reverb,
       'property ReflectionsDelay:FLOAT read TGPFX_I3DL2Reverb__GetReflectionsDelay write TGPFX_I3DL2Reverb__PutReflectionsDelay;');
  RegisterMethod(TGPFX_I3DL2Reverb,
       'function TGPFX_I3DL2Reverb__GetReverb(Self:TGPFX_I3DL2Reverb):Integer;',
       @TGPFX_I3DL2Reverb__GetReverb, true);
  RegisterMethod(TGPFX_I3DL2Reverb,
       'procedure TGPFX_I3DL2Reverb__PutReverb(Self:TGPFX_I3DL2Reverb;const Value: Integer);',
       @TGPFX_I3DL2Reverb__PutReverb, true);
  RegisterProperty(TGPFX_I3DL2Reverb,
       'property Reverb:Integer read TGPFX_I3DL2Reverb__GetReverb write TGPFX_I3DL2Reverb__PutReverb;');
  RegisterMethod(TGPFX_I3DL2Reverb,
       'function TGPFX_I3DL2Reverb__GetReverbDelay(Self:TGPFX_I3DL2Reverb):FLOAT;',
       @TGPFX_I3DL2Reverb__GetReverbDelay, true);
  RegisterMethod(TGPFX_I3DL2Reverb,
       'procedure TGPFX_I3DL2Reverb__PutReverbDelay(Self:TGPFX_I3DL2Reverb;const Value: FLOAT);',
       @TGPFX_I3DL2Reverb__PutReverbDelay, true);
  RegisterProperty(TGPFX_I3DL2Reverb,
       'property ReverbDelay:FLOAT read TGPFX_I3DL2Reverb__GetReverbDelay write TGPFX_I3DL2Reverb__PutReverbDelay;');
  RegisterMethod(TGPFX_I3DL2Reverb,
       'function TGPFX_I3DL2Reverb__GetDiffusion(Self:TGPFX_I3DL2Reverb):FLOAT;',
       @TGPFX_I3DL2Reverb__GetDiffusion, true);
  RegisterMethod(TGPFX_I3DL2Reverb,
       'procedure TGPFX_I3DL2Reverb__PutDiffusion(Self:TGPFX_I3DL2Reverb;const Value: FLOAT);',
       @TGPFX_I3DL2Reverb__PutDiffusion, true);
  RegisterProperty(TGPFX_I3DL2Reverb,
       'property Diffusion:FLOAT read TGPFX_I3DL2Reverb__GetDiffusion write TGPFX_I3DL2Reverb__PutDiffusion;');
  RegisterMethod(TGPFX_I3DL2Reverb,
       'function TGPFX_I3DL2Reverb__GetDensity(Self:TGPFX_I3DL2Reverb):FLOAT;',
       @TGPFX_I3DL2Reverb__GetDensity, true);
  RegisterMethod(TGPFX_I3DL2Reverb,
       'procedure TGPFX_I3DL2Reverb__PutDensity(Self:TGPFX_I3DL2Reverb;const Value: FLOAT);',
       @TGPFX_I3DL2Reverb__PutDensity, true);
  RegisterProperty(TGPFX_I3DL2Reverb,
       'property Density:FLOAT read TGPFX_I3DL2Reverb__GetDensity write TGPFX_I3DL2Reverb__PutDensity;');
  RegisterMethod(TGPFX_I3DL2Reverb,
       'function TGPFX_I3DL2Reverb__GetHFReference(Self:TGPFX_I3DL2Reverb):FLOAT;',
       @TGPFX_I3DL2Reverb__GetHFReference, true);
  RegisterMethod(TGPFX_I3DL2Reverb,
       'procedure TGPFX_I3DL2Reverb__PutHFReference(Self:TGPFX_I3DL2Reverb;const Value: FLOAT);',
       @TGPFX_I3DL2Reverb__PutHFReference, true);
  RegisterProperty(TGPFX_I3DL2Reverb,
       'property HFReference:FLOAT read TGPFX_I3DL2Reverb__GetHFReference write TGPFX_I3DL2Reverb__PutHFReference;');
  // End of class TGPFX_I3DL2Reverb
  // Begin of class TGPFX_Reverb
  RegisterClassType(TGPFX_Reverb, H);
  RegisterMethod(TGPFX_Reverb,
       'constructor Create(MusicHandle:Cardinal);',
       @TGPFX_Reverb.Create);
  RegisterMethod(TGPFX_Reverb,
       'destructor Destroy;override;',
       @TGPFX_Reverb.Destroy);
  RegisterStdMethodEx(TGPFX_Reverb,'RestoreDefaults',TGPFX_Reverb_RestoreDefaults,0,[typeBOOLEAN]);
  RegisterMethod(TGPFX_Reverb,
       'function TGPFX_Reverb__GetInGain(Self:TGPFX_Reverb):FLOAT;',
       @TGPFX_Reverb__GetInGain, true);
  RegisterMethod(TGPFX_Reverb,
       'procedure TGPFX_Reverb__PutInGain(Self:TGPFX_Reverb;const Value: FLOAT);',
       @TGPFX_Reverb__PutInGain, true);
  RegisterProperty(TGPFX_Reverb,
       'property InGain:FLOAT read TGPFX_Reverb__GetInGain write TGPFX_Reverb__PutInGain;');
  RegisterMethod(TGPFX_Reverb,
       'function TGPFX_Reverb__GetReverbMix(Self:TGPFX_Reverb):FLOAT;',
       @TGPFX_Reverb__GetReverbMix, true);
  RegisterMethod(TGPFX_Reverb,
       'procedure TGPFX_Reverb__PutReverbMix(Self:TGPFX_Reverb;const Value: FLOAT);',
       @TGPFX_Reverb__PutReverbMix, true);
  RegisterProperty(TGPFX_Reverb,
       'property ReverbMix:FLOAT read TGPFX_Reverb__GetReverbMix write TGPFX_Reverb__PutReverbMix;');
  RegisterMethod(TGPFX_Reverb,
       'function TGPFX_Reverb__GetReverbTime(Self:TGPFX_Reverb):FLOAT;',
       @TGPFX_Reverb__GetReverbTime, true);
  RegisterMethod(TGPFX_Reverb,
       'procedure TGPFX_Reverb__PutReverbTime(Self:TGPFX_Reverb;const Value: FLOAT);',
       @TGPFX_Reverb__PutReverbTime, true);
  RegisterProperty(TGPFX_Reverb,
       'property ReverbTime:FLOAT read TGPFX_Reverb__GetReverbTime write TGPFX_Reverb__PutReverbTime;');
  RegisterMethod(TGPFX_Reverb,
       'function TGPFX_Reverb__GetHighFreqRTRatio(Self:TGPFX_Reverb):FLOAT;',
       @TGPFX_Reverb__GetHighFreqRTRatio, true);
  RegisterMethod(TGPFX_Reverb,
       'procedure TGPFX_Reverb__PutHighFreqRTRatio(Self:TGPFX_Reverb;const Value: FLOAT);',
       @TGPFX_Reverb__PutHighFreqRTRatio, true);
  RegisterProperty(TGPFX_Reverb,
       'property HighFreqRTRatio:FLOAT read TGPFX_Reverb__GetHighFreqRTRatio write TGPFX_Reverb__PutHighFreqRTRatio;');
  // End of class TGPFX_Reverb
  // Begin of class TGPFX_Equalizer
  RegisterClassType(TGPFX_Equalizer, H);
  RegisterMethod(TGPFX_Equalizer,
       'constructor Create(MusicHandle:Cardinal);',
       @TGPFX_Equalizer.Create);
  RegisterMethod(TGPFX_Equalizer,
       'destructor Destroy;override;',
       @TGPFX_Equalizer.Destroy);
  RegisterStdMethodEx(TGPFX_Equalizer,'RestoreDefaults',TGPFX_Equalizer_RestoreDefaults,0,[typeBOOLEAN]);
  RegisterMethod(TGPFX_Equalizer,
       'function TGPFX_Equalizer__GetEQBand(Self:TGPFX_Equalizer;Index:Integer):FLOAT;',
       @TGPFX_Equalizer__GetEQBand, true);
  RegisterMethod(TGPFX_Equalizer,
       'procedure TGPFX_Equalizer__PutEQBand(Self:TGPFX_Equalizer;Index:Integer;const Value: FLOAT);',
       @TGPFX_Equalizer__PutEQBand, true);
  RegisterProperty(TGPFX_Equalizer,
       'property EQBand[Index:Integer]:FLOAT read TGPFX_Equalizer__GetEQBand write TGPFX_Equalizer__PutEQBand;');
  // End of class TGPFX_Equalizer
  // Begin of class TGPEffects
  RegisterClassType(TGPEffects, H);
  RegisterMethod(TGPEffects,
       'constructor Create(MusicHandle:Cardinal);',
       @TGPEffects.Create);
  RegisterMethod(TGPEffects,
       'destructor Destroy;override;',
       @TGPEffects.Destroy);
  RegisterMethod(TGPEffects,
       'function Add_Chorus:TGPFX_Chorus;',
       @TGPEffects.Add_Chorus);
  RegisterStdMethodEx(TGPEffects,'Remove_Chorus',TGPEffects_Remove_Chorus,0,[typeVARIANT]);
  RegisterMethod(TGPEffects,
       'function Add_Compressor:TGPFX_Compressor;',
       @TGPEffects.Add_Compressor);
  RegisterStdMethodEx(TGPEffects,'Remove_Compressor',TGPEffects_Remove_Compressor,0,[typeVARIANT]);
  RegisterMethod(TGPEffects,
       'function Add_Distortion:TGPFX_Distortion;',
       @TGPEffects.Add_Distortion);
  RegisterStdMethodEx(TGPEffects,'Remove_Distortion',TGPEffects_Remove_Distortion,0,[typeVARIANT]);
  RegisterMethod(TGPEffects,
       'function Add_Echo:TGPFX_Echo;',
       @TGPEffects.Add_Echo);
  RegisterStdMethodEx(TGPEffects,'Remove_Echo',TGPEffects_Remove_Echo,0,[typeVARIANT]);
  RegisterMethod(TGPEffects,
       'function Add_Flanger:TGPFX_Flanger;',
       @TGPEffects.Add_Flanger);
  RegisterStdMethodEx(TGPEffects,'Remove_Flanger',TGPEffects_Remove_Flanger,0,[typeVARIANT]);
  RegisterMethod(TGPEffects,
       'function Add_Gargle:TGPFX_Gargle;',
       @TGPEffects.Add_Gargle);
  RegisterStdMethodEx(TGPEffects,'Remove_Gargle',TGPEffects_Remove_Gargle,0,[typeVARIANT]);
  RegisterMethod(TGPEffects,
       'function Add_I3DL2Reverb:TGPFX_I3DL2Reverb;',
       @TGPEffects.Add_I3DL2Reverb);
  RegisterStdMethodEx(TGPEffects,'Remove_I3DL2Reverb',TGPEffects_Remove_I3DL2Reverb,0,[typeVARIANT]);
  RegisterMethod(TGPEffects,
       'function Add_Reverb:TGPFX_Reverb;',
       @TGPEffects.Add_Reverb);
  RegisterStdMethodEx(TGPEffects,'Remove_Reverb',TGPEffects_Remove_Reverb,0,[typeVARIANT]);
  RegisterMethod(TGPEffects,
       'function Add_Equalizer:TGPFX_Equalizer;',
       @TGPEffects.Add_Equalizer);
  RegisterStdMethodEx(TGPEffects,'Remove_Equalizer',TGPEffects_Remove_Equalizer,0,[typeVARIANT]);
  RegisterMethod(TGPEffects,
       'procedure SaveConfig(var x:TGPStore);',
       @TGPEffects.SaveConfig);
  RegisterMethod(TGPEffects,
       'procedure LoadConfig(var x:TGPStore);',
       @TGPEffects.LoadConfig);
  RegisterMethod(TGPEffects,
       'function TGPEffects__GetChorus(Self:TGPEffects):TGPFX_Chorus;',
       @TGPEffects__GetChorus, true);
  RegisterProperty(TGPEffects,
       'property Chorus:TGPFX_Chorus read TGPEffects__GetChorus;');
  RegisterMethod(TGPEffects,
       'function TGPEffects__GetCompressor(Self:TGPEffects):TGPFX_Compressor;',
       @TGPEffects__GetCompressor, true);
  RegisterProperty(TGPEffects,
       'property Compressor:TGPFX_Compressor read TGPEffects__GetCompressor;');
  RegisterMethod(TGPEffects,
       'function TGPEffects__GetDistortion(Self:TGPEffects):TGPFX_Distortion;',
       @TGPEffects__GetDistortion, true);
  RegisterProperty(TGPEffects,
       'property Distortion:TGPFX_Distortion read TGPEffects__GetDistortion;');
  RegisterMethod(TGPEffects,
       'function TGPEffects__GetEcho(Self:TGPEffects):TGPFX_Echo;',
       @TGPEffects__GetEcho, true);
  RegisterProperty(TGPEffects,
       'property Echo:TGPFX_Echo read TGPEffects__GetEcho;');
  RegisterMethod(TGPEffects,
       'function TGPEffects__GetFlanger(Self:TGPEffects):TGPFX_Flanger;',
       @TGPEffects__GetFlanger, true);
  RegisterProperty(TGPEffects,
       'property Flanger:TGPFX_Flanger read TGPEffects__GetFlanger;');
  RegisterMethod(TGPEffects,
       'function TGPEffects__GetGargle(Self:TGPEffects):TGPFX_Gargle;',
       @TGPEffects__GetGargle, true);
  RegisterProperty(TGPEffects,
       'property Gargle:TGPFX_Gargle read TGPEffects__GetGargle;');
  RegisterMethod(TGPEffects,
       'function TGPEffects__GetI3DL2Reverb(Self:TGPEffects):TGPFX_I3DL2Reverb;',
       @TGPEffects__GetI3DL2Reverb, true);
  RegisterProperty(TGPEffects,
       'property I3DL2Reverb:TGPFX_I3DL2Reverb read TGPEffects__GetI3DL2Reverb;');
  RegisterMethod(TGPEffects,
       'function TGPEffects__GetReverb(Self:TGPEffects):TGPFX_Reverb;',
       @TGPEffects__GetReverb, true);
  RegisterProperty(TGPEffects,
       'property Reverb:TGPFX_Reverb read TGPEffects__GetReverb;');
  RegisterMethod(TGPEffects,
       'function TGPEffects__GetEqualizer(Self:TGPEffects):TGPFX_Equalizer;',
       @TGPEffects__GetEqualizer, true);
  RegisterProperty(TGPEffects,
       'property Equalizer:TGPFX_Equalizer read TGPEffects__GetEqualizer;');
  // End of class TGPEffects
  RegisterRTTIType(TypeInfo(TGPMusicType));
  RegisterRTTIType(TypeInfo(TGPMusicState));
  // Begin of class TGPMusic
  RegisterClassType(TGPMusic, H);
  RegisterMethod(TGPMusic,
       'constructor Create;',
       @TGPMusic.Create);
  RegisterMethod(TGPMusic,
       'destructor Destroy;override;',
       @TGPMusic.Destroy);
  RegisterMethod(TGPMusic,
       'function Play(PlayCount:word=1):boolean;',
       @TGPMusic.Play);
  RegisterStdMethodEx(TGPMusic,'Open',TGPMusic_Open,1,[typeSTRING,typeBOOLEAN]);
  RegisterStdMethodEx(TGPMusic,'Pause',TGPMusic_Pause,0,[typeBOOLEAN]);
  RegisterStdMethodEx(TGPMusic,'UnPause',TGPMusic_UnPause,0,[typeBOOLEAN]);
  RegisterStdMethodEx(TGPMusic,'TogglePause',TGPMusic_TogglePause,0,[typeBOOLEAN]);
  RegisterStdMethodEx(TGPMusic,'Stop',TGPMusic_Stop,0,[typeBOOLEAN]);
  RegisterStdMethodEx(TGPMusic,'Close',TGPMusic_Close,0,[typeBOOLEAN]);
  RegisterStdMethodEx(TGPMusic,'Reload',TGPMusic_Reload,1,[typeBOOLEAN,typeBOOLEAN]);
  RegisterMethod(TGPMusic,
       'procedure SaveState(var store:TGPStore);',
       @TGPMusic.SaveState);
  RegisterMethod(TGPMusic,
       'procedure LoadState(var store:TGPStore);',
       @TGPMusic.LoadState);
  RegisterMethod(TGPMusic,
       'function GetFFTData(var data:TGPFFTData):boolean;',
       @TGPMusic.GetFFTData);
  RegisterMethod(TGPMusic,
       'function TGPMusic__GetHandle(Self:TGPMusic):Cardinal;',
       @TGPMusic__GetHandle, true);
  RegisterProperty(TGPMusic,
       'property Handle:Cardinal read TGPMusic__GetHandle;');
  RegisterMethod(TGPMusic,
       'function TGPMusic__GetisSound(Self:TGPMusic):boolean;',
       @TGPMusic__GetisSound, true);
  RegisterProperty(TGPMusic,
       'property isSound:boolean read TGPMusic__GetisSound;');
  RegisterMethod(TGPMusic,
       'function TGPMusic__GetUseEAX(Self:TGPMusic):boolean;',
       @TGPMusic__GetUseEAX, true);
  RegisterMethod(TGPMusic,
       'procedure TGPMusic__PutUseEAX(Self:TGPMusic;const Value: boolean);',
       @TGPMusic__PutUseEAX, true);
  RegisterProperty(TGPMusic,
       'property UseEAX:boolean read TGPMusic__GetUseEAX write TGPMusic__PutUseEAX;');
  RegisterMethod(TGPMusic,
       'function TGPMusic__GetFileName(Self:TGPMusic):string;',
       @TGPMusic__GetFileName, true);
  RegisterProperty(TGPMusic,
       'property FileName:string read TGPMusic__GetFileName;');
  RegisterMethod(TGPMusic,
       'function TGPMusic__GetMusicType(Self:TGPMusic):TGPMusicType;',
       @TGPMusic__GetMusicType, true);
  RegisterProperty(TGPMusic,
       'property MusicType:TGPMusicType read TGPMusic__GetMusicType;');
  RegisterMethod(TGPMusic,
       'function TGPMusic__GetMusicState(Self:TGPMusic):TGPMusicState;',
       @TGPMusic__GetMusicState, true);
  RegisterProperty(TGPMusic,
       'property MusicState:TGPMusicState read TGPMusic__GetMusicState;');
  RegisterMethod(TGPMusic,
       'function TGPMusic__GetnLoops(Self:TGPMusic):Word;',
       @TGPMusic__GetnLoops, true);
  RegisterMethod(TGPMusic,
       'procedure TGPMusic__PutnLoops(Self:TGPMusic;const Value: Word);',
       @TGPMusic__PutnLoops, true);
  RegisterProperty(TGPMusic,
       'property nLoops:Word read TGPMusic__GetnLoops write TGPMusic__PutnLoops;');
  RegisterMethod(TGPMusic,
       'function TGPMusic__GetEffects(Self:TGPMusic):TGPEffects;',
       @TGPMusic__GetEffects, true);
  RegisterProperty(TGPMusic,
       'property Effects:TGPEffects read TGPMusic__GetEffects;');
  RegisterMethod(TGPMusic,
       'function TGPMusic__GetPosition(Self:TGPMusic):Integer;',
       @TGPMusic__GetPosition, true);
  RegisterMethod(TGPMusic,
       'procedure TGPMusic__PutPosition(Self:TGPMusic;const Value: Integer);',
       @TGPMusic__PutPosition, true);
  RegisterProperty(TGPMusic,
       'property Position:Integer read TGPMusic__GetPosition write TGPMusic__PutPosition;');
  RegisterMethod(TGPMusic,
       'function TGPMusic__GetPan(Self:TGPMusic):integer;',
       @TGPMusic__GetPan, true);
  RegisterMethod(TGPMusic,
       'procedure TGPMusic__PutPan(Self:TGPMusic;const Value: integer);',
       @TGPMusic__PutPan, true);
  RegisterProperty(TGPMusic,
       'property Pan:integer read TGPMusic__GetPan write TGPMusic__PutPan;');
  RegisterMethod(TGPMusic,
       'function TGPMusic__GetVolume(Self:TGPMusic):integer;',
       @TGPMusic__GetVolume, true);
  RegisterMethod(TGPMusic,
       'procedure TGPMusic__PutVolume(Self:TGPMusic;const Value: integer);',
       @TGPMusic__PutVolume, true);
  RegisterProperty(TGPMusic,
       'property Volume:integer read TGPMusic__GetVolume write TGPMusic__PutVolume;');
  RegisterMethod(TGPMusic,
       'function TGPMusic__GetChannelLength(Self:TGPMusic):Cardinal;',
       @TGPMusic__GetChannelLength, true);
  RegisterProperty(TGPMusic,
       'property ChannelLength:Cardinal read TGPMusic__GetChannelLength;');
  RegisterMethod(TGPMusic,
       'function TGPMusic__GetTitle(Self:TGPMusic):string;',
       @TGPMusic__GetTitle, true);
  RegisterProperty(TGPMusic,
       'property Title:string read TGPMusic__GetTitle;');
  RegisterMethod(TGPMusic,
       'function TGPMusic__GetIndex(Self:TGPMusic):integer;',
       @TGPMusic__GetIndex, true);
  RegisterProperty(TGPMusic,
       'property Index:integer read TGPMusic__GetIndex;');
  RegisterMethod(TGPMusic,
       'function TGPMusic__GetTag(Self:TGPMusic):integer;',
       @TGPMusic__GetTag, true);
  RegisterMethod(TGPMusic,
       'procedure TGPMusic__PutTag(Self:TGPMusic;const Value: integer);',
       @TGPMusic__PutTag, true);
  RegisterProperty(TGPMusic,
       'property Tag:integer read TGPMusic__GetTag write TGPMusic__PutTag;');
  RegisterMethod(TGPMusic,
       'function TGPMusic__GetLevel(Self:TGPMusic):DWORD;',
       @TGPMusic__GetLevel, true);
  RegisterProperty(TGPMusic,
       'property Level:DWORD read TGPMusic__GetLevel;');
  RegisterMethod(TGPMusic,
       'function TGPMusic__GetEndOffset(Self:TGPMusic):Cardinal;',
       @TGPMusic__GetEndOffset, true);
  RegisterMethod(TGPMusic,
       'procedure TGPMusic__PutEndOffset(Self:TGPMusic;const Value: Cardinal);',
       @TGPMusic__PutEndOffset, true);
  RegisterProperty(TGPMusic,
       'property EndOffset:Cardinal read TGPMusic__GetEndOffset write TGPMusic__PutEndOffset;');
  // End of class TGPMusic
  RegisterRTTIType(TypeInfo(TGPPlayListMode));
  RegisterRTTIType(TypeInfo(TGPSortMethod));
  // Begin of class TGPPlayList
  RegisterClassType(TGPPlayList, H);
  RegisterMethod(TGPPlayList,
       'constructor Create;',
       @TGPPlayList.Create);
  RegisterMethod(TGPPlayList,
       'destructor Destroy;override;',
       @TGPPlayList.Destroy);
  RegisterStdMethodEx(TGPPlayList,'PlayNext',TGPPlayList_PlayNext,0,[typeBOOLEAN]);
  RegisterStdMethodEx(TGPPlayList,'PlayPrev',TGPPlayList_PlayPrev,0,[typeBOOLEAN]);
  RegisterStdMethodEx(TGPPlayList,'PlayCurrent',TGPPlayList_PlayCurrent,0,[typeBOOLEAN]);
  RegisterMethod(TGPPlayList,
       'function TGPPlayList__GetFiles(Self:TGPPlayList;Index:integer):string;',
       @TGPPlayList__GetFiles, true);
  RegisterProperty(TGPPlayList,
       'property Files[Index:integer]:string read TGPPlayList__GetFiles;');
  RegisterMethod(TGPPlayList,
       'function TGPPlayList__GetTitles(Self:TGPPlayList;Index:integer):string;',
       @TGPPlayList__GetTitles, true);
  RegisterProperty(TGPPlayList,
       'property Titles[Index:integer]:string read TGPPlayList__GetTitles;');
  RegisterStdMethodEx(TGPPlayList,'AddFile',TGPPlayList_AddFile,1,[typeSTRING,typeBOOLEAN]);
  RegisterMethod(TGPPlayList,
       'function AddFromFolder(Dir:string;SubDirs:boolean;DoClear:boolean=false):boolean;',
       @TGPPlayList.AddFromFolder);
  RegisterStdMethodEx(TGPPlayList,'Delete',TGPPlayList_Delete,1,[typeINTEGER,typeINTEGER]);
  RegisterStdMethodEx(TGPPlayList,'Clear',TGPPlayList_Clear,0,[typeVARIANT]);
  RegisterStdMethodEx(TGPPlayList,'Exchange',TGPPlayList_Exchange,2,[typeINTEGER,typeINTEGER,typeVARIANT]);
  RegisterStdMethodEx(TGPPlayList,'PlayMusic',TGPPlayList_PlayMusic,1,[typeINTEGER,typeBOOLEAN]);
  RegisterMethod(TGPPlayList,
       'procedure Sort(SortMethod:TGPSortMethod;Backwards:boolean);',
       @TGPPlayList.Sort);
  RegisterMethod(TGPPlayList,
       'function LoadFromFile(FileName:string;DoClear:boolean=true):boolean;',
       @TGPPlayList.LoadFromFile);
  RegisterStdMethodEx(TGPPlayList,'SaveToFile',TGPPlayList_SaveToFile,1,[typeSTRING,typeBOOLEAN]);
  RegisterMethod(TGPPlayList,
       'function TGPPlayList__GetMode(Self:TGPPlayList):TGPPlayListMode;',
       @TGPPlayList__GetMode, true);
  RegisterMethod(TGPPlayList,
       'procedure TGPPlayList__PutMode(Self:TGPPlayList;const Value: TGPPlayListMode);',
       @TGPPlayList__PutMode, true);
  RegisterProperty(TGPPlayList,
       'property Mode:TGPPlayListMode read TGPPlayList__GetMode write TGPPlayList__PutMode;');
  RegisterMethod(TGPPlayList,
       'function TGPPlayList__GetCount(Self:TGPPlayList):integer;',
       @TGPPlayList__GetCount, true);
  RegisterProperty(TGPPlayList,
       'property Count:integer read TGPPlayList__GetCount;');
  RegisterMethod(TGPPlayList,
       'function TGPPlayList__GetMusicIndex(Self:TGPPlayList):integer;',
       @TGPPlayList__GetMusicIndex, true);
  RegisterMethod(TGPPlayList,
       'procedure TGPPlayList__PutMusicIndex(Self:TGPPlayList;const Value: integer);',
       @TGPPlayList__PutMusicIndex, true);
  RegisterProperty(TGPPlayList,
       'property MusicIndex:integer read TGPPlayList__GetMusicIndex write TGPPlayList__PutMusicIndex;');
  RegisterMethod(TGPPlayList,
       'function TGPPlayList__GetInfoOnLoad(Self:TGPPlayList):boolean;',
       @TGPPlayList__GetInfoOnLoad, true);
  RegisterMethod(TGPPlayList,
       'procedure TGPPlayList__PutInfoOnLoad(Self:TGPPlayList;const Value: boolean);',
       @TGPPlayList__PutInfoOnLoad, true);
  RegisterProperty(TGPPlayList,
       'property InfoOnLoad:boolean read TGPPlayList__GetInfoOnLoad write TGPPlayList__PutInfoOnLoad;');
  RegisterMethod(TGPPlayList,
       'function TGPPlayList__GetTempDisable(Self:TGPPlayList):boolean;',
       @TGPPlayList__GetTempDisable, true);
  RegisterProperty(TGPPlayList,
       'property TempDisable:boolean read TGPPlayList__GetTempDisable;');
  // End of class TGPPlayList
  // Begin of class TGPPlugins
  RegisterClassType(TGPPlugins, H);
  RegisterMethod(TGPPlugins,
       'constructor Create;',
       @TGPPlugins.Create);
  RegisterMethod(TGPPlugins,
       'destructor Destroy; override;',
       @TGPPlugins.Destroy);
  RegisterMethod(TGPPlugins,
       'function TGPPlugins__GetNumberPlugins(Self:TGPPlugins):integer;',
       @TGPPlugins__GetNumberPlugins, true);
  RegisterProperty(TGPPlugins,
       'property NumberPlugins:integer read TGPPlugins__GetNumberPlugins;');
  RegisterMethod(TGPPlugins,
       'function TGPPlugins__GetPluginsOK(Self:TGPPlugins):boolean;',
       @TGPPlugins__GetPluginsOK, true);
  RegisterProperty(TGPPlugins,
       'property PluginsOK:boolean read TGPPlugins__GetPluginsOK;');
  RegisterMethod(TGPPlugins,
       'function TGPPlugins__GetPlugins(Self:TGPPlugins;Index:Integer):TPlugin;',
       @TGPPlugins__GetPlugins, true);
  RegisterProperty(TGPPlugins,
       'property Plugins[Index:Integer]:TPlugin read TGPPlugins__GetPlugins;');
  RegisterMethod(TGPPlugins,
       'function TGPPlugins__GetPluginsInfo(Self:TGPPlugins;Index:Integer):TPluginInfo;',
       @TGPPlugins__GetPluginsInfo, true);
  RegisterProperty(TGPPlugins,
       'property PluginsInfo[Index:Integer]:TPluginInfo read TGPPlugins__GetPluginsInfo;');
  RegisterMethod(TGPPlugins,
       'function TGPPlugins__GetCurrentPlugin(Self:TGPPlugins):TPlugin;',
       @TGPPlugins__GetCurrentPlugin, true);
  RegisterProperty(TGPPlugins,
       'property CurrentPlugin:TPlugin read TGPPlugins__GetCurrentPlugin;');
  RegisterStdMethodEx(TGPPlugins,'LoadPlugin',TGPPlugins_LoadPlugin,1,[typeSTRING,typeBOOLEAN]);
  RegisterStdMethodEx(TGPPlugins,'UnLoadPlugin',TGPPlugins_UnLoadPlugin,1,[typeINTEGER,typeVARIANT]);
  RegisterStdMethodEx(TGPPlugins,'LoadPlugins',TGPPlugins_LoadPlugins,1,[typeSTRING,typeBOOLEAN]);
  RegisterStdMethodEx(TGPPlugins,'LoadWinampPlugins',TGPPlugins_LoadWinampPlugins,0,[typeBOOLEAN]);
  RegisterStdMethodEx(TGPPlugins,'UnLoadPlugins',TGPPlugins_UnLoadPlugins,0,[typeVARIANT]);
  RegisterStdMethodEx(TGPPlugins,'ShowConfigWindow',TGPPlugins_ShowConfigWindow,1,[typeINTEGER,typeVARIANT]);
  RegisterStdMethodEx(TGPPlugins,'ShowAboutWindow',TGPPlugins_ShowAboutWindow,1,[typeINTEGER,typeVARIANT]);
  RegisterStdMethodEx(TGPPlugins,'ActivatePlugin',TGPPlugins_ActivatePlugin,1,[typeSTRING,typeBOOLEAN]);
  RegisterStdMethodEx(TGPPlugins,'GetWinampPluginsDir',TGPPlugins_GetWinampPluginsDir,0,[typeSTRING]);
  // End of class TGPPlugins
  // Begin of class TGamePlayer
  RegisterClassType(TGamePlayer, H);
  RegisterMethod(TGamePlayer,
       'constructor Create(BassDir:string='''');',
       @TGamePlayer.Create);
  RegisterMethod(TGamePlayer,
       'destructor Destroy;override;',
       @TGamePlayer.Destroy);
  RegisterMethod(TGamePlayer,
       'function TGamePlayer__GetSupportedExtensions(Self:TGamePlayer;Index:Integer):string;',
       @TGamePlayer__GetSupportedExtensions, true);
  RegisterProperty(TGamePlayer,
       'property SupportedExtensions[Index:Integer]:string read TGamePlayer__GetSupportedExtensions;');
  RegisterStdMethodEx(TGamePlayer,'ConfigCurrentPlugin',TGamePlayer_ConfigCurrentPlugin,0,[typeBOOLEAN]);
  RegisterStdMethodEx(TGamePlayer,'FastSound',TGamePlayer_FastSound,1,[typeSTRING,typeBOOLEAN]);
  RegisterMethod(TGamePlayer,
       'function TGamePlayer__GetMainWindow(Self:TGamePlayer):HWND;',
       @TGamePlayer__GetMainWindow, true);
  RegisterProperty(TGamePlayer,
       'property MainWindow:HWND read TGamePlayer__GetMainWindow;');
  RegisterMethod(TGamePlayer,
       'function TGamePlayer__GetCallBackProc(Self:TGamePlayer):TGP_MessageCallBack;',
       @TGamePlayer__GetCallBackProc, true);
  RegisterMethod(TGamePlayer,
       'procedure TGamePlayer__PutCallBackProc(Self:TGamePlayer;const Value: TGP_MessageCallBack);',
       @TGamePlayer__PutCallBackProc, true);
  RegisterProperty(TGamePlayer,
       'property CallBackProc:TGP_MessageCallBack read TGamePlayer__GetCallBackProc write TGamePlayer__PutCallBackProc;');
  RegisterMethod(TGamePlayer,
       'function TGamePlayer__GetMusics(Self:TGamePlayer;Index:Integer):TGPMusic;',
       @TGamePlayer__GetMusics, true);
  RegisterProperty(TGamePlayer,
       'property Musics[Index:Integer]:TGPMusic read TGamePlayer__GetMusics;');
  RegisterStdMethodEx(TGamePlayer,'Stop',TGamePlayer_Stop,0,[typeVARIANT]);
  RegisterStdMethodEx(TGamePlayer,'IsSupportedURL',TGamePlayer_IsSupportedURL,1,[typeSTRING,typeBOOLEAN]);
  RegisterMethod(TGamePlayer,
       'function TGamePlayer__GetPlayerOK(Self:TGamePlayer):boolean;',
       @TGamePlayer__GetPlayerOK, true);
  RegisterProperty(TGamePlayer,
       'property PlayerOK:boolean read TGamePlayer__GetPlayerOK;');
  RegisterMethod(TGamePlayer,
       'function TGamePlayer__GetEAX(Self:TGamePlayer):TGPFX_EAX;',
       @TGamePlayer__GetEAX, true);
  RegisterProperty(TGamePlayer,
       'property EAX:TGPFX_EAX read TGamePlayer__GetEAX;');
  RegisterMethod(TGamePlayer,
       'function TGamePlayer__GetMusic(Self:TGamePlayer):TGPMusic;',
       @TGamePlayer__GetMusic, true);
  RegisterProperty(TGamePlayer,
       'property Music:TGPMusic read TGamePlayer__GetMusic;');
  RegisterMethod(TGamePlayer,
       'function TGamePlayer__GetSupportDS9(Self:TGamePlayer):boolean;',
       @TGamePlayer__GetSupportDS9, true);
  RegisterProperty(TGamePlayer,
       'property SupportDS9:boolean read TGamePlayer__GetSupportDS9;');
  RegisterMethod(TGamePlayer,
       'function TGamePlayer__GetSupport32Float(Self:TGamePlayer):boolean;',
       @TGamePlayer__GetSupport32Float, true);
  RegisterProperty(TGamePlayer,
       'property Support32Float:boolean read TGamePlayer__GetSupport32Float;');
  RegisterMethod(TGamePlayer,
       'function TGamePlayer__GetDeviceName(Self:TGamePlayer):string;',
       @TGamePlayer__GetDeviceName, true);
  RegisterProperty(TGamePlayer,
       'property DeviceName:string read TGamePlayer__GetDeviceName;');
  RegisterMethod(TGamePlayer,
       'function TGamePlayer__GetDeviceDriver(Self:TGamePlayer):string;',
       @TGamePlayer__GetDeviceDriver, true);
  RegisterProperty(TGamePlayer,
       'property DeviceDriver:string read TGamePlayer__GetDeviceDriver;');
  RegisterMethod(TGamePlayer,
       'function TGamePlayer__GetBassVer(Self:TGamePlayer):string;',
       @TGamePlayer__GetBassVer, true);
  RegisterProperty(TGamePlayer,
       'property BassVer:string read TGamePlayer__GetBassVer;');
  RegisterMethod(TGamePlayer,
       'function TGamePlayer__GetMusicSupport(Self:TGamePlayer):string;',
       @TGamePlayer__GetMusicSupport, true);
  RegisterProperty(TGamePlayer,
       'property MusicSupport:string read TGamePlayer__GetMusicSupport;');
  RegisterMethod(TGamePlayer,
       'function TGamePlayer__GetFilter(Self:TGamePlayer):string;',
       @TGamePlayer__GetFilter, true);
  RegisterProperty(TGamePlayer,
       'property Filter:string read TGamePlayer__GetFilter;');
  RegisterMethod(TGamePlayer,
       'function TGamePlayer__GetNumberOfExtensions(Self:TGamePlayer):integer;',
       @TGamePlayer__GetNumberOfExtensions, true);
  RegisterProperty(TGamePlayer,
       'property NumberOfExtensions:integer read TGamePlayer__GetNumberOfExtensions;');
  RegisterMethod(TGamePlayer,
       'function TGamePlayer__GetVolume(Self:TGamePlayer):integer;',
       @TGamePlayer__GetVolume, true);
  RegisterMethod(TGamePlayer,
       'procedure TGamePlayer__PutVolume(Self:TGamePlayer;const Value: integer);',
       @TGamePlayer__PutVolume, true);
  RegisterProperty(TGamePlayer,
       'property Volume:integer read TGamePlayer__GetVolume write TGamePlayer__PutVolume;');
  RegisterMethod(TGamePlayer,
       'function TGamePlayer__GetPlayList(Self:TGamePlayer):TGPPlayList;',
       @TGamePlayer__GetPlayList, true);
  RegisterProperty(TGamePlayer,
       'property PlayList:TGPPlayList read TGamePlayer__GetPlayList;');
  RegisterMethod(TGamePlayer,
       'function TGamePlayer__GetPlugins(Self:TGamePlayer):TGPPlugins;',
       @TGamePlayer__GetPlugins, true);
  RegisterProperty(TGamePlayer,
       'property Plugins:TGPPlugins read TGamePlayer__GetPlugins;');
  RegisterMethod(TGamePlayer,
       'function TGamePlayer__GetTag(Self:TGamePlayer):integer;',
       @TGamePlayer__GetTag, true);
  RegisterMethod(TGamePlayer,
       'procedure TGamePlayer__PutTag(Self:TGamePlayer;const Value: integer);',
       @TGamePlayer__PutTag, true);
  RegisterProperty(TGamePlayer,
       'property Tag:integer read TGamePlayer__GetTag write TGamePlayer__PutTag;');
  RegisterMethod(TGamePlayer,
       'function TGamePlayer__GetMusicCount(Self:TGamePlayer):integer;',
       @TGamePlayer__GetMusicCount, true);
  RegisterProperty(TGamePlayer,
       'property MusicCount:integer read TGamePlayer__GetMusicCount;');
  // End of class TGamePlayer
  RegisterRoutine('function GetGamePlayer:TGamePlayer;', @GetGamePlayer, H);
  RegisterRoutine('procedure GetGPDefaultStore(var Store:TGPStore);', @GetGPDefaultStore, H);
  RegisterRoutine('procedure PlayEnd(Music:TGPMusic);', @PlayEnd, H);
end;
initialization
  RegisterIMP_GamePlayer;
end.
