Действительно простой волновой синтезатор / таблица в IOS - PullRequest
3 голосов
/ 18 ноября 2011

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

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

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

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

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

Ответы [ 2 ]

3 голосов
/ 18 ноября 2011

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

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

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

См. Также:

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

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

Пример моего проекта

0 голосов
/ 19 ноября 2011

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

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...