Бесплатный синтезатор Wavetable?

Мне нужно реализовать синтезатор wavetable в ядре ARM Cortex-M3. Я ищу любой код или инструменты, которые помогут мне начать.

Я знаю об этой реализации AVR. Я фактически преобразовал это в ПОС некоторое время назад. Сейчас я ищу что-то похожее, но немного лучше звучащее.

Код ANSI C был бы отличным. Будем весьма благодарны за любые фрагменты кода (C или C++), примеры, инструменты или просто общую информацию.

Благодарю.

3 ответа

Решение

Synthesis Toolkit (STK) превосходен, но это только C++:

http://ccrma.stanford.edu/software/stk/

Вы можете извлечь код синтезатора волновых сигналов из STK.

Два волновых синтезатора с открытым исходным кодом - FluidSynth и TiMidity.

Любой синтезатор ARM, самый лучший, может быть заменен на волновой сканер менее чем за день. Сканирование волны из файлов или генерация их математически - это почти то же самое, что и аудио, WT предоставляет массивные банки сигналов с нулевой стоимостью обработки, вам нужны волны, сам код генератора WT составляет 20 строк. поэтому измените ручку формы сигнала с 3 на 100, чтобы указать, какой WAV вы читаете, используйте рампу / счетчик для чтения файлов WAV (в виде массивов). WT исправлено.

Из 7 лет опыта Synth я бы порекомендовал изменить 20 строк функции осциллятора вашего любимого синтезатора, чтобы адаптировать его для чтения волновых массивов. WT использует только 20 строк логики, остальная часть синтезатора важнее: LFO, фильтры, входные параметры, память пресетов... Вместо этого используйте ваш любимый синтезатор и найдите волновую библиотеку WT в виде файлов и папок WAV и замените Любимые синтезаторы с функциями WT будут звучать практически одинаково, только с меньшими затратами на обработку.

Синт обычно использует функции Sin, Sqr, Saw, Antialiased OSC для волны...

Wavetable синтезатор использует около 20 строк кода в своей основе, и 10/20/100ds волн, каждая волна идеально выбирается на каждую октаву. Если вы можете получить библиотеку звуковых таблиц, синтезатор просто зацикливается, сдвигает высоту тона, звуки и про-синтезаторы могут также иметь несколько октав для смешивания октав.

WTfunction =

  • загрузить файлы WAV в N массивов
  • изменить форму волны = выбрать массив сигналов из списка WAV
  • читать массив сигналов с желаемой частотой

функция волнового сканера =

  • Перекрестное затухание между двумя волнами и назначение xfade для LFO, то есть синус и xfade.

Огибающая, фильтр, амплитуда и все остальные функции не зависят от функции генерации волн во всех синтезаторах.

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

WT - это либо отдельные периоды волн более длинных секций в более продвинутых синтезаторах. материал за один период очень легко записать в код. расширенные WT сэмплируются на октаву с волнами продолжительностью N периодов, даже 2-3 секунды, то есть на пианино, и это означает, что они изменяют качество звука через октавы, поэтому сложные WT сглаживаются каждую октаву с несколькими октавными записями.

Другие вопросы по тегам