ftp.nice.ch/pub/next/tools/cdrom/mCD.96Sep09.s.tar.gz#/mCD/CD_DBase.subproj/CD_DBase.m

This is CD_DBase.m in view mode; [Download] [Up]

#import "CD_DBase.h"
#import "CD_DBaseSubs.h"

@implementation CD_DBase

    /* I intend to hook up some real database to this, once I
     * figure out how I want that to work.  So far I just tack on
     * info for CD's as I play them, mainly for checking purposes.
     */

#define U2_WIDEAWAKEINAMERICA  448632633 /* key parts = 1246.15.04.483 286 */
#define MISHAM_THENET          638376672 /* key parts = 1773.20.04.222 635 */
#define MOLDFIELD_OMMADAWN     793550963 /* key parts = 2204.23.03.1163 204 */
#define TDREAM_WHITE_DE        829200608 /* key parts = 2303.25.04.1208 275 */
#define TDREAM_GREENDES_SEQ    833592719 /* key parts = 2315.40.04.1169 414 */
#define TDREAM_WHITE           834192613 /* key parts = 2317.15.04.1213 278 */
#define PINKF_UMMAGUMMA_REMD1  850704659 /* key parts = 2363.05.04.509 769 */
#define PINKF_UMMAGUMMA_D1     857271062 /* key parts = 2381.23.04.512 770 */
#define MOLDFIELD_HERGESTRIDGE 871248390 /* key parts = 2420.10.02.1290 1128 */
#define VAPO_GRAVITATIONAL     887822707 /* key parts = 2466.13.02.2107 357 */
#define TDREAM_HYPERB_DE       901738301 /* key parts = 2504.62.04.551 1191 */
#define TDREAM_HYPERB          908760706 /* key parts = 2524.25.04.556 1196 */
#define PINKF_WYWH_USA1        955800362 /* key parts = 2655.00.02.1262 1391 */
#define RENAIS_SCHEHER_TRC     986808651 /* key parts = 2741.10.04.651 1471 */
#define MOLDFIELD_EXPOSED_D2   990720501 /* key parts = 2752.00.03.1701 384 */
#define ROYALPHIL_STARTREK_V2  991143073 /* key parts = 2753.13.04.523 518 */
#define RENAIS_SCHEHER_REP     991402254 /* key parts = 2753.67.04.654 1479 */
#define TDREAM_PERGAMON_REL    996936347 /* key parts = 2769.20.02.1397 1370 */
#define TDREAM_PERGAMON_SEQ    996960350 /* key parts = 2769.25.02.1400 1367 */
#define TDREAM_PERGAMON_CAR    999720353 /* key parts = 2777.00.02.1403 1373 */
#define MOLDFIELD_EXPOSED_D1  1022649986 /* key parts = 2840.52.02.1586 1252 */
#define MOLDFIELD_BOXED_D3    1026351008 /* key parts = 2850.73.04.1208 358 */
#define MOLDFIELD_TUBULARBELL 1057488333 /* key parts = 2937.35.02.1533 1402 */
#define TDREAM_LOGOS_DE       1099113906 /* key parts = 3053.07.02.2706 345 */
#define MOLDFIELD_ORCHTUBELLS 1103640392 /* key parts = 3065.50.02.1592 1471 */
#define TDREAM_LOGOS          1105930093 /* key parts = 3072.02.03.1543 349 */
#define RENAIS_CARNEGIE_D2    1131120410 /* key parts = 3142.00.02.1760 1380 */
#define SOFTW_SYNCODE         1204920476 /* key parts = 3347.00.03.1376 567 */
#define TDREAM_LIVEMILES_SEQ  1233264444 /* key parts = 3425.55.02.1794 1629 */
#define MOLDFIELD_AMAROK      1297665752 /* key parts = 3604.47.01.3602 3602 */
#define BKISTEN_HEADVISIONS   1391904747 /* key parts = 3866.30.04.1497 717 */
#define RADIOMI_FROZENN_D2    1486651562 /* key parts = 4129.44.02.1712 2415 */
#define KSCH_DRESDEN_D2       1487136410 /* key parts = 4130.70.02.2810 1318 */
#define KSCH_ENTRANCE         1530586289 /* key parts = 4251.47.04.1139 1067 */
#define TDREAM_ENCORE         1533816667 /* key parts = 4260.45.04.967 1053 */
#define TDREAM_ENCORE_DE      1540042282 /* key parts = 4277.67.04.982 1056 */
#define MOLDFIELD_INCANT      1574280700 /* key parts = 4373.00.04.1150 1022 */
#define KSCH_DRESDEN_D1       1585550965 /* key parts = 4404.23.03.2665 1111 */
#define KSCH_DOMEEVENT        1604880362 /* key parts = 4458.00.02.3812 644 */
#define TDREAM_POLAND_SEQ     1665490346 /* key parts = 4626.27.04.1346 1250 */


- fillTocTitles:(struct cd_toc *)tocPtr givenKey:(u_int)cdKey
{
    /* split the records up into subroutines based on the number of
     * songs on the album.  This routine was getting a bit too big...
     */
    if ( tocPtr->lasttrack >= 5 ) {
	switch ( tocPtr->lasttrack ) {
	case 5:
	    filltoc05(tocPtr, cdKey);
	    break;
	case 6:
	    filltoc06(tocPtr, cdKey);
	    break;
	case 7:
	    filltoc07(tocPtr, cdKey);
	    break;
	case 8:
	    filltoc08(tocPtr, cdKey);
	    break;
	case 9:
	    if ( cdKey > CDKEY_45min )      filltoc09_45(tocPtr, cdKey);
	    else if ( cdKey > CDKEY_40min ) filltoc09_40(tocPtr, cdKey);
	    else                            filltoc09_00(tocPtr, cdKey);
	    break;
	case 10:
	    /* There are a lot of CD's with 10 tracks... */
	    if ( cdKey > CDKEY_50min )      filltoc10_50(tocPtr, cdKey);
	    else if ( cdKey > CDKEY_45min ) filltoc10_45(tocPtr, cdKey);
	    else if ( cdKey > CDKEY_40min ) filltoc10_40(tocPtr, cdKey);
	    else if ( cdKey > CDKEY_35min ) filltoc10_35(tocPtr, cdKey);
	    else                            filltoc10_00(tocPtr, cdKey);
	    break;
	case 11:
	    /* There are many CD's with 11 tracks too... */
	    if ( cdKey > CDKEY_50min )      filltoc11_50(tocPtr, cdKey);
	    else if ( cdKey > CDKEY_40min ) filltoc11_40(tocPtr, cdKey);
	    else                            filltoc11_00(tocPtr, cdKey);
	    break;
	case 12:
	    /* Now have enough CD's with 12 tracks to split those up... */
	    if ( cdKey > CDKEY_60min )      filltoc12_60(tocPtr, cdKey);
	    else if ( cdKey > CDKEY_50min ) filltoc12_50(tocPtr, cdKey);
	    else if ( cdKey > CDKEY_45min ) filltoc12_45(tocPtr, cdKey);
	    else                            filltoc12_00(tocPtr, cdKey);
	    break;
	case 13:
	    filltoc13(tocPtr, cdKey);
	    break;
	case 14:
	    filltoc14(tocPtr, cdKey);
	    break;
	case 15:
	    filltoc15(tocPtr, cdKey);
	    break;
	case 16: case 17:
	    filltoc16(tocPtr, cdKey);
	    break;
	case 18: case 19:
	    filltoc18(tocPtr, cdKey);
	    break;
	case 20: case 21: case 22: case 23: case 24: case 25:
	    filltoc20(tocPtr, cdKey);
	    break;
	default: /* 26 or more tracks... */
	    filltoc26(tocPtr, cdKey);
	    break;
	}
	return self;
    }

    /* CD's with less than 5 tracks are checked here... */
    
    if ( cdKey == BKISTEN_HEADVISIONS ) { /* 1:04:26-30 */
	tocPtr->discPerformer = "Bernd Kistenmacher";
	tocPtr->discTitle = "Head-Visions";
	SET_CDtt( 1, 24.57, "Röcksturz");
	SET_CDtt( 2, 14.27, "Quitting Time");
	SET_CDtt( 3, 13.03, "La Tendresse");
	SET_CDtt( 4, 11.57, "Dreamdance  [live in 1990, bonus track]");
	}
    if ( cdKey == MISHAM_THENET ) { /* 0:29:33-20 */
	tocPtr->discPerformer = "Mark Isham";
	tocPtr->discTitle = "The Net";
	SET_CDtt( 1, 03.42, "Act I");
	SET_CDtt( 2, 11.54, "Act II");
	SET_CDtt( 3, 03.20, "Act III");
	SET_CDtt( 4, 10.35, "Act IV");
	}
    if ( cdKey == MOLDFIELD_TUBULARBELL ) { /* 0:48:57-35 */
	tocPtr->discPerformer = "Mike OldField";
	tocPtr->discTitle = "Tubular Bells";
#     if !defined(SKIPSONGS_Mike_Oldfield)
	SET_CDtt( 1, 25.33, "Tubular Bells: Part One");
	SET_CDtt( 2, 23.22, "Tubular Bells: Part Two");
#     endif
	}
    if ( cdKey == MOLDFIELD_HERGESTRIDGE ) { /* 0:40:20-10 */
	tocPtr->discPerformer = "Mike OldField";
	tocPtr->discTitle = "Hergest Ridge";
#     if !defined(SKIPSONGS_Mike_Oldfield)
	SET_CDtt( 1, 21.30, "Hergest Ridge: Part One");
	SET_CDtt( 2, 18.48, "Hergest Ridge: Part Two");
#     endif
	}
    if ( cdKey == MOLDFIELD_ORCHTUBELLS ) { /* 0:51:05-50 */
	tocPtr->discPerformer = "Mike OldField";
	tocPtr->discTitle = "The Orchestral Tubular Bells";
#     if !defined(SKIPSONGS_Mike_Oldfield)
	SET_CDtt( 1, 26.32, "The Orchestral Tubular Bells: Part 1");
	SET_CDtt( 2, 24.31, "The Orchestral Tubular Bells: Part 2");
#     endif
	}
    if ( cdKey == MOLDFIELD_OMMADAWN ) { /* 0:36:44-23 */
	tocPtr->discPerformer = "Mike OldField";
	tocPtr->discTitle = "Ommadawn";
#     if !defined(SKIPSONGS_Mike_Oldfield)
	SET_CDtt( 1, 19.23, "Ommadawn: Part One");
	SET_CDtt( 2, 13.55, "Ommadawn: Part Two");
	SET_CDtt( 3, 03.24, "The Horse Song");
#     endif
	}
    if ( cdKey == MOLDFIELD_BOXED_D3 ) { /* 0:47:30-73 */
	tocPtr->discPerformer = "Mike OldField";
	tocPtr->discTitle = "Boxed  [disc 3]";
#     if !defined(SKIPSONGS_Mike_Oldfield)
	SET_CDtt( 1, 20.08, "Ommadawn: Part One");
	SET_CDtt( 2, 17.23, "Ommadawn: Part Two");
	SET_CDtt( 3, 03.59, "The Phaeacian Games");
	SET_CDtt( 4, 05.58, "First Excursion");
#     endif
	}
    if ( cdKey == MOLDFIELD_INCANT ) { /* 1:12:53-00 */
	tocPtr->discPerformer = "Mike OldField";
	tocPtr->discTitle = "Incantations";
#     if !defined(SKIPSONGS_Mike_Oldfield)
	SET_CDtt( 1, 19.10, "Incantations: Part One");
	SET_CDtt( 2, 19.38, "Incantations: Part Two");
	SET_CDtt( 3, 17.01, "Incantations: Part Three");
	SET_CDtt( 4, 17.02, "Incantations: Part Four");
#     endif
	}
    if ( cdKey == MOLDFIELD_EXPOSED_D1 ) { /* 0:47:20-52 */
	tocPtr->discPerformer = "Mike OldField";
	tocPtr->discTitle = "Exposed  [disc 1]";
#     if !defined(SKIPSONGS_Mike_Oldfield)
	SET_CDtt( 1, 26.26, "Incantations (Parts 1 & 2)");
	SET_CDtt( 2, 20.52, "Incantations (Parts 3 & 4)");
#     endif
	}
    if ( cdKey == MOLDFIELD_EXPOSED_D2 ) { /* 0:45:52-00 */
	tocPtr->discPerformer = "Mike OldField";
	tocPtr->discTitle = "Exposed  [disc 2]";
#     if !defined(SKIPSONGS_Mike_Oldfield)
	SET_CDtt( 1, 28.21, "Tubular Bells (Part 1)");
	SET_CDtt( 2, 11.05, "Tubular Bells (Part 2)");
	SET_CDtt( 3, 06.24, "Guilty");
#     endif
	}
    if ( cdKey == MOLDFIELD_AMAROK ) { /* 1:00:04-47 */
	tocPtr->discPerformer = "Mike OldField";
	tocPtr->discTitle = "Amarok";
#     if !defined(SKIPSONGS_Mike_Oldfield)
	SET_CDtt( 1, 60.02, "Amarok");
#     endif
	}
    if ( cdKey == PINKF_UMMAGUMMA_D1 ) { /* 0:39:41-23 */
	tocPtr->discPerformer = "Pink Floyd";
	tocPtr->discTitle = "Ummagumma  [disc 1]";
#     if !defined(SKIPSONGS_Pink_Floyd)
	SET_CDtt( 1, 08.32, "Astronomy DominÝ");
	SET_CDtt( 2, 08.50, "Careful With That Axe, Eugene");
	SET_CDtt( 3, 09.27, "Set The Controls For The Heart Of The Sun");
	SET_CDtt( 4, 12.50, "A Saucerful Of Secrets");
#     endif
	}
    if ( cdKey == PINKF_UMMAGUMMA_REMD1 ) { /* 0:39:23-05 */
	tocPtr->discPerformer = "Pink Floyd";
	tocPtr->discTitle = "Ummagumma  [live disc, remastered]";
#     if !defined(SKIPSONGS_Pink_Floyd)
	SET_CDtt( 1, 08.29, "Astronomy DominÝ");
	SET_CDtt( 2, 08.51, "Careful With That Axe, Eugene");
	SET_CDtt( 3, 09.12, "Set The Controls For The Heart Of The Sun");
	SET_CDtt( 4, 12.49, "A Saucerful Of Secrets");
#     endif
	}
    if ( cdKey == PINKF_WYWH_USA1 ) { /* 0:44:15-00 */
	tocPtr->discPerformer = "Pink Floyd";
	tocPtr->discTitle = "Wish You Were Here  [First USA release]";
	/*
	 *	index 1.1 started 0:00:02-04 into CD
	 *	index 1.2 started 0:13:31-12 into CD, 0:13:29 into the song
	 *	index 2.0 started 0:21:02-49 into CD,  -00:02 into the song
	 *	index 2.1 started 0:21:05-11 into CD
	 *	index 2.2 started 0:26:11-48 into CD, 0:05:06 into the song
	 *	index 2.3 started 0:31:48-28 into CD, 0:10:43 into the song
	 */
#     if !defined(SKIPSONGS_Pink_Floyd)
	SET_CDtt( 1, 21.02, "Wish You Were Here; Side 1");	/* index=2 */
	SET_CDtt( 2, 23.11, "Wish You Were Here; Side 2");	/* index=3 */
#     endif
	}
    if ( cdKey == RADIOMI_FROZENN_D2 ) { /* 1:08:49-44 */
	tocPtr->discPerformer = "Radio Massacre International";
	tocPtr->discTitle = "Frozen North  [disc 2]";
	SET_CDtt( 1, 28.32, "Frozen North: I");
	SET_CDtt( 2, 40.15, "Frozen North: IV");
	}
    if ( cdKey == RENAIS_SCHEHER_TRC ) { /* 0:45:41-10 */
	tocPtr->discPerformer = "Renaissance";
	tocPtr->discTitle = "Scheherazade and Other Stories  [TRC]";
#     if !defined(SKIPSONGS_Renaissance)
	SET_CDtt( 1, 10.51, "Trip to the Fair");
	SET_CDtt( 2, 03.09, "The Vultures Fly High");
	SET_CDtt( 3, 07.08, "Ocean Gypsy");
	SET_CDtt( 4, 24.31, "Song of Scheherazade");
#     endif
	}
    if ( cdKey == RENAIS_SCHEHER_REP ) { /* 0:45:53-67 */
	tocPtr->discPerformer = "Renaissance";
	tocPtr->discTitle = "Scheherazade and Other Stories  [Repertoire]";
#     if !defined(SKIPSONGS_Renaissance)
	SET_CDtt( 1, 10.54, "Trip to the Fair");
	SET_CDtt( 2, 03.08, "The Vultures Fly High");
	SET_CDtt( 3, 07.10, "Ocean Gypsy");
	SET_CDtt( 4, 24.39, "Song of Scheherazade");
#     endif
	}
    if ( cdKey == RENAIS_CARNEGIE_D2 ) { /* 0:52:22-00 */
	tocPtr->discPerformer = "Renaissance";
	tocPtr->discTitle = "Live at Carnegie Hall  [disc 2]";
#     if !defined(SKIPSONGS_Renaissance)
	SET_CDtt( 1, 29.20, "Scheherazade");
	SET_CDtt( 2, 23.00, "Ashes are Burning");
#     endif
	}
    if ( cdKey == ROYALPHIL_STARTREK_V2 ) { /* 0:45:53-13 */
	tocPtr->discPerformer = "Royal Philharmonic Orchestra";
	tocPtr->discTitle = "ªStar Trekº Symphonic Suites, Vol. 2";
	SET_CDtt( 1, 08.43, "Conscience of the King");
	SET_CDtt( 2, 15.15, "Spectre of the Gun");
	SET_CDtt( 3, 13.15, "The Ememy Within");
	SET_CDtt( 4, 08.38, "I, Mudd");
	}
    if ( cdKey == KSCH_ENTRANCE ) { /* 1:10:51-47 */
	tocPtr->discPerformer = "Klaus Schulze";
	tocPtr->discTitle = "En=Trance";
#     if !defined(SKIPSONGS_Klaus_Schulze)
	SET_CDtt( 1, 18.59, "En=Trance");
	SET_CDtt( 2, 16.32, "a-Numerique");
	SET_CDtt( 3, 17.31, "Fm Delight");
	SET_CDtt( 4, 17.47, "Velvet System");
#     endif
	}
    if ( cdKey == KSCH_DOMEEVENT ) { /* 1:14:18-00 */
	tocPtr->discPerformer = "Klaus Schulze";
	tocPtr->discTitle = "The Dome Event";
#     if !defined(SKIPSONGS_Klaus_Schulze)
	SET_CDtt( 1, 63.32, "The Dome Event");
	SET_CDtt( 2, 10.44, "After Eleven");
#     endif
	}
    if ( cdKey == KSCH_DRESDEN_D1 ) { /* 1:13:24-23 */
	tocPtr->discPerformer = "Klaus Schulze";
	tocPtr->discTitle = "The Dresden Performance  [disc 1]";
#     if !defined(SKIPSONGS_Klaus_Schulze)
	SET_CDtt( 1, 44.25, "Dresden One");
	SET_CDtt( 2, 10.26, "Dresden Three");
	SET_CDtt( 3, 18.31, "Dresden Five");
#     endif
	}
    if ( cdKey == KSCH_DRESDEN_D2 ) { /* 1:08:50-70 */
	tocPtr->discPerformer = "Klaus Schulze";
	tocPtr->discTitle = "The Dresden Performance  [disc 2]";
#     if !defined(SKIPSONGS_Klaus_Schulze)
	SET_CDtt( 1, 46.50, "Dresden Two");
	SET_CDtt( 2, 21.58, "Dresden Four");
#     endif
	}
    if ( cdKey == SOFTW_SYNCODE ) { /* 0:55:47-00 */
	tocPtr->discPerformer = "Software";
	tocPtr->discTitle = "Syn-Code";
	/*
	 *	index 1.1 started 0:00:02-04 into CD
	 *	index 1.2 started 0:02:04-08 into CD, 0:02:02 into the song
	 *	index 1.3 started 0:05:46-12 into CD, 0:05:44 into the song
	 *	index 1.4 started 0:12:06-17 into CD, 0:12:04 into the song
	 *	index 1.5 started 0:14:01-18 into CD, 0:13:59 into the song
	 *	index 1.6 started 0:17:00-21 into CD, 0:16:58 into the song
	 *	index 2.1 started 0:22:58-26 into CD
	 *	index 2.2 started 0:29:46-31 into CD, 0:06:48 into the song
	 *	index 2.3 started 0:35:18-36 into CD, 0:12:20 into the song
	 *	index 2.4 started 0:39:31-02 into CD, 0:16:33 into the song
	 *	index 2.5 started 0:42:16-04 into CD, 0:19:18 into the song
	 *	index 3.0 started 0:46:17-07 into CD, -00:02 before the song
	 *	index 3.1 started 0:46:20-07 into CD
	 */
	SET_CDtt( 1, 22.56, "Syn-Code-A");		/* index = 6 */
	SET_CDtt( 2, 23.22, "Syn±Code±Z");		/* index = 5 */
	SET_CDtt( 3, 09.27, "Syn±Code±Sunset");
	}
    if ( cdKey == TDREAM_GREENDES_SEQ ) { /* 0:38:35-40 */
	tocPtr->discPerformer = "Tangerine Dream";
	tocPtr->discTitle = "Green Desert";
#     if !defined(SKIPSONGS_Tangerine_Dream)
	SET_CDtt( 1, 19.29, "Green Desert");
	SET_CDtt( 2, 05.03, "White Clouds");
	SET_CDtt( 3, 07.07, "Astral Voyager");
	SET_CDtt( 4, 06.54, "Indian Summer");
#     endif
	}
    if ( cdKey == TDREAM_ENCORE ) { /* 1:11:00-45 */
	tocPtr->discPerformer = "Tangerine Dream";
	tocPtr->discTitle = "Encore";
#     if !defined(SKIPSONGS_Tangerine_Dream)
	SET_CDtt( 1, 16.07, "Cherokee Lane");
	SET_CDtt( 2, 19.37, "Moonlight");
	SET_CDtt( 3, 17.41, "Coldwater Canyon");
	SET_CDtt( 4, 17.33, "Desert Dream");
#     endif
	}
    if ( cdKey == TDREAM_ENCORE_DE ) { /* 1:11:17-67 */
	tocPtr->discPerformer = "Tangerine Dream";
	tocPtr->discTitle = "Encore - Live 1977  [definitive edition]";
	/*
	 *	index 1.1 started 0:00:02-28 into CD, 0:00:00 into the song
	 *	index 1.2 started 0:03:43-65 into CD, 0:03:41 into the song
	 *	index 1.3 started 0:12:01-64 into CD, 0:11:59 into the song
	 *	index 2.1 started 0:16:25-26 into CD, 0:00:00 into the song
	 *	index 2.2 started 0:20:37-26 into CD, 0:04:12 into the song
	 *	index 2.3 started 0:24:05-25 into CD, 0:07:40 into the song
	 *	index 2.4 started 0:28:57-25 into CD, 0:12:32 into the song
	 *	index 2.5 started 0:33:14-24 into CD, 0:16:49 into the song
	 *	index 3.1 started 0:36:01-24 into CD, 0:00:00 into the song
	 *	index 3.2 started 0:45:43-61 into CD, 0:09:42 into the song
	 *	index 4.1 started 0:53:41-22 into CD, 0:00:00 into the song
	 *	index 4.2 started 0:58:28-22 into CD, 0:04:47 into the song
	 *	index 4.3 started 1:02:31-59 into CD, 0:08:50 into the song
	 *	index 4.4 started 1:05:48-59 into CD, 0:12:07 into the song
	 *	index 4.5 started 1:08:00-21 into CD, 0:14:19 into the song
	 */
#     if !defined(SKIPSONGS_Tangerine_Dream)
	SET_CDtt( 1, 16.22, "Cherokee Lane");
	SET_CDtt( 2, 19.37, "Moonlight");
	SET_CDtt( 3, 17.40, "Coldwater Canyon");
	SET_CDtt( 4, 17.36, "Desert Dream");
#     endif
	}
    if ( cdKey == TDREAM_WHITE ) { /* 0:38:37-15 */
	tocPtr->discPerformer = "Tangerine Dream";
	tocPtr->discTitle = "White Eagle";
#     if !defined(SKIPSONGS_Tangerine_Dream)
	SET_CDtt( 1, 20.13, "Mojave Plan");
	SET_CDtt( 2, 04.02, "Midnight in Tula");
	SET_CDtt( 3, 09.42, "Convention of the 24");
	SET_CDtt( 4, 04.38, "White Eagle");
#     endif
	}
    if ( cdKey == TDREAM_WHITE_DE ) { /* 0:38:23-25 */
	tocPtr->discPerformer = "Tangerine Dream";
	tocPtr->discTitle = "White Eagle  [definitive edition]";
#     if !defined(SKIPSONGS_Tangerine_Dream)
	SET_CDtt( 1, 20.08, "Mojave Plan");		/* index=4 */
	SET_CDtt( 2, 04.01, "Midnight in Tula");
	SET_CDtt( 3, 09.37, "Convention of the 24");
	SET_CDtt( 4, 04.35, "White Eagle");
#     endif
	}
    if ( cdKey == TDREAM_LOGOS ) { /* 0:51:12-02 */
	tocPtr->discPerformer = "Tangerine Dream";
	tocPtr->discTitle = "Logos - Live";
#     if !defined(SKIPSONGS_Tangerine_Dream)
	SET_CDtt( 1, 25.43, "Logos - Part One");
	SET_CDtt( 2, 19.38, "Logos - Part Two");
	SET_CDtt( 3, 05.49, "Dominion");
#     endif
	}
    if ( cdKey == TDREAM_LOGOS_DE ) { /* 0:50:53-07 */
	tocPtr->discPerformer = "Tangerine Dream";
	tocPtr->discTitle = "Logos - Live 1982  [definitive edition]";
#     if !defined(SKIPSONGS_Tangerine_Dream)
	SET_CDtt( 1, 45.06, "Logos");
	SET_CDtt( 2, 05.45, "Dominion");
#     endif
	}
    if ( cdKey == TDREAM_HYPERB ) { /* 0:42:04-25 */
	tocPtr->discPerformer = "Tangerine Dream";
	tocPtr->discTitle = "Hyperborea";
#     if !defined(SKIPSONGS_Tangerine_Dream)
	SET_CDtt( 1, 09.16, "No Man's Land");
	SET_CDtt( 2, 08.46, "Hyperborea");
	SET_CDtt( 3, 04.04, "Cinnamon Road");
	SET_CDtt( 4, 19.56, "Sphinx Lightning");
#     endif
	}
    if ( cdKey == TDREAM_HYPERB_DE ) { /* 0:41:44-62 */
	tocPtr->discPerformer = "Tangerine Dream";
	tocPtr->discTitle = "Hyperborea  [definitive edition]";
#     if !defined(SKIPSONGS_Tangerine_Dream)
	SET_CDtt( 1, 09.11, "No Man's Land");
	SET_CDtt( 2, 08.41, "Hyperborea");
	SET_CDtt( 3, 03.59, "Cinnamon Road");
	SET_CDtt( 4, 19.51, "Sphinx Lightning");	/* index=5 */
#     endif
	}
    if ( cdKey == TDREAM_POLAND_SEQ ) { /* 1:17:06-27 */
	tocPtr->discPerformer = "Tangerine Dream";
	tocPtr->discTitle = "Poland  [sequel]";
#     if !defined(SKIPSONGS_Tangerine_Dream)
	SET_CDtt( 1, 22.26, "Poland");
	SET_CDtt( 2, 19.55, "Tangent");
	SET_CDtt( 3, 13.53, "Barbakane");
	SET_CDtt( 4, 20.50, "Horizon");
#     endif
	}
    if ( cdKey == TDREAM_PERGAMON_CAR ) { /* 0:46:17-00 */
	tocPtr->discPerformer = "Tangerine Dream";
	tocPtr->discTitle = "Pergamon: Live at the »Palast Der Republic« GDR";
#     if !defined(SKIPSONGS_Tangerine_Dream)
	SET_CDtt( 1, 23.23, "Quichotte Part I");
	SET_CDtt( 2, 22.53, "Quichotte Part II");
#     endif
	}
    if ( cdKey == TDREAM_PERGAMON_REL ) { /* 0:46:09-20 */
	tocPtr->discPerformer = "Tangerine Dream";
	tocPtr->discTitle = "Pergamon ± Live at the »Palast Der Republic« GDR  [Relativity]";
#     if !defined(SKIPSONGS_Tangerine_Dream)
	SET_CDtt( 1, 23.17, "Quichotte Part I");
	SET_CDtt( 2, 22.50, "Quichotte Part II");
#     endif
	}
    if ( cdKey == TDREAM_PERGAMON_SEQ ) { /* 0:46:09-25 */
	tocPtr->discPerformer = "Tangerine Dream";
	tocPtr->discTitle = "Pergamon ± Live at the »Palast Der Republic« GDR  [sequel]";
#     if !defined(SKIPSONGS_Tangerine_Dream)
	SET_CDtt( 1, 23.20, "Quichotte Part I");
	SET_CDtt( 2, 22.47, "Quichotte Part II");
#     endif
	}
    if ( cdKey == TDREAM_LIVEMILES_SEQ ) { /* 0:57:05-55 */
	tocPtr->discPerformer = "Tangerine Dream";
	tocPtr->discTitle = "Live Miles  [sequel]";
#     if !defined(SKIPSONGS_Tangerine_Dream)
	SET_CDtt( 1, 29.54, "Livemiles I (Albuquerque Concert)");
	SET_CDtt( 2, 27.09, "Livemiles II (Berlin Concert)");
#     endif
	}
    if ( cdKey == U2_WIDEAWAKEINAMERICA ) { /* 0:20:46-15 */
	tocPtr->discPerformer = "U2";
	tocPtr->discTitle = "Wide Awake in America";
	tocPtr->discCatNum = "007567902792400";
#     if !defined(SKIPSONGS_U2)
	SET_CDtt( 1, 08.03, "Bad  [live]");
	SET_CDtt( 2, 04.05, "A Sort of Homecoming  [live]");
	SET_CDtt( 3, 03.50, "Three Sunrises");
	SET_CDtt( 4, 04.46, "Love Comes Tumbling");
#     endif
	}
    if ( cdKey == VAPO_GRAVITATIONAL ) { /* 0:41:06-13 */
	tocPtr->discPerformer = "Vapourspace";
	tocPtr->discTitle = "Gravitational Arch of 10";
	SET_CDtt( 1, 35.07, "Magnetic Gravity Arc Suite");
	SET_CDtt( 2, 05.57, "Gravitational Arch of 10  [radio/video edit]");
	}
    return self;
}


- (u_int) indexKey:(struct cd_toc *)tocPtr
{
    /* the objective for the key is to come up with a number that is
       less than a signed integer, and yet is likely to be fairly
       unique over all music CD's (note that alternate pressings of
       the same title make it almost impossible to come up with a
       truly unique key).
       
       key is based on hours, minutes, seconds, frames, the number
       of tracks on the CD, and the elapsed time of the first track
       on the CD.  That shouldn't produce too many duplicates.
    */
    u_int	calculatedKey;

    calculatedKey = tocPtr->info[100].elapsedSec;
    calculatedKey = (calculatedKey * 75) + tocPtr->info[100].frame;
    calculatedKey = (calculatedKey * 32) + (tocPtr->lasttrack % 32);
    calculatedKey = (calculatedKey * 150) + (tocPtr->info[1].elapsedSec % 150);

    return calculatedKey;
}


@end

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.