Пример определения BPM в iOS SoundTouch
Я искал по всей сети и не могу найти учебник о том, как использоватьБиблиотека SoundTouch для обнаружения удара.
(Примечание. До этого у меня не было опыта работы с C ++. Я знаю C, Objective-C и Java. Поэтому я мог бы испортить кое-что из этого, но это компилируется.)
Я добавилфреймворк в мой проект и удалось получить следующее для компиляции:
NSString *path = [[NSBundle mainBundle] pathForResource:@"song" ofType:@"wav"];
NSData *data = [NSData dataWithContentsOfFile:path];
player =[[AVAudioPlayer alloc] initWithData:data error:NULL];
player.volume = 1.0;
player.delegate = self;
[player prepareToPlay];
[player play];
NSUInteger len = [player.data length]; // Get the length of the data
soundtouch::SAMPLETYPE sampleBuffer[len]; // Create buffer array
[player.data getBytes:sampleBuffer length:len]; // Copy the bytes into the buffer
soundtouch::BPMDetect *BPM = new soundtouch::BPMDetect(player.numberOfChannels, [[player.settings valueForKey:@"AVSampleRateKey"] longValue]); // This is working (tested)
BPM->inputSamples(sampleBuffer, len); // Send the samples to the BPM class
NSLog(@"Beats Per Minute = %f", BPM->getBpm()); // Print out the BPM - currently returns 0.00 for errors per documentation
inputSamples(*samples, numSamples)
Информация о байте песни сбивает меня с толку.
Как я могу получить эти данные из файла песни?
Я пытался с помощьюmemcpy()
но это некажется, работает.
У кого-нибудь есть мысли?