You can use the below python script not only for setting an hourly alarm, but for setting an alarm with any time interval. Firstly create a new file alarm.py, using vi alarm.py . Then paste the following code in the file,
from pygame import mixer
from time import sleep
def sendmessage(title, message):
notice = pynotify.Notification(title, message)
mixer.init() #you must initialize the mixer
alert=mixer.Sound('beep.wav') #name of the sound file is beep.wav
sendmessage("ALARM!!", "1 hour up!")
Here, beep.wav is the name of the sound file which should also be in the same directory as of the alarm.py file (preferably home folder). You can download any beep sound file of your choice from the internet.
Now make the file executable by,
chmod +x alarm.py
Now to run this in background,
nohup /home/'username'/alarm.py &
(this is when alarm.py is in the home folder, use the appropriate file address as required)
and hit Enter twice.
Now this process will be running in background, if you want to stop this, type,
ps ax| grep alarm.py
Currently, the time interval is 1 hour. If you want to change it, change the line sleep(3600) to sleep(no_of_seconds) [IN this case, 3600 = 60*60 seconds = 1 hour.]
Hope it helped!