User Manual For V2



To install the program run the downloaded program jqamv2_setup.exe. The install wizard will guide you through the rest of the installation.


Running the program:

You will find a program shortcut in your start menu. Click Start , J-QAM , J-QAM V2. If this is the first time you have run the program a window will display telling you fftw is finding a fast implementation of an fft. Once this is gone the program is loaded.


Configuring the program:
Upon running the program, a default window will be showing.

If all you want to do is use it as a demodulator, chances are selecting file-start is enough.

Else, click the options-settings from the menu bar. The following window should be showing.



First, configure “SoundCard Settings”. Choose the “sample rate” for your sound card, I recommend 96000 but if your computer does not work well with this setting try something lower like 48000. The “buffer size” controls the size of the audio buffer and the value of 30000 should be adequate. Choose your “Soundcard Device” from the list.


Next, Decide which checkboxes you want to activate.

  • Enable Modulator
    Select this if you want the program to be used as a modulator (makes the sound)

  • Enable Demodulation
    Select this if you want the program to be used as a demodulator (decodes the sound)

  • Show Main Window when Program Is launched

  • Start when program is run
    This option will start the modem modulating and/or demodulating the the program is launched.

  • Enable RS232 for transmitting and receiving data.
    If this option is checked then the designated serial port can be used to send and receive data from the program.
    You will then have to select your serial port and speed.

Configuring the demodulator.


From the settings window click on “Demodulator”



Demodulator Settings (General).

  • UDP Send Addr
    If you intend to receive UDP packets the set this to where you want them to be sent. “localhost”, “”, “” are common for the local computer.

  • UDP Send Port
    If you intend to receive UDP packets the set this to what port you want them to use.

  • Unreal QAM Port
    If you intend to receive Unreal media this port is the address you connect “streaming media player” to. You will have to download “streaming media player” for this go to http://www.umediaserver.net/umediaserver/download.html.

  • Web Server Port
    What port the web server will run on. 80 is the standard.


“Demodulator Advanced” is the window where all the settings of the acquisition of the signal and tracking of it live. Experiment with these if you are feeling keen.


Click “OK”, select File-start, and the program will hunt for a signal.


Configuring the modulator.


From the settings window click on “Modulator”




Next, configure “QAM settings”. Decide which checkboxes you want to activate.

  • Unreal Streaming
    Select this if you want the program to send audio and video

  • Enable Sending Of Station ID
    Sends the name of your station at regular intervals.

  • Enable WebServer
    If this option is selected the program sends files to the in computers that are demodulating the signal. It uses only unutilized bandwidth and is therefore perfect when sending unreal media to describe what your station is about.

  • Constellations size
    Chooses what constellation size you want. Either 16 or 64. 64 will allow 67% more throughput given the same bandwidth as 16. The catch is that 64 is more likely to not lock and will receive more errors than 16.

  • Center frequency
    The carrier frequency is this frequency.  Choose this value so it is in the middle of your available bandwidth. Values from 1200 to 12000 should be OK on normal sound cards.

  • Gamma
    Gamma is a setting that controls the number of symbols sent for each oscillation of the frequency. A value of 0.75 means that one symbol is sent every 75% of an oscillation cycle. This means that smaller values allow you to get a higher throughput, but the program finds it harder to determine what symbol was sent when gamma is small, also the smaller gamma is the smaller alpha must be. For example, if you want gamma to be equal to 0.54, alpha must be no bigger than about 0.1. You should choose a value between 0.54 and 1. I suggest you use a program like “spectrum lab” to see what difference alpha and gamma have on the audio output spectrum, you can also use the spectrum display when demodulating in this program to see visually how alpha and gamma affect the output wave.

  • Alpha
    Alpha is a setting that tells the program what sort of filters to use. Small values produce a signal output that uses less bandwidth, but the “FIR size” of the modulator and at the demodulator must be bigger. You should choose a value between 0.1 and 1.

  • Mod FIR Size
    this setting controls the size of the modulation filter.  The higher the number the nicer the output wave looks. The value of 200 to 900 should be fine.

  • Frame period
    every so often the program must send a frame to allow the receiver in the information to know the transmitters settings. This is a frame, which is 10 bytes long. A value of a few hundred should be fine. The bigger its value is the longer a receiver has to wait but that is all.

  • RS Error percent
    On top of TCM the program uses Reed Solomon forward error correction. This setting controls how much it should use. The higher this number is the more bandwidth is used for error correction.  If you wish to set this at 50% half of your bandwidth is used for error correction. A value of 10% to 20% should be okay but experiment to see.

  • Interleaving length
    this is used by the Reed Solomon code in combating burst errors. The bigger this value is the more the program is immune to burst errors. The catch is the latency goes up. Experiment with this.


Your data rate in bits per second can be worked out using the following formula.

For QAM16 datarate= ((100- RSErrorPercent)/100)*3*CenterFrequency/Gamma

For QAM64 datarate= ((100- RSErrorPercent)/100)*5*CenterFrequency/Gamma

Your bandwidth in Hertz will be


And remember

2*gamma-1 should be greater than alpha.



Station ID



  • Station ID
    you can call your stations whenever you want and get J-QAM to broadcast it to all receivers so they know who you are.

  • ID send period
    controls how often you want to send your station ID in seconds.




Modulator UDP




  • UDP listen port.
    This is the port that J-QAM will listen for UDP packets.


Modulator Unreal Media


To run unreal media you will need to download “unreal media server”, “unreal media live server” go to http://www.umediaserver.net/umediaserver/download.html to get the two programs needed.





  • Unreal server address.
    this is the Internet’s address on which the unreal media server is run on

  • Unreal server port
    this is the port on which unreal media server is running. 5119 is unreal media server’s default, and normally this value should be fine.

  • Unreal alias
    this is the alias by which J-QAM will try to connect to the unreal media server.

  • URH send period
    every so often J-QAM must send an unreal header to all receiving J-QAMs in order to inform them what unreal media is being sent. Any value should be okay but the bigger the value is the longer the receiver must have to wait.




Modulator web server.


These are the files that J-QAM sends when there is sufficient bandwidth. Enter the size of the packet’s you wish to send, 512 should be adequate. The program only sends files when the program is not sending anything else, to do this you must specify the idle threshold. A small idle threshold means the program waits for very little activity before sending a packet of a file.  Setting this value to 5% or 10% should be fine. To allow you to change files while the program is still sending files I have added an FTP server to my program.  To have access to this FTP server you have to enter a port you want (normally “ftp” is used), what username, and what password you want. Click on the little yellow folder and browse for the file directory that you wish to be sent, all files in this directory can be sent but no directories of this directory. Because files are sent continuously in rotation, “Resends” allow you to specify on average how many times you send a particular file for each rotation. Zero means the file will never be sent and larger values will be sent more regularly.





Received files are stored in a folder named after the station ID where QAM.exe resides. The program allows easy access to these stored files by running a Web server which runs on the port “web server port”. To access it, selecting view-webserver from the main window will launch Firefox or Outlook express and open it. The web server interface looks like the picture below.



In the settings window OK excepts your settings whilst cancel reverts back to the previous setting.


What all the things mean.

  • Rx Level
    shows the amplitude of the received signal

  • URH
    lights up when the program receives and unreal header packet.

  • FRM
    lights up when the program receives a frame.

  • AMA
    lights up when the program uses many moduli for equalization.

  • OverF
    lights up when data is wishing to be sent faster than the program can actually send it. If you get this lighting up you have to do something about it.

  • URC
    lights up when an UnReal media player connects to my program.

  • URS
    lights up when my program connects to an unreal media server.

  • Modulating
    lights up when the program is modulating (making sound)

  • DeModulating
    lights up when the program is demodulating (decoding sound)

  • CD
    lights up when the program has got a possible setting to try.

  • LCK
    lights up when the program has locked on to the symbol and carrier frequencies and phases.

  • MSE
    mean square error. Gives a value for the quality of the received signal. The smaller the value the better. (this is a very important parameter for the program and is used in many places. It’s even used to determine which is the right way up for the constellation)

  • Buffer level
    shows how much of the transmitter but there is used. When it gets to the top you will get an overflow.

  • Data rate
    shows the effective data rate you have got after the over heads have been accounted for.


Items from the “view” menu.



The constellation window gives a visual output of the received symbols.



The console window gives a display of any RS232 data or text packets. It also allows you to send text packets. Its main use is for testing purposes. Enter characters you want to send in the bottom and characters received will appear in the top.



The spectrum window shows what frequencies are being used.  If you’re listening to a valid signal you should get something that resembles the following picture.



the frequencies window shows you what frequency settings are probable.



the reception window shows you the current status of demodulation.



the transmission window shows you the current status of modulation.


Web page:

Will open your web browser and loaded J-QAM’s web server address



Starting the modulator/demodulator:

To start the modulator/demodulator simply click the start button in the main window. To stop the modulator/demodulator simply click the stop button in the main window. These are also available from File-start, and File-stop.


Jonti Olds

Email jontio@i4free.co.nz

Home Page https://jontio.zapto.org

Product Page https://jontio.zapto.org/hda1/paradise/QAM.htm






Jonti. Last modified Fri, 3 Jul 2020 03:12:32 GMT.