Soundtouch для iPhone - PullRequest
       6

Soundtouch для iPhone

5 голосов
/ 13 февраля 2010

Кто-нибудь смог сделать http://www.surina.net/soundtouch/ работать на айфон?

Будет полезна простая демонстрация Xcode.

Я бы хотел сыграть звуковой эффект с некоторой манипуляцией высотой звука.

ТНХ Крис

1 Ответ

0 голосов
/ 05 сентября 2015

Лучший способ реализовать аудиоэффекты с использованием 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" 

в вашем файле контроллера.

...