Saturday 20 March 2010

The FUNKY Keyer

Having added automatic CQ call functions to my homebrew keyer, I was reminded just how much I dislike the mechanical sound of machine-generated CW. It is so strict, so metronomic, so life-less. I much prefer the wonderful lilting sounds you sometimes hear from F or I stations sending CW – the patterns of their Romance languages seem to impress themselves on the rhythm of their fists – add in a little chirp and drift to the mix and I’m in heaven!

Naive transcription of a loop of Clyde Stubblefield's 'Funky Drummer' break

This all put me in mind of drum machines, which were criticised for sounding lifeless and artificial BECAUSE THEY WERE TOO PRECISE. Real drummers don’t play everything exactly on the beat – rather their timing may be slightly late or early, making the rhythm sound subtly different. Some of this timing error is accidental – but some of it is a point of style, deliberately changing the “feel” or “groove” of a rhythm.

I decided that’s what was needed to give my keyer some groove – to make it funky! I needed to add in some random timing errors, to make it sound more like my straight key. That way, it doesn’t sound so grating on my ear. More importantly, I’m sure more people would answer a more natural-sounding CQ as opposed to a dry, machine-generated call (I know I certainly would).

Trouble is, it takes some effort to generate random timing effects inside a rule-based, deterministic system like a PIC – it’s counter-cultural!

Fortunately, I had already written a pseudo-random noise generator in PIC assembler, that I could “cut-and-paste” directly into the keyer code. The code implemented a Linear Feedback Shift Register to generate a pseudo-random sequence, and I used the bottom few bits of this as an additive component of (one of) my loop counters (perhaps I should say one of Ed’s timers – as that segment of the code was modified from the original work from Ed Skelton EI9GQ). In other words, I made a “funky timer”.

In my keyer, all aspects of the timing of a morse code sequence are influenced in the same way by this timer – dot and dash length, inter-element gap, inter-character gap, inter-word gap etc. Here’s the new “Funky Timer” routine…

(apologies for the code, which is neither pretty nor optimized - it just works!)

The code generates a “maximum length sequence” for a 15 bit shift register (I “threw away” the last bit of the 16 I’m actually using to simplify the feedback logic). Assuming the timer routine is called at 8 Hz (enough for pretty fast CW) that is still over an hour before the sequence repeats. Most of my QSOs are shorter than that!

Whilst I'd got the "random element" in the keyer, I decided to randomly change the message, as well as its timing. I added a random addition prosign "CQ" amidst the sequence of "cq"s and I added an alternative ending of "AR k" to replace the "pse k" (there's something false about a machine saying 'please').

So – how does it sound? I like the effect – but I’ll leave it for you to judge…

Here’s the original strict-tempo “no errors” CQ call…

Now for some samples of the keyer with random timing errors (remember - this is a machine generating CW with random "Funky" timing - each automated call from my Funky Keyer sounds slightly different than the last, but there are fixed recordings of typical "funky" calls below).

Here's what I call a "natural" sound...

and here's the call with way too much timing error (the op has been drinking!).

Parameter values in the Funky Timing routine associated with these samples are as follows...

SampleMaskFixed Constant

I have the "natural" settings programmed into my Funky Keyer at the moment.

Of course, I have kept the strict timing routines in the keyer to generate code when I use my Bencher paddle - but my Funky keyer also includes a straight key input which preserves all the idiosyncrasies of my sloppy (and not-very-funky) fist!

By the way - my name “The Funky Keyer” is a reference to “The Funky Drummer”, a James Brown track which includes a drum solo by Clyde Stubblefield (seen in picture right).

This solo is (claimed to be) the most sampled piece of music – a testament to the fact that it oozes the sort of “groove” that’s referred to above - which is precisely why it has been sampled and sequenced to escape the boring sound of naive drum machines!

Listen to (a loop of) Clyde's famous break here…

..-. ..- -. -.- -.-- !

...-.- de m0xpd

Sunday 14 March 2010

CQ for the Constitutionally Idle

Band conditions not being up to much today, I needed a simple project about the shack.

I decided to look into extending my keyer to automatically send CQ, thereby avoiding glass arm, RSI and the rest (rubbish - I was just looking for something to entertain myself with for the afternoon!)

I'd previously made a keyer based on a 16F84a PIC by modifying code produced by Eamon "Ed" Skelton, EI9GQ, as described in an earlier blog. It didn't take too long to get a subroutine together to send a single morse character, using the same delay routines Ed provided originally and some simple parallel - serial ideas.

I was planning to write a nice routine to scan an arbitrary array of alpha-numeric characters saved in the PIC's memory, translate them and send them as morse, but enthusiasm drooped and I ended up writing brute-force routines to send the groups "cq", "de" "m0xpd" "fists" and "pse k" by calling the "SND_CHR" subroutine above.

I set up two extra hardware lines as inputs on the PIC and connected a couple of push buttons to pull them low - one gives a 3 * 3 call and the other a 3 * 3 "cq fists" call.

The inside of the keyer is a bit of a rats nest as you see...

... it certainly isn't pretty but it works fine.

The buttons are seen on the front panel - press "black" for CQ and "red" for "CQ FISTS"...

You can listen to the result using the console below...

Tell you the truth, I doubt I'll use this feature much - but I knew it could be done easily enough and I was troubled by all that potential being wasted in the keyer's PIC, which sat there twiddling its thumbs in a loop before.

Joseph, F6GGO/qrp, was the first to answer my new automated CQ (sent from the Funster Plus) - but, unfortunately, I lost him in QRM.

Sri, Joseph.

...-.- de m0xpd

Saturday 13 March 2010

Not-so-Superhet goes Multi-Band

Today I added a bandswitch to the SuperHet receiver (Blogs passim).

The band change operation requires a 4-pole switch so I was limited to 3 band operation, as a 4 pole, 3 way rotary is the best Maplin have to offer (order code: FF76H).

I needed the bandswitching components to be fairly well organized to squeeze them into the already crowded chassis (and to be able to get at and use the trimmer capacitors) so I made a PCB and fixed it to the switch using a bracket made of scrap steel. Here's the unit from the component side (which faces down when installed, so I can get at the trimmers when the chassis base is removed) ...

and the copper side...

You can see from the "top" photo that I've only populated (with coils at least) two of the available three bands. This because I'm going to be changing the main tuning capacitor from the big three-gang unit currently in place to a two-gang device I got yesterday on ebay. The change is to buy some more space on the chassis to add a reduction drive so I can tune the receiver more easily.

The rig now can switch between two bands, arranged to start with the 80 and 40m amateur bands (but the local oscillator drifts pretty badly on the higher band at the moment).

...-.- de m0xpd

Cold-blooded update:
the VFO drifts on BOTH bands - more work required!

Wednesday 10 March 2010

Radford Labpack and 80m WSPR results

Last night we had an auction of equipment from an SK member at the club. I wanted the AVO RF Generator - but it got too rich for me! Fortunately, another item I wanted had been incorrectly catalogued as a "Universal Bridge". I recognized it as a Radford "Labpack" power supply unit and picked it up for £15.

I recognized it because I've had another one on loan here in the shack from my friend Mark. Here's Mark's unit (at rear) and my new acquisition ...

You might just be able to make out that Mark's unit is a slightly different model than mine - his voltage selector is on the front panel (mine is inside, accessed by a screwdriver through a hole in the back of the case). Mine also has its handles in place.

I did a bit of sniffing around on the net and discovered that there were other models of Labpack - including this (obviously older) model (click on the picture to see it at full size on a nice website about Radford)...

I learned that Arthur Radford, G6YA, pretty much started his business with the Labpack, before going on to develop the audio products we remember him for. In addition to the STA 12 and STA 25 amplifiers (sadly not in the m0xpd collection) I remember some nice low distortion AF oscillators and distortion test kit bearing the Radford brand. Also, my old friend George "the Greek" had a nice Radford pre-amplifier. Anyway - that's enough of a stroll down memory lane - back to the Labpack.

The Labpack is a useful, unregulated variable power supply, built like a battleship. Nothing too remarkable about that - but the attraction for me is that it includes a healthy 6.3V heater supply and 300Vdc. In other words, it is perfect for my valve-based games!

The full complement of outputs is as follows...

OutputVoltage (V)Current (A)
Variable d.c.0-308
Variable a.c.0-308
Fixed a.c.6.33
Fixed a.c.128

When I first built my Paraset the Labpack was the only HT supply I had (thanks Mark). Since then, I've made a PSU for the Paraset using a transformer rescued from a dead Telequipment 'scope, seen here on the bench (under a 12V power supply which also came from Mark)...

This homebrew supply has the luxury of an ammeter on the HT supply, so I can monitor plate current. I also have the inverter made for lower-power projects.

Despite these other options for HT, the new Labpack is a welcome addition to the bench and will allow me to give Mark his unit back!

While I'm in blogging mode...

my recent whispering on 80m was stopped abruptly when Bill Gates (of fond memory) insisted that my computer should perform an automatic update. The results were not as inspiring as for 40m - best spot was SM0FLY at a distance of 1391 km - still not bad for my half G5RV (with inductors) and 500mW!

...-.- de m0xpd

Monday 8 March 2010

Band Confusion

Just switched over from 40m whispering to 80m...

On looking at WSPRnet I was very surprised to find that there are some 80m spots for me YESTERDAY (i.e. before I started to transmit on that band)...

I checked back in the 40m spots and these were, indeed, time segments in which I was transmitting on 40m.

I started to get a bit worried about the purity of my emissions - but soon realized that the Tx frequencies aren't harmonically related, so it's not a fault at my transmitter or DL5RBD's receiver. Took me a while to figure out an explanation...

DL5RBD's radio must have been set up (correctly) for 40m reception, BUT HIS WSPR APPLICATION WAS SET FOR 80m.

Anybody have an email address for the operator of DL5RBD??

I'll post some 80m spot reports when a few accumulate.

...-.- de m0xpd

By the way -

I've noted an error with the posting time and date on this Blog site. Let's make a little experiment.

I'm going to press the "Publish Post" button at 18:18 UTC, Monday 8th March - we'll see what the listing says.

WSPR Update

Wow - I would like to have kept you up to date with progress on the 40m/SDR WSPR project, but those good folks at Virgin Media couldn't keep my internet service running. This post only possible by hitching a ride on my neighbour's WiFi (don't tell him).

I am told by the hero at the customer service centre that "the network in your area is 11% down on power" and that I'll just have to wait for things to be sorted out. Thanks Sir Richard, great service!

Meanwhile, as Virgin Media are drooping by 11%, my 500mW is booming out on 40m - reaching East Coast USA (for a best dx of 5631km - that's >11km/mW), Iceland, North Norway and the Canary Isles...

Really enjoying whispering - more to follow (including Rx reports, when Virgin Media allow).

...-.- de m0xpd

Sunday 7 March 2010

Whispering on 40m

I've been interested in K1JT's "WSPR" mode since hearing about it on (I guess) Soldersmoke - but it wasn't until Mike, G4VSS, spoke about it at the club recently that I was moved to action.

I download the software a few weeks back and I tried listening on my pre-historic FT101ZD.

Unfortunately, that rig doesn't have the sort of accuracy (nor stability) in setting frequency required for WSPR operation (the band is only 200 Hz wide), so I decided I needed something better and put the idea on hold.

Well, whilst in HB-land last week I was planning "something for the weekend" - I decided to revisit WSPR - this time using my SoftRock RxTx v6.2 Software Defined Radio.

It has all the features required...
1) stable, controllable tuning (especially with the USB synthesizer from Jan, G0BBL)
2) flexible Rx filtering
3) Appropriately QRP output

The first thing to do was struggle back up the learning curve with my SoftRock - it is one of those things where there are so many details that I forget them if it hasn't been used for a while. Here's the hardware...

The SoftRock is to the left, with the case lid off as I still haven't got around to packaging up the USB-synth (right) yet.

Previously I hadn't got past using Rocky with the USB Synth - this time I wanted to use PowerSDR (as it has much more flexible Rx filtering. I first downloaded the latest version for use in Rx...

I've used Eugene Muzychenko's "Virtual Audio Cable" to connect WSPR and PowerSDR - works well.

Yesterday I started receiving on 40m and got the following spots...

Today, I loaded the special version of PowerSDR for SoftRocks - "PowerSDR-SR40". I tried transmitting and I could put out 500mW on my G5RV - but was getting nowhere fast, until I checked the frequency of the USB Synth. This was slightly out and - once adjusted - I quickly got spots over Europe...

This has been great fun - I'll be doing more whispering in the future!

...-.- de m0xpd

Wednesday 3 March 2010

Breaking the habits of a lifetime

This more a tweet than a blog - but its worth recording none the less.

Tonight I couldn't raise anybody on CW through the QsoNet system, despite sending out beautifully automated CQs courtesy of a new (to me) iPhone app called Text2Morse (it does exactly what it says on the can).

So, I spun the tuning knob up to the phone section of the 20m band and heard wa3cjl calling CQ.

I answered, and was treated to a wonderful conversation with Robert "Pip" Thomas in Kulpmont, Pa. We were joined by fellow FISTS member, Clive, g4ppk, before I had to QRT to make a sked with the xyl on Skype.

Thanks Pip and Clive for a great qso - I may even have to change my opinion of phone modes!

73 de hb/m0xpd

Tuesday 2 March 2010

hb/m0xpd on QsoNet

This week I find myself back in HB-land (just for a change), where there are boring evenings to kill...

I thought I'd re-visit HamSphere (regular readers - if there are such things - may recall I tried this in a bored moment in ZL a few weeks ago). Unfortunately, my three day trial of HamSphere had ended and I was limited to using phone mode on 40m in HamSphere or paying €21 for the privilege of using the program for a year. The same regular readers will know my views on phone modes (Pugnus est vires quam vox vocis) and that I am a proud cheapskate - so won't be surprised to hear that I took the third option of signing up with the competition QsoNet, who are generous enough to offer a 90 day trial period!

After a slightly frustrating delay (you need to upload an image of your license to QsoNet before they'll admit you) I was, this evening, "on air".

Like HamSphere, you download a piece of software which emulates a transceiver - here's the skin...

Like HamSphere, you can elect to type in characters on the PC keyboard for translation into morse. However, unlike HamSphere, there is no textual display of the typed characters - so I found that a bit tricky! However, there is another exciting possibility mentioned in QsoNet's help file - you can input morse as audio from e.g. the sidetone output of a keyer. Not surprisingly I didn't happen to have a keyer with me - but I did have my trusty iPhone - so I downloaded an app which gave me a morse key on the iPhone. Called (imaginatively enough) MorseKey...

Now I could send morse by tapping on the iPhone, the sound of which was detected by my PC's microphone, which triggered the VOX on the QsoNet "transceiver". I tried a hard-wired connection from the iPhone into the PC - but that lost my "sidetone", so I abandoned the idea and went back to the acoustic interface.

MorseKey on the iPhone has a bit of latency between keying (i.e. touching the screen) and the resulting sound output - which limits your speed - but it works well enough for ~12wpm. Also, the complete lack of any haptic feedback from the touch screen makes it surprisingly difficult to use - but nil desperandum.

I banged out a quick CQ, identifying myself as hb/m0xpd (in honour of my QTH in Lausanne) and was rewarded by a quick reply from Alex, rz3by, in Moscow.

Good fun - makes me feel like I should travel with a keyer to avoid the shortcomings of MorseKey - but perhaps that would be taking it all a bit too seriously!

73 de hb/m0xpd