changeset 680:15e71890b584

* Switched over to using sonic-annotator extraction * Uses populate for import
author mas01mj
date Fri, 05 Mar 2010 16:17:09 +0000
parents 047415d1805e
children 096feb57c7d6
files examples/iAudioDB/AppController.m examples/iAudioDB/English.lproj/MainMenu.xib examples/iAudioDB/iAudioDB.xcodeproj/project.pbxproj
diffstat 3 files changed, 85 insertions(+), 70 deletions(-) [+]
line wrap: on
line diff
--- a/examples/iAudioDB/AppController.m	Fri Mar 05 16:01:22 2010 +0000
+++ b/examples/iAudioDB/AppController.m	Fri Mar 05 16:17:09 2010 +0000
@@ -53,7 +53,7 @@
 		// Create new db, and set flags.
 		db = audiodb_create([[panel filename] cStringUsingEncoding:NSUTF8StringEncoding], 0, 0, 0);
 		audiodb_l2norm(db);
-		audiodb_power(db);
+	//	audiodb_power(db);
 		
 		// Store useful paths.
 		dbName = [[[panel URL] relativePath] retain];
@@ -82,18 +82,21 @@
 		// Tidy any existing references up.
 		if(db)
 		{
+			NSLog(@"Close db");
 			audiodb_close(db);
 		}
 		
 		if(dbFilename)
 		{
+			NSLog(@"Tidy up filenames");
 			[dbFilename release];
 			[dbName release];
 			[plistFilename release];
 		}
 		
 		// Store useful paths.
-		db = audiodb_open([[panel filename] cStringUsingEncoding:NSUTF8StringEncoding], O_RDWR);
+		NSLog(@"Open");
+		db = audiodb_open([[panel filename] cStringUsingEncoding:NSUTF8StringEncoding], O_RDONLY);
 		dbName = [[[panel URL] relativePath] retain];
 		dbFilename = [[panel filename] retain];
 		
@@ -126,8 +129,10 @@
  */
 -(void)updateStatus
 {
+	NSLog(@"Update status");
 	if(db)
 	{
+		NSLog(@"Got a db");
 		adb_status_ptr status = (adb_status_ptr)malloc(sizeof(struct adbstatus));
 		int flags;
 		flags = audiodb_status(db, status);
@@ -136,6 +141,7 @@
 	}
 	else
 	{
+		NSLog(@"No db");
 		[chooseButton setEnabled:NO];
 		[playBothButton setEnabled:FALSE];
 		[playResultButton setEnabled:FALSE];
@@ -191,76 +197,77 @@
 		
 		NSLog(@"Begin import");
 		
+		/*
+		 vamp:vamp-audiodb-plugins:cq:cq
+		 vamp:vamp-audiodb-plugins:chromagram:chroma
+		 vamp:qm-vamp-plugins:qm-mfcc:coefficients
+		 vamp:qm-vamp-plugins:qm-chromagram:chromagram
+		 */
+		
+		
+		// adb_chroma
+		// adb_cq
+		// qm_chroma
+		// qm_mfcc
+		
 		// Work out which extractor to use
 		NSString* extractor = @"chromagram";
 		switch([extractorOptions selectedTag])
 		{
 			case 0:
-				extractor = @"mfcc";
+				extractor = @"adb_chroma";
 				break;
 			case 1:
-				extractor = @"chromagram";
+				extractor = @"adb_cq";
+				break;
+			case 2:
+				extractor = @"qm_chroma";
+				break;
+			case 3:
+				extractor = @"qm_mfcc";
 				break;
 		}
 		
+		
 		for(int i=0; i<[filesToOpen count]; i++)
-		{
-			// First extract powers
-			
-			NSString *tempFileTemplate = [NSTemporaryDirectory() stringByAppendingPathComponent:@"powers.XXXXXX"];
-			const char *tempFileTemplateCString = [tempFileTemplate fileSystemRepresentation];
-			char *tempFileNameCString = (char *)malloc(strlen(tempFileTemplateCString) + 1);
-			strcpy(tempFileNameCString, tempFileTemplateCString);
-			mktemp(tempFileNameCString);
-			
-			NSString* powersFileName = [[NSFileManager defaultManager] stringWithFileSystemRepresentation:tempFileNameCString length:strlen(tempFileNameCString)];
-			free(tempFileNameCString);
-			
-			NSTask *task = [[NSTask alloc] init];
-			[task setLaunchPath:@"/usr/local/bin/fftExtract2"];
-			NSArray *args = [NSArray arrayWithObjects:@"-P", @"-h", @"11025", @"-w", @"16384", @"-n", @"32768", @"-i", @"1000", [filesToOpen objectAtIndex:i], powersFileName, nil];
-			[task setArguments:args];
-			[task launch];
-			[task waitUntilExit];
-			[task release];
-			
-			// Then features
-			
-			tempFileTemplate = [NSTemporaryDirectory() stringByAppendingPathComponent:@"features.XXXXXX"];
-			tempFileTemplateCString = [tempFileTemplate fileSystemRepresentation];
-			tempFileNameCString = (char *)malloc(strlen(tempFileTemplateCString) + 1);
+		{		
+			audiodb_close(db);
+			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);
 			
-			task = [[NSTask alloc] init];
+			NSTask* task = [[NSTask alloc] init];
 			
-			[task setLaunchPath:@"/usr/local/bin/fftExtract2"];
+			[task setLaunchPath:@"/usr/local/bin/sonic-annotator"];
 			
-			NSArray *args2;
-			
-			// Choose the args (TODO: This should use sonic annotator eventually)
-			if([extractor isEqualToString:@"chromagram"])
-			{
-				args2 = [NSArray arrayWithObjects:@"-p",@"/Users/moj/planfile",@"-c", @"36", @"-h", @"11025", @"-w", @"16384", @"-n", @"32768", @"-i", @"1000", [filesToOpen objectAtIndex:i], featuresFileName, nil];
-			}
-			else
-			{
-				args2 = [NSArray arrayWithObjects:@"-p",@"/Users/moj/planfile",@"-m", @"13", @"-h", @"11025", @"-w", @"16384", @"-n ", @"32768", @"-i", @"1000", [filesToOpen objectAtIndex:i], featuresFileName, nil];
-			}
-			[task setArguments:args2];
+			NSString* extractorPath = [NSString stringWithFormat:@"/Applications/iAudioDB.app/rdf/%@.n3", extractor];
+			NSLog(@"Extractor path: %@", extractorPath);
+			NSArray* args;
+			args = [NSArray arrayWithObjects:@"-t", extractorPath, @"-w", @"rdf", @"-r", @"--rdf-network", @"--rdf-one-file", featuresFileName, @"--rdf-force", [filesToOpen objectAtIndex:i], nil];
+			[task setArguments:args];
 			[task launch];
 			[task waitUntilExit];
 			[task release];
 			
+			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 = [[filesToOpen objectAtIndex:i] retain];
 			NSString* key = [[[filesToOpen objectAtIndex:i] lastPathComponent] retain]; 
-			
+		/*	
 			adb_insert_t insert;
 			insert.features = [featuresFileName cStringUsingEncoding:NSUTF8StringEncoding];
-			insert.power = [powersFileName cStringUsingEncoding:NSUTF8StringEncoding];
+		//	insert.power = [powersFileName cStringUsingEncoding:NSUTF8StringEncoding];
 			insert.times = NULL;
 			insert.key = [key cStringUsingEncoding:NSUTF8StringEncoding];
 			
@@ -268,14 +275,16 @@
 			if(audiodb_insert(db, &insert))
 			{
 				// TODO: Show an error message.
-				NSLog(@"Weep: %@ %@ %@", featuresFileName, powersFileName, key);
+				NSLog(@"Weep: %@ %@", featuresFileName, key);
 				continue;
-			}
+			}*/
 			
 			// Update the plist store.
 			[trackMap setValue:val forKey:key];
 			[trackMap writeToFile:plistFilename atomically: YES];
 			
+			
+			db = audiodb_open([dbFilename cStringUsingEncoding:NSUTF8StringEncoding], O_RDONLY);
 			[self updateStatus];
 		}
 		
@@ -566,15 +575,16 @@
 		}
 		else
 		{
+			float divisor = (44100/2048);
 			for(int i=0; i<result->nresults; i++)
 			{
 				NSMutableDictionary* dict = [[NSMutableDictionary alloc] initWithCapacity:4];
 				[dict setValue:[NSString stringWithFormat:@"%s", result->results[i].key] forKey:@"key"];
 				[dict setValue:[NSNumber numberWithFloat:result->results[i].dist] forKey:@"distance"];
 				[dict setValue:[NSNumber numberWithFloat:result->results[i].dist] forKey:@"meter"];
-				[dict setValue:[NSNumber numberWithFloat:result->results[i].qpos/4] forKey:@"qpos"];
-				[dict setValue:[NSNumber numberWithFloat:result->results[i].ipos/4] forKey:@"ipos"];
-				NSLog(@"%s qpos %d ipos %d", result->results[i].key, result->results[i].qpos/4, result->results[i].ipos/4);
+				[dict setValue:[NSNumber numberWithFloat:result->results[i].qpos/divisor] forKey:@"qpos"];
+				[dict setValue:[NSNumber numberWithFloat:result->results[i].ipos/divisor] forKey:@"ipos"];
+				NSLog(@"%s qpos %d ipos %d", result->results[i].key, result->results[i].qpos/divisor, result->results[i].ipos/divisor);
 				[results addObject: dict];
 			}
 		}
--- a/examples/iAudioDB/English.lproj/MainMenu.xib	Fri Mar 05 16:01:22 2010 +0000
+++ b/examples/iAudioDB/English.lproj/MainMenu.xib	Fri Mar 05 16:17:09 2010 +0000
@@ -901,7 +901,7 @@
 			<object class="NSWindowTemplate" id="298235049">
 				<int key="NSWindowStyleMask">17</int>
 				<int key="NSWindowBacking">2</int>
-				<string key="NSWindowRect">{{196, 250}, {535, 260}}</string>
+				<string key="NSWindowRect">{{196, 364}, {535, 146}}</string>
 				<int key="NSWTFlags">-1543503872</int>
 				<string key="NSWindowTitle">Window</string>
 				<string key="NSWindowClass">NSPanel</string>
@@ -915,7 +915,7 @@
 						<object class="NSMatrix" id="948779024">
 							<reference key="NSNextResponder" ref="108412374"/>
 							<int key="NSvFlags">268</int>
-							<string key="NSFrame">{{20, 134}, {176, 86}}</string>
+							<string key="NSFrame">{{20, 20}, {176, 86}}</string>
 							<reference key="NSSuperview" ref="108412374"/>
 							<bool key="NSEnabled">YES</bool>
 							<int key="NSNumRows">4</int>
@@ -1187,8 +1187,7 @@
 								<int key="NSPeriodicDelay">400</int>
 								<int key="NSPeriodicInterval">75</int>
 							</object>
-							<int key="NSSelectedRow">2</int>
-							<reference key="NSSelectedCell" ref="853846524"/>
+							<reference key="NSSelectedCell" ref="71088072"/>
 							<reference key="NSBackgroundColor" ref="907238901"/>
 							<reference key="NSCellBackgroundColor" ref="282115067"/>
 							<reference key="NSFont" ref="294883811"/>
@@ -1196,7 +1195,7 @@
 						<object class="NSTextField" id="419880819">
 							<reference key="NSNextResponder" ref="108412374"/>
 							<int key="NSvFlags">268</int>
-							<string key="NSFrame">{{17, 228}, {123, 17}}</string>
+							<string key="NSFrame">{{17, 114}, {123, 17}}</string>
 							<reference key="NSSuperview" ref="108412374"/>
 							<bool key="NSEnabled">YES</bool>
 							<object class="NSTextFieldCell" key="NSCell" id="207653454">
@@ -1221,7 +1220,7 @@
 										<bool key="EncodedWithXMLCoder">YES</bool>
 										<object class="NSProgressIndicator" id="143167873">
 											<reference key="NSNextResponder" ref="790617918"/>
-											<int key="NSvFlags">1292</int>
+											<int key="NSvFlags">-2147482356</int>
 											<object class="NSPSMatrix" key="NSDrawMatrix"/>
 											<string key="NSFrame">{{5, 26}, {481, 20}}</string>
 											<reference key="NSSuperview" ref="790617918"/>
@@ -1250,7 +1249,7 @@
 									<reference key="NSSuperview" ref="955715704"/>
 								</object>
 							</object>
-							<string key="NSFrame">{{22, 16}, {496, 71}}</string>
+							<string key="NSFrame">{{22, -98}, {496, 71}}</string>
 							<reference key="NSSuperview" ref="108412374"/>
 							<string key="NSOffsets">{0, 0}</string>
 							<object class="NSTextFieldCell" key="NSTitleCell">
@@ -1273,7 +1272,7 @@
 						<object class="NSButton" id="331424260">
 							<reference key="NSNextResponder" ref="108412374"/>
 							<int key="NSvFlags">268</int>
-							<string key="NSFrame">{{329, 126}, {96, 32}}</string>
+							<string key="NSFrame">{{329, 12}, {96, 32}}</string>
 							<reference key="NSSuperview" ref="108412374"/>
 							<bool key="NSEnabled">YES</bool>
 							<object class="NSButtonCell" key="NSCell" id="614327950">
@@ -1293,7 +1292,7 @@
 						<object class="NSButton" id="101359388">
 							<reference key="NSNextResponder" ref="108412374"/>
 							<int key="NSvFlags">268</int>
-							<string key="NSFrame">{{425, 126}, {96, 32}}</string>
+							<string key="NSFrame">{{425, 12}, {96, 32}}</string>
 							<reference key="NSSuperview" ref="108412374"/>
 							<bool key="NSEnabled">YES</bool>
 							<object class="NSButtonCell" key="NSCell" id="171111105">
@@ -1311,7 +1310,7 @@
 							</object>
 						</object>
 					</object>
-					<string key="NSFrameSize">{535, 260}</string>
+					<string key="NSFrameSize">{535, 146}</string>
 					<reference key="NSSuperview"/>
 				</object>
 				<string key="NSScreenRect">{{0, 0}, {1280, 1002}}</string>
@@ -2465,6 +2464,8 @@
 					<string>747.IBPluginDependency</string>
 					<string>749.IBPluginDependency</string>
 					<string>750.IBPluginDependency</string>
+					<string>755.IBPluginDependency</string>
+					<string>756.IBPluginDependency</string>
 					<string>81.IBEditorWindowLastContentRect</string>
 					<string>81.IBPluginDependency</string>
 					<string>81.ImportedFromIB2</string>
@@ -2528,8 +2529,8 @@
 					<reference ref="9"/>
 					<string>{74, 862}</string>
 					<string>{{6, 978}, {478, 20}}</string>
-					<string>{{619, 41}, {606, 477}}</string>
-					<string>{{619, 41}, {606, 477}}</string>
+					<string>{{619, -87}, {606, 477}}</string>
+					<string>{{619, -87}, {606, 477}}</string>
 					<reference ref="9"/>
 					<string>{{33, 99}, {480, 360}}</string>
 					<string>{3.40282e+38, 3.40282e+38}</string>
@@ -2555,8 +2556,8 @@
 					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
 					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
 					<reference ref="9"/>
-					<string>{{573, 50}, {535, 260}}</string>
-					<string>{{573, 50}, {535, 260}}</string>
+					<string>{{573, 164}, {535, 146}}</string>
+					<string>{{573, 164}, {535, 146}}</string>
 					<boolean value="NO"/>
 					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
 					<string>{{651, 102}, {201, 183}}</string>
@@ -2610,6 +2611,8 @@
 					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
 					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
 					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
 					<string>{{736, 222}, {169, 63}}</string>
 					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
 					<reference ref="9"/>
--- a/examples/iAudioDB/iAudioDB.xcodeproj/project.pbxproj	Fri Mar 05 16:01:22 2010 +0000
+++ b/examples/iAudioDB/iAudioDB.xcodeproj/project.pbxproj	Fri Mar 05 16:17:09 2010 +0000
@@ -13,8 +13,8 @@
 		8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
 		B7CBF33211105F1700B8C1C8 /* AppController.m in Sources */ = {isa = PBXBuildFile; fileRef = B7CBF33111105F1700B8C1C8 /* AppController.m */; };
 		B7CBF3B711106F4C00B8C1C8 /* libaudioDB.0.0.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = B7CBF3B611106F4C00B8C1C8 /* libaudioDB.0.0.dylib */; };
-		B7CBF41B11108E3600B8C1C8 /* BWToolkitFramework.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B7CBF41A11108E3500B8C1C8 /* BWToolkitFramework.framework */; };
-		B7CBF42411108E7E00B8C1C8 /* BWToolkitFramework.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = B7CBF41A11108E3500B8C1C8 /* BWToolkitFramework.framework */; };
+		B7E0FD5B114164430003AB08 /* BWToolkitFramework.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B7E0FD5A114164430003AB08 /* BWToolkitFramework.framework */; };
+		B7E0FD8D114164850003AB08 /* BWToolkitFramework.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = B7E0FD5A114164430003AB08 /* BWToolkitFramework.framework */; };
 /* End PBXBuildFile section */
 
 /* Begin PBXCopyFilesBuildPhase section */
@@ -24,7 +24,7 @@
 			dstPath = "";
 			dstSubfolderSpec = 10;
 			files = (
-				B7CBF42411108E7E00B8C1C8 /* BWToolkitFramework.framework in CopyFiles */,
+				B7E0FD8D114164850003AB08 /* BWToolkitFramework.framework in CopyFiles */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -44,7 +44,7 @@
 		B7CBF33011105F1700B8C1C8 /* AppController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppController.h; sourceTree = "<group>"; };
 		B7CBF33111105F1700B8C1C8 /* AppController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppController.m; sourceTree = "<group>"; };
 		B7CBF3B611106F4C00B8C1C8 /* libaudioDB.0.0.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libaudioDB.0.0.dylib; path = /usr/local/lib/libaudioDB.0.0.dylib; sourceTree = "<absolute>"; };
-		B7CBF41A11108E3500B8C1C8 /* BWToolkitFramework.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = BWToolkitFramework.framework; path = ../BWToolkitFramework.framework; sourceTree = SOURCE_ROOT; };
+		B7E0FD5A114164430003AB08 /* BWToolkitFramework.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = BWToolkitFramework.framework; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
@@ -54,7 +54,7 @@
 			files = (
 				8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */,
 				B7CBF3B711106F4C00B8C1C8 /* libaudioDB.0.0.dylib in Frameworks */,
-				B7CBF41B11108E3600B8C1C8 /* BWToolkitFramework.framework in Frameworks */,
+				B7E0FD5B114164430003AB08 /* BWToolkitFramework.framework in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -73,7 +73,6 @@
 		1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = {
 			isa = PBXGroup;
 			children = (
-				B7CBF41A11108E3500B8C1C8 /* BWToolkitFramework.framework */,
 				1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */,
 			);
 			name = "Linked Frameworks";
@@ -132,6 +131,7 @@
 		29B97323FDCFA39411CA2CEA /* Frameworks */ = {
 			isa = PBXGroup;
 			children = (
+				B7E0FD5A114164430003AB08 /* BWToolkitFramework.framework */,
 				1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */,
 				1058C7A2FEA54F0111CA2CBB /* Other Frameworks */,
 			);
@@ -229,6 +229,7 @@
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
 					"\"$(SRCROOT)/..\"",
+					"\"$(SRCROOT)\"",
 				);
 				GCC_DYNAMIC_NO_PIC = NO;
 				GCC_ENABLE_FIX_AND_CONTINUE = YES;
@@ -250,6 +251,7 @@
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
 					"\"$(SRCROOT)/..\"",
+					"\"$(SRCROOT)\"",
 				);
 				GCC_MODEL_TUNING = G5;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;