Simple mistake on my part:
Begin Text Compare : [{EXP:{TIMEMINUTES} > 30}] Equals '1'
Should be
Begin Text Compare : [{EXP:{TIMEMINUTES} = 30}] Equals '1'
Though, I was pondering this yesterday evening, and while the given examples work fine(providing the typos are fixed), I've realized they're overly complicated for a system using only static values.
If the amount of hours in a day ever changes, use the earlier examples, otherwise, you could just do it this way:
Start Loop While : [{EXP:1=1}] Equals '1'
Begin Text Compare : [{EXP:{TIMEMINUTE} = 0 OR {TIMEMINUTE} = 30}] Equals '1'
Begin Text Compare : [{EXP:'{time}' = '12:30' OR '{time}' = '4:30' Or '{time}' = '8:30'}] Equals '1'
Play sound, 'C:\Windows\Media\Windows Ding.wav'
Else If Text Compare : [{EXP:'{time}' = '1:00' OR '{time}' = '5:00' Or '{time}' = '9:00'}] Equals '1'
Play sound, 'C:\Windows\Media\Windows Ding.wav'
Else If Text Compare : [{EXP:'{time}' = '1:30' OR '{time}' = '5:30' Or '{time}' = '9:30'}] Equals '1'
Play sound, 'C:\Windows\Media\Windows Ding.wav'
Else If Text Compare : [{EXP:'{time}' = '2:00' OR '{time}' = '6:00' Or '{time}' = '10:00'}] Equals '1'
Play sound, 'C:\Windows\Media\Windows Ding.wav'
Else If Text Compare : [{EXP:'{time}' = '2:30' OR '{time}' = '6:30' Or '{time}' = '10:30'}] Equals '1'
Play sound, 'C:\Windows\Media\Windows Ding.wav'
Else If Text Compare : [{EXP:'{time}' = '3:00' OR '{time}' = '7:00' Or '{time}' = '11:00'}] Equals '1'
Play sound, 'C:\Windows\Media\Windows Ding.wav'
Else If Text Compare : [{EXP:'{time}' = '3:30' OR '{time}' = '7:30' Or '{time}' = '11:30'}] Equals '1'
Play sound, 'C:\Windows\Media\Windows Ding.wav'
Else If Text Compare : [{EXP:'{time}' = '4:00' OR '{time}' = '8:00' Or '{time}' = '12:00'}] Equals '1'
Play sound, 'C:\Windows\Media\Windows Ding.wav'
End Condition
Pause 60 seconds
End Condition
Pause 1 second
End Loop
New example also attached for import.