Бесплатный синтезатор Wavetable? - PullRequest
1 голос
/ 27 августа 2008

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

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

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

Спасибо.

Ответы [ 3 ]

4 голосов
/ 27 августа 2008

Synthesis Toolkit (STK) отлично, но это только C ++:

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

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

3 голосов
/ 17 сентября 2008

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

0 голосов
/ 14 января 2018

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

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

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

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

WTfunction =

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

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

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

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

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

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

...