Вот пример использования двух разных решателей (сначала я не имел доступа к Optimization Toolbox
и использовал доступный fminsearch
)
function [] = main()
z = [1 2 3;
4 5 6;
7 8 9];
a = [1;3;5];
b = [1;7;2];
opt_fms = optimset('Display','iter');
x0 = 1;
%[x, fval] = fminsearch(@myfun,x0, opt_fms, z, a, b)
[x, fval] = lsqnonlin(@myfun,x0, [], [], opt_fms, z, a, b)
end
function F = myfun(o, z, a, b)
F = 0;
n = numel(a);
for i = 1:n
for j = 1:n
F = F + (z(i, j) - (sqrt(a(i, 1)+b(j, 1)) + o)).^2;
end
end
end
lsqnonlin результат (функция возвращает значение в Степень 2):
x =
2.5631
fval =
2.1663e+03
Результат fminsearch:
x =
2.5631
fval =
46.5441
Вот график функции с результатом оптимизации (из fminsearch):
Существует очень много библиотек C/C++ там, больше всего больше не обновлено. Нет очень для C#, но я видел пару. Я действительно не использовал ни одного из них в гневе, таким образом, я не могу дать рекомендации.
я запустил бы с Гармония, Центральная , и видел бы, находите ли Вы что-нибудь использования там.
, С другой стороны, поиск аналоговый синтез на sourceforge.net имеет много результатов.
Chuck является лучшим, я знаю о, но его C++ как, не C++.
Я имел некоторый успех с библиотека BASS , но это - поддержка .NET, было немного сырой нефти, когда в последний раз я играл с ним. Это потоковое кодирование главным образом низкого уровня и такой, но это действительно имеет поддержку некоторых эффектов DX8.
Существует две статьи о CodeProject, который Вы могли бы хотеть проверить. Leslie Stanford создал инструментарий Синтезатора в C# (насколько я знаю, что им полностью управляют).
Инструментарий Синтезатора C# - Первая часть Инструментарий Синтезатора C# - Вторая часть
кроме того, я просто нашел этот Вопрос о StackOverflow , который имеет некоторые хорошие ссылки, хотя это - Java, связанный
Посмотрите на ответы на Музыкальная Библиотека Python вопрос. В то время как вопрос говорит "Python", Python основан на C. Таким образом, что-либо применимое из Python будет иметь библиотеку C, также.
Ваш лучший выбор состоит в том, чтобы проверить форумы разработчика в KvR. Они смогут указать на Вас в направлении лучших механизмов DSP/синтеза с открытым исходным кодом, а также некоторых плагинов VSTi с открытым исходным кодом, от которых можно взять вдохновение. Это все будет в C / C++ все же. Там является только самым основным из аудио синтеза, доступного в управляемом коде в данный момент.
CCRMA в Стэнфорде может быть хорошим ресурсом для аудио программного обеспечения. Синтез ToolKit в C++ (STK) похож на него, мог выручить Вас.
Synthmaker и SynthEdit сгенерируют для вас VST-код. SynthEdit определенно выводит некомпилированные исходные файлы C ++ и является бесплатным.
Moog и Yamaha DX7 кардинально отличаются. В DX7 используется FM-синтез, что очень странно. Очень отличается от обычных аналогов VCO / VCA / VCF, таких как Moog.
Долгое время Yamaha судилась, чтобы защитить свои патенты FM, но я полагаю, что все они уже истекли. Фазовые искажения Casio были похожи на Yamaha FM, и им удалось избежать гнева Yamaha (насколько мне известно)
. Я бы начал с выбора того или другого. Virtual Analog (имитирующий аналоговые синтезаторы) в моде с тех пор, как появились Nord Lead и Access Virus. И созерцать намного проще. Так что я бы пошел по этому пути, если вы хотите ходить с модной толпой.
Начните с хороших осцилляторов с ограниченным диапазоном, сделайте генератор огибающей, сделайте фильтр. Для вдохновения посмотрите Welsh ' s Поваренная книга синтезатора , чтобы увидеть, как все виды звуков могут быть созданы с помощью синтезатора с двумя осцилляторами. Я бы начал с реализации минимума функций, необходимых для этих патчей.
FM и PD - дикие. Если вы пойдете по этому пути, все дело в объединении достаточного количества операторов FM в интересные конфигурации, чтобы получить спектр интересных звуков. Предупреждение: нужно много работать, чтобы избежать алиасинга в FM.
На веб-сайте musicdsp также есть отличная библиотека синтеза . Много примеров кода на C / C ++ о том, как что-то делать.
Я написал простую синтезаторную библиотеку как часть приложения для iPhone. Возможно, это сработает и для ваших потребностей в синтезаторе. Возможно нет. http://mobilesynth.googlecode.com/svn/trunk/mobilesynth/Classes/synth/