Лучший способ реализовать аудиоэффекты с использованием SoundTouch также использует SoundStretch .
Вы можете скачать исходный код обоих здесь http://www.surina.net/soundtouch/sourcecode.html
SoundStretch - программа командной строки, которая выполняет SoundTouch
библиотека эффектов на аудио файлы WAV. Программа является исходным кодом
пример использования подпрограмм библиотеки SoundTouch для обработки звука
в других программах, но его можно использовать в качестве автономного аудио
обрабатывающий инструмент.
Возможности SoundStretch:
- Читает и пишет
.wav
аудиофайлы
- Позволяет очень широкие диапазоны регулировки параметров:
- темп и скорость воспроизведения регулируется в диапазоне -95% .. + 5000%
- Высота звука (клавиша) , регулируемая в диапазоне -60 .. +60 полутонов (+ - 5 октав).
- Частота ударов в секунду (BPM) Обнаружение, которое может регулировать темп в соответствии с желаемой частотой ударов в минуту.
- Доступны полные исходные коды
- Интерфейс командной строки позволяет использовать утилиту SoundStretch для обработки
.wav
аудиофайлов в пакетном режиме
- Поддерживает обработку
.wav
аудиопотоков через стандартные каналы ввода / вывода
- SoundStretch использует библиотеку SoundTouch для обработки звука.
Пример использования:
NSArray *effects = [NSArray arrayWithObjects:@"-rate=-22", nil];
NSURL *audio = [self base:input output:output effects:effects];
Где base:output:effects
определяется как:
- (NSURL *)base:(NSURL *)input output:(NSURL *)output effects:(NSArray *)effects{
int _argc = 3 + (int)[effects count];
const char *_argv[]={"createWavWithEffect",[[input path] UTF8String], [[output path] UTF8String],[@"" UTF8String],[@"" UTF8String],[@"" UTF8String],[@"" UTF8String],[@"" UTF8String],[@"" UTF8String],[@"" UTF8String],[@"" UTF8String],[@"" UTF8String]};
for (int i=0; i<[effects count]; i++) {
_argv[i+3] = [effects[i] UTF8String];
}
createWavWithEffect(_argc, _argv);
// IMPORTANT! Check the file size, maybe you will need to set by yourself
return output;
}
Если вы не хотите самостоятельно компилировать SoundTouch, я поделился репозиторием GitHub с библиотеками, скомпилированными для armv7
, armv7s
, arm64
, i386
и x86_64
https://github.com/enrimr/soundtouch-ios-library
И если вы хотите использовать SoundTouch самостоятельно, не используя SoundStretch, вы должны добавить каталог SoundTouch (который включает libSoundTouch.a и каталог с заголовками) в ваш проект Xcode.
Для проектов SWIFT:
Программируя с помощью SWIFT, вы не можете импортировать .h, поэтому вам нужно будет создать .h файл с именем <Your-Project-Name>-Bridging-Header-File.h
Затем укажите его в настройках сборки вашего проекта (в разделе «Компилятор Swift» найдите «Objective C Bridging Header») с помощью:
$(SRCROOT)/<Your-Project-Name>-Bridging-Header.h
А теперь вы должны использовать класс SoundTouch.
Для проектов Objective-C:
Включить следующую строку
#include "SoundTouch.h"
в вашем файле контроллера.