View Issue Details

IDCategoryLast Update
0004649bugs2012-01-24 16:18
ReporteranrugAssigned Topaul 
Reproducibilityalways 
Status resolvedResolutionfixed 
Product Version 
Fixed in Version 
Summary0004649: TOC export writes PERFORMER field only when present
DescriptionArdour (2.0 and 3.0) does write the CD text field "PERFORMER" only when it's actually actually present. This may sound reasonable, and for cue sheets it probably is, but for reasons I'm not familiar with, the cdrdao source code wants this field filled in for all tracks and in the global section, so Ardour should probably adjust here, because cdrdao will refuse to burn a CD otherwise.

The same is actually true for the TITLE field, cdrdao handles those two fields differently then any other CD text field. But with TITLE it's not an issue because that will always be filled in by Ardour at the moment.

I've included a patch for review.
Additional InformationThe way CD text fields are written into the R-W subcode streams in the lead-in area of an audio CD requires that each CD text field (TITLE, PERFORMER, SONGWRITER, etc.) is present for all tracks and globally if it's used in at least one track or globally. So in many cases zero-length strings will be stored (a single terminating zero that is), that's how CD text works. And cdrdao hands over that restriction over to it's users. But CD text *does not* require a specific field like PERFORMER to be present at all, that restriction comes from cdrdao.
TagsNo tags attached.

Activities

2012-01-21 23:44

 

toc_performer.patch (1,296 bytes)
Index: libs/ardour/export_handler.cc
===================================================================
--- libs/ardour/export_handler.cc	(Revision 11297)
+++ libs/ardour/export_handler.cc	(Arbeitskopie)
@@ -431,7 +431,8 @@
 
 	status.out << "CD_DA" << endl;
 	status.out << "CD_TEXT {" << endl << "  LANGUAGE_MAP {" << endl << "    0 : EN" << endl << "  }" << endl;
-	status.out << "  LANGUAGE 0 {" << endl << "    TITLE \"" << title << "\"" << endl << "  }" << endl << "}" << endl;
+	status.out << "  LANGUAGE 0 {" << endl << "    TITLE \"" << title << "\"" << endl ;
+	status.out << "    PERFORMER \"\"" << endl << "  }" << endl << "}" << endl;
 }
 
 void
@@ -505,9 +506,13 @@
 	}
 
 	status.out << "CD_TEXT {" << endl << "  LANGUAGE 0 {" << endl << "     TITLE \"" << status.marker->name() << "\"" << endl;
+	
+	status.out << "     PERFORMER \"";
 	if (status.marker->cd_info.find("performer") != status.marker->cd_info.end()) {
-		status.out << "     PERFORMER \"" << status.marker->cd_info["performer"]  << "\"" << endl;
+		status.out << status.marker->cd_info["performer"];
 	}
+	status.out << "\"" << endl;
+	
 	if (status.marker->cd_info.find("composer") != status.marker->cd_info.end()) {
 		status.out  << "     COMPOSER \"" << status.marker->cd_info["composer"] << "\"" << endl;
 	}
toc_performer.patch (1,296 bytes)

cth103

2012-01-22 10:43

administrator   ~0012612

Applied to 3.0 SVN 11299. Thanks!

paul

2012-01-24 16:18

administrator   ~0012639

i believe that this is no longer an issue for either TOC or CUE.

Issue History

Date Modified Username Field Change
2012-01-21 23:44 anrug New Issue
2012-01-21 23:44 anrug File Added: toc_performer.patch
2012-01-22 10:20 cth103 cost => 0.00
2012-01-22 10:20 cth103 Target Version => 3.0-beta3
2012-01-22 10:43 cth103 Note Added: 0012612
2012-01-22 10:43 cth103 Target Version 3.0-beta3 => 2.8.13
2012-01-24 16:18 paul Note Added: 0012639
2012-01-24 16:18 paul Status new => resolved
2012-01-24 16:18 paul Resolution open => fixed
2012-01-24 16:18 paul Assigned To => paul