Действительно простой волновой синтезатор/таблица в ios

Я хочу сделать действительно простой синтезатор.

Короче говоря, я хочу воспроизвести wav-файл и зацикливать его в определенных точках, пока не будет отпущено касание.

Я ищу пример кода (не обязательно бесплатно).

Извините за такой простой вопрос, я гуглил это, хотя, похоже, ничего по этой теме нет, если только я не упустил какой-то важный термин.

Кроме того, я описываю волновой синтезатор или деку?


person user1054094    schedule 18.11.2011    source источник


Ответы (2)


Я бы назвал это семплером.

Вот пример проекта, который поможет вам начать:

https://sites.google.com/site/iphonecoreaudiodevelopment/remoteio-playback

Смотрите также:

Книга по программированию аудио

Основная аудиокнига

Мой пример проекта

person morgancodes    schedule 18.11.2011

Вам нужно хранить звуковые данные в памяти и иметь какую-то команду read(), которая заполняет массив байтов для отправки на звуковую карту. Команда read() должна отслеживать свою позицию между операциями чтения, поэтому необходимо поддерживать постоянный указатель. Вы проверите положение указателя и увидите, достигли ли вы конца или нет, и при необходимости вернетесь к началу.

Конечно, особенности будут зависеть от выбранного вами языка.

Я сделал это с Java, с добавленной возможностью воспроизведения на разных скоростях. http://www.hexara.com/VSL/VSL2.htm Немного тормозит . Я немного научился с тех пор, как опубликовал это, но еще не вернулся, чтобы исправить это. Программа запрашивает разрешение и загружает wav-файл с вашего компьютера. Он должен быть 16-битным, стерео, 44100 кадров в секунду, прямым порядком байтов.

Синтез WaveTable немного отличается тем, что в качестве исходных данных сохраняется и используется только одна итерация волны.

Вот краткое обсуждение с веб-сайта CCRMA Стэнфорда: https://ccrma.stanford.edu/~bilbao/booktop/node9.html Я использовал этот метод, чтобы сделать Java-терменвокс http://www.hexara.com/VSL/JTheremin.htm

С WaveTable вы сами определяете размер массива. Если это степень двойки, можно маскировать указатель после каждого приращения, что быстрее, чем сравнение и сброс.

person Phil Freihofner    schedule 19.11.2011