How to calculate Parity fields of subchannel?

Hi to all.
I have a problem with my CD+G player. It won’t play disks generated by some software (mp3+g toolz, powerkaraoke) but does play burnt bins generated by another program (DARTStudio). From what I have seen, the issue is that there is no error-correction info in the non-working bin. I worked according to the following struct:
typedef struct {
char command;
char instruction;
char parityQ[2];
char data[16];
char parityP[4];
} SubCode; (taken from http://www.jbum.com/cdg_revealed.html) and the fields ‘ParityQ’ and ‘ParityP’ are 0. How can I generate those fields? (source code would be rally nice…)
P.S. In the “working” bin those fields have values.

I think CDRDAO is all you need.
Regards

Hi sanek

Do you still need source code for CRC generation? If yes just PM me and I will try to help.

RichMan