Published using Google Docs
iCW Sine Wave Oscillator Article.doc
Updated automatically every 5 minutes

Operating iCW with a Sine Wave Oscillator

by Joe Loposzko, KF7CX


When I decided to get on Internet CW (iCW), I figured that the easiest way to do so would be with a code practice oscillator placed between my keyer and computer sound card.  It would keep things simple and make my iCW experience as close as possible to my on-the-air operating.  For me, that involves sending with a K1EL CW keyboard and listening to my sidetone when sending.  I don’t use CWTYPE or FLDIGI on the air, so I didn’t see a reason to start using those programs for iCW.  After a lot of experimenting and helpful comments from hams on the Mumble server, I came up with a reasonably good solution for operating iCW with a sine wave oscillator.  I’ve received many favorable comments about the sound of my iCW, even when sending at speeds as high as 85 wpm.  In the following sections I’ll describe what I learned, the circuitry that I use, and the set up procedures for operation.  

Consider the Advantages

The sine wave oscillator approach to working iCW has some advantages over other methods:

  1. You only have to run the Mumble server program.  No other programs are needed after the sound card levels have been properly adjusted.
  2. You only need one sound card.
  3. You’ll have faster QSK than with other methods.
  4. You’ll be able to hear your sidetone, but you can also easily turn it off.
  5. You can use any keying device you want and easily switch keying devices - paddles, bug, straight key - etc -

Issues with Using a Sinewave Oscillator for iCW

In experimenting with sine wave oscillator circuits, I encountered two problems.

First was the issue of key clicks.  To eliminate them, we need to be able to key the circuit with the appropriate rise and fall times.  Fortunately, it was easy to find some code practice oscillator circuits that were designed to overcome key clicks.

The second problem that I encountered involved the audio spectrum of typical sine wave code practice oscillators when connected and adjusted for iCW operation.  Even if they produce a nice sine wave, their output will often contain undesirable harmonics that might be audible on the Mumble server.  Also, if the level of low frequency components is high, the CW can sound “thumpy” on the server.  

To illustrate the issue of a poor audio spectrum for iCW, the reader can compare Figures 1 and 2.  

Figure 1 shows the audio spectrum produced by a typical commercially available sine wave code practice oscillator.

            - note the multiple high frequency harmonics and the high level of low frequency energy getting through -    

Figure 2 shows a “near ideal “ audio spectrum for iCW produced when using FLDIGI.  

Figure 1 – Spectrum of a typical commercially available sine wave oscillator circuit.    


Figure 2 – A “near ideal” audio spectrum for morse code audio tones on iCW using FLDIGI.

It became apparent that I would need more than just a good sine wave oscillator circuit for iCW.  I would also need a filter to reduce harmonics and low frequency components.

Sine Wave Oscillator Circuits

I experimented with several sine wave oscillator circuits to try to find the best one for iCW.  

            These included:

the T-Tone Code Practice Oscillator from Morse Express,

the MFJ-544 Classroom Code Oscillator, and

the Smooth Tone Clickless CW Sidetone Generator Electronic Circuit from

The T-Tone was eliminated from consideration, because there was a noticeable shortening of dits at higher speeds.  The MFJ circuit looked promising, but it didn’t work well with the filter that I ultimately chose to use.  The Smooth Tone circuit was the one that I ended up using.  The circuit will work as shown on the website, but I made a few modifications that made it more usable for iCW.  I will explain these later.

Audio Filtering

I experimented with a number of filters to find the best one for reducing the level of the harmonics and low frequency components from the sine wave oscillator.  These included several active audio filter circuits, a NEScaf filter, a W3NQN passive audio filter, and the SDRadio computer program.  With the exception of SDRadio, I found that the W3NQN passive audio filter outperformed the other filters that I tested.  I decided to use the passive audio filter.

Details about My Final Solution

My final solution was a modified version of the Smooth Tone circuit with a W3NQN passive audio filter connected to its output.

The biggest change that I made to the original Smooth Tone circuit involved replacing the oscillator portion with an oscillating bandpass filter oscillator similar to the one used in the MFJ-544.  This modification allowed me to vary the oscillator frequency by turning a pot and provided greater output from the oscillator compared to the original circuit.  Figure 3 shows the schematic diagram of the sine wave oscillator circuit that I used.  Experimenters may want to try different values for the low pass filter connected to the base of Q2 since it affects the keying.

The W3NQN passive audio filter ( is a fixed-frequency, five-resonator, Chebyshev filter with a 250 Hz bandwidth.  It is sold as a kit, and can be purchased with a center frequency as low as 600 Hz or as high as 750 Hz.  I recommend at least a 700 Hz center frequency, because the Mumble server seems to prefer higher audio frequencies.  The filter uses input and output audio transformers for impedance matching, but it was found that harmonics from the sine wave oscillator could only be adequately filtered when the audio transformer at the filter output was bypassed.  This corresponds to tapping the output at point 9 of Figure 4.  The filter requires more drive than other types, so the sine wave oscillator circuit was built with the LM386 amplifier.

NOTE FROM EDITOR: Ed, W3NQN, has made this comment about bypassing the final transformer,

“The idea of eliminating the output transformer is good as long as the filter output

is terminated in a resistive load of about 200 ohms. 73,  Ed”

(so a good quality 200 ohm THIN FILM METAL resistor from point 9 to ground should work well without effecting audio performance)

Figure 3 - Schematic of qrq-cw-keyed Sine Wave Oscillator circuit


The input pin numbers are incorrect on LM324 U1C.  The top pin should be 9 with a negative sign.  The bottom pin should be 10 with a plus sign.   The power connections on LM324 U3A are incorrect.  The connection to the +9 volts should be pin 4.  The ground connection should be pin 11.


Figure 4 – W3NQN 5-Resonator CW Filter

Figure 5 shows the spectrum that I was able to achieve using the sine wave oscillator with the W3NQN filter.  When compared with Figure 1, it is easy to see the improvement.  You can also see that it looks closer to the spectrum of Figure 2.  Some of the third harmonic remains, but it is sufficiently reduced.  Figure 6 shows what my completed iCW setup looks like.


Figure 5 – Spectrum of sine wave oscillator with filter.

Figure 6 – Internet CW Components: keyboard keyer on top, sine wave oscillator in  

                 the middle, and W3NQN filter on the bottom.

Setting Things Up to Work iCW

The following information might be of some value in helping you set up the sine wave oscillator and filter to work iCW.  



Connect your keyer to the oscillator circuit, and then connect the output of the circuit to the input of the filter.  Connect the output of the audio filter (bypassing the output audio transformer) to the Line-In jack of your sound card.  If you use a mono connection (tip and sleeve) to your sound card, you will only be able to hear your sidetone through one speaker.  That is not a problem if you listen to CW through your speakers, but you will probably prefer to hear your sidetone on both sides if you intend to use stereo headphones.  To do that, just connect the ring and tip together on the plug going to the sound card Line-In jack.  I found that less output is needed from the sine wave oscillator circuit when the tip and ring are connected together.

Sidetone Adjustment

While listening to your keying in your speaker(s), adjust the oscillator circuit audio output potentiometer for a comfortable level and the frequency control so that it sounds like it falls within the passband of the audio filter.  More accurate adjustments will be made using the procedures described in the next paragraph.  After a proper sine wave oscillator volume output has been determined (see next paragraph), the user will only control the sidetone level by using the Line-In slider on the Play Control panel of the sound card software.  The slider can be adjusted any time to provide a comfortable level and can even be turned off with the mute selection.  This is particularly useful when doing loopback tests on the server.  

Using Audacity

The Audacity program ( can be used to display the audio spectrum of your transmitted tones.  In doing so, it helps you to set the correct audio level and also to accurately center the output of the sine wave oscillator in the passband of the filter.  As a starting point, set your sound card Line-In Record Control slider slightly below the middle setting then follow these steps:

  1. Open the Audacity program and click the red Record button.
  2. Send a string of V’s or some other character to fill the screen, then click on the yellow Stop button.
  3. Highlight the output that you see across the screen.
  4. Click Analyze and then Plot Spectrum.
  5. Change the spectrum selections to 4096 and logarithmic frequency.
  6. When you want to erase the output to start again, select Edit and Undo Record.

These steps should be repeated as often as necessary so you can find the sine wave oscillator frequency setting that puts it in the filter passband.  This should occur at the point where the spectral peak is symmetrical and has a maximum output.  If the peak does not reach a level of +5 dB on the spectral display, raise the audio output of the sine wave oscillator until it does.  You can then experiment with adjusting the Line-In record level slider and/or sine wave oscillator output level to get the cleanest spectral output.  When the proper adjustments have been made, your spectrum should be similar to the one shown in Figure 5.

Using Mumble

When using Mumble, remember that you only have to configure it for a single sound card.  If your spectrum peaks around +5 dB on Audacity, your output should be close to the optimum level needed for the Mumble server.  Any additional adjustments to the audio level can be made using the Record Control Line-In slider while running Mumble loopback tests on the server.

Weight Control Adjustment

It was found that my keyboard keyer had to be set for slightly lighter keying in get the best sounding iCW.


Additional Information

Here is some additional information that you might find useful.

Code Practice Oscillator

The iCW Sine Wave Oscillator of Figure 3 works very well as a standalone code practice oscillator, but it is picky about the speaker that you use.  I get plenty of volume out of it by using the MFJ-281 that many hams have in their shack.  Of course, if you have the sine wave oscillator circuit hooked up for iCW operation, you can easily practice CW any time you have your computer turned on.

Why Not SDRadio?

The reader might wonder why I chose to use a passive audio filter over the DSP filtering capability of a computer program such as SDRadio.  In my case, I didn’t like the latency issues involved with SDRadio that were a result of using a required second sound card.  Also, my use of the WS Virtual Audio Cable Device for the second sound card seemed to make my computer crash.  For those interested in using SDRadio, Chuck, AA0HW, has a good video at the Google iCW site showing his use of the program to clean up the output of most any off the shelf sine wave code practice oscillators.

Grounding of W3NQN Filter

The schematic diagram of the audio filter in Figure 4 shows that there is a connection of the primary and secondary of each audio transformer for grounding purposes.  This connection is not required, but is recommended by the designer.  If this connection is removed in a filter used for iCW, there will be some protective isolation between the sine wave oscillator circuit and the computer sound card.  Unfortunately, we were not able to test this, so we don’t know if there will be any change in the iCW operation.  Someone building a new W3NQN filter might want to consider trying it on iCW without this connection.    

Room for Improvement

Recent testing by AA0HW with some of W3NQN’s filters has shown that there is some ringing with the W3NQN Chebyshev filter that I use for iCW.   Figure 7 shows, the extended ringing waveform of this filter at the end of each dit.

Figure 7 – Ringing waveform with W3NQN Chebyshev filter

While I don’t generally receive comments that my iCW rings, I would prefer to know that the filter I am using doesn’t have this problem.  The solution might be the use of a new Guassian filter that W3NQN is still experimenting with.  As shown in Figure 8, there is no ringing with the W3NQN experimental Guassian passive filter.

Figure 8 - Two dits through W3NQN experimental Gaussian passive filter

At the present time, if you have concerns about using the Chebyshev filter, I suggest that you listen to my iCW and decide for yourself.    

A limitation of the sine wave oscillator system presented is the need to use a fixed-frequency audio filter.  This limits the user’s ability to change the audio tone being transmitted even when the frequency of the sine wave oscillator is adjustable.  A tunable audio filter that works as effectively as the WNQ3N filter would solve this problem.  Our goal should probably be to develop a clean sine wave oscillator circuit that will not require filtering to be usable on iCW.