| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- {========================================================================}
- {= (c) 1995-98 SwiftSoft Ronald Dittrich =}
- {========================================================================}
- {= All Rights Reserved =}
- {========================================================================}
- {= D 01099 Dresden = Tel.: +0351-8012255 =}
- {= Loewenstr.7a = info@swiftsoft.de =}
- {========================================================================}
- {= Actual versions on http://www.swiftsoft.de/mmtools.html =}
- {========================================================================}
- {= This code is for reference purposes only and may not be copied or =}
- {= distributed in any format electronic or otherwise except one copy =}
- {= for backup purposes. =}
- {= =}
- {= No Delphi Component Kit or Component individually or in a collection=}
- {= subclassed or otherwise from the code in this unit, or associated =}
- {= .pas, .dfm, .dcu, .asm or .obj files may be sold or distributed =}
- {= without express permission from SwiftSoft. =}
- {= =}
- {= For more licence informations please refer to the associated =}
- {= HelpFile. =}
- {========================================================================}
- {= $Date: 20.01.1998 - 18:00:00 $ =}
- {========================================================================}
- Unit MMLight;
- {$I COMPILER.INC}
- interface
- uses
- {$IFDEF WIN32}
- Windows,
- {$ELSE}
- WinTypes,
- WinProcs,
- {$ENDIF}
- SysUtils,
- Messages,
- Classes,
- Graphics,
- Controls,
- Forms,
- Menus,
- MMUtils,
- MMObj,
- MMString,
- MMMath,
- MMMulDiv,
- MMFFT,
- MMRegs,
- MMPCMSup,
- MMDIBCv;
- const
- MAX_FFTLEN = 4096; { Define the maximum FFT buffer length. }
- MAXDECAYCOUNT = 32; { Maximum amount of temporal averaging allowed }
- type
- TMMLightKind = (lkCircle,lkSphere);
- TMMLightArrange = (laLine,laTriangle);
- TMMLightPeakMode= (pmRMS,pmPeak,pmAverage);
- const
- defRealize = True;
- defEnabled = True;
- defHeight = 90;
- defWidth = 194;
- defMode = mMono;
- defBitLength = b8bit;
- defChannel = chBoth;
- defSampleRate = 11025;
- defFFTLen = 128;
- defWindow = fwHamming;
- defDecayMode = dmNone;
- defDecay = 1;
- defPeakMode = pmPeak;
- defKind = lkCircle;
- defArrange = laLine;
- defTriangleDist = 10;
- defSphereHorz = 1.0;
- defSphereVert = 1.0;
- defZoneCount = 60;
- defColor = clBlack;
- type
- EMMLightError = class(Exception);
- { array for uniform decay mode values }
- PDataBuf = ^TDataBuf;
- TDataBuf = array[0..MAXDECAYCOUNT-1] of PLongArray;
- { struct to hold pre-calculated values for every band }
- Values = record
- OldValue: Longint;
- CurValue: Longint;
- end;
- PValues = ^TValues;
- TValues = array[0..0] of Values;
- {-- TMMLight --------------------------------------------------------}
- TMMLight = class(TMMDIBGraphicControl)
- public
- constructor Create(AOwner: TComponent); override;
- destructor Destroy; override;
- procedure RefreshPCMData(PCMData: Pointer);
- procedure RefreshFFTData(FFTData: Pointer);
- procedure RefreshMagnitudeData(MagData: Pointer);
- procedure ResetData;
- property BytesPerLight: Longint read FBytes;
- property PCMWaveFormat: TPCMWaveFormat read GetPCMWaveFormat write SetPCMWaveFormat;
- published
- { Events }
- property OnClick;
- property OnDblClick;
- property OnMouseDown;
- property OnMouseMove;
- property OnMouseUp;
- property OnPcmOverflow: TNotifyEvent read FOnPcmOverflow write FOnPcmOverflow;
- property Align;
- property Bevel;
- property Color default defColor;
- property ParentShowHint;
- property ShowHint;
- property Visible;
- property PopupMenu;
- property PaletteRealize default defRealize;
- property PaletteMapped;
- property Enabled: Boolean read FEnabled write SetEnabled default defEnabled;
- property Height default defHeight;
- property Width default defWidth;
- property Mode: TMMMode read FMode write SetMode default defMode;
- property BitLength: TMMBits read FBits write SetBits default defBitLength;
- property Channel: TMMChannel read FChannel write SetChannel default defChannel;
- property SampleRate: Longint read FSampleRate write SetSampleRate default defSampleRate;
- property FFTLength: integer read FFTLen write SetFFTLen default defFFTLen;
- property Window: TMMFFTWindow read FWindow write SetWindow default defWindow;
- property DecayMode: TMMDecayMode read FDecayMode write SetDecayMode default defDecayMode;
- property Decay: integer read FDecay write SetDecay default defDecay;
- property AmplitudeScale: integer index 0 read GetAmpScale write SetAmpScale;
- property GainBass: integer index 1 read GetAmpScale write SetAmpScale;
- property GainMiddle: integer index 2 read GetAmpScale write SetAmpScale;
- property GainTreble: integer index 3 read GetAmpScale write SetAmpScale;
- property PeakMode: TMMLightPeakMode read FPeakMode write SetPeakMode default defPeakMode;
- property Kind: TMMLightKind read FKind write SetKind default defKind;
- property Arrange: TMMLightArrange read FArrange write SetArrange default defArrange;
- property TriangleDist: Integer read FTriangleDist write SetTriangleDist default defTriangleDist;
- property SphereHorz: Float read FSphereHorz write SetSphereHorz;
- property SphereVert: Float read FSphereVert write SetSphereVert;
- property ZoneCount: Integer read FZoneCount write SetZoneCount default defZoneCount;
- end;
- implementation
|