Extra data track in audio CD

I’m having an unusual, probably very simple problem when writing audio CDs. There is an extra data track before all the audio tracks, taking up 600 blocks. Following is output from the error log:

18:39:37	#11 Text 0 File ThreadedTransferInterface.cpp, Line 813
	Setup items (after recorder preparation)
	 0: TRM_DATA_MODE1 (CTransferItem)
	    2 indices, index0 (150) not provided
	    original disc pos #0 + 600 (600) = #600/0:8.0
	    relocatable, disc pos for caching/writing not required/required, no patch infos 
	    -> TRM_DATA_MODE1, 2048, config 0, wanted index0 0 blocks, length 600 blocks [LITE-ON  LTR-52327S      ]
	 1: TRM_AUDIO_NOPRE (song name.mp3)
	    2 indices, index0 (150) not provided
	    original disc pos #0 + 21321 (21321) = #21321/4:44.21
	    relocatable, disc pos for caching/writing not required/not required, no patch infos 
	    -> TRM_AUDIO_NOPRE, 2352, config 0, wanted index0 0 blocks, length 21321 blocks [LITE-ON  LTR-52327S      ]

Track info for other audio tracks follows this.

The next section of the error log contains:

18:39:37	#12 Text 0 File ThreadedTransferInterface.cpp, Line 982
	Prepare recorder [LITE-ON  LTR-52327S      ] for write in CUE-sheet-DAO
	DAO infos:
	==========
	 MCN: ""
	 TOCType: 0x00; Session Closed, disc fixated
	 Tracks 1 to 20:
	   1: TRM_DATA_MODE1, 2048/0x00, FilePos             0        307200       1536000, ISRC ""
	   2: TRM_AUDIO_NOPRE, 2352/0x00, FilePos       1536000       1888800      52035792, ISRC ""
	   3: TRM_AUDIO_NOPRE, 2352/0x00, FilePos      52035792      52035792      99386256, ISRC ""
	   4: TRM_AUDIO_NOPRE, 2352/0x00, FilePos      99386256      99386256     159851472, ISRC ""
...
...and then...

	DAO layout:
	===========
	 __Start_|____Track_|_Idx_|_RecDep_|_CtrlAdr_
	    -150 |  lead-in |   0 |   0x00 |  0x41
	    -150 |        1 |   0 |   0x00 |  0x41
	       0 |        1 |   1 |   0x00 |  0x41
	     600 |        2 |   0 |   0x00 |  0x21
	     750 |        2 |   1 |   0x00 |  0x21
	   22071 |        3 |   0 |   0x00 |  0x21
	   22071 |        3 |   1 |   0x00 |  0x21
	   42203 |        4 |   0 |   0x00 |  0x21
...

This is the relevant code used to prepare and burn the disc:


iSize = sizeof(NERO_WRITE_CD) + ((int) _vfTracks.size()-1)*sizeof(NERO_AUDIO_TRACK);
pWriteCD = (NERO_WRITE_CD*) malloc(iSize);
memset(pWriteCD, 0, iSize);
pWriteCD->nwcdNumTracks	= (DWORD) _vfTracks.size();
.
.
NERO_CITE_ARGS ncaArgs;
memset (&ncaArgs, 0, sizeof (ncaArgs));
ncaArgs.dwBurnOptions = 0;
ncaArgs.firstRootItem = NULL;
.
.
pWriteCD->nwcdIsoTrack = NeroCreateIsoTrackEx(NULL, (const char *) &ncaArgs, NCITEF_USE_STRUCT);
for (unsigned int iTrackIdx=0; iTrackIdx<_vfTracks.size(); iTrackIdx++) {
	// Set pause before track, in blocks
	if (iTrackIdx == 0) {
		pWriteCD->nwcdTracks[iTrackIdx].natPauseInBlksBeforeThisTrack = 150;
	} else {
		pWriteCD->nwcdTracks[iTrackIdx].natPauseInBlksBeforeThisTrack = 0;
	}
	NERO_DATA_EXCHANGE& ndeShort = pWriteCD->nwcdTracks[iTrackIdx].natSourceDataExchg;
	// Add file info depending on type
	char* sFilename = new char[_vfTracks[iTrackIdx]->getFullName().size()+1];
	strcpy(sFilename, _vfTracks[iTrackIdx]->getFullName().c_str());
	if (_vfTracks[iTrackIdx]->hasExt(".wav") || _vfTracks[iTrackIdx]->hasExt(".wave")) {
		ndeShort.ndeType = NERO_ET_FILE;
		ndeShort.ndeData.ndeLongFileName.reserved = NULL;
		ndeShort.ndeData.ndeLongFileName.ptr = sFilename;
	} else if (_vfTracks[iTrackIdx]->hasExt(".mp3") || _vfTracks[iTrackIdx]->hasExt(".mpeg3")) {
		ndeShort.ndeType = NERO_ET_FILE_MP3;
		ndeShort.ndeData.ndeLongFileName.reserved = NULL;
		ndeShort.ndeData.ndeLongFileName.ptr = sFilename;
	}
}
.
.
DWORD dwBurnFlags = 0;
dwBurnFlags	=	NBF_DAO |
			NBF_SPEED_IN_KBS |
			NBF_BUF_UNDERRUN_PROT |
			(_bSimulate ?
				NBF_SIMULATE | NBF_DISABLE_EJECT :
				NBF_WRITE);
NEROAPI_BURN_ERROR nbeError;
nbeError = NeroBurn(_ndhDeviceHandle, NERO_ISO_AUDIO_MEDIA, pWriteCD, dwBurnFlags, _dwBurnSpeed, &_npProgress);

The disc burns fine – just has that little extra data track in front. Anyone got any ideas? Thanks!!

You don’t have to create an iso track. If you provide an iso track, a data part will be written. So, just set pWriteCD->nwcdIsoTrack to NULL and it should work fine.

Aha. I knew it would be something stupid. I’m sure that’ll fix it. Thanks :slight_smile: