Определение BPM в iOS с использованием библиотеки SoundTouch
Я пытаюсь реализовать распознавание битов в приложении для iOS. Я нашел довольно простой фреймворк под названием SoundTouch и попытался реализовать это в соответствии с
Пример обнаружения BPM в iOS SoundTouch
К сожалению, ни одна из моих следующих попыток, похоже, не работает, и в настоящее время я нахожусь в тупиковом состоянии, поэтому мой пост в Stackru.
Я предпринял следующие шаги:
- Создать проект на основе одного представления
- Импортировал
- Переименовал mainViewController.m в ViewController.mm, чтобы сделать его совместимым с C++
- Указано, что класс UIViewController ViewController должен соответствовать протоколам AVFoundationPlayerDelegate.
- Скопируйте / вставьте решение @MrHappyAsthma разместил на свой вопрос
Refactored
player =[[AVAudioPlayer alloc] initWithData:data error:NULL];
в
AVAudioPlayer *player =[[AVAudioPlayer alloc] initWithData:data error:NULL];
Сейчас компилятор жалуется на:
soundtouch::SAMPLETYPE sampleBuffer[len]; (use of undeclared variable soundtouch)
soundtouch::BPMDetect BPM(player.numberOfChannels, [[player.settings valueForKey:@"AVSampleRateKey"] longValue]); (use of undeclared variable soundtouch)
BPM.inputSamples(sampleBuffer, len/player.numberOfChannels); (use of undeclared variable BPM)
NSLog(@"Beats Per Minute = %f", BPM.getBpm()); (use of undeclared variable BPM)
Я думаю, что мои знания по C++ не такие, какими должны быть, и объекты soundtouch и BPM должны быть объявлены / инициализированы.
Спасибо, ребята!
1 ответ
Вам нужно сделать следующее для компиляции проекта:
добавлять
#import <SoundTouch/BPMDetect.h>
на вашViewController.mm
;добавьте фреймворк AVFoundation к вашей цели (см. рисунок);
установите языковые настройки, как показано на рисунке (в частности, используйте GNU C++ libstdC++).
Я не пытался запустить программу, но по крайней мере она собирается.