OSErr PPMADInfoFile( char *AlienFile, PPInfoRec *InfoRec) { MADSpec *theMAD; long fileSize; short fileID; theMAD = (MADSpec*) NewPtr( sizeof( MADSpec) + 200); fileID = iFileOpen( AlienFile); if( !fileID) { DisposePtr( (Ptr) theMAD); return -1; } fileSize = iGetEOF( fileID); iRead( sizeof( MADSpec), (Ptr) theMAD, fileID); iClose( fileID); strcpy( InfoRec->internalFileName, theMAD->name); InfoRec->totalPatterns = theMAD->numPat; InfoRec->partitionLength = theMAD->numPointers; InfoRec->totalTracks = theMAD->numChn; InfoRec->signature = 'MADK'; strcpy( InfoRec->formatDescription, "MADK"); InfoRec->totalInstruments = theMAD->numInstru; InfoRec->fileSize = fileSize; DisposePtr( (Ptr) theMAD); theMAD = NULL; return noErr; }
OSErr PPIdentifyFile( MADLibrary *inMADDriver, char *type, char *AlienFile) { UNFILE refNum; short i; PPInfoRec InfoRec; OSErr iErr = noErr; strcpy( type, "!!!!"); // Check if we have access to this file refNum = iFileOpen( AlienFile); if( !refNum) return -1; else { if( iGetEOF( refNum) < 100) iErr = -36; iClose( refNum); if( iErr) return iErr; } // Is it a MAD file? iErr = CheckMADFile( AlienFile); if( iErr == noErr) { strcpy( type, "MADK"); return noErr; } for( i = 0; i < inMADDriver->TotalPlug; i++) { if( CallImportPlug( inMADDriver, i, 'TEST', AlienFile, NULL, &InfoRec) == noErr) { strcpy( type, inMADDriver->ThePlug[ i].type); return noErr; } } strcpy( type, "!!!!"); return MADCannotFindPlug; }
MADErr PPIdentifyFile(MADLibrary *inMADDriver, char *type, char *AlienFile) { UNFILE refNum; int i; MADInfoRec InfoRec; MADErr iErr = MADNoErr; strcpy(type, "!!!!"); // Check if we have access to this file refNum = iFileOpenRead(AlienFile); if (!refNum) return MADReadingErr; else { if (iGetEOF(refNum) < 100) iErr = MADIncompatibleFile; iClose(refNum); if (iErr) return iErr; } // Is it a MAD file? iErr = CheckMADFile(AlienFile); if (iErr == MADNoErr) { strcpy(type, "MADK"); return MADNoErr; } for (i = 0; i < inMADDriver->TotalPlug; i++) { if (CallImportPlug(inMADDriver, i, MADPlugTest, AlienFile, NULL, &InfoRec) == MADNoErr) { strcpy(type, inMADDriver->ThePlug[i].type); return MADNoErr; } } strcpy(type, "!!!!"); return MADCannotFindPlug; }
MADErr PPMADInfoFile(const char *AlienFile, MADInfoRec *InfoRec) { MADSpec *theMAD; long fileSize; UNFILE fileID; MADErr MADCheck; if ((MADCheck = CheckMADFile(AlienFile)) != MADNoErr) { return MADCheck; } theMAD = (MADSpec*)malloc(sizeof(MADSpec) + 200); fileID = iFileOpenRead(AlienFile); if (!fileID) { free(theMAD); return MADReadingErr; } fileSize = iGetEOF(fileID); iRead(sizeof(MADSpec), theMAD, fileID); iClose(fileID); strcpy(InfoRec->internalFileName, theMAD->name); InfoRec->totalPatterns = theMAD->numPat; InfoRec->partitionLength = theMAD->numPointers; InfoRec->totalTracks = theMAD->numChn; InfoRec->signature = 'MADK'; strcpy(InfoRec->formatDescription, "MADK"); InfoRec->totalInstruments = theMAD->numInstru; InfoRec->fileSize = fileSize; free(theMAD); theMAD = NULL; return MADNoErr; }
extern MADErr PPImpExpMain(MADFourChar order, char* AlienFileName, MADMusic *MadFile, MADInfoRec *info, MADDriverSettings *init) #endif { MADErr myErr = MADNoErr; void* AlienFile; UNFILE iFileRefI; long sndSize; switch (order) { case MADPlugImport: iFileRefI = iFileOpenRead(AlienFileName); if (iFileRefI) { sndSize = iGetEOF(iFileRefI); // ** MEMORY Test AlienFile = malloc(sndSize); if (AlienFile == NULL) { myErr = MADNeedMemory; } else { myErr = iRead(sndSize, AlienFile, iFileRefI); if (myErr == MADNoErr) { myErr = TestoldMADFile(AlienFile); if (myErr == MADNoErr) { myErr = MADFG2Mad(AlienFile, sndSize, MadFile, init); } } free(AlienFile); AlienFile = NULL; } iClose(iFileRefI); } else myErr = MADReadingErr; break; case MADPlugTest: iFileRefI = iFileOpenRead(AlienFileName); if (iFileRefI) { sndSize = 5000; // Read only 5000 first bytes for optimisation AlienFile = malloc(sndSize); if (AlienFile == NULL) { myErr = MADNeedMemory; } else { myErr = iRead(sndSize, AlienFile, iFileRefI); if(myErr == MADNoErr) myErr = TestoldMADFile(AlienFile); free(AlienFile); AlienFile = NULL; } iClose(iFileRefI); } else myErr = MADReadingErr; break; case MADPlugInfo: iFileRefI = iFileOpenRead(AlienFileName); if (iFileRefI) { info->fileSize = iGetEOF(iFileRefI); sndSize = 5000; // Read only 5000 first bytes for optimisation AlienFile = malloc(sndSize); if (AlienFile == NULL) { myErr = MADNeedMemory; } else { myErr = iRead(sndSize, AlienFile, iFileRefI); if (myErr == MADNoErr) { myErr = ExtractoldMADInfo(info, AlienFile); } free(AlienFile); AlienFile = NULL; } iClose(iFileRefI); } else myErr = MADReadingErr; break; default: myErr = MADOrderNotImplemented; break; } return myErr; }
extern MADErr PPImpExpMain(MADFourChar order, char *AlienFileName, MADMusic *MadFile, PPInfoRec *info, MADDriverSettings *init) { OSErr myErr = noErr; Ptr AlienFile; UNFILE iFileRefI; long sndSize; switch(order) { case MADPlugImport: iFileRefI = iFileOpenRead(AlienFileName); if (iFileRefI) { sndSize =iGetEOF(iFileRefI); // ** MEMORY Test Start AlienFile = malloc(sndSize * 2L); if (AlienFile == NULL) myErr = MADNeedMemory; // ** MEMORY Test End else { free(AlienFile); AlienFile = malloc(sndSize); myErr = iRead(sndSize, AlienFile, iFileRefI); if (myErr == noErr) { myErr = TestMIDIFile(AlienFile); if (myErr == noErr) ConvertMidiFile(AlienFile, MadFile, init); free(AlienFile); AlienFile = NULL; } iClose(iFileRefI); } } else myErr = MADReadingErr; break; case MADPlugTest: iFileRefI = iFileOpenRead(AlienFileName); if (iFileRefI) { sndSize = 1024L; AlienFile = malloc(sndSize); if (AlienFile == NULL) myErr = MADNeedMemory; else { myErr = iRead(sndSize, AlienFile, iFileRefI); if(myErr == noErr) myErr = TestMIDIFile(AlienFile); free(AlienFile); AlienFile = NULL; } iClose(iFileRefI); } else myErr = MADReadingErr; break; case 'INFO': iFileRefI = iFileOpenRead(AlienFileName); if (iFileRefI) { info->fileSize = iGetEOF(iFileRefI); sndSize = 5000L; // Read only 5000 first bytes for optimisation AlienFile = malloc(sndSize); if (AlienFile == NULL) myErr = MADNeedMemory; else { myErr = iRead(sndSize, AlienFile, iFileRefI); if(myErr == noErr) myErr = ExtractMIDIInfo(info, AlienFile); free(AlienFile); AlienFile = NULL; } iClose(iFileRefI); } else myErr = MADReadingErr; break; default: myErr = MADOrderNotImplemented; break; } return myErr; }
OSErr mainULT( OSType order, Ptr AlienFileName, MADMusic *MadFile, PPInfoRec *info, MADDriverSettings *init) { OSErr myErr = noErr; Ptr AlienFile; UNFILE iFileRefI; long sndSize; switch( order) { case 'IMPL': iFileRefI = iFileOpen(AlienFileName); if( iFileRefI) { sndSize = iGetEOF( iFileRefI); // ** MEMORY Test Start AlienFile = MADPlugNewPtr( sndSize * 2, init); if( AlienFile == NULL) myErr = MADNeedMemory; // ** MEMORY Test End else { DisposePtr( AlienFile); AlienFile = MADPlugNewPtr( sndSize, init); if( AlienFile == NULL) myErr = MADNeedMemory; else { myErr = iRead(sndSize, AlienFile, iFileRefI); if( myErr == noErr) { myErr = TestULTFile( AlienFile); if( myErr == noErr) { myErr = ConvertULT2Mad( AlienFile, GetPtrSize( AlienFile), MadFile, init); } } } DisposePtr( AlienFile); AlienFile = NULL; } iClose( iFileRefI); } else myErr = MADReadingErr; break; case 'TEST': iFileRefI = iFileOpen(AlienFileName); if( iFileRefI) { sndSize = 1024L; AlienFile = MADPlugNewPtr( sndSize, init); if( AlienFile == NULL) myErr = MADNeedMemory; else { myErr = iRead(sndSize, AlienFile, iFileRefI); if (myErr == noErr) myErr = TestULTFile( AlienFile); DisposePtr( AlienFile); AlienFile = NULL; } iClose( iFileRefI); } else myErr = MADReadingErr; break; case 'INFO': iFileRefI = iFileOpen(AlienFileName); if( iFileRefI) { info->fileSize = iGetEOF( iFileRefI); sndSize = 5000L; // Read only 5000 first bytes for optimisation AlienFile = MADPlugNewPtr( sndSize, init); if( AlienFile == NULL) myErr = MADNeedMemory; else { myErr = iRead(sndSize, AlienFile, iFileRefI); if( myErr == noErr) { myErr = ExtractULTInfo( info, AlienFile); } DisposePtr( AlienFile); AlienFile = NULL; } iClose( iFileRefI); } else myErr = MADReadingErr; break; default: myErr = MADOrderNotImplemented; break; } return myErr; }
extern MADErr PPImpExpMain(MADFourChar order, char* AlienFileName, MADMusic *MadFile, MADInfoRec *info, MADDriverSettings *init) #endif { MADErr myErr = MADNoErr; void* AlienFile; long sndSize; UNFILE iFileRefI; switch (order) { case MADPlugImport: iFileRefI = iFileOpenRead(AlienFileName); if (iFileRefI) { sndSize = iGetEOF(iFileRefI); AlienFile = malloc(sndSize); if (AlienFile == NULL) { myErr = MADNeedMemory; } else { myErr = iRead(sndSize, AlienFile, iFileRefI); if (myErr == MADNoErr) { myErr = TestOKTAFile(AlienFile); if (myErr == MADNoErr) { myErr = ConvertOKTA2Mad(AlienFile, sndSize, MadFile, init); } } free(AlienFile); AlienFile = NULL; } iClose(iFileRefI); } else myErr = MADReadingErr; break; case MADPlugTest: iFileRefI = iFileOpenRead(AlienFileName); if (iFileRefI) { sndSize = 1024; AlienFile = malloc(sndSize); if (AlienFile == NULL) myErr = MADNeedMemory; else { myErr = iRead(sndSize, AlienFile, iFileRefI); if(myErr == MADNoErr) myErr = TestOKTAFile(AlienFile); free(AlienFile); AlienFile = NULL; } iClose(iFileRefI); } else myErr = MADReadingErr; break; case MADPlugInfo: iFileRefI = iFileOpenRead(AlienFileName); if (iFileRefI) { info->fileSize = iGetEOF(iFileRefI); sndSize = info->fileSize; AlienFile = malloc(sndSize); if (AlienFile == NULL) myErr = MADNeedMemory; else { myErr = iRead(sndSize, AlienFile, iFileRefI); if (myErr == MADNoErr) { myErr = ExtractOKTAInfo(info, AlienFile, sndSize); } free(AlienFile); AlienFile = NULL; } iClose(iFileRefI); } else myErr = MADReadingErr; break; default: myErr = MADOrderNotImplemented; break; } return myErr; }