Basic usage
Download and unpack both the qsorder executable and lame.exe to the directory which will contain the contest audio (e.g. c:\contest-qsos\). If prefer to save uncompressed WAV files instead of mp3's then simply delete lame.exe. ('Lame' is a very fast, free MP3 encoder)
Find the [ExternalBroadcast] section in your
N1MM Logger.ini
and include the lines below. This enables local QSO info UDP broadcast. For more info see N1MM UDP documentation. Restart N1MM after making changes.[ExternalBroadcast]
DestinationIPs=127.0.0.1
DestinationPort=12060
IsBroadcastContact=True
Start qsorder.exe. If prompted by the Windows Firewall software make sure you allow local network communication. qsorder should tell you which audio input was selected. If it's not the right one, go to windows audio settings and change the "Default Recording Device" to the one you like. (note: rec input selection flag is not yet implemented)
Make QSOs in N1MM. in the qsorder window you should see output similar to this:..
--------------------------------
v2.2b QSO Recorder for N1MM, 2012 K3IT
--------------------------------
Listening on UDP port 12060
Input Device : Line In (Realtek High Definitio
* recording 2 ch, 46 secs audio buffer, Delay: 20.0 secs
Output directory M:\temp\<contest_YEAR>
--------------------------------
QSO: 12-06 01:46:17 C6AUM 14
QSO: 12-06 01:46:19 UT4UWB 14
QSO: 12-06 01:46:28 UT0UM 14
QSO: 12-06 01:46:34 W3TS 14
WAV: 12-06 01:46:37 C6AUM_de_K3IT-VP9_DX..14Mhz.mp3 ReplayGain: +11.2dB
WAV: 12-06 01:46:39 UT4UWB_de_K3IT-VP9_D..14Mhz.mp3 ReplayGain: +11.2dB
WAV: 12-06 01:46:48 UT0UM_de_K3IT-VP9_DX..14Mhz.mp3 ReplayGain: +11.4dB
QSO: 12-06 01:46:49 PJ2T 14
WAV: 12-06 01:46:54 W3TS_de_K3IT-VP9_DX_..14Mhz.mp3 ReplayGain: +11.3dB
WAV: 12-06 01:47:09 PJ2T_de_K3IT-VP9_DX_..14Mhz.mp3 ReplayGain: +11.9dB
Pressing a HOTKEY (CTRL+ALT+R or specified with --hot-key option) will save the current audio buffer to a file in AUDIO_YYYY directory. The hotkey should be recognized even when qsorder window is not in focus. Use this key whenever you hear something interesting, outside of a normal QSO (even when N1MM is not running!)
the audio files are saved to a subdirectory <contest>-<year>. Note that only a parital file name is printed to save screen space.
ReplayGain indicates the perceived loudness of the recording as reported by lame. You can use this value to estimate and adjust the recording level (for example in Windows audio mixer). Replaygain info is also embedded to mp3 files so that they are played back at a relatively constant volume (keep in mind that not all players honor the replaygain tag).
to stop qsorder either close the command window or Ctrl-Break. (the window may not react to a Ctrl-C right away - this is normal;)
This is it. For any feedback please submit an issue github or email k3it
Advanced usage
qsorder supports optional command line flags:
Usage: qsorder.py [options]
Options:
-h, --help show this help message and exit
-l BUFFER_LENGTH, --buffer-length=BUFFER_LENGTH
Audio buffer length in secs [default=45]
-d DELAY, --delay=DELAY
Capture x seconds after QSO log entry [default=20]
-p PATH, --path=PATH Base directory for audio files [default=none]
-P PORT, --port=PORT UDP Port [default=12060]
-s STATION_NR, --station-nr=STATION_NR
Network Station Number [default=none]
-k HOT_KEY, --hot-key=HOT_KEY
Hotkey for manual recording Ctrl-Alt-<hot_key>
[default=r]
In multi-computer networking environment each N1MM Logger.ini file
Station 0 should be DestinationPort=12060
Station 1 should be DestinationPort=12061
Station 2 should be DestinationPort=12062
And use --port option
Alternatively set staion number using --station-nr option
(tnx ve2ebk)
Additional info
written in python 2.7, using threading
and pyaudio
libraries:
Main Thread - listens for UDP broadcasts from N1MM on port 12060
Sound card I/O thread - maintains a double ended FIFO audio buffer of the specified length (default: 45 secs)
File I/O thread(s) - dump_audio function saves the buffer to a wav file and (optionally) converts to mp3 using lame encoder. This function uses threading.timer
module for scheduling
Hot key thread - monitors windows hot key events
python script is repackaged into a windows executable with pyinstaller.
Tips for audio input: when possible use an isolation transformer (salvage from an old modem). For Mic In recordings use an attenuator to prevent hiss and clipping.