An alternative to the Collins 300 Hz CW filter for the FT817 (well not really - that combination is excellent for CW and much better performance than many more expensive radios - but this is an excellent sw alternative) is this simple GNU Radio Python application which uses the Kaiser CW bandpass FIR filter below. The audio output is connected to the microphone input of a Ubuntu 11.10, 64bit OS on a Toshiba Satellite L650 laptop. Output is from the laptop headphone socket. Python code is as follows:
#!/usr/bin/env python
#------------------------------------------------------------------------------------
# Program uses the (previous) Python Bandpass filter
# module to provide the Kaiser bandpass filter taps.
# Mic input, cw filter, gain adjust and headphone
# blocks are cascaded.
#
# You should kill this prog with ^c (not ^z) OR...
# kill the terminal session
#-----------------------------------------------------------------------------------
from gnuradio import gr
from gnuradio import audio
from bpf_class import Bandpass
class cw_filter(gr.top_block):
def __init__(self):
gr.top_block.__init__(self)
sample_rate = 44100
kaiser_bpf = Bandpass()
cw_flr = gr.fir_filter_fff(1, kaiser_bpf.taps)
audio_mic = audio.source(sample_rate, "plughw:0,0")
amp = gr.multiply_const_ff(0.5)
dst = audio.sink (sample_rate, "")
self.connect (audio_mic, cw_flr, amp, dst)
if __name__ == '__main__':
try:
cw_filter().run()
except [[KeyboardInterrupt]]:
pass
#!/usr/bin/env python
#------------------------------------------------------------------------------------
# Program uses the (previous) Python Bandpass filter
# module to provide the Kaiser bandpass filter taps.
# Mic input, cw filter, gain adjust and headphone
# blocks are cascaded.
#
# You should kill this prog with ^c (not ^z) OR...
# kill the terminal session
#-----------------------------------------------------------------------------------
from gnuradio import gr
from gnuradio import audio
from bpf_class import Bandpass
class cw_filter(gr.top_block):
def __init__(self):
gr.top_block.__init__(self)
sample_rate = 44100
kaiser_bpf = Bandpass()
cw_flr = gr.fir_filter_fff(1, kaiser_bpf.taps)
audio_mic = audio.source(sample_rate, "plughw:0,0")
amp = gr.multiply_const_ff(0.5)
dst = audio.sink (sample_rate, "")
self.connect (audio_mic, cw_flr, amp, dst)
if __name__ == '__main__':
try:
cw_filter().run()
except [[KeyboardInterrupt]]:
pass
Comments