Использование vecLib / vDSP для создания генератора синусоидального сигнала с конвертом - PullRequest
1 голос
/ 20 января 2012

Я хочу создать генератор синусоидальных тонов с помощью Accelerate framework.Мне бы хотелось, чтобы у моего генератора была настройка атаки / выпуска (т. Е. Огибающая амплитуды).

Я понимаю, как создать вектор, полный значений синуса.Чего я не знаю, так это как применить амплитудную огибающую к моим векторным данным.

Я знаю, что могу создать линейный вектор, используя vDSP_vgen, чтобы создать вектор огибающей линейного объема и умножить мой вектор синуса на мой вектор огибающей,Это кажется расточительным, потому что я имею дело со многими точками данных и создаю промежуточный вектор только для хранения огибающей амплитуды, что приводит к расточительному использованию памяти в моей среде.

Какой лучший способ работы с амплитудойконверт с платформой Accelerate?

Примечание: я новичок в векторном программировании, поэтому, пожалуйста, держитесь со мной.

Ответы [ 2 ]

0 голосов
/ 20 января 2012

для музыкальных приложений, линейный усилитель не очень распространен / полезен.

для нелинейной рампы, ваши основные параметры:

  1. создайте буфер для умножения на длину конверта - затем используйте умножение vdsp.
  2. просто умножьте на значения конверта, которые вы генерируете на лету.
0 голосов
/ 20 января 2012

Вам не нужно использовать только векторные функции для создания или работы с векторами. Векторные функции полезны, если они существуют и работают быстрее. Я бы сравнил последовательность векторных операций с созданием вашего синуса с конвертом, используя вызовы вашего envelope () * sinf () для каждого векторного элемента, и посмотрел бы, что быстрее на ваших тестовых устройствах iOS.

Если у вас достаточно памяти для хранения длинных промежуточных векторов и их повторного использования (например, для повторного использования конвертов), это может повысить производительность для последующих итераций. Типичное использование памяти в сравнении с производительностью Ytrade-off.

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