Определение BPM в iOS с использованием библиотеки SoundTouch

Я пытаюсь реализовать распознавание битов в приложении для iOS. Я нашел довольно простую среду под названием SoundTouch и попытался реализовать ее в соответствии с

Пример обнаружения BPM в iOS SoundTouch

К сожалению, ни одна из моих следующих попыток, похоже, не работает, и в настоящее время я нахожусь в тупиковом состоянии, поэтому мой пост в Stackoverflow.

Я предпринял следующие шаги:

  1. Создать проект на основе одного представления
  2. Импортировал
  3. Переименовал mainViewController.m в ViewController.mm, чтобы сделать его совместимым с c ++
  4. Указано, что класс UIViewController ViewController должен соответствовать протоколам AVFoundationPlayerDelegate.
  5. Скопируйте / вставьте решение @MrHappyAsthma разместил на свой вопрос
  6. 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 должны быть объявлены / инициализированы.

Спасибо, ребята!

3

Решение

Вам нужно сделать следующее для компиляции проекта:

  1. добавлять #import <SoundTouch/BPMDetect.h> на ваш ViewController.mm;

  2. добавить фреймворк AVFoundation к вашей цели (см. рисунок);

  3. установите языковые настройки, как показано на рисунке (в частности, используйте GNU C ++ libstdc ++).

Я не пытался запустить программу, но по крайней мере она собирается.

введите описание изображения здесь
введите описание изображения здесь

4

Другие решения


По вопросам рекламы [email protected]