Spectrum Lab script for recording meteors

31 views
Skip to first unread message

Conrad Cardano

unread,
Nov 27, 2025, 7:52:28 AM (2 days ago) Nov 27
to Society of Amateur Radio Astronomers
Hi

Now that I have Spectrum Lab software working, would anyone like to share a command script for recording meteors?

Thank you!

Conrad
Dye HillObservatory
RI, USA

Mike Otte

unread,
Nov 27, 2025, 9:29:05 AM (2 days ago) Nov 27
to sara...@googlegroups.com
Conrad,
Are you seeing meteor "pings"?
Did you run ARGO to see them?

Spectrum is a busy software. Has many things to adjust.
Are you going to record the "sound" of the ping?
Are you going to count meteors?
Are you going to measure how long you detect them?

First thing is to get the sound to Spectrum Lab.   Do you have VB cable installed? 
Are you seeing meteors on the spectrum Lab water fall?

step by step
Mike w9ys



--
--
You received this message because you are subscribed to the Google
Groups "Society of Amateur Radio Astronomers" group.
To post to this group, send email to sara...@googlegroups.com
To unsubscribe from this group, send email to
sara-list-...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/sara-list?hl=en
---
You received this message because you are subscribed to the Google Groups "Society of Amateur Radio Astronomers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sara-list+...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/sara-list/a0cdc14a-2990-48cf-91c9-06e2d2919cf9n%40googlegroups.com.


--
Mike Otte W9YS

Conrad Cardano

unread,
Nov 27, 2025, 9:44:52 AM (2 days ago) Nov 27
to sara...@googlegroups.com
Hi

Thank you for the quick response!

I do not have ARGO software and I have not captured any meteor pings.

Right now I use SDRSharp and send the signal to Spectrum Lab via a VB Cable.

I set a very simple periodic script to capture the waterfall into a JPG image every 15 seconds.

This setup will capture 240 images an hour.  I have software to consolidate them into a video.  I will then watch the video for "pings".

The point is to see how I can capture events.  Right now, this is overly simple.

I have just gotten started with Spectrum Labs.

Thank you again.

Conrad





Mike Otte

unread,
Nov 27, 2025, 12:39:22 PM (2 days ago) Nov 27
to sara...@googlegroups.com
Conrad,
Here are a couple screen shots.
You should be seeing meteors!  There are alot of them right now.  

The big screen capture shows two meteors,   on both sdr# and on spectrum Lab.

What antenna did you end up with?   Do you have a TV preamp?
either way turn up the SDR# RF gain.

See the mode on SDR# is USB

Taking screen shot takes time and we are getting ready for dinner here.

Mike w9ys



--
Mike Otte W9YS
SDR#_RFGain.png
capt2511271659annointed.jpg
screenCaptSDRsharp.png

Conrad Cardano

unread,
Nov 27, 2025, 12:45:49 PM (2 days ago) Nov 27
to sara...@googlegroups.com
Hi

Thank you for the quick response.

I have a 6m dipole antenna.  No tv preamp.

Have a great dinner!

For more options, visit this group at
http://groups.google.com/group/sara-list?hl=en
---
You received this message because you are subscribed to the Google Groups "Society of Amateur Radio Astronomers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sara-list+unsubscribe@googlegroups.com.


--
Mike Otte W9YS

--
--
You received this message because you are subscribed to the Google
Groups "Society of Amateur Radio Astronomers" group.
To post to this group, send email to sara...@googlegroups.com
To unsubscribe from this group, send email to

For more options, visit this group at
http://groups.google.com/group/sara-list?hl=en
---
You received this message because you are subscribed to the Google Groups "Society of Amateur Radio Astronomers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sara-list+unsubscribe@googlegroups.com.

--
--
You received this message because you are subscribed to the Google
Groups "Society of Amateur Radio Astronomers" group.
To post to this group, send email to sara...@googlegroups.com
To unsubscribe from this group, send email to

For more options, visit this group at
http://groups.google.com/group/sara-list?hl=en
---
You received this message because you are subscribed to the Google Groups "Society of Amateur Radio Astronomers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sara-list+unsubscribe@googlegroups.com.


--
Mike Otte W9YS

--
--
You received this message because you are subscribed to the Google
Groups "Society of Amateur Radio Astronomers" group.
To post to this group, send email to sara...@googlegroups.com
To unsubscribe from this group, send email to

For more options, visit this group at
http://groups.google.com/group/sara-list?hl=en
---
You received this message because you are subscribed to the Google Groups "Society of Amateur Radio Astronomers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sara-list+unsubscribe@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/sara-list/CA%2BG65tSz_Tih1g1euWXN3sWNVL7en7RO_eX_qmv5j3ZPXrY%3Dkw%40mail.gmail.com.

jpett...@gmail.com

unread,
Nov 27, 2025, 12:46:20 PM (2 days ago) Nov 27
to sara...@googlegroups.com

Conrad Cardano

unread,
Nov 27, 2025, 1:11:45 PM (2 days ago) Nov 27
to sara...@googlegroups.com
Thank you!

Conrad


For more options, visit this group at
http://groups.google.com/group/sara-list?hl=en
---
You received this message because you are subscribed to the Google Groups "Society of Amateur Radio Astronomers" group.

To unsubscribe from this group and stop receiving emails from it, send an email to sara-list+unsubscribe@googlegroups.com.



--

Mike Otte W9YS

--
--
You received this message because you are subscribed to the Google
Groups "Society of Amateur Radio Astronomers" group.
To post to this group, send email to sara...@googlegroups.com
To unsubscribe from this group, send email to


For more options, visit this group at
http://groups.google.com/group/sara-list?hl=en
---
You received this message because you are subscribed to the Google Groups "Society of Amateur Radio Astronomers" group.

To unsubscribe from this group and stop receiving emails from it, send an email to sara-list+unsubscribe@googlegroups.com.

--
--
You received this message because you are subscribed to the Google
Groups "Society of Amateur Radio Astronomers" group.
To post to this group, send email to sara...@googlegroups.com
To unsubscribe from this group, send email to


For more options, visit this group at
http://groups.google.com/group/sara-list?hl=en
---
You received this message because you are subscribed to the Google Groups "Society of Amateur Radio Astronomers" group.

To unsubscribe from this group and stop receiving emails from it, send an email to sara-list+unsubscribe@googlegroups.com.

--
--
You received this message because you are subscribed to the Google
Groups "Society of Amateur Radio Astronomers" group.
To post to this group, send email to sara...@googlegroups.com
To unsubscribe from this group, send email to

For more options, visit this group at
http://groups.google.com/group/sara-list?hl=en
---
You received this message because you are subscribed to the Google Groups "Society of Amateur Radio Astronomers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sara-list+unsubscribe@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/sara-list/08e401dc5fc5%24ba8a15c0%242f9e4140%24%40gmail.com.

andrew....@googlemail.com

unread,
Nov 27, 2025, 5:41:02 PM (2 days ago) Nov 27
to sara...@googlegroups.com

Attached & below is the conditional action file we use to record meteors in Spectrum Lab from Graves (143.050 MHz) at Lichfield Radio Observatory – I can’t claim to have written this file, and I would like to apologise to its author for not knowing who wrote it originally. The vital setting is:

 

SNR_Threshold = 18

 

This defines the threshold over the noise-floor which triggers the software to declaring that it has detected a meteor – higher number means less false positives (less false detections of meteors) but more real detections are missed; a lower number increases the false positives but reduces the number of missed real detections è you need to fiddle with the number until you find the best compromise for your location.

 

The script counts meteors, records a screenshot of each meteor detection, and records an audio ping file as well.

 

The file that counts the meteors can be read in Colourgramme software and displayed on the www.rmob.org website for comparison with other observers.

 

I am more than happy to provide further advice on how to use this – contact me privately if that is helpful to you.

 

Andy

 

; Exported "Conditional Actions" for Spectrum Lab

 

if( never ) then # ====== User definable options ======

if( never ) then # SNR_Threshold - Minimum SNR in dB to trigger an event, increase if noise is being interpreted as meteors, reduce if meteors are not being logged

if( never ) then # Meteor_Gap - the period that the signal has to drop below the threshold to be considered the end of a meteor event (in seconds)

if( never ) then # Log_Threshold - the minimum duration of a meteor event that will be logged (in seconds)

if( never ) then # Waterfall_Length - the width or height of the waterfall display in seconds, subtract 20% to be sure of screenshot containing start and end of events

if( never ) then # Log_Path - the location to log files for meteor events (remember to double escape backslashes, including trailing backslash)

if( never ) then # Capture_Path - the location to save screen captures of meteor events (format as above)

if( never ) then # Sound_Path - the location to save .WAV sound capture of meteor events (format as above)

if( never ) then # Sound_Capture - set to 1 to capture meteor sounds, 0 to disable sound capture

if( initialising ) then SNR_Threshold = 18 : Meteor_Gap = 2 : Log_Threshold = 0.05 : Waterfall_Length = 30 : Log_Path = "c:\\spectrum\logs\\" : Capture_Path = "c:\\spectrum\captures\\" : Sound_Path = "c:\\spectrum\sounds\\" : Sound_Capture = 1

if( never ) then # ====== End Of User definable options ======

if( never ) then ##### Initialise Variables #########################################################################################################

if( initialising ) then Current_Noise = noise(cfg.SpecFreqMin, cfg.SpecFreqMax) * 6 : Current_Signal = peak_a(cfg.SpecFreqMin, cfg.SpecFreqMax): Current_Signal = 0 : Current_SNR = 0 : Current_Peak_Frequency = 0 : Current_Time = 0

if( initialising ) then Meteor_Start_Time = 0 : Meteor_End_Time = 0 : Daily_Meteor_Count = 0 : Midnight_Flag = 0 : Hourly_Meteor_Count = 0 : Hourly_Meteor_Duration = 0 : Hourly_Meteor_Longest = 0 : Hourly_Flag = 0 : Logging = 1 : Capture_Time = 0

if( initialising ) then Meteor_Max_Signal = 0 : Meteor_Max_Noise = 0 : Meteor_Max_SNR = 0: Meteor_Max_Peak = 0 : Meteor_Count = 0

if( initialising ) then Intermediate_Capture = Waterfall_Length : State = "Waiting" : Queued = 0

if( never ) then ##### Measure current signal, exponential weighted average of noise and peak frequency after each FFT calculation #################

if( new_spectrum ) then Current_Noise = (Current_Noise / 6) * 5 + noise(cfg.SpecFreqMin, cfg.SpecFreqMax) : Current_Signal = peak_a(cfg.SpecFreqMin, cfg.SpecFreqMax) : Current_Peak_Frequency = peak_f(cfg.SpecFreqMin, cfg.SpecFreqMax) : Current_SNR = Current_Signal - (Current_Noise / 6) : Current_Time = time

if( never ) then ##### Signal above threshold, no meteor in progress so start of new meteor event ###################################################

if( State="Waiting" & Current_SNR>=SNR_Threshold ) then State = "Meteor" : Meteor_Start_Time = Current_Time : rec.filename = Sound_Path + "event" + str("YYYYMMDD", now) + "_" + str("hhmmss", now) + "_" + str(Daily_Meteor_Count + 1) + ".wav"

if( never ) then ##### SNR is higher than previous max SNR, record new max (subtraction gives SNR in dB) ############################################

if( State="Meteor" & Current_SNR>=Meteor_Max_SNR ) then Meteor_Max_Signal = Current_Signal : Meteor_Max_Noise = (Current_Noise / 6) : Meteor_Max_Peak = Current_Peak_Frequency : Meteor_Max_SNR = Current_SNR : rec.trigger = Sound_Capture

if( never ) then ##### Meteor in progress, signal below threshold so start timing gap in case of short break in meteor signal #######################

if( State="Meteor" & Current_SNR<SNR_Threshold ) then State = "Gap" : Meteor_End_Time = Current_Time

if( never ) then ##### Timing gap, signal back above threshold so resume current meteor event #######################################################

if( State="Gap" & Current_SNR>=SNR_Threshold ) then State = "Meteor"

if( never ) then ##### Meteor hasn't finished, but start or middle of event needs to be captured before it scrolls off ##############################

if( (State="Gap" | State="Meteor") & (Current_Time - Meteor_Start_Time)>=Intermediate_Capture & Logging ) then Intermediate_Capture = Intermediate_Capture + Waterfall_Length : capture(Capture_Path + "event" + str("YYYYMMDD", now) + "_" + str("hhmmss", now) + "_" + str(Daily_Meteor_Count + 1) + ".jpg", 100)

if( never ) then ##### Timing gap, signal below threshold and gap duration exceeded so log meteor event #############################################

if( State="Gap" & Current_SNR<SNR_Threshold & (time - Meteor_End_Time)>=Meteor_Gap ) then State = "Log" : rec.trigger = 0

if( never ) then ##### Log last meteor event ########################################################################################################

if( State="Log" & (Meteor_End_Time - Meteor_Start_Time)>=Log_Threshold & Logging ) then Daily_Meteor_Count = Daily_Meteor_Count + 1 : Hourly_Meteor_Count = Hourly_Meteor_Count + 1 : Hourly_Meteor_Duration = Hourly_Meteor_Duration + (Meteor_End_Time - Meteor_Start_Time)

if( continuation ) then sp.print("                                              Event: ", str(Daily_Meteor_Count), " Dur: ", str(Meteor_End_Time - Meteor_Start_Time) + "s", " Time: ", str("hh : mm : ss", Meteor_Start_Time))

if( continuation ) then Queued = Queued + 1 : queue_event(now + max(1, (Waterfall_Length - (Meteor_End_Time - Meteor_Start_Time))), 0)

if( continuation ) then fopen(Log_Path + "event_log_" + str("YYYYMM", Meteor_Start_Time) + ".csv",a,r)

if( continuation ) then fp(str("YYYY/MM/DD",Meteor_Start_Time) + "," + str("hh:mm:ss",Meteor_Start_Time) + "," + str(Daily_Meteor_Count) + "," + str(Meteor_Max_Signal) + "," + str(Meteor_Max_Noise) + "," + str(Meteor_Max_SNR) + "," + str(Meteor_Max_Peak) + "," + str(Meteor_End_Time - Meteor_Start_Time))

if( continuation ) then fclose

if( never ) then ##### Reset and wait for next meteor event #########################################################################################

if( State="Log" & Hourly_Meteor_Longest<(Meteor_End_Time - Meteor_Start_Time) ) then Hourly_Meteor_Longest = (Meteor_End_Time - Meteor_Start_Time)

if( State="Log" ) then Intermediate_Capture = Waterfall_Length : Meteor_Max_Signal = 0 : Meteor_Max_Noise = 0 : Meteor_Max_SNR = 0: Meteor_Max_Peak = 0

if( continuation ) then State = "Waiting"

if( never ) then ##### Capture a screenshot of the display at end of event (see also Screen Capture tab) ############################################

if( queued_event ) then capture(Capture_Path + "event" + str("YYYYMMDD", now) + "_" + str("hhmmss", now) + "_" + str(Daily_Meteor_Count - Queued + 1) + ".jpg", 100)

if( continuation ) then Queued = Queued - 1

if( never ) then ##### Increment the hourly flag (this will happen multiple times during the last five seconds of the hour) #############################

if( str("mmss", Current_Time)="5955" ) then Hourly_Flag = Hourly_Flag + 1

if( never ) then # If the hourly flag has just been triggered, log and then reset the meteor count to zero for the new hour, if the hourly flag has been triggered already, do nothing

if( Hourly_Flag=1 ) then fopen2(Log_Path + "hourly_log_" + str("YYYYMM", Current_Time) + ".csv",a,r)

if( continuation ) then fp2(str("YYYY/MM/DD", Current_Time) + "," + str("hh", Current_Time) + "," + str(Hourly_Meteor_Count))

if( continuation ) then fclose2

if( continuation ) then fopen4(Log_Path + "RMOB-" + str("YYYYMM", Current_Time) + ".dat",a,r)

if( continuation ) then fp4(str("YYYYMMDDhh", Current_Time) + "," + str("hh", Current_Time) + "," + str(Hourly_Meteor_Count))

if( continuation ) then fclose4

if( continuation ) then fopen5(Log_Path + "RMOB_Dur-" + str("YYYYMM", Current_Time) + ".dat",a,r)

if( continuation ) then fp5(str("YYYYMMDDhh", Current_Time) + "," + str("hh", Current_Time) + "," + str(Hourly_Meteor_Count) + "," + str(Hourly_Meteor_Duration) + "," + str(Hourly_Meteor_Longest) + "," + str(Current_Noise))

if( continuation ) then fclose5

if( continuation ) then Hourly_Meteor_Count = 0 : Hourly_Meteor_Duration = 0 : Hourly_Meteor_Longest = 0

if( never ) then # If the current time is on the hour, reset the hourly flag ready to trigger again at the end of the next hour

if( str("mmss", Current_Time)="0000" ) then Hourly_Flag = 0

if( never ) then ##### Increment the midnight flag (this will happen multiple times during the last fice seconds of the day) #############################

if( str("hhmmss", Current_Time)="235955" ) then Midnight_Flag = Midnight_Flag + 1

if( never ) then # If the midnight flag has just been triggered, log and then reset the meteor count to zero for the new day, if the midnight flag has been triggered already, do nothing

if( Midnight_Flag=1 ) then fopen3(Log_Path + "daily_log_" + str("YYYYMM", Current_Time) + ".csv",a,r)

if( continuation ) then fp3(str("YYYY/MM/DD", Current_Time) + "," + str(Daily_Meteor_Count))

if( continuation ) then fclose3

if( continuation ) then Daily_Meteor_Count = 0

if( never ) then # If the current time is midnight, reset the midnight flag ready to trigger again at the end of the next day

if( str("hhmmss", Current_Time)="000000" ) then Midnight_Flag = 0

if( never ) then ##### ##############################################################################################################################

if( never ) then # TODO: upload to web site? auto image display online, auto generate colourgramme via web..

LRO-Meteor_Conditional_Action_Spectrum_Lan_271125.txt

Conrad Cardano

unread,
Nov 27, 2025, 6:17:02 PM (2 days ago) Nov 27
to sara...@googlegroups.com
Thank you , Andrew!
--
--
You received this message because you are subscribed to the Google
Groups "Society of Amateur Radio Astronomers" group.
To post to this group, send email to sara...@googlegroups.com
To unsubscribe from this group, send email to
sara-list-unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/sara-list?hl=en
---
You received this message because you are subscribed to the Google Groups "Society of Amateur Radio Astronomers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sara-list+unsubscribe@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/sara-list/004e01dc5fee%24e30cbbf0%24a92633d0%24%40googlemail.com.

Mike Otte

unread,
Nov 28, 2025, 9:31:46 AM (yesterday) Nov 28
to sara...@googlegroups.com
Andrew,
Where do you set the center frequency?  upper left hand corner of main screen.  Is it 1000 hz?  Then Conrad set your frequency to 55.239 000 onUSB

Where do you set the Noise range?  

do you only see the counts in the RMOB file?

So you get a screenshot picture of every meteor?  If you detect a hundred meteors per hour that will fill your hard drive in no time.
So you also store the statistics of every meteor?   I have wanted to do that but never implemented it.  I only do counts, counts of meteors greater than 2 seconds, and the total meteor reflection time per hour.  Counts goes into RMOB.org website.  Counts greater than 2 second is good indicator of showers,  Total reflection time can be a good indicator of the showers and/or of other propagation , like E's  or aurora.

I try to notch out the continuous carrier like from E's propagation because it give many false counts. 


Mike w9ys


For more options, visit this group at
http://groups.google.com/group/sara-list?hl=en
---
You received this message because you are subscribed to the Google Groups "Society of Amateur Radio Astronomers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sara-list+...@googlegroups.com.

--
--
You received this message because you are subscribed to the Google
Groups "Society of Amateur Radio Astronomers" group.
To post to this group, send email to sara...@googlegroups.com
To unsubscribe from this group, send email to

For more options, visit this group at
http://groups.google.com/group/sara-list?hl=en
---
You received this message because you are subscribed to the Google Groups "Society of Amateur Radio Astronomers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sara-list+...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/sara-list/CAGewSRv4CnjqZjU86O%3Dt%3DstSdkeaKGdmpJe%3Dz%2BBwH9i4TmTKRQ%40mail.gmail.com.


--
Mike Otte W9YS

Conrad Cardano

unread,
Nov 28, 2025, 9:40:13 AM (yesterday) Nov 28
to sara...@googlegroups.com
Hi

Attached is a screenshot of my setup.

I not worried about filling up my drive.  When I do time-lapse photography of H-alpha solar prominences or solar surface,I typically take 150 GIGABYTESo data in one day.

Screenshot 2025-11-28 093644.png

Mike Otte

unread,
Nov 28, 2025, 10:08:04 AM (yesterday) Nov 28
to sara...@googlegroups.com
Conrad,
Thanks for screen shot.
Positive:  You are receiving a signal on the left of the screen  but not from Canada.

Also you have a lot of interference bars.

Now, move you "Zoom" control on the right of your screen up to about 40%.   The meteors will be below the 239 just to the left of 240.

Mike



--
Mike Otte W9YS

andrew....@googlemail.com

unread,
Nov 28, 2025, 11:34:54 AM (yesterday) Nov 28
to sara...@googlegroups.com

Ditto – I also take up to 160 GB data in single solar astrophotography session – I never worry about filling hard drive with meteor screen shots.

More of an issue if Spectrum Lab set up to take periodic 1 min screenshots continuously – so I tend to wipe out that folder every now and again.

Andy

 

From: sara...@googlegroups.com <sara...@googlegroups.com> On Behalf Of Conrad Cardano
Sent: 28 November 2025 14:40
To: sara...@googlegroups.com
Subject: Re: [SARA] Spectrum Lab script for recording meteors

 

Hi

Reply all
Reply to author
Forward
0 new messages