Бесплатный синтезатор 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 сглаживаются каждую октаву с несколькими октавными записями.