Вопрос

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

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

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

Спасибо.

Это было полезно?

Решение

Synthesis Toolkit (STK) великолепен, но он предназначен только для C++:

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

Однако вы можете извлечь код синтезатора волновой таблицы из STK.

Другие советы

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

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

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

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

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

WTфункция =

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top