PSKCore DLL Project


PSK31 is an amateur radio communications mode introduced by Peter Martinez, G3PLX, that uses phase modulation and special character coding. It allows robust narrow bandwidth keyboard "Chat" type communications between two or more stations.

A DLL(Dynamic Link Library) was developed that can be used for receiving and transmitting PSK31 signals using a Windows soundcard. The DLL is a 32 bit Regular DLL written using Visual C++ and MFC. The user sends and receives data and status via calls to various routines exposed by the DLL. Custom User Windows messages are sent from the DLL to the application for notification of events that require action by the application program.

The DLL is made available free of charge for amateur radio use only.

Key DLL Features:

Full Software/Technical Documentation is contained in this pdf file (778K): PSKCoreDLL141.pdf

The DLL File(and include and library files for linking) is here (124K):

The LGPL DLL Source Code is here (111K):

This new version starting with 1.19 runs the soundcard at 48KHz to get around the Windows driver resampling rate error problems many are seeing.(Windows decides to run the card at a slightly different rate than 8000Hz for some reason..the affect is a reduction in sensitivity in receiving PSK with the dll). Some older sound cards may not work at the new rate of 48KHz so the old version is still available.

The Old DLL File(if your sound card does not support 48KHz Sample rates) is here (88K):


A c t i v e X P S K 3 1 C o n t r o l

Dave Cook, WA0TTN has brought his amazing programming talents to work and rolled the DLL code AND a new spectrum display together into an almost too easy to use ActiveX component. The documentation package is a thing of beauty. He is also working on a "Rig Control" component to make interfacing to all the various radios just as easy. Check out his work at

Revision History( from latest back to first release):

ver. 1.21 Maintenance release 9-24-2008 ( Big Thanks to Dave, AA6YQ for doing all this)
Functional Changes:

Added Quad speed mode for BPSK and QPSK (PSK125).  
Added API entry fnStartRXTXSoundCard - a version of fnStartSoundCard that accepts independent input and output soundcard device identifiers
Bug Fixes:

Corrected compilation errors and warnings from Visual Studio 2005

ver. 1.19 Maintenance release 10-07-03

Bug Fixes:

Changed Soundcard rate to 48KHz.

Fixed RX qpsk mode bug.

ver. 1.17 Maintenance release 6-05-03

Bug Fixes:

Fixed problem with Tx mode changes

Forced squelch off after Tx to Rx transition.

ver. 1.16 Maintenance release 5-23-03

Functional Changes:

Added double speed mode for BPSK and QPSK (PSK63).

Bug Fixes:

Fixed problem with QPSK squelch when long string of various characters were received.

Fixed FFT bug with missing data point.

ver. 1.15 Maintenance release 6-22-02

Bug Fixes:

Fixed problem with receive bit sync where characters could get scrogged periodically.

Fixed problem with soundcard closing.

    Ver. 1.14 Maintenance release 4-27-02

Functional Changes:


Bug Fixes:

Fixed problem with exported name mangling of the new functions added in version 1.13.

Fixed problem with soundcard clock adjustment on transmit.

    Ver. 1.13 Maintenance release 9-08-01

Functional Changes:

Added New functions to help manipulating multiple receive channels (See Interface document) for details.

Bug Fixes:

Fixed possible serial port initialization problem.

    Ver. 1.12 Maintenance release 8-04-01

Functional Changes:

Added RIFF wave file support.

Decreased CPU decoder load by 8%

    Ver. 1.11 Maintenance release 6-01-01

Bug Fixes:

Keeps serial port open during receive mode to correct a problem with some laptops.

Functional Changes:

Bumped TX buffer size to 32K

  Ver. 1.10 Maintenance release 1-28-01

Bug Fixes:

Clears RTS and DTR when fnSetComPort(..) is called.

Use different API call for serial port commands to try and get around some laptop issues.

 Ver. 1.09 Maintenance release 12-24-00

Functional Changes:

Added Full Duplex capability(See fnStartTX() )

Added Fast Track AFC mode ( See fnSetAFCLimit() )

Ver. 1.08 Maintenance release 12-08-00

Bug Fixes:

Fixed Soundcard initialization error message problem.

Functional Changes:

Increased maximum allowed receiver channels to 50.

Include files now available for implicit or explicit DLL linking


Ver. 1.07 Maintenance release 8-18-00

Bug fixes:

Fixed FFT bounds problem.

Reworked dll initialization scheme so settings can be set prior to starting the soundcard thread.

Fixed Vector data glitch on transmit start.

Fixed TX Finishing status problem.


Ver. 1.06 Maintenance release 8-03-00

Functional Changes:

Added some time delay between audio and PTT.

Added fnRewindInput() function to back-up in time up to 25 seconds and re-process the audio data.


Ver. 1.05 Maintenance release 7-02-00

Functional Changes:

Added some more error checking to com port routines.

Bug fixes:

Fixed Problem sending error message during initialization.

Fixed Com Port8 selection problem.


Ver. 1.04 Maintenance release 6-24-00

Functional Changes:

Limited PSK31 frequency range to 100-3500Hz to prevent distortion problems.

Added Low audio input disable to prevent garbage characters from soundcard background noise.

Updated Software Specification/Tech Guide.

Bug fixes:

Fixed FFT baseline clipping bug.

Ver. 1.00 Initial release 5-29-00



Back to Main