Осуществлять музыку на iPhone?
Я абсолютно наивен, когда речь идет об аудио и музыке на iPhone или на любой платформе в целом.
Скажем, я хотел создать простое приложение для пианино - можно ли генерировать звуки для каждого ключа программно?
Или мне нужно предоставить файл .wav для каждого возможного звука?
Мне интересно, как такие программы, как GarageBand, могут предоставлять такие разнообразные звуки - может быть, у них есть файл для каждого возможного звука?
Или есть способ динамически генерировать эти звуки?
Изменить. Я нашел эту самую прекрасную статью, в которой точно описывается, что я хочу делать, и у парня даже есть образец проекта с небольшим фортепиано со всеми звуками, генерируемыми программным способом.
Ответы
Ответ 1
Вы можете генерировать тоны программно, как описано в этом учебнике. Пример показывает, как создать чистую синусоидальную волну с использованием аудиоустройств.
В силу теоремы Фурье любая (периодическая) непрерывная функция может быть выражена как сумма синусных функций разных амплитуд и фаз. Используя это, вы можете смешать некоторые из этих функций, чтобы имитировать звук инструмента. Однако для этого требуется много исследований и глубокое понимание волновой механики и исчисления, поэтому это не тривиальная задача.
Ответ 2
Синтезаторы пианино, как правило, реализуются с воспроизведением сэмплов - и это включает в себя цифровые пианино в реальном мире. Обычно значительно меньше одного образца на ключ используется совместно с осциллятором DDS.
Высококачественные синтезаторы цифрового пианино также содержат образцы для начального нажатия клавиш, сустейна, демпферной педали и клавиатуры, при разных скоростях клавиш, которые затем смешиваются вместе.
Исходный код для VST3 SDK