Sunday, July 31, 2011

Amateur radio home brew group show and tell

Today was a meeting of the Amateur Radio NSW Home Brew and Experimenter's group at Dural. The topic was duplexers, diplexers and filters. I shot some video which begins with some footage of the VK2WI broadcast.



Thanks to everyone who presented. Sorry about the hand-held video but this time I'm using a wireless mic for the first time so audio is much more intelligible.

The video has been tweaked and updated but it's the same as before.

Friday, July 29, 2011

Ripping the CD collection ready for iCloud

CdsWhen I was young I used to buy lots of records. When CDs appeared I bought them all again! In recent years the CD collection has gathered dust and the only music that gets listened to is the stuff that's been moved on to computers and iPods. One of the great pleasures of having my music collection on computer is having it play random tracks and discovering wonderful tracks of unexpected albums. I decided to rip the entire collection. It's time consuming, although much better than it used to be, my Mac Mini imports at 8x these days. Going through the process threw up a few observations about the age of the Compact Disk that is drawing to a close:
  • CDs don't last for ever. Quite a few have lost the silver coating in parts over the years.
  • Mould spots have grown on some, Sydney humidity I guess, hard to get off.
  • Jewel cases have always been hard to open and brittle - a bad combination.
  • Jewel cases are a very bulky way to store data these days.
  • What kind of idiot publishers have used duplicate id numbers?
  • The little cover pictures are not a patch on impressive 12 inch albums. Cover art on a tablet is a great improvement.
  • It was a wise choice to use an un-compressed format.
  • I bought the same CD twice on a few occasions.
I've been looking around at the possibility of selling my CDs. It doesn't look like you get much for them any more. The eBay auctions often end without bids and the thought of sending hundreds to little packages out via the post office for a dollar each doesn't sound like a good use of time. Syncing my collection to iCloud seems like a good way to go. I hope it works! Backing up 52Gb of data is a responsibility I'm keen to offload. It would be nice not to have to buy all these tracks for the third time.

Wednesday, July 20, 2011

The Lion wakes tonight

Maccentric ChatswoodTomorrow a new MacOS X version, called Lion, will be released by Apple.

For the past two releases, mate Coops and I have formed a queue outside our favourite Mac store, Maccentric in Chatswood to be the first to purchase a copy.

Manager Hendrick comes out and laughs at us but it's been fun.

This year, alas, Lion will be released for electronic download only and worse - Maccentric in Chatswood has closed their doors. (They're still open at Warringah Mall and doing a "roaring" trade).

It must have been rough for them when Apple opened up a store just a block away in Chatswood Chase.

We'll look back and laugh at the idea of software coming in boxes, but it did make me feel like the fruit of my work was somehow a physical thing.

Monday, July 18, 2011

Digital 3D camera on super special

Pic header 01I have a long interest in 3D photography, and even a couple of old film cameras in the bottom drawer here.

There is a digital 3D camera from Fuji that is basically two 10Mpx cameras in one body with a nifty lenticular LCD panel. These used to sell for over $500, which was a bit much for me, but today I noticed that Harvey Norman Balgowlah has them in the red spot discount bin for $128.

It's a Fuji FinePix Real 3D W3.

Stereo pair

The target market is consumers with 3D TVs (I don't) so viewing is the challenge. The images do look good on the on-camera display, but that's no good for sharing. I purchased some +3.5 reading glasses for $4 and by using a card I can view the images nicely on the computer screen.

I have an old viewer for side by side prints which can work and you used to be able to get one off prints with lenticular screens on the front. The other interesting option is viewing on an iPod/iPhone with the Hasbro my3D viewer.

Wobble2

The camera has a few ergonomic issues, it's really hard to avoid covering the right lens with your finger for example, but seems like a bargain at this price. It also shoots movies and as they say in the store - can be used for 2D as well.

The store I went to had about ten in the bin so be quick if you want one.

Splitting MPO files

The Fuji 3D camera, and others apparently, store 3D images in a .MPO file. This file is simply two Jpegs one after the other. I wrote a little python command line tool to split these files into left and right images.


"""Split an MPO file which is just two JPEGs back to back
"""
import sys
import os

for filename in sys.argv[1:]:
if filename.lower().endswith('.mpo'):
print "reading %s" % filename
basename = os.path.basename(filename)
file = open(filename, 'rb')
data = file.read() # read both images
print "read %d bytes" % len(data)
offset = data.find('\xFF\xD8\xFF\xE1', 4)
print "second image starts at %d" % offset
firstData = data[:offset - 4]
print "first image is %d bytes" % len(firstData)
left = open('%s-left.jpg' % basename, 'wb')
left.write(firstData)
left.close()

rightData = data[offset:]
print "second image is %d bytes" % len(rightData)
right = open('%s-right.jpg' % basename, 'wb')
right.write(rightData)
right.close()


It runs like this:


$ python mposplitter.py sample.MPO
reading sample.MPO
read 3655848 bytes
second image starts at 1799552
first image is 1799548 bytes
second image is 1856296 bytes
done.

2023 Update


Just came back to this and python3 requires some changes:

#!/opt/homebrew/bin/python3
"""Split an MPO file which is just two JPEGs back to back
"""
import sys
import os

for filename in sys.argv[1:]:
    if filename.lower().endswith('.mpo'):
        print("reading %s" % filename)
        basename = os.path.basename(filename)
        file = open(filename, 'rb')
        data = file.read() # read both images
        print("read %d bytes" % len(data))
        offset = data.find(b'\xFF\xD8\xFF\xE1', 4)
        print("second image starts at %d" % offset)
        firstData = data[:offset - 4]
        print("first image is %d bytes" % len(firstData))
        left = open('%s-left.jpg' % basename, 'wb')
        left.write(firstData)
        left.close()

        rightData = data[offset:]
        print("second image is %d bytes" % len(rightData))
        right = open('%s-right.jpg' % basename, 'wb')
        right.write(rightData)
        right.close()
        

To view the images in my old 3D print viewer I need two side by side pictures.

R0014018

The Python Image Library can do what's needed pretty simply:


import sys
import Image

nativeWidth = 3584
nativeHeight = 2016

fullWidth = 400
fullHeight = fullWidth * nativeHeight/ nativeWidth
halfWidth = fullWidth / 2
halfHeight = fullHeight / 2
print halfWidth
print halfHeight

if len(sys.argv) != 3:
print "Usage: %s left.jpg right.jpg" % sys.argv[0]
sys.exit(1)

leftFileName = sys.argv[1]
rightFileName = sys.argv[2]

left = Image.open(leftFileName)
right = Image.open(rightFileName)

combined = Image.new("RGB", (fullWidth, halfHeight))
left = left.resize((halfWidth, halfHeight), Image.ANTIALIAS)
right = right.resize((halfWidth, halfHeight), Image.ANTIALIAS)
combined.paste(left, (0,0))
combined.paste(right, (halfWidth, 0))
combined.save("output.jpg", "JPEG")


Here's the output file:

Output

Email via HF radio with Winmor

Ross, VK1UN, is in the country and so I fired up the WSPR station so we could see if it's practical to have a QSO between Sydney and Melbourne. 40m was pretty dead but 20m was alive on Sunday afternoon.

I got a signal report from James, VK2JN, who lives near by and runs a packet radio email gateway. I've tried to get this going in the past using a physical packet modem without much luck but he suggested trying a soundcard TNC called Winmor.

Screen Shot 2011 07 18 at 9 49 12 AM

I have a netbook with Windows XP and a Signalink USB interface and following the instructions in this pdf all worked pretty much as advertised.

What you get
  • A decent email client
  • The sound card TNC (with the pretty display above)
  • A session control app that can get the latest frequencies
  • Lots more I haven't figured out yet


Here's the window that tells you what local channels are available (it can be updated over the air too):

Screen Shot 2011 07 18 at 10 10 29 AM

At this point I'm merrily exchanging email from internet to radio, radio to internet and radio to radio.

The great thing about all this is that it will work in the outback or out to sea - pretty much wherever a digital HF signal can get through. You get a limited number of minutes per day but it's a great service.

Screen Shot 2011 07 18 at 10 02 43 AM

Now, where's the MacOS and Linux version of this?

Sunday, July 10, 2011

On a cold day, a small shack is a big plus

It feels very cold here in Sydney at the moment. My workplace is sometimes overly hot which got me interested in measuring, and plotting, the temperature.

My radio shack is cupboard size and has a small fan heater in it which very quickly warms the space. But just how quickly…

Heater

A while back I built a PIC based thermometer that reads a Maxim 1-wire temperature sensor and sends the readings out a serial port at 9600 baud.

Device

USB serial cables seem to just work out of the box on linux these days:

Serial port

A little bit of python using pyserial to read lines from the serial port and log them to a text file suitable for reading in to a spreadsheet.


#!/usr/bin/env python
"""Utility to log temperatures from a serial device.
"""

import serial
import time

LOGFILE = '/tmp/temperatures.txt'

ser = serial.Serial('/dev/ttyUSB0')
log = open(LOGFILE, "a")

line = ser.readline()
while line:
logline = "%s\t%s\n" % (time.ctime(),
line.split()[0])
log.write(logline)
log.flush()
line = ser.readline()


Here's a bit of the log file:

Sun Jul 10 14:31:07 2011 28.0
Sun Jul 10 14:31:09 2011 28.5
Sun Jul 10 14:31:11 2011 28.5
Sun Jul 10 14:31:13 2011 28.5
Sun Jul 10 14:31:15 2011 28.5
Sun Jul 10 14:31:17 2011 29.0


Here is the temperature in my shack from window close to toasty warm.

Temperatures

Saturday, July 09, 2011

A day doing PA sound

Armed with a bag of adapter plugs, clip leads, a multi-meter and a torch, I spent today running PA sound for a local community group's annual festival. All sorts of technical hilarity ensued.


The day was a mix of speeches and musical performances ranging from solo voice, to stringed instruments with singers to dance groups. The music to accompany the performers was handed to me on CDR disks shortly before they went on. In other cases it was played from a laptop, sometimes an iPod.

One act asked for the singers in the backing track to be removed (there's software to do that apparently), I did what I could with the equaliser but it wasn't enough. Another singer wanted lots of reverb, which unfortunately wasn't available. All the performers wanted more volume, while some audience members cursed me for the overly high sound levels.

The most amazing request was this guy who handed me his phone showing YouTube and asked me to play a video over 3G to provide the audio over the PA while he sang along to it. He has more faith in technology than me.


He said if a call came in I should reject it and play on. A detailed explanation of the loading bar in the YouTube player ensued. In the lead up, his phone slept and asked for a PIN, which I had to hastily get from him. Amazingly it was "alright on the night".

At the end I had to patch a DVD player's sound via a canon mic socket back to the mixer.

My compliments to the Allambie Heights School Community Centre which has excellent PA and mixer facilities these days.

All good fun but it's nice to be curled up at home where life is simpler.