Mercurial > hg > audiodb
changeset 700:54974e8a6b87
Separated out import process - now generates VAMP config for each audio file as preparation for sample rate/hop size alterations.
author | mas01mj |
---|---|
date | Thu, 29 Apr 2010 16:36:07 +0000 |
parents | 9a7d829bc492 |
children | e21abbac820e |
files | examples/iAudioDB/AppController.h examples/iAudioDB/AppController.m examples/iAudioDB/English.lproj/MainMenu.xib |
diffstat | 3 files changed, 81 insertions(+), 30 deletions(-) [+] |
line wrap: on
line diff
--- a/examples/iAudioDB/AppController.h Wed Apr 28 15:48:59 2010 +0000 +++ b/examples/iAudioDB/AppController.h Thu Apr 29 16:36:07 2010 +0000 @@ -52,7 +52,6 @@ IBOutlet id querySheet; IBOutlet NSMatrix* extractorOptions; - IBOutlet NSTextField* windowSizeField; IBOutlet NSTextField* hopSizeField; IBOutlet NSTextField* maxTracksField; IBOutlet NSTextField* maxLengthField; @@ -64,16 +63,6 @@ NSMutableArray* results; NSDictionary* trackMap; NSDictionary* dbState; - - // Query param fields - - /* To Come - IBOutlet id queryType; - IBOutlet NSTextField* queryStartField; - IBOutlet id queryTypeOptions; - IBOutlet NSTextField* queryLengthField; - IBOutlet NSTextField* queryRadiusField; - IBOutlet NSButtonCell* exhaustiveField;*/ } // Menus @@ -105,7 +94,8 @@ -(void)reset; -(void)updateStatus; -- (BOOL)validateUserInterfaceItem:(id <NSValidatedUserInterfaceItem>)anItem; -- (void)sound:(NSSound *)sound didFinishPlaying:(BOOL)playbackSuccessful; +-(BOOL)validateUserInterfaceItem:(id <NSValidatedUserInterfaceItem>)anItem; +-(void)sound:(NSSound *)sound didFinishPlaying:(BOOL)playbackSuccessful; +-(void)importFile:(NSString *)filename withExtractorConfig:(NSString *)extractorPath; @end
--- a/examples/iAudioDB/AppController.m Wed Apr 28 15:48:59 2010 +0000 +++ b/examples/iAudioDB/AppController.m Thu Apr 29 16:36:07 2010 +0000 @@ -114,7 +114,6 @@ [dbState setValue:trackMap forKey:@"tracks"]; [dbState setValue:extractor forKey:@"extractor"]; [dbState setValue:[hopSizeField stringValue] forKey:@"hopsize"]; - [dbState setValue:[windowSizeField stringValue] forKey:@"windowsize"]; [dbState writeToFile:plistFilename atomically:YES]; [queryKey setStringValue:@"None Selected"]; @@ -143,15 +142,8 @@ if(selectedKey) { - NSLog(@"Released selected key: %@", selectedKey); [selectedKey release]; selectedKey = Nil; - NSLog(@"Is now %@", selectedKey); - } - - if(selectedKey) - { - NSLog(@"Still evals"); } // Reset query flags @@ -232,12 +224,11 @@ adb_status_t *status = (adb_status_t *)malloc(sizeof(adb_status_t)); int flags; flags = audiodb_status(db, status); - [statusField setStringValue: [NSString stringWithFormat:@"%@ Dim: %d Files: %d Hop: %@ Win: %@ Ext: %@", + [statusField setStringValue: [NSString stringWithFormat:@"%@ Dim: %d Files: %d Hop: %@ Ext: %@", dbName, status->dim, status->numFiles, [dbState objectForKey:@"hopsize"], - [dbState objectForKey:@"windowsize"], [dbState objectForKey:@"extractor"]]]; [performQueryButton setEnabled:YES]; [importAudioButton setEnabled:YES]; @@ -253,6 +244,59 @@ } } +-(void)importFile:(NSString *)filename withExtractorConfig:(NSString *)extractorPath +{ + // Create the extractor configuration + + NSString* extractorContent = [NSString stringWithContentsOfFile:extractorPath]; + NSString* hopStr = [dbState objectForKey:@"hopsize"]; + NSString* newContent = [[extractorContent stringByReplacingOccurrencesOfString:@"HOP_SIZE" withString:hopStr] + stringByReplacingOccurrencesOfString:@"WINDOW_SIZE" withString:[NSString stringWithFormat:@"%d", [hopStr intValue] * 8]]; + NSString* n3FileName = [NSTemporaryDirectory() stringByAppendingPathComponent:@"extractor_config.n3"]; + NSLog(extractorContent); + NSLog(newContent); + + NSError* error; + [newContent writeToFile:n3FileName atomically:YES encoding:NSASCIIStringEncoding error:&error]; + + // Create the temp file for the extracted features + NSString* tempFileTemplate = [NSTemporaryDirectory() stringByAppendingPathComponent:@"features.XXXXXX"]; + const char* tempFileTemplateCString = [tempFileTemplate fileSystemRepresentation]; + char* tempFileNameCString = (char *)malloc(strlen(tempFileTemplateCString) + 1); + strcpy(tempFileNameCString, tempFileTemplateCString); + mktemp(tempFileNameCString); + + NSString* featuresFileName = [[NSFileManager defaultManager] stringWithFileSystemRepresentation:tempFileNameCString length:strlen(tempFileNameCString)]; + free(tempFileNameCString); + + // Extract features with sonic-annotator + NSTask* task = [[NSTask alloc] init]; + [task setLaunchPath:@"/usr/local/bin/sonic-annotator"]; + NSArray* args; + args = [NSArray arrayWithObjects:@"-t", n3FileName, @"-w", @"rdf", @"-r", @"--rdf-network", @"--rdf-one-file", featuresFileName, @"--rdf-force", filename, nil]; + [task setArguments:args]; + [task launch]; + [task waitUntilExit]; + [task release]; + + // Populate the audioDB instance + NSTask* importTask = [[NSTask alloc] init]; + [importTask setLaunchPath:@"/usr/local/bin/populate"]; + args = [NSArray arrayWithObjects:featuresFileName, dbFilename, nil]; + [importTask setArguments:args]; + [importTask launch]; + [importTask waitUntilExit]; + [importTask release]; + + NSString* val = [filename retain]; + NSString* key = [[filename lastPathComponent] retain]; + + // Update the plist store. + [trackMap setValue:val forKey:key]; + [dbState writeToFile:plistFilename atomically: YES]; + +} + /** * Choose the file(s) to be imported. * TODO: Currently handles the import process too - split this off. @@ -280,7 +324,7 @@ // TODO Shift this process into a separate function. // Create the customized extractor config - NSString* extractorContent = [NSString stringWithContentsOfFile:extractorPath]; +/* NSString* extractorContent = [NSString stringWithContentsOfFile:extractorPath]; NSString* hopStr = [dbState objectForKey:@"hopsize"]; NSString* winStr = [dbState objectForKey:@"windowsize"]; NSString* newContent = [[extractorContent stringByReplacingOccurrencesOfString:@"HOP_SIZE" withString:hopStr] @@ -289,11 +333,16 @@ NSError* error; [newContent writeToFile:n3FileName atomically:YES encoding:NSASCIIStringEncoding error:&error]; - +*/ for(int i=0; i<[filesToOpen count]; i++) { audiodb_close(db); - NSString* tempFileTemplate = [NSTemporaryDirectory() stringByAppendingPathComponent:@"features.XXXXXX"]; + + // Get the sample rate for the audio file + + [self importFile:[filesToOpen objectAtIndex:i] withExtractorConfig:extractorPath]; + + /* NSString* tempFileTemplate = [NSTemporaryDirectory() stringByAppendingPathComponent:@"features.XXXXXX"]; const char* tempFileTemplateCString = [tempFileTemplate fileSystemRepresentation]; char* tempFileNameCString = (char *)malloc(strlen(tempFileTemplateCString) + 1); strcpy(tempFileNameCString, tempFileTemplateCString); @@ -326,7 +375,7 @@ // Update the plist store. [trackMap setValue:val forKey:key]; [dbState writeToFile:plistFilename atomically: YES]; - + */ db = audiodb_open([dbFilename cStringUsingEncoding:NSUTF8StringEncoding], O_RDONLY); [self updateStatus];
--- a/examples/iAudioDB/English.lproj/MainMenu.xib Wed Apr 28 15:48:59 2010 +0000 +++ b/examples/iAudioDB/English.lproj/MainMenu.xib Thu Apr 29 16:36:07 2010 +0000 @@ -10,7 +10,6 @@ <bool key="EncodedWithXMLCoder">YES</bool> <integer value="371"/> <integer value="793"/> - <integer value="565"/> <integer value="57"/> <integer value="779"/> </object> @@ -916,6 +915,7 @@ <int key="NSvFlags">268</int> <string key="NSFrame">{{20, 155}, {176, 86}}</string> <reference key="NSSuperview" ref="108412374"/> + <reference key="NSWindow"/> <bool key="NSEnabled">YES</bool> <int key="NSNumRows">4</int> <int key="NSNumCols">1</int> @@ -1201,6 +1201,7 @@ <int key="NSvFlags">268</int> <string key="NSFrame">{{17, 249}, {123, 17}}</string> <reference key="NSSuperview" ref="108412374"/> + <reference key="NSWindow"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="207653454"> <int key="NSCellFlags">68288064</int> @@ -1217,6 +1218,7 @@ <int key="NSvFlags">268</int> <string key="NSFrame">{{99, 12}, {96, 32}}</string> <reference key="NSSuperview" ref="108412374"/> + <reference key="NSWindow"/> <bool key="NSEnabled">YES</bool> <object class="NSButtonCell" key="NSCell" id="614327950"> <int key="NSCellFlags">-2080244224</int> @@ -1237,6 +1239,7 @@ <int key="NSvFlags">268</int> <string key="NSFrame">{{195, 12}, {96, 32}}</string> <reference key="NSSuperview" ref="108412374"/> + <reference key="NSWindow"/> <bool key="NSEnabled">YES</bool> <object class="NSButtonCell" key="NSCell" id="171111105"> <int key="NSCellFlags">-2080244224</int> @@ -1257,6 +1260,7 @@ <int key="NSvFlags">268</int> <string key="NSFrame">{{198, 249}, {117, 17}}</string> <reference key="NSSuperview" ref="108412374"/> + <reference key="NSWindow"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="901184140"> <int key="NSCellFlags">68288064</int> @@ -1273,6 +1277,7 @@ <int key="NSvFlags">268</int> <string key="NSFrame">{{201, 219}, {84, 22}}</string> <reference key="NSSuperview" ref="108412374"/> + <reference key="NSWindow"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="326075270"> <int key="NSCellFlags">-1804468671</int> @@ -1290,11 +1295,12 @@ <int key="NSvFlags">268</int> <string key="NSFrame">{{198, 194}, {182, 17}}</string> <reference key="NSSuperview" ref="108412374"/> + <reference key="NSWindow"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="586208572"> <int key="NSCellFlags">68288064</int> <int key="NSCellFlags2">272630784</int> - <string key="NSContents">Max Length:</string> + <string key="NSContents">Max Length (s):</string> <reference key="NSSupport" ref="294883811"/> <reference key="NSControlView" ref="100300330"/> <reference key="NSBackgroundColor" ref="907238901"/> @@ -1306,6 +1312,7 @@ <int key="NSvFlags">268</int> <string key="NSFrame">{{201, 164}, {84, 22}}</string> <reference key="NSSuperview" ref="108412374"/> + <reference key="NSWindow"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="232388524"> <int key="NSCellFlags">-1804468671</int> @@ -1323,11 +1330,12 @@ <int key="NSvFlags">268</int> <string key="NSFrame">{{198, 139}, {182, 17}}</string> <reference key="NSSuperview" ref="108412374"/> + <reference key="NSWindow"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="408521227"> <int key="NSCellFlags">68288064</int> <int key="NSCellFlags2">272630784</int> - <string key="NSContents">Hop Size:</string> + <string key="NSContents">Slice Size (s):</string> <reference key="NSSupport" ref="294883811"/> <reference key="NSControlView" ref="306492447"/> <reference key="NSBackgroundColor" ref="907238901"/> @@ -1339,6 +1347,7 @@ <int key="NSvFlags">268</int> <string key="NSFrame">{{201, 109}, {84, 22}}</string> <reference key="NSSuperview" ref="108412374"/> + <reference key="NSWindow"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="552683571"> <int key="NSCellFlags">-1804468671</int> @@ -1356,6 +1365,7 @@ <int key="NSvFlags">268</int> <string key="NSFrame">{{198, 84}, {182, 17}}</string> <reference key="NSSuperview" ref="108412374"/> + <reference key="NSWindow"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="723611735"> <int key="NSCellFlags">68288064</int> @@ -1372,6 +1382,7 @@ <int key="NSvFlags">268</int> <string key="NSFrame">{{201, 54}, {84, 22}}</string> <reference key="NSSuperview" ref="108412374"/> + <reference key="NSWindow"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="849074580"> <int key="NSCellFlags">-1804468671</int> @@ -1387,6 +1398,7 @@ </object> <string key="NSFrameSize">{305, 281}</string> <reference key="NSSuperview"/> + <reference key="NSWindow"/> </object> <string key="NSScreenRect">{{0, 0}, {1280, 1002}}</string> <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>