Что нужно знать, чтобы построить программный синтезатор?

19

Для кого-то, кто имеет некоторый опыт в разработке программного обеспечения, любит свои синтезаторы и знает [очень] основы представления цифрового аудио, каковы первые шаги, которым он должен следовать, чтобы запрограммировать музыкальный синтезатор, в отношении DSP?

vemv
источник

Ответы:

17

Получите Real Sound Synthesis для интерактивных приложений и загрузите Synthesis Toolkit . Это даст вам практическое представление и качественный исходный код для большинства используемых методов цифрового синтеза. Затем выберите тот метод, который вам наиболее интересен, и начните изменять соответствующий код STK, чтобы сделать то, что вы хотите. Затем попробуйте создать нечто подобное с нуля.

Кроме того, как предложил hotpaw2 , все, что есть в JOS, также является отличным вводным материалом. В частности, введение в цифровые фильтры с аудиоприложениями и математика дискретного преобразования Фурье начинаются с основ и не требуют большого опыта.

С точки зрения цифрового фильтра / эффектов, другой хорошей отправной точкой является проверка Faust . Вам даже не нужно изучать их язык обработки сигналов блок-схем, вы можете просто использовать примеры, чтобы выгрузить код шаблона VST, LADSPA и т. Д., Как быстрый способ запустить что-то [что вы можете затем изменить].

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

специалист по обработке данных
источник
Идеальный ответ - он охватывает очень хорошо сбалансированное количество вопросов. Спасибо!
Vemv
6

Я прочитал бы вводную книгу по DSP плюс несколько книг на тему компьютерной музыки (Amazon и другие книжные магазины перечисляют несколько). Также есть множество материалов из Стэнфорда о DSP и синтезе звука. Книги по слуховой системе человека и психоакустике также могут быть полезны.

hotpaw2
источник
5

Сначала вам нужно решить, какой синтезатор вы хотите построить - аддитивный, FM, на основе семплов и т. Д. Вам также нужно решить, хотите ли вы эмулировать какой-либо существующий аналоговый синтезатор или просто спроектировать свой собственный.

Все остальное довольно просто - вам просто нужно внедрить различные строительные блоки синтезатора (например, генераторы, фильтры, генераторы шума, формирователи огибающей и т. Д.) В программном обеспечении, а затем реализовать способ их «соединения» и управления их параметрами.

См. Книгу Хала Чемберлина « Музыкальные приложения микропроцессоров» , которая является хорошим введением во многие основы.

Пол Р
источник
4

Я очень удивлен, что никто еще не упомянул SynthMaker . Смехотворно прост в использовании, и хотя он затрудняет переход на низкоуровневый (обязательно используйте режим разработчика ), вы можете многое узнать об архитектуре Synthesizer с его помощью, а также об общем DSP. И вы можете использовать вещи, созданные с его помощью, на самом деле, я использую его для создания почти всех моих плагинов.

leftaroundabout
источник
Как разработчик программного обеспечения, я всегда неохотно относился к волшебникам, но держу пари, что DSP - это глубокий мир, поэтому SynthMaker мог бы пригодиться. Кроме того, у пары
приятелей
Я собирался упомянуть SynthMaker сам. Это отличная программа.
Мэтт М.
4

Как уже упоминали некоторые другие участники, хороший учебник по DSP является обязательным. Это отличная книга> http://www.dspguide.com/, и автор любезно предоставил полную и бесплатную загрузку в формате PDF. Еще одна распространенная учебная программа по музыкальной технике, которая дает хорошее представление о различных методах синтеза на высоком уровне:> http://www.amazon.com/Computer-Music-Tutorial-Curtis-Roads/dp/0262680823 . Я также хотел бы повторить то, что предложил предыдущий участник, Synthmaker, который является очень удобной средой визуальной разработки для разработки плагинов VST. Наконец, если вы просто хотите экспериментировать, не углубляясь в это, вы можете попробовать использовать Csound, язык программирования, специально разработанный для синтеза звука.

Дэн Барри
источник
2

Я просто хочу присоединиться, так как большинство ответов сосредоточены на проблемах DSP. Если вы не используете систему блочного дизайна, такую ​​как SynthMaker, вы потратите много времени на разработку управления голосом. Если вы писали плагин VSTi для инструментов с нуля, кривая обучения намного длиннее, чем для плагинов эффектов. Вам придется управлять каждым объектом заметки, решить, что произойдет, когда на 20 нот будет, если ваш DSP достаточно быстр для 16 голосов, отреагировать на изменение высоты тона, портаменто, модуляцию и т. Д. Это непростая задача, и поэтому я очень рекомендую начинать с Buzz или SynthMaker и кататься самостоятельно, когда вы наконец натолкнетесь на стену.

Мэтт М.
источник