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>