Sorry for the delay on this, after moving to a more practical area to continue with this project I am getting plagued with noise on the signal analyser, however after applying a glitch filter to the data I can confirm it is indeed just a single pulse that is being sent from the projector to the ballast.
I'm thinking that some sort of amendment to the code like this might be worth a try,
if DigitalRead = HIGH then
xSend(x22D, s22D);
xSend(x139, s139);
xSend(x2C1, s2C1);
if DigitalRead = HIGH then
xSend(x20C, s20C);
xSend(x2C1, s2C1);
if DigitalRead = HIGH then
xSend(x02C, s02C);
xSend(x20C, s20C);