unit WDSP; { Pascal/Lazarus binding for the WDSP (Wideband DSP) library. Автоматически переведено из заголовочного файла wdsp.h. Использование: 1. Поместите wdsp.dll (Linux: libwdsp.so) рядом с исполняемым файлом. 2. Подключите unit в секции uses: uses WDSP; 3. Вызывайте функции напрямую, например: OpenChannel(0, 1024, ...); } {$IFDEF FPC} {$MODE Delphi} {$ENDIF} // Если wdsp.dll / libwdsp.so отсутствует — функции будут nil вместо краша. // WDSPEngine.Open вернёт False и программа продолжит работу в демо-режиме. {$IFDEF DARWIN} {$linklib wdsp} {$ENDIF} interface uses SysUtils; const {$IFDEF WINDOWS} WDSP_LIB = 'wdsp.dll'; {$ENDIF} {$IFDEF LINUX} WDSP_LIB = 'libwdsp.so'; {$ENDIF} {$IFDEF DARWIN} WDSP_LIB = 'libwdsp.dylib'; {$ENDIF} // Analyzer detector modes DETECTOR_MODE_PEAK = 0; DETECTOR_MODE_ROSENFELL = 1; DETECTOR_MODE_AVERAGE = 2; DETECTOR_MODE_SAMPLE = 3; DETECTOR_MODE_RMS = 4; // Average hold/modes AVERAGE_PEAK_HOLD = -1; AVERAGE_MODE_NONE = 0; AVERAGE_MODE_RECURSIVE = 1; AVERAGE_MODE_TIME_WINDOW = 2; AVERAGE_MODE_LOG_RECURSIVE = 3; type INREAL = Single; OUTREAL = Single; dINREAL = Single; dOUTREAL = Single; PDWORD = ^DWORD; PINREAl = ^INREAL; POUTREAl = ^OUTREAL; PdINREAL = ^dINREAL; PdOUTREAL = ^dOUTREAL; PDouble = ^Double; PInteger = ^Integer; PSingle = ^Single; PPDouble = ^PDouble; PPSingle = ^PSingle; PPVoid = ^Pointer; // Opaque pointers (void* in C) TEER = Pointer; TANB = Pointer; TNOB = Pointer; TRESAMPLE = Pointer; TGAIN = Pointer; TLPCRITICAL_SECTION = Pointer; // RXA Meter types TrxaMeterType = ( RXA_S_PK, RXA_S_AV, RXA_ADC_PK, RXA_ADC_AV, RXA_AGC_GAIN, RXA_AGC_PK, RXA_AGC_AV, RXA_METERTYPE_LAST ); // TXA Meter types TtxaMeterType = ( TXA_MIC_PK, TXA_MIC_AV, TXA_EQ_PK, TXA_EQ_AV, TXA_LVLR_PK, TXA_LVLR_AV, TXA_LVLR_GAIN, TXA_CFC_PK, TXA_CFC_AV, TXA_CFC_GAIN, TXA_COMP_PK, TXA_COMP_AV, TXA_ALC_PK, TXA_ALC_AV, TXA_ALC_GAIN, TXA_OUT_PK, TXA_OUT_AV, TXA_METERTYPE_LAST ); // Callback type for DEXP VOX push TPushVoxProc = procedure(id: Integer; active: Integer); cdecl; // --------------------------------------------------------------------------- // RXA.c // --------------------------------------------------------------------------- procedure SetRXAMode(channel: Integer; mode: Integer); cdecl; external WDSP_LIB; procedure RXASetPassband(channel: Integer; f_low: Double; f_high: Double); cdecl; external WDSP_LIB; procedure RXASetNC(channel: Integer; nc: Integer); cdecl; external WDSP_LIB; procedure RXASetMP(channel: Integer; mp: Integer); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // TXA.c // --------------------------------------------------------------------------- procedure SetTXAMode(channel: Integer; mode: Integer); cdecl; external WDSP_LIB; procedure SetTXABandpassFreqs(channel: Integer; f_low: Double; f_high: Double); cdecl; external WDSP_LIB; procedure TXASetNC(channel: Integer; nc: Integer); cdecl; external WDSP_LIB; procedure TXASetMP(channel: Integer; mp: Integer); cdecl; external WDSP_LIB; procedure SetTXAFMAFFilter(channel: Integer; low: Double; high: Double); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // amd.c // --------------------------------------------------------------------------- procedure SetRXAAMDRun(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetRXAAMDSBMode(channel: Integer; sbmode: Integer); cdecl; external WDSP_LIB; procedure SetRXAAMDFadeLevel(channel: Integer; levelfade: Integer); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // ammod.c // --------------------------------------------------------------------------- procedure SetTXAAMCarrierLevel(channel: Integer; c_level: Double); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // amsq.c // --------------------------------------------------------------------------- procedure SetRXAAMSQRun(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetRXAAMSQThreshold(channel: Integer; threshold: Double); cdecl; external WDSP_LIB; procedure SetRXAAMSQMaxTail(channel: Integer; tail: Double); cdecl; external WDSP_LIB; procedure SetTXAAMSQRun(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetTXAAMSQMutedGain(channel: Integer; dBlevel: Double); cdecl; external WDSP_LIB; procedure SetTXAAMSQThreshold(channel: Integer; threshold: Double); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // analyzer.c // --------------------------------------------------------------------------- procedure SetupDetectMaxBin(run: Integer; disp: Integer; ss: Integer; LO: Integer; rate: Double; fLow: Double; fHigh: Double; tau: Double; frame_rate: Integer); cdecl; external WDSP_LIB; function GetDetectMaxBin(disp: Integer): Double; cdecl; external WDSP_LIB; procedure XCreateAnalyzer(disp: Integer; success: PInteger; m_size: Integer; m_num_fft: Integer; m_stitch: Integer; app_data_path: PAnsiChar); cdecl; external WDSP_LIB; procedure DestroyAnalyzer(disp: Integer); cdecl; external WDSP_LIB; procedure GetPixels(disp: Integer; pixout: Integer; pix: PdOUTREAL; flag: PInteger); cdecl; external WDSP_LIB; procedure SnapSpectrum(disp: Integer; ss: Integer; LO: Integer; snap_buff: PDouble); cdecl; external WDSP_LIB; procedure SnapSpectrumTimeout(disp: Integer; ss: Integer; LO: Integer; snap_buff: PDouble; timeout: DWORD; flag: PInteger); cdecl; external WDSP_LIB; // SetCalibration: cal is pointer to array of [n_points][dMAX_M+1] doubles procedure SetCalibration(disp: Integer; set_num: Integer; n_points: Integer; cal: PDouble); cdecl; external WDSP_LIB; procedure OpenBuffer(disp: Integer; ss: Integer; LO: Integer; Ipointer: PPVoid; Qpointer: PPVoid); cdecl; external WDSP_LIB; procedure CloseBuffer(disp: Integer; ss: Integer; LO: Integer); cdecl; external WDSP_LIB; procedure Spectrum(disp: Integer; ss: Integer; LO: Integer; pI: PdINREAL; pQ: PdINREAL); cdecl; external WDSP_LIB; procedure Spectrum2(run: Integer; disp: Integer; ss: Integer; LO: Integer; pbuff: PdINREAL); cdecl; external WDSP_LIB; procedure Spectrum0(run: Integer; disp: Integer; ss: Integer; LO: Integer; pbuff: PDouble); cdecl; external WDSP_LIB; procedure SetDisplayDetectorMode(disp: Integer; pixout: Integer; mode: Integer); cdecl; external WDSP_LIB; procedure SetDisplayAverageMode(disp: Integer; pixout: Integer; mode: Integer); cdecl; external WDSP_LIB; procedure SetDisplayNumAverage(disp: Integer; pixout: Integer; num: Integer); cdecl; external WDSP_LIB; procedure SetDisplayAvBackmult(disp: Integer; pixout: Integer; mult: Double); cdecl; external WDSP_LIB; procedure SetDisplaySampleRate(disp: Integer; rate: Integer); cdecl; external WDSP_LIB; procedure SetDisplayNormOneHz(disp: Integer; pixout: Integer; norm: Integer); cdecl; external WDSP_LIB; // SetAnalyzer — главная функция настройки анализатора (см. WDSP Guide §SetAnalyzer) // void SetAnalyzer(disp, n_pixout, n_fft, typ, flp, sz, bf_sz, win_type, // pi, ovrlp, clp, fscLin, fscHin, n_pix, n_stch, // calset, fmin, fmax, max_w) procedure SetAnalyzer(disp: Integer; n_pixout: Integer; n_fft: Integer; typ: Integer; flp: PInteger; sz: Integer; bf_sz: Integer; win_type: Integer; pi: Double; ovrlp: Integer; clp: Integer; fscLin: Double; fscHin: Double; n_pix: Integer; n_stch: Integer; calset: Integer; fmin: Double; fmax: Double; max_w: Integer); cdecl; external WDSP_LIB; procedure ResetPixelBuffers(disp: Integer); cdecl; external WDSP_LIB; function GetDisplayENB(disp: Integer): Double; cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // anf.c // --------------------------------------------------------------------------- procedure SetRXAANFRun(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetRXAANFVals(channel: Integer; taps: Integer; delay: Integer; gain: Double; leakage: Double); cdecl; external WDSP_LIB; procedure SetRXAANFTaps(channel: Integer; taps: Integer); cdecl; external WDSP_LIB; procedure SetRXAANFDelay(channel: Integer; delay: Integer); cdecl; external WDSP_LIB; procedure SetRXAANFGain(channel: Integer; gain: Double); cdecl; external WDSP_LIB; procedure SetRXAANFLeakage(channel: Integer; leakage: Double); cdecl; external WDSP_LIB; procedure SetRXAANFPosition(channel: Integer; position: Integer); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // anr.c // --------------------------------------------------------------------------- procedure SetRXAANRRun(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetRXAANRVals(channel: Integer; taps: Integer; delay: Integer; gain: Double; leakage: Double); cdecl; external WDSP_LIB; procedure SetRXAANRTaps(channel: Integer; taps: Integer); cdecl; external WDSP_LIB; procedure SetRXAANRDelay(channel: Integer; delay: Integer); cdecl; external WDSP_LIB; procedure SetRXAANRGain(channel: Integer; gain: Double); cdecl; external WDSP_LIB; procedure SetRXAANRLeakage(channel: Integer; leakage: Double); cdecl; external WDSP_LIB; procedure SetRXAANRPosition(channel: Integer; position: Integer); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // apfshadow.c (SPCW / Synchronous Peak CW filter) // --------------------------------------------------------------------------- procedure SetRXASPCWSelection(channel: Integer; selection: Integer); cdecl; external WDSP_LIB; procedure SetRXASPCWRun(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetRXASPCWFreq(channel: Integer; f_center: Double); cdecl; external WDSP_LIB; procedure SetRXASPCWBandwidth(channel: Integer; bandwidth: Double); cdecl; external WDSP_LIB; procedure SetRXASPCWGain(channel: Integer; gain: Double); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // bandpass.c // --------------------------------------------------------------------------- procedure SetRXABPSRun(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetRXABPSFreqs(channel: Integer; f_low: Double; f_high: Double); cdecl; external WDSP_LIB; procedure SetRXABPSWindow(channel: Integer; wintype: Integer); cdecl; external WDSP_LIB; procedure SetTXABPSRun(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetTXABPSFreqs(channel: Integer; f_low: Double; f_high: Double); cdecl; external WDSP_LIB; procedure SetTXABPSWindow(channel: Integer; wintype: Integer); cdecl; external WDSP_LIB; procedure SetRXABandpassRun(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetRXABandpassFreqs(channel: Integer; f_low: Double; f_high: Double); cdecl; external WDSP_LIB; procedure SetRXABandpassWindow(channel: Integer; wintype: Integer); cdecl; external WDSP_LIB; procedure SetRXABandpassNC(channel: Integer; nc: Integer); cdecl; external WDSP_LIB; procedure SetRXABandpassMP(channel: Integer; mp: Integer); cdecl; external WDSP_LIB; procedure SetTXABandpassRun(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetTXABandpassWindow(channel: Integer; wintype: Integer); cdecl; external WDSP_LIB; procedure SetTXABandpassNC(channel: Integer; nc: Integer); cdecl; external WDSP_LIB; procedure SetTXABandpassMP(channel: Integer; mp: Integer); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // calcc.c (Predistortion / PA calibration) // --------------------------------------------------------------------------- procedure pscc(channel: Integer; size: Integer; tx: PDouble; rx: PDouble); cdecl; external WDSP_LIB; procedure psccF(channel: Integer; size: Integer; Itxbuff: PSingle; Qtxbuff: PSingle; Irxbuff: PSingle; Qrxbuff: PSingle; mox: Integer; solidmox: Integer); cdecl; external WDSP_LIB; procedure PSSaveCorr(channel: Integer; filename: PAnsiChar); cdecl; external WDSP_LIB; procedure PSRestoreCorr(channel: Integer; filename: PAnsiChar); cdecl; external WDSP_LIB; procedure SetPSRunCal(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetPSMox(channel: Integer; mox: Integer); cdecl; external WDSP_LIB; procedure GetPSInfo(channel: Integer; info: PInteger); cdecl; external WDSP_LIB; procedure SetPSReset(channel: Integer; reset: Integer); cdecl; external WDSP_LIB; procedure SetPSMancal(channel: Integer; mancal: Integer); cdecl; external WDSP_LIB; procedure SetPSAutomode(channel: Integer; automode: Integer); cdecl; external WDSP_LIB; procedure SetPSTurnon(channel: Integer; turnon: Integer); cdecl; external WDSP_LIB; procedure SetPSControl(channel: Integer; reset: Integer; mancal: Integer; automode: Integer; turnon: Integer); cdecl; external WDSP_LIB; procedure SetPSLoopDelay(channel: Integer; delay: Double); cdecl; external WDSP_LIB; procedure SetPSMoxDelay(channel: Integer; delay: Double); cdecl; external WDSP_LIB; function SetPSTXDelay(channel: Integer; delay: Double): Double; cdecl; external WDSP_LIB; procedure SetPSHWPeak(channel: Integer; peak: Double); cdecl; external WDSP_LIB; procedure GetPSHWPeak(channel: Integer; peak: PDouble); cdecl; external WDSP_LIB; procedure GetPSMaxTX(channel: Integer; maxtx: PDouble); cdecl; external WDSP_LIB; procedure SetPSPtol(channel: Integer; ptol: Double); cdecl; external WDSP_LIB; procedure GetPSDisp(channel: Integer; x: PDouble; ym: PDouble; yc: PDouble; ys: PDouble; cm: PDouble; cc: PDouble; cs: PDouble); cdecl; external WDSP_LIB; procedure SetPSFeedbackRate(channel: Integer; rate: Integer); cdecl; external WDSP_LIB; procedure SetPSPinMode(channel: Integer; pin: Integer); cdecl; external WDSP_LIB; procedure SetPSMapMode(channel: Integer; map: Integer); cdecl; external WDSP_LIB; procedure SetPSStabilize(channel: Integer; stbl: Integer); cdecl; external WDSP_LIB; procedure SetPSIntsAndSpi(channel: Integer; ints: Integer; spi: Integer); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // cblock.c // --------------------------------------------------------------------------- procedure SetRXACBLRun(channel: Integer; setit: Integer); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // cfcomp.c // --------------------------------------------------------------------------- procedure SetTXACFCOMPRun(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetTXACFCOMPPosition(channel: Integer; pos: Integer); cdecl; external WDSP_LIB; procedure SetTXACFCOMPprofile(channel: Integer; nfreqs: Integer; F: PDouble; G: PDouble; E: PDouble); cdecl; external WDSP_LIB; procedure SetTXACFCOMPPrecomp(channel: Integer; precomp: Double); cdecl; external WDSP_LIB; procedure SetTXACFCOMPPeqRun(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetTXACFCOMPPrePeq(channel: Integer; prepeq: Double); cdecl; external WDSP_LIB; procedure GetTXACFCOMPDisplayCompression(channel: Integer; comp_values: PDouble; ready: PInteger); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // cfir.c // --------------------------------------------------------------------------- procedure SetTXACFIRRun(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetTXACFIRNC(channel: Integer; nc: Integer); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // channel.c // --------------------------------------------------------------------------- procedure OpenChannel(channel: Integer; in_size: Integer; dsp_size: Integer; input_samplerate: Integer; dsp_rate: Integer; output_samplerate: Integer; atype: Integer; state: Integer; tdelayup: Double; tslewup: Double; tdelaydown: Double; tslewdown: Double; bfo: Integer); cdecl; external WDSP_LIB; procedure CloseChannel(channel: Integer); cdecl; external WDSP_LIB; procedure SetType(channel: Integer; atype: Integer); cdecl; external WDSP_LIB; procedure SetInputBuffsize(channel: Integer; in_size: Integer); cdecl; external WDSP_LIB; procedure SetDSPBuffsize(channel: Integer; dsp_size: Integer); cdecl; external WDSP_LIB; procedure SetInputSamplerate(channel: Integer; in_rate: Integer); cdecl; external WDSP_LIB; procedure SetDSPSamplerate(channel: Integer; dsp_rate: Integer); cdecl; external WDSP_LIB; procedure SetOutputSamplerate(channel: Integer; out_rate: Integer); cdecl; external WDSP_LIB; procedure SetAllRates(channel: Integer; in_rate: Integer; dsp_rate: Integer; out_rate: Integer); cdecl; external WDSP_LIB; function SetChannelState(channel: Integer; state: Integer; dmode: Integer): Integer; cdecl; external WDSP_LIB; procedure SetChannelTDelayUp(channel: Integer; time: Double); cdecl; external WDSP_LIB; procedure SetChannelTSlewUp(channel: Integer; time: Double); cdecl; external WDSP_LIB; procedure SetChannelTDelayDown(channel: Integer; time: Double); cdecl; external WDSP_LIB; procedure SetChannelTSlewDown(channel: Integer; time: Double); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // compress.c // --------------------------------------------------------------------------- procedure SetTXACompressorRun(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetTXACompressorGain(channel: Integer; gain: Double); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // dexp.c (Downward EXPander / VOX gate) // --------------------------------------------------------------------------- procedure create_dexp(id: Integer; run_dexp: Integer; size: Integer; ain: PDouble; aout: PDouble; rate: Integer; dettau: Double; tattack: Double; tdecay: Double; thold: Double; exp_ratio: Double; hyst_ratio: Double; attack_thresh: Double; nc: Integer; wtype: Integer; lowcut: Double; highcut: Double; run_filt: Integer; run_vox: Integer; run_audelay: Integer; audelay: Double; pushvox: TPushVoxProc; antivox_run: Integer; antivox_size: Integer; antivox_rate: Integer; antivox_gain: Double; antivox_tau: Double); cdecl; external WDSP_LIB; procedure destroy_dexp(id: Integer); cdecl; external WDSP_LIB; procedure flush_dexp(id: Integer); cdecl; external WDSP_LIB; procedure xdexp(id: Integer); cdecl; external WDSP_LIB; procedure SendCBPushDexpVox(id: Integer; pushvox: TPushVoxProc); cdecl; external WDSP_LIB; procedure SetDEXPRun(id: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetDEXPSize(id: Integer; size: Integer); cdecl; external WDSP_LIB; procedure SetDEXPIOBuffers(id: Integer; ain: PDouble; aout: PDouble); cdecl; external WDSP_LIB; procedure SetDEXPRate(id: Integer; rate: Double); cdecl; external WDSP_LIB; procedure SetDEXPDetectorTau(id: Integer; tau: Double); cdecl; external WDSP_LIB; procedure SetDEXPAttackTime(id: Integer; time: Double); cdecl; external WDSP_LIB; procedure SetDEXPReleaseTime(id: Integer; time: Double); cdecl; external WDSP_LIB; procedure SetDEXPHoldTime(id: Integer; time: Double); cdecl; external WDSP_LIB; procedure SetDEXPExpansionRatio(id: Integer; ratio: Double); cdecl; external WDSP_LIB; procedure SetDEXPHysteresisRatio(id: Integer; ratio: Double); cdecl; external WDSP_LIB; procedure SetDEXPAttackThreshold(id: Integer; thresh: Double); cdecl; external WDSP_LIB; procedure SetDEXPFilterTaps(id: Integer; taps: Integer); cdecl; external WDSP_LIB; procedure SetDEXPWindowType(id: Integer; atype: Integer); cdecl; external WDSP_LIB; procedure SetDEXPLowCut(id: Integer; lowcut: Double); cdecl; external WDSP_LIB; procedure SetDEXPHighCut(id: Integer; highcut: Double); cdecl; external WDSP_LIB; procedure SetDEXPRunSideChannelFilter(id: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetDEXPRunVox(id: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetDEXPRunAudioDelay(id: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetDEXPAudioDelay(id: Integer; delay: Double); cdecl; external WDSP_LIB; procedure GetDEXPPeakSignal(id: Integer; peak: PDouble); cdecl; external WDSP_LIB; procedure SetAntiVOXRun(id: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetAntiVOXSize(id: Integer; size: Integer); cdecl; external WDSP_LIB; procedure SetAntiVOXRate(id: Integer; rate: Double); cdecl; external WDSP_LIB; procedure SetAntiVOXGain(id: Integer; gain: Double); cdecl; external WDSP_LIB; procedure SetAntiVOXDetectorTau(id: Integer; tau: Double); cdecl; external WDSP_LIB; procedure SendAntiVOXData(id: Integer; nsamples: Integer; data: PDouble); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // div.c (Diversity combining) // --------------------------------------------------------------------------- procedure create_divEXT(id: Integer; run: Integer; nr: Integer; size: Integer); cdecl; external WDSP_LIB; procedure destroy_divEXT(id: Integer); cdecl; external WDSP_LIB; procedure flush_divEXT(id: Integer); cdecl; external WDSP_LIB; procedure xdivEXT(id: Integer; nsamples: Integer; ain: PPDouble; aout: PDouble); cdecl; external WDSP_LIB; procedure SetEXTDIVRun(id: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetEXTDIVBuffsize(id: Integer; size: Integer); cdecl; external WDSP_LIB; procedure SetEXTDIVNr(id: Integer; nr: Integer); cdecl; external WDSP_LIB; procedure SetEXTDIVOutput(id: Integer; output: Integer); cdecl; external WDSP_LIB; procedure SetEXTDIVRotate(id: Integer; nr: Integer; Irotate: PDouble; Qrotate: PDouble); cdecl; external WDSP_LIB; procedure xdivEXTF(id: Integer; size: Integer; input: PPSingle; Iout: PSingle; Qout: PSingle); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // doublepole.c // --------------------------------------------------------------------------- procedure SetRXADoublepoleRun(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetRXADoublepoleFreqs(channel: Integer; f_center: Double; bandwidth: Double); cdecl; external WDSP_LIB; procedure SetRXADoublepoleGain(channel: Integer; gain: Double); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // eer.c (Envelope Elimination and Restoration) // --------------------------------------------------------------------------- function create_eer(run: Integer; size: Integer; ain: PDouble; aout: PDouble; outM: PDouble; rate: Integer; mgain: Double; pgain: Double; rundelays: Integer; mdelay: Double; pdelay: Double; amiq: Integer): TEER; cdecl; external WDSP_LIB; procedure destroy_eer(a: TEER); cdecl; external WDSP_LIB; procedure flush_eer(a: TEER); cdecl; external WDSP_LIB; procedure xeer(a: TEER); cdecl; external WDSP_LIB; procedure create_eerEXT(id: Integer; run: Integer; size: Integer; rate: Integer; mgain: Double; pgain: Double; rundelays: Integer; mdelay: Double; pdelay: Double; amiq: Integer); cdecl; external WDSP_LIB; procedure destroy_eerEXT(id: Integer); cdecl; external WDSP_LIB; procedure flush_eerEXT(id: Integer); cdecl; external WDSP_LIB; procedure SetEERRun(id: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetEERAMIQ(id: Integer; amiq: Integer); cdecl; external WDSP_LIB; procedure SetEERMgain(id: Integer; gain: Double); cdecl; external WDSP_LIB; procedure SetEERPgain(id: Integer; gain: Double); cdecl; external WDSP_LIB; procedure SetEERRunDelays(id: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetEERMdelay(id: Integer; delay: Double); cdecl; external WDSP_LIB; procedure SetEERPdelay(id: Integer; delay: Double); cdecl; external WDSP_LIB; procedure SetEERSize(id: Integer; size: Integer); cdecl; external WDSP_LIB; procedure SetEERSamplerate(id: Integer; rate: Integer); cdecl; external WDSP_LIB; procedure pSetEERRun(a: TEER; run: Integer); cdecl; external WDSP_LIB; procedure pSetEERAMIQ(a: TEER; amiq: Integer); cdecl; external WDSP_LIB; procedure pSetEERMgain(a: TEER; gain: Double); cdecl; external WDSP_LIB; procedure pSetEERPgain(a: TEER; gain: Double); cdecl; external WDSP_LIB; procedure pSetEERRunDelays(a: TEER; run: Integer); cdecl; external WDSP_LIB; procedure pSetEERMdelay(a: TEER; delay: Double); cdecl; external WDSP_LIB; procedure pSetEERPdelay(a: TEER; delay: Double); cdecl; external WDSP_LIB; procedure pSetEERSize(a: TEER; size: Integer); cdecl; external WDSP_LIB; procedure pSetEERSamplerate(a: TEER; rate: Integer); cdecl; external WDSP_LIB; procedure xeerEXTF(id: Integer; inI: PSingle; inQ: PSingle; outI: PSingle; outQ: PSingle; outMI: PSingle; outMQ: PSingle; mox: Integer; size: Integer); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // emnr.c (Enhanced Minimum Noise Reduction) // --------------------------------------------------------------------------- procedure SetRXAEMNRpost2Run(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetRXAEMNRpost2Factor(channel: Integer; factor: Double); cdecl; external WDSP_LIB; procedure SetRXAEMNRpost2Nlevel(channel: Integer; nlevel: Double); cdecl; external WDSP_LIB; procedure SetRXAEMNRpost2Taper(channel: Integer; taper: Integer); cdecl; external WDSP_LIB; procedure SetRXAEMNRpost2Rate(channel: Integer; tc: Double); cdecl; external WDSP_LIB; procedure SetRXAEMNRRun(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetRXAEMNRgainMethod(channel: Integer; method: Integer); cdecl; external WDSP_LIB; procedure SetRXAEMNRnpeMethod(channel: Integer; method: Integer); cdecl; external WDSP_LIB; procedure SetRXAEMNRaeRun(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetRXAEMNRPosition(channel: Integer; position: Integer); cdecl; external WDSP_LIB; procedure SetRXAEMNRaeZetaThresh(channel: Integer; zetathresh: Double); cdecl; external WDSP_LIB; procedure SetRXAEMNRaePsi(channel: Integer; psi: Double); cdecl; external WDSP_LIB; procedure SetRXAEMNRtrainZetaThresh(channel: Integer; thresh: Double); cdecl; external WDSP_LIB; procedure SetRXAEMNRtrainT2(channel: Integer; t2: Double); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // emph.c (FM Pre/De-emphasis) // --------------------------------------------------------------------------- procedure SetTXAFMEmphPosition(channel: Integer; position: Integer); cdecl; external WDSP_LIB; procedure SetTXAFMEmphMP(channel: Integer; mp: Integer); cdecl; external WDSP_LIB; procedure SetTXAFMEmphNC(channel: Integer; nc: Integer); cdecl; external WDSP_LIB; procedure SetTXAFMPreEmphFreqs(channel: Integer; low: Double; high: Double); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // eq.c (Equalizer) // --------------------------------------------------------------------------- procedure SetRXAEQRun(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetRXAEQNC(channel: Integer; nc: Integer); cdecl; external WDSP_LIB; procedure SetRXAEQMP(channel: Integer; mp: Integer); cdecl; external WDSP_LIB; procedure SetRXAEQProfile(channel: Integer; nfreqs: Integer; F: PDouble; G: PDouble); cdecl; external WDSP_LIB; procedure SetRXAEQCtfmode(channel: Integer; mode: Integer); cdecl; external WDSP_LIB; procedure SetRXAEQWintype(channel: Integer; wintype: Integer); cdecl; external WDSP_LIB; procedure SetRXAGrphEQ(channel: Integer; rxeq: PInteger); cdecl; external WDSP_LIB; procedure SetRXAGrphEQ10(channel: Integer; rxeq: PInteger); cdecl; external WDSP_LIB; procedure SetTXAEQRun(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetTXAEQNC(channel: Integer; nc: Integer); cdecl; external WDSP_LIB; procedure SetTXAEQMP(channel: Integer; mp: Integer); cdecl; external WDSP_LIB; procedure SetTXAEQProfile(channel: Integer; nfreqs: Integer; F: PDouble; G: PDouble); cdecl; external WDSP_LIB; procedure SetTXAEQCtfmode(channel: Integer; mode: Integer); cdecl; external WDSP_LIB; procedure SetTXAEQWintype(channel: Integer; wintype: Integer); cdecl; external WDSP_LIB; procedure SetTXAEQMethod(channel: Integer; wintype: Integer); cdecl; external WDSP_LIB; procedure SetTXAGrphEQ(channel: Integer; txeq: PInteger); cdecl; external WDSP_LIB; procedure SetTXAGrphEQ10(channel: Integer; txeq: PInteger); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // fmd.c (FM Demodulator) // --------------------------------------------------------------------------- procedure SetRXAFMDeviation(channel: Integer; deviation: Double); cdecl; external WDSP_LIB; procedure SetRXACTCSSFreq(channel: Integer; freq: Double); cdecl; external WDSP_LIB; procedure SetRXACTCSSRun(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetRXAFMNCde(channel: Integer; nc: Integer); cdecl; external WDSP_LIB; procedure SetRXAFMMPde(channel: Integer; mp: Integer); cdecl; external WDSP_LIB; procedure SetRXAFMNCaud(channel: Integer; nc: Integer); cdecl; external WDSP_LIB; procedure SetRXAFMMPaud(channel: Integer; mp: Integer); cdecl; external WDSP_LIB; procedure SetRXAFMLimRun(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetRXAFMLimGain(channel: Integer; gaindB: Double); cdecl; external WDSP_LIB; procedure SetRXAFMAFFilter(channel: Integer; low: Double; high: Double); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // fmmod.c (FM Modulator) // --------------------------------------------------------------------------- procedure SetTXAFMDeviation(channel: Integer; deviation: Double); cdecl; external WDSP_LIB; procedure SetTXACTCSSFreq(channel: Integer; freq: Double); cdecl; external WDSP_LIB; procedure SetTXACTCSSRun(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetTXAFMNC(channel: Integer; nc: Integer); cdecl; external WDSP_LIB; procedure SetTXAFMMP(channel: Integer; mp: Integer); cdecl; external WDSP_LIB; procedure SetTXAFMAFFreqs(channel: Integer; low: Double; high: Double); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // fmsq.c (FM Squelch) // --------------------------------------------------------------------------- procedure SetRXAFMSQRun(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetRXAFMSQThreshold(channel: Integer; threshold: Double); cdecl; external WDSP_LIB; procedure SetRXAFMSQNC(channel: Integer; nc: Integer); cdecl; external WDSP_LIB; procedure SetRXAFMSQMP(channel: Integer; mp: Integer); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // gain.c // --------------------------------------------------------------------------- function create_gain(run: Integer; prun: PInteger; size: Integer; ain: PDouble; aout: PDouble; Igain: Double; Qgain: Double): TGAIN; cdecl; external WDSP_LIB; procedure destroy_gain(a: TGAIN); cdecl; external WDSP_LIB; procedure flush_gain(a: TGAIN); cdecl; external WDSP_LIB; procedure xgain(a: TGAIN); cdecl; external WDSP_LIB; procedure pSetTXOutputLevel(a: TGAIN; level: Double); cdecl; external WDSP_LIB; procedure pSetTXOutputLevelRun(a: TGAIN; run: Integer); cdecl; external WDSP_LIB; procedure pSetTXOutputLevelSize(a: TGAIN; size: Integer); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // gaussian.c // --------------------------------------------------------------------------- procedure SetRXAGaussianRun(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetRXAGaussianFreqs(channel: Integer; f_center: Double; bandwidth: Double); cdecl; external WDSP_LIB; procedure SetRXAGaussianGain(channel: Integer; gain: Double); cdecl; external WDSP_LIB; procedure SetRXAGaussianNC(channel: Integer; nc: Integer); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // gen.c (Signal generators) // --------------------------------------------------------------------------- procedure SetRXAPreGenRun(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetRXAPreGenMode(channel: Integer; mode: Integer); cdecl; external WDSP_LIB; procedure SetRXAPreGenToneMag(channel: Integer; mag: Double); cdecl; external WDSP_LIB; procedure SetRXAPreGenToneFreq(channel: Integer; freq: Double); cdecl; external WDSP_LIB; procedure SetRXAPreGenNoiseMag(channel: Integer; mag: Double); cdecl; external WDSP_LIB; procedure SetRXAPreGenSweepMag(channel: Integer; mag: Double); cdecl; external WDSP_LIB; procedure SetRXAPreGenSweepFreq(channel: Integer; freq1: Double; freq2: Double); cdecl; external WDSP_LIB; procedure SetRXAPreGenSweepRate(channel: Integer; rate: Double); cdecl; external WDSP_LIB; procedure SetTXAPreGenRun(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetTXAPreGenMode(channel: Integer; mode: Integer); cdecl; external WDSP_LIB; procedure SetTXAPreGenToneMag(channel: Integer; mag: Double); cdecl; external WDSP_LIB; procedure SetTXAPreGenToneFreq(channel: Integer; freq: Double); cdecl; external WDSP_LIB; procedure SetTXAPreGenNoiseMag(channel: Integer; mag: Double); cdecl; external WDSP_LIB; procedure SetTXAPreGenSweepMag(channel: Integer; mag: Double); cdecl; external WDSP_LIB; procedure SetTXAPreGenSweepFreq(channel: Integer; freq1: Double; freq2: Double); cdecl; external WDSP_LIB; procedure SetTXAPreGenSweepRate(channel: Integer; rate: Double); cdecl; external WDSP_LIB; procedure SetTXAPreGenSawtoothMag(channel: Integer; mag: Double); cdecl; external WDSP_LIB; procedure SetTXAPreGenSawtoothFreq(channel: Integer; freq: Double); cdecl; external WDSP_LIB; procedure SetTXAPreGenTriangleMag(channel: Integer; mag: Double); cdecl; external WDSP_LIB; procedure SetTXAPreGenTriangleFreq(channel: Integer; freq: Double); cdecl; external WDSP_LIB; procedure SetTXAPreGenPulseMag(channel: Integer; mag: Double); cdecl; external WDSP_LIB; procedure SetTXAPreGenPulseFreq(channel: Integer; freq: Double); cdecl; external WDSP_LIB; procedure SetTXAPreGenPulseDutyCycle(channel: Integer; dc: Double); cdecl; external WDSP_LIB; procedure SetTXAPreGenPulseToneFreq(channel: Integer; freq: Double); cdecl; external WDSP_LIB; procedure SetTXAPreGenPulseTransition(channel: Integer; transtime: Double); cdecl; external WDSP_LIB; procedure SetTXAPostGenRun(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetTXAPostGenMode(channel: Integer; mode: Integer); cdecl; external WDSP_LIB; procedure SetTXAPostGenToneMag(channel: Integer; mag: Double); cdecl; external WDSP_LIB; procedure SetTXAPostGenToneFreq(channel: Integer; freq: Double); cdecl; external WDSP_LIB; procedure SetTXAPostGenTTMag(channel: Integer; mag1: Double; mag2: Double); cdecl; external WDSP_LIB; procedure SetTXAPostGenTTFreq(channel: Integer; freq1: Double; freq2: Double); cdecl; external WDSP_LIB; procedure SetTXAPostGenSweepMag(channel: Integer; mag: Double); cdecl; external WDSP_LIB; procedure SetTXAPostGenSweepFreq(channel: Integer; freq1: Double; freq2: Double); cdecl; external WDSP_LIB; procedure SetTXAPostGenSweepRate(channel: Integer; rate: Double); cdecl; external WDSP_LIB; procedure SetTXAPostGenPulseMag(channel: Integer; mag: Double); cdecl; external WDSP_LIB; procedure SetTXAPostGenPulseFreq(channel: Integer; freq: Double); cdecl; external WDSP_LIB; procedure SetTXAPostGenPulseDutyCycle(channel: Integer; dc: Double); cdecl; external WDSP_LIB; procedure SetTXAPostGenPulseToneFreq(channel: Integer; freq: Double); cdecl; external WDSP_LIB; procedure SetTXAPostGenPulseTransition(channel: Integer; transtime: Double); cdecl; external WDSP_LIB; procedure SetTXAPostGenPulseIQout(channel: Integer; IQout: Integer); cdecl; external WDSP_LIB; procedure SetTXAPostGenTTPulseMag(channel: Integer; mag1: Double; mag2: Double); cdecl; external WDSP_LIB; procedure SetTXAPostGenTTPulseFreq(channel: Integer; freq: Double); cdecl; external WDSP_LIB; procedure SetTXAPostGenTTPulseDutyCycle(channel: Integer; dc: Double); cdecl; external WDSP_LIB; procedure SetTXAPostGenTTPulseToneFreq(channel: Integer; freq1: Double; freq2: Double); cdecl; external WDSP_LIB; procedure SetTXAPostGenTTPulseTransition(channel: Integer; transtime: Double); cdecl; external WDSP_LIB; procedure SetTXAPostGenTTPulseIQout(channel: Integer; IQout: Integer); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // iir.c // --------------------------------------------------------------------------- procedure SetRXABiQuadRun(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetRXABiQuadFreq(channel: Integer; freq: Double); cdecl; external WDSP_LIB; procedure SetRXABiQuadBandwidth(channel: Integer; bw: Double); cdecl; external WDSP_LIB; procedure SetRXABiQuadGain(channel: Integer; gain: Double); cdecl; external WDSP_LIB; procedure SetRXAmpeakRun(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetRXAmpeakNpeaks(channel: Integer; npeaks: Integer); cdecl; external WDSP_LIB; procedure SetRXAmpeakFilEnable(channel: Integer; fil: Integer; enable: Integer); cdecl; external WDSP_LIB; procedure SetRXAmpeakFilFreq(channel: Integer; fil: Integer; freq: Double); cdecl; external WDSP_LIB; procedure SetRXAmpeakFilBw(channel: Integer; fil: Integer; bw: Double); cdecl; external WDSP_LIB; procedure SetRXAmpeakFilGain(channel: Integer; fil: Integer; gain: Double); cdecl; external WDSP_LIB; procedure SetTXAPHROTRun(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetTXAPHROTCorner(channel: Integer; corner: Double); cdecl; external WDSP_LIB; procedure SetTXAPHROTNstages(channel: Integer; nstages: Integer); cdecl; external WDSP_LIB; procedure SetTXAPHROTReverse(channel: Integer; reverse: Integer); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // impulse_cache.c // --------------------------------------------------------------------------- function save_impulse_cache(path: PAnsiChar): Integer; cdecl; external WDSP_LIB; function read_impulse_cache(path: PAnsiChar): Integer; cdecl; external WDSP_LIB; procedure use_impulse_cache(use: Integer); cdecl; external WDSP_LIB; procedure init_impulse_cache(use: Integer); cdecl; external WDSP_LIB; procedure destroy_impulse_cache; cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // iobuffs.c // --------------------------------------------------------------------------- procedure fexchange0(channel: Integer; ain: PDouble; aout: PDouble; error: PInteger); cdecl; external WDSP_LIB; procedure fexchange2(channel: Integer; Iin: PINREAL; Qin: PINREAL; Iout: POUTREAL; Qout: POUTREAL; error: PInteger); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // iqc.c (IQ Correction) // --------------------------------------------------------------------------- procedure GetTXAiqcValues(channel: Integer; cm: PDouble; cc: PDouble; cs: PDouble); cdecl; external WDSP_LIB; procedure SetTXAiqcValues(channel: Integer; cm: PDouble; cc: PDouble; cs: PDouble); cdecl; external WDSP_LIB; procedure SetTXAiqcSwap(channel: Integer; cm: PDouble; cc: PDouble; cs: PDouble); cdecl; external WDSP_LIB; procedure SetTXAiqcStart(channel: Integer; cm: PDouble; cc: PDouble; cs: PDouble); cdecl; external WDSP_LIB; procedure SetTXAiqcEnd(channel: Integer); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // matchedCW.c // --------------------------------------------------------------------------- procedure SetRXAMatchedRun(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetRXAMatchedFreqs(channel: Integer; f_center: Double; bandwidth: Double); cdecl; external WDSP_LIB; procedure SetRXAMatchedGain(channel: Integer; gain: Double); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // meter.c // --------------------------------------------------------------------------- function GetRXAMeter(channel: Integer; mt: Integer): Double; cdecl; external WDSP_LIB; function GetTXAMeter(channel: Integer; mt: Integer): Double; cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // nbp.c (Notch Band Pass) // --------------------------------------------------------------------------- function RXANBPAddNotch(channel: Integer; notch: Integer; fcenter: Double; fwidth: Double; active: Integer): Integer; cdecl; external WDSP_LIB; function RXANBPGetNotch(channel: Integer; notch: Integer; fcenter: PDouble; fwidth: PDouble; active: PInteger): Integer; cdecl; external WDSP_LIB; function RXANBPDeleteNotch(channel: Integer; notch: Integer): Integer; cdecl; external WDSP_LIB; function RXANBPEditNotch(channel: Integer; notch: Integer; fcenter: Double; fwidth: Double; active: Integer): Integer; cdecl; external WDSP_LIB; procedure RXANBPGetNumNotches(channel: Integer; nnotches: PInteger); cdecl; external WDSP_LIB; procedure RXANBPSetTuneFrequency(channel: Integer; tunefreq: Double); cdecl; external WDSP_LIB; procedure RXANBPSetShiftFrequency(channel: Integer; shift: Double); cdecl; external WDSP_LIB; procedure RXANBPSetNotchesRun(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure RXANBPSetRun(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure RXANBPSetFreqs(channel: Integer; flow: Double; fhigh: Double); cdecl; external WDSP_LIB; procedure RXANBPSetWindow(channel: Integer; wintype: Integer); cdecl; external WDSP_LIB; procedure RXANBPSetNC(channel: Integer; nc: Integer); cdecl; external WDSP_LIB; procedure RXANBPSetMP(channel: Integer; mp: Integer); cdecl; external WDSP_LIB; procedure RXANBPGetMinNotchWidth(channel: Integer; minwidth: PDouble); cdecl; external WDSP_LIB; procedure RXANBPSetAutoIncrease(channel: Integer; autoincr: Integer); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // nob.c (Noise/Impulse Blankers - ANB and NOB) // --------------------------------------------------------------------------- function create_anb(run: Integer; buffsize: Integer; ain: PDouble; aout: PDouble; samplerate: Double; tau: Double; hangtime: Double; advtime: Double; backtau: Double; threshold: Double): TANB; cdecl; external WDSP_LIB; procedure destroy_anb(a: TANB); cdecl; external WDSP_LIB; procedure flush_anb(a: TANB); cdecl; external WDSP_LIB; procedure xanb(a: TANB); cdecl; external WDSP_LIB; procedure pSetRCVRANBRun(a: TANB; run: Integer); cdecl; external WDSP_LIB; procedure pSetRCVRANBBuffsize(a: TANB; size: Integer); cdecl; external WDSP_LIB; procedure pSetRCVRANBSamplerate(a: TANB; rate: Integer); cdecl; external WDSP_LIB; procedure pSetRCVRANBTau(a: TANB; tau: Double); cdecl; external WDSP_LIB; procedure pSetRCVRANBHangtime(a: TANB; time: Double); cdecl; external WDSP_LIB; procedure pSetRCVRANBAdvtime(a: TANB; time: Double); cdecl; external WDSP_LIB; procedure pSetRCVRANBBacktau(a: TANB; tau: Double); cdecl; external WDSP_LIB; procedure pSetRCVRANBThreshold(a: TANB; thresh: Double); cdecl; external WDSP_LIB; procedure create_anbEXT(id: Integer; run: Integer; buffsize: Integer; samplerate: Double; tau: Double; hangtime: Double; advtime: Double; backtau: Double; threshold: Double); cdecl; external WDSP_LIB; procedure destroy_anbEXT(id: Integer); cdecl; external WDSP_LIB; procedure flush_anbEXT(id: Integer); cdecl; external WDSP_LIB; procedure xanbEXT(id: Integer; ain: PDouble; aout: PDouble); cdecl; external WDSP_LIB; procedure SetEXTANBRun(id: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetEXTANBBuffsize(id: Integer; size: Integer); cdecl; external WDSP_LIB; procedure SetEXTANBSamplerate(id: Integer; rate: Integer); cdecl; external WDSP_LIB; procedure SetEXTANBTau(id: Integer; tau: Double); cdecl; external WDSP_LIB; procedure SetEXTANBHangtime(id: Integer; time: Double); cdecl; external WDSP_LIB; procedure SetEXTANBAdvtime(id: Integer; time: Double); cdecl; external WDSP_LIB; procedure SetEXTANBBacktau(id: Integer; tau: Double); cdecl; external WDSP_LIB; procedure SetEXTANBThreshold(id: Integer; thresh: Double); cdecl; external WDSP_LIB; procedure xanbEXTF(id: Integer; I: PSingle; Q: PSingle); cdecl; external WDSP_LIB; // NOB (Noise Blanker II) function create_nob(run: Integer; buffsize: Integer; ain: PDouble; aout: PDouble; samplerate: Double; mode: Integer; advslewtime: Double; advtime: Double; hangslewtime: Double; hangtime: Double; max_imp_seq_time: Double; backtau: Double; threshold: Double): TNOB; cdecl; external WDSP_LIB; procedure destroy_nob(a: TNOB); cdecl; external WDSP_LIB; procedure flush_nob(a: TNOB); cdecl; external WDSP_LIB; procedure xnob(a: TNOB); cdecl; external WDSP_LIB; procedure pSetRCVRNOBRun(a: TNOB; run: Integer); cdecl; external WDSP_LIB; procedure pSetRCVRNOBMode(a: TNOB; mode: Integer); cdecl; external WDSP_LIB; procedure pSetRCVRNOBBuffsize(a: TNOB; size: Integer); cdecl; external WDSP_LIB; procedure pSetRCVRNOBSamplerate(a: TNOB; rate: Integer); cdecl; external WDSP_LIB; procedure pSetRCVRNOBTau(a: TNOB; tau: Double); cdecl; external WDSP_LIB; procedure pSetRCVRNOBHangtime(a: TNOB; time: Double); cdecl; external WDSP_LIB; procedure pSetRCVRNOBAdvtime(a: TNOB; time: Double); cdecl; external WDSP_LIB; procedure pSetRCVRNOBBacktau(a: TNOB; tau: Double); cdecl; external WDSP_LIB; procedure pSetRCVRNOBThreshold(a: TNOB; thresh: Double); cdecl; external WDSP_LIB; procedure create_nobEXT(id: Integer; run: Integer; mode: Integer; buffsize: Integer; samplerate: Double; slewtime: Double; hangtime: Double; advtime: Double; backtau: Double; threshold: Double); cdecl; external WDSP_LIB; procedure destroy_nobEXT(id: Integer); cdecl; external WDSP_LIB; procedure flush_nobEXT(id: Integer); cdecl; external WDSP_LIB; procedure xnobEXT(id: Integer; ain: PDouble; aout: PDouble); cdecl; external WDSP_LIB; procedure SetEXTNOBRun(id: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetEXTNOBMode(id: Integer; mode: Integer); cdecl; external WDSP_LIB; procedure SetEXTNOBBuffsize(id: Integer; size: Integer); cdecl; external WDSP_LIB; procedure SetEXTNOBSamplerate(id: Integer; rate: Integer); cdecl; external WDSP_LIB; procedure SetEXTNOBTau(id: Integer; tau: Double); cdecl; external WDSP_LIB; procedure SetEXTNOBHangtime(id: Integer; time: Double); cdecl; external WDSP_LIB; procedure SetEXTNOBAdvtime(id: Integer; time: Double); cdecl; external WDSP_LIB; procedure SetEXTNOBBacktau(id: Integer; tau: Double); cdecl; external WDSP_LIB; procedure SetEXTNOBThreshold(id: Integer; thresh: Double); cdecl; external WDSP_LIB; procedure xnobEXTF(id: Integer; I: PSingle; Q: PSingle); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // osctrl.c // --------------------------------------------------------------------------- procedure SetTXAosctrlRun(channel: Integer; run: Integer); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // patchpanel.c // --------------------------------------------------------------------------- procedure SetRXAPanelRun(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetRXAPanelSelect(channel: Integer; select: Integer); cdecl; external WDSP_LIB; procedure SetRXAPanelGain1(channel: Integer; gain: Double); cdecl; external WDSP_LIB; procedure SetRXAPanelGain2(channel: Integer; gainI: Double; gainQ: Double); cdecl; external WDSP_LIB; procedure SetRXAPanelPan(channel: Integer; pan: Double); cdecl; external WDSP_LIB; procedure SetRXAPanelCopy(channel: Integer; copy: Integer); cdecl; external WDSP_LIB; procedure SetRXAPanelBinaural(channel: Integer; bin: Integer); cdecl; external WDSP_LIB; procedure SetTXAPanelRun(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetTXAPanelGain1(channel: Integer; gain: Double); cdecl; external WDSP_LIB; procedure SetTXAPanelSelect(channel: Integer; select: Integer); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // resample.c // --------------------------------------------------------------------------- function create_resample(run: Integer; size: Integer; ain: PDouble; aout: PDouble; in_rate: Integer; out_rate: Integer; fc: Double; ncoef: Integer; gain: Double): TRESAMPLE; cdecl; external WDSP_LIB; procedure destroy_resample(a: TRESAMPLE); cdecl; external WDSP_LIB; procedure flush_resample(a: TRESAMPLE); cdecl; external WDSP_LIB; function xresample(a: TRESAMPLE): Integer; cdecl; external WDSP_LIB; function create_resampleV(in_rate: Integer; out_rate: Integer): Pointer; cdecl; external WDSP_LIB; procedure xresampleV(input: PDouble; output: PDouble; numsamps: Integer; outsamps: PInteger; ptr: Pointer); cdecl; external WDSP_LIB; procedure destroy_resampleV(ptr: Pointer); cdecl; external WDSP_LIB; function create_resampleFV(in_rate: Integer; out_rate: Integer): Pointer; cdecl; external WDSP_LIB; procedure xresampleFV(input: PSingle; output: PSingle; numsamps: Integer; outsamps: PInteger; ptr: Pointer); cdecl; external WDSP_LIB; procedure destroy_resampleFV(ptr: Pointer); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // rmatch.c (Rate Matching buffer) // --------------------------------------------------------------------------- procedure xrmatchIN(b: Pointer; ain: PDouble); cdecl; external WDSP_LIB; procedure xrmatchOUT(b: Pointer; aout: PDouble); cdecl; external WDSP_LIB; procedure getRMatchDiags(b: Pointer; underflows: PInteger; overflows: PInteger; var_: PDouble; ringsize: PInteger; nring: PInteger); cdecl; external WDSP_LIB; procedure resetRMatchDiags(b: Pointer); cdecl; external WDSP_LIB; procedure forceRMatchVar(b: Pointer; force: Integer; fvar: Double); cdecl; external WDSP_LIB; function create_rmatchV(in_size: Integer; out_size: Integer; nom_inrate: Integer; nom_outrate: Integer; ringsize: Integer; var_: Double): Pointer; cdecl; external WDSP_LIB; procedure destroy_rmatchV(ptr: Pointer); cdecl; external WDSP_LIB; procedure setRMatchInsize(ptr: Pointer; insize: Integer); cdecl; external WDSP_LIB; procedure setRMatchOutsize(ptr: Pointer; outsize: Integer); cdecl; external WDSP_LIB; procedure setRMatchNomInrate(ptr: Pointer; nom_inrate: Integer); cdecl; external WDSP_LIB; procedure setRMatchNomOutrate(ptr: Pointer; nom_outrate: Integer); cdecl; external WDSP_LIB; procedure setRMatchRingsize(ptr: Pointer; ringsize: Integer); cdecl; external WDSP_LIB; procedure setRMatchFeedbackGain(b: Pointer; feedback_gain: Double); cdecl; external WDSP_LIB; procedure setRMatchSlewTime(b: Pointer; slew_time: Double); cdecl; external WDSP_LIB; procedure setRMatchSlewTime1(b: Pointer; slew_time: Double); cdecl; external WDSP_LIB; procedure setRMatchPropRingMin(ptr: Pointer; prop_min: Integer); cdecl; external WDSP_LIB; procedure setRMatchPropRingMax(ptr: Pointer; prop_max: Integer); cdecl; external WDSP_LIB; procedure setRMatchFFRingMin(ptr: Pointer; ff_ringmin: Integer); cdecl; external WDSP_LIB; procedure setRMatchFFRingMax(ptr: Pointer; ff_ringmax: Integer); cdecl; external WDSP_LIB; procedure setRMatchFFAlpha(ptr: Pointer; ff_alpha: Double); cdecl; external WDSP_LIB; procedure getControlFlag(ptr: Pointer; control_flag: PInteger); cdecl; external WDSP_LIB; function create_rmatchLegacyV(in_size: Integer; out_size: Integer; nom_inrate: Integer; nom_outrate: Integer; ringsize: Integer): Pointer; cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // rnnr.c (RNN-based Noise Reduction) // --------------------------------------------------------------------------- procedure SetRXARNNRRun(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure RNNRloadModel(file_path: PAnsiChar); cdecl; external WDSP_LIB; procedure SetRXARNNRPosition(channel: Integer; position: Integer); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // sbnr.c (Spectral Blind Noise Reduction) // --------------------------------------------------------------------------- procedure SetRXASBNRRun(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetRXASBNRreductionAmount(channel: Integer; amount: Single); cdecl; external WDSP_LIB; procedure SetRXASBNRsmoothingFactor(channel: Integer; factor: Single); cdecl; external WDSP_LIB; procedure SetRXASBNRwhiteningFactor(channel: Integer; factor: Single); cdecl; external WDSP_LIB; procedure SetRXASBNRnoiseRescale(channel: Integer; factor: Single); cdecl; external WDSP_LIB; procedure SetRXASBNRpostFilterThreshold(channel: Integer; threshold: Single); cdecl; external WDSP_LIB; procedure SetRXASBNRnoiseScalingType(channel: Integer; noise_scaling_type: Integer); cdecl; external WDSP_LIB; procedure SetRXASBNRPosition(channel: Integer; position: Integer); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // sender.c // --------------------------------------------------------------------------- procedure SetRXASpectrum(channel: Integer; flag: Integer; disp: Integer; ss: Integer; LO: Integer); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // shift.c // --------------------------------------------------------------------------- procedure SetRXAShiftRun(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetRXAShiftFreq(channel: Integer; fshift: Double); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // siphon.c // --------------------------------------------------------------------------- procedure RXAGetaSipF(channel: Integer; aout: PSingle; size: Integer); cdecl; external WDSP_LIB; procedure RXAGetaSipF1(channel: Integer; aout: PSingle; size: Integer); cdecl; external WDSP_LIB; procedure TXASetSipPosition(channel: Integer; pos: Integer); cdecl; external WDSP_LIB; procedure TXASetSipMode(channel: Integer; mode: Integer); cdecl; external WDSP_LIB; procedure TXASetSipDisplay(channel: Integer; disp: Integer); cdecl; external WDSP_LIB; procedure TXAGetaSipF(channel: Integer; aout: PSingle; size: Integer); cdecl; external WDSP_LIB; procedure TXAGetaSipF1(channel: Integer; aout: PSingle; size: Integer); cdecl; external WDSP_LIB; procedure TXASetSipSpecmode(channel: Integer; mode: Integer); cdecl; external WDSP_LIB; procedure TXAGetSpecF1(channel: Integer; aout: PSingle); cdecl; external WDSP_LIB; procedure TXASetSipAllocDisps(channel: Integer; n_alloc_disps: Integer; alloc_run: PInteger; alloc_disp: PInteger); cdecl; external WDSP_LIB; procedure create_siphonEXT(id: Integer; run: Integer; insize: Integer; sipsize: Integer; fftsize: Integer; specmode: Integer); cdecl; external WDSP_LIB; procedure destroy_siphonEXT(id: Integer); cdecl; external WDSP_LIB; procedure flush_siphonEXT(id: Integer); cdecl; external WDSP_LIB; procedure xsiphonEXT(id: Integer; buff: PDouble); cdecl; external WDSP_LIB; procedure GetaSipF1EXT(id: Integer; aout: PSingle; size: Integer); cdecl; external WDSP_LIB; procedure SetSiphonInsize(id: Integer; size: Integer); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // slew.c // --------------------------------------------------------------------------- procedure SetTXAuSlewTime(channel: Integer; time: Double); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // snb.c (Spectral Noise Blanker A) // --------------------------------------------------------------------------- procedure SetRXASNBARun(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetRXASNBAovrlp(channel: Integer; ovrlp: Integer); cdecl; external WDSP_LIB; procedure SetRXASNBAasize(channel: Integer; size: Integer); cdecl; external WDSP_LIB; procedure SetRXASNBAnpasses(channel: Integer; npasses: Integer); cdecl; external WDSP_LIB; procedure SetRXASNBAk1(channel: Integer; k1: Double); cdecl; external WDSP_LIB; procedure SetRXASNBAk2(channel: Integer; k2: Double); cdecl; external WDSP_LIB; procedure SetRXASNBAbridge(channel: Integer; bridge: Integer); cdecl; external WDSP_LIB; procedure SetRXASNBApresamps(channel: Integer; presamps: Integer); cdecl; external WDSP_LIB; procedure SetRXASNBApostsamps(channel: Integer; postsamps: Integer); cdecl; external WDSP_LIB; procedure SetRXASNBApmultmin(channel: Integer; pmultmin: Double); cdecl; external WDSP_LIB; procedure SetRXASNBAOutputBandwidth(channel: Integer; flow: Double; fhigh: Double); cdecl; external WDSP_LIB; procedure RXABPSNBASetNC(channel: Integer; nc: Integer); cdecl; external WDSP_LIB; procedure RXABPSNBASetMP(channel: Integer; mp: Integer); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // ssql.c (Signal Squelch) // --------------------------------------------------------------------------- procedure SetRXASSQLRun(channel: Integer; run: Integer); cdecl; external WDSP_LIB; procedure SetRXASSQLThreshold(channel: Integer; threshold: Double); cdecl; external WDSP_LIB; procedure SetRXASSQLTauMute(channel: Integer; tau_mute: Double); cdecl; external WDSP_LIB; procedure SetRXASSQLTauUnMute(channel: Integer; tau_unmute: Double); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // utilities.c // --------------------------------------------------------------------------- function malloc0(size: Integer): Pointer; cdecl; external WDSP_LIB; function NewCriticalSection: Pointer; cdecl; external WDSP_LIB; procedure DestroyCriticalSection(cs_ptr: TLPCRITICAL_SECTION); cdecl; external WDSP_LIB; procedure analyze_bandpass_filter(N: Integer; f_low: Double; f_high: Double; samplerate: Double; wintype: Integer; rtype: Integer; scale: Double); cdecl; external WDSP_LIB; procedure print_buffer_parameters(filename: PAnsiChar; channel: Integer); cdecl; external WDSP_LIB; function create_bfcu(id: Integer; min_size: Integer; max_size: Integer; rate: Double; corner: Double; points: Integer): Integer; cdecl; external WDSP_LIB; procedure destroy_bfcu(id: Integer); cdecl; external WDSP_LIB; procedure getFilterCorners(id: Integer; lower_index: PInteger; upper_index: PInteger); cdecl; external WDSP_LIB; procedure getFilterCurve(id: Integer; size: Integer; w_type: Integer; index_low: Integer; index_high: Integer; segment: PDouble); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // varsamp.c // --------------------------------------------------------------------------- function create_varsampV(in_rate: Integer; out_rate: Integer; R: Integer): Pointer; cdecl; external WDSP_LIB; procedure xvarsampV(input: PDouble; output: PDouble; numsamps: Integer; var_: Double; outsamps: PInteger; ptr: Pointer); cdecl; external WDSP_LIB; procedure destroy_varsampV(ptr: Pointer); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // version.c // --------------------------------------------------------------------------- function GetWDSPVersion: Integer; cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // wcpAGC.c (Wideband Constant Power AGC) // --------------------------------------------------------------------------- procedure SetRXAAGCMode(channel: Integer; mode: Integer); cdecl; external WDSP_LIB; procedure SetRXAAGCAttack(channel: Integer; attack: Integer); cdecl; external WDSP_LIB; procedure SetRXAAGCDecay(channel: Integer; decay: Integer); cdecl; external WDSP_LIB; procedure SetRXAAGCHang(channel: Integer; hang: Integer); cdecl; external WDSP_LIB; procedure GetRXAAGCHangLevel(channel: Integer; hangLevel: PDouble); cdecl; external WDSP_LIB; procedure SetRXAAGCHangLevel(channel: Integer; hangLevel: Double); cdecl; external WDSP_LIB; procedure GetRXAAGCHangThreshold(channel: Integer; hangthreshold: PInteger); cdecl; external WDSP_LIB; procedure SetRXAAGCHangThreshold(channel: Integer; hangthreshold: Integer); cdecl; external WDSP_LIB; procedure GetRXAAGCThresh(channel: Integer; thresh: PDouble; size: Double; rate: Double); cdecl; external WDSP_LIB; procedure SetRXAAGCThresh(channel: Integer; thresh: Double; size: Double; rate: Double); cdecl; external WDSP_LIB; procedure GetRXAAGCTop(channel: Integer; max_agc: PDouble); cdecl; external WDSP_LIB; procedure SetRXAAGCTop(channel: Integer; max_agc: Double); cdecl; external WDSP_LIB; procedure SetRXAAGCSlope(channel: Integer; slope: Integer); cdecl; external WDSP_LIB; procedure SetRXAAGCFixed(channel: Integer; fixed_agc: Double); cdecl; external WDSP_LIB; procedure SetRXAAGCMaxInputLevel(channel: Integer; level: Double); cdecl; external WDSP_LIB; procedure SetTXAALCSt(channel: Integer; state: Integer); cdecl; external WDSP_LIB; procedure SetTXAALCAttack(channel: Integer; attack: Integer); cdecl; external WDSP_LIB; procedure SetTXAALCDecay(channel: Integer; decay: Integer); cdecl; external WDSP_LIB; procedure SetTXAALCHang(channel: Integer; hang: Integer); cdecl; external WDSP_LIB; procedure SetTXAALCMaxGain(channel: Integer; maxgain: Double); cdecl; external WDSP_LIB; procedure SetTXALevelerSt(channel: Integer; state: Integer); cdecl; external WDSP_LIB; procedure SetTXALevelerAttack(channel: Integer; attack: Integer); cdecl; external WDSP_LIB; procedure SetTXALevelerDecay(channel: Integer; decay: Integer); cdecl; external WDSP_LIB; procedure SetTXALevelerHang(channel: Integer; hang: Integer); cdecl; external WDSP_LIB; procedure SetTXALevelerTop(channel: Integer; maxgain: Double); cdecl; external WDSP_LIB; // --------------------------------------------------------------------------- // wisdom.c (FFTW wisdom) // --------------------------------------------------------------------------- function wisdom_get_status: PAnsiChar; cdecl; external WDSP_LIB; function WDSPwisdom(directory: PAnsiChar): Integer; cdecl; external WDSP_LIB; implementation end.