# HG changeset patch # User mas01mj # Date 1267805829 0 # Node ID 15e71890b58441edfff9afb32569b6c2639d1427 # Parent 047415d1805eaa2a801930d3300239cc6e9334fa * Switched over to using sonic-annotator extraction * Uses populate for import diff -r 047415d1805e -r 15e71890b584 examples/iAudioDB/AppController.m --- 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; inresults; 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]; } } diff -r 047415d1805e -r 15e71890b584 examples/iAudioDB/English.lproj/MainMenu.xib --- 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 @@ 17 2 - {{196, 250}, {535, 260}} + {{196, 364}, {535, 146}} -1543503872 Window NSPanel @@ -915,7 +915,7 @@ 268 - {{20, 134}, {176, 86}} + {{20, 20}, {176, 86}} YES 4 @@ -1187,8 +1187,7 @@ 400 75 - 2 - + @@ -1196,7 +1195,7 @@ 268 - {{17, 228}, {123, 17}} + {{17, 114}, {123, 17}} YES @@ -1221,7 +1220,7 @@ YES - 1292 + -2147482356 {{5, 26}, {481, 20}} @@ -1250,7 +1249,7 @@ - {{22, 16}, {496, 71}} + {{22, -98}, {496, 71}} {0, 0} @@ -1273,7 +1272,7 @@ 268 - {{329, 126}, {96, 32}} + {{329, 12}, {96, 32}} YES @@ -1293,7 +1292,7 @@ 268 - {{425, 126}, {96, 32}} + {{425, 12}, {96, 32}} YES @@ -1311,7 +1310,7 @@ - {535, 260} + {535, 146} {{0, 0}, {1280, 1002}} @@ -2465,6 +2464,8 @@ 747.IBPluginDependency 749.IBPluginDependency 750.IBPluginDependency + 755.IBPluginDependency + 756.IBPluginDependency 81.IBEditorWindowLastContentRect 81.IBPluginDependency 81.ImportedFromIB2 @@ -2528,8 +2529,8 @@ {74, 862} {{6, 978}, {478, 20}} - {{619, 41}, {606, 477}} - {{619, 41}, {606, 477}} + {{619, -87}, {606, 477}} + {{619, -87}, {606, 477}} {{33, 99}, {480, 360}} {3.40282e+38, 3.40282e+38} @@ -2555,8 +2556,8 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - {{573, 50}, {535, 260}} - {{573, 50}, {535, 260}} + {{573, 164}, {535, 146}} + {{573, 164}, {535, 146}} com.apple.InterfaceBuilder.CocoaPlugin {{651, 102}, {201, 183}} @@ -2610,6 +2611,8 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin {{736, 222}, {169, 63}} com.apple.InterfaceBuilder.CocoaPlugin diff -r 047415d1805e -r 15e71890b584 examples/iAudioDB/iAudioDB.xcodeproj/project.pbxproj --- 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 = ""; }; B7CBF33111105F1700B8C1C8 /* AppController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppController.m; sourceTree = ""; }; 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 = ""; }; - 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 = ""; }; /* 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;