As well as using identifiers, there are also command to check the state of iRecordMusic, as to whether it is mute or not, whether it is playing any audio, or recording. You can also mark a running copy of iRecordMusic, to reserve it for scheduling. As there could be multiple copies of the application running, it is useful to have a routine to loop through existing copies of iRecordMusic to find one which is free (e.g. not playing anything, not marked for scheduling, or not recording), and then reserve it. Failing that, it is possible to spawn a new instance of the application.
Here is an example of finding an iRecordMusic suitable for scheduling, or launcing a new iRecordMusic if none are suitable. This is actual code from our helper AppleScripts which iCal launches.
-- Get a string rawid of a IRM application which is not scheduled and not recording, else missing value
-- If there is no suitable IRM app, a new one is launched, but we loop and check to make sure this app doesn't get grabbed by another script.
-- The key call is to 'reserve for scheduling' which should return true if you grab the app for your own use
on getFreeIRM()
tell application "iRecordMusic"
set theIRMid to missing value
set found to false
set counter to 0
repeat
set theList to irmIDs
set numList to count of theList
repeat with i from 1 to numList
set iid to item i of theList
if ((reserve for scheduling with iid) is true) then
set theIRMid to iid
set found to true
exit repeat
end if
end repeat
if found then
exit repeat
end if
set counter to (counter + 1)
if counter > 20 then
exit repeat
end if
-- Create a new instance of IRM
new irm
tell me
do shell script ("sleep 5")
end tell
end repeat
return theIRMid
end tell
end getFreeIRM