Задумывается как общая тема для обмена опытом в программировании звука музыкальных инструментов и написании синтезаторов; и свалка информации по данной тематике.
Описания, статьи, методы, ссылки, инструменты, примеры кода, критика, байки, общение.
Акцент в первую очередь на относительно компактные синтезаторы (хотя и не обязательно именно демосцена).
Не обязательно MIDI. Не обязательно классические инструменты.
Вообще - тема для централизации общения на данную тематику, задавания вопросов разной степени дурацкости и т. д..
В тему приглашаются все желающие (в частности - и люди, обычно обитающие в разделе "Звук").
Общие сведения:
https://ru.wikipedia.org/wiki/MIDI - протокол MIDI. Примечание: русская версия статьи с точки зрения программиста подробнее английской; также содержит ссылку на более подробный цикл статей: http://www.muzoborudovanie.ru/articles/midi/midi1.php .
https://en.wikipedia.org/wiki/General_MIDI - стандартизация набора инструментов.
https://en.wikipedia.org/wiki/Music_tracker - форматы и программы трекерной музыки
https://en.wikipedia.org/wiki/Virtual_Studio_Technology - популярный интерфейс взаимодействия MIDI хостов и инструментов.
https://en.wikipedia.org/wiki/SoundFont - популярный формат хранения звуковых банков (обычно имеют довольно большой объём и для компактных синтезаторов малоприменимы).
Статьи по синтезу:
Серия Synth Secrets сайта www.soundonsound.com :
http://www.soundonsound.com/techniques/synth-secrets (сейчас на https://web.archive.org/web/20160403115835/http://www.soundonsoun… thsecrets.htm ).
Синтезаторы:
V2 Synthesizer System от farbrausch, за авторством Tammo "kb" Hinrichs:
http://www.pouet.net/prod.php?which=15073 - включает в себя VSTi (что облегчает работу композитора), отдельный мини-синтезатор, ещё чуть разного. Набор инструментов сильно отличается от General MIDI.
https://github.com/farbrausch/fr_public/tree/master/v2 - исходный код
Описание части деталей от Tammo "kb" Hinrichs:
http://blog.kebby.org/?p=34
http://blog.kebby.org/?p=36
http://blog.kebby.org/?p=38
http://blog.kebby.org/?p=40
Видео-лекция Tammo "kb" Hinrichs о написании синтезаторов:
https://www.scene.org/file.php?file=%2Fparties%2F2005%2Fbreakpoin… &fileinfo
4klang - маленький синтезатор, предназначенный для 4k demo:
http://4klang.untergrund.net/
Тоже включает VSTi.
Сообщество "Процедурный звук в приложениях реального времени" на gamedev.ru:
http://www.gamedev.ru/community/rt_proc_sound/
Откуда брать семплы музыкальных инструментов?
http://theremin.music.uiowa.edu/MIS.html - The University of Iowa Musical Instrument Samples, довольно много семплов классических инструментов
http://freewavesamples.com/ - вперемешку семплы живых инструментов и синтезаторов. Можно (с помощью wget нпример) скачать каталог с семплами целиком
https://www.freesound.org/ - можно найти звуки инструментов поиском (напр. https://www.freesound.org/search/?q=glockenspiel )
Что с этими семплами делать?
Ну во-первых - слушать ушами. Как минимум, для проверки, что синтезатор звучит похоже на реальный инструмент.
Во-вторых - их можно анализировать. Для этого вполне может помочь бесплатная Audacity (хотя конечно можно пользоваться и кучей других инструментов).
В Audacity можно смотреть амплитуду, что даёт неплохое представление об огибающей и характерных участках звука.
Можно строить спектр ("Анализ/Построить график спектра..."). Может иметь смысл строить спектр для разных участков образца. Можно поиграться с настройками - в частности разные оконные функции дают заметно разную картину. Это может помочь выделить гармоники (если они есть) и измерить их амплитуду.
Также вид дорожки можно сменить (выпадающее меню по названию дорожки) с амплитуды ("Волна") на Short-time Fourier transform ("Спектрограмма"). Это может помочь на глаз оценить поведение разных гармоник в динамике.
Добавлю пару ссылок на свой синтезатор:
Исходники: https://github.com/gammaker/Intra/tree/master/IntraLib/src/Sound
Обсуждение: http://www.gamedev.ru/projects/forum/?id=189866
На Linux и\или GCC пока не работает - хоть и компилируется, но какие-то странные баги.
gammaker
Ты, кстати, генерацию sin*exp как-то дальше оптимизировал, по сравнению с тем, что в http://www.gamedev.ru/code/forum/?id=202212 было?
Ну и свой огрызок синтезатора продублирую, что-ли:
http://www.everfall.com/paste/id.php?7fnd0vj09q3l
Ну и ссылку на тулзу для прототипирования звука, как явной функции от времени (предупреждение: браузер, видимо, проходится по звуку фильтром, поэтому в браузере звучит несколько не так, как штатное проигрывание wav):
https://jsfiddle.net/nak6h7jq/embedded/result/
Она кривая, но по-быстрому продемонстрировать что-то может пригодиться.
FordPerfect
> Ты, кстати, генерацию sin*exp как-то дальше оптимизировал, по сравнению с тем,
> что в http://www.gamedev.ru/code/forum/?id=202212 было?
Не помню. Вот, что у меня сейчас: https://github.com/gammaker/Intra/blob/master/IntraLib/src/Sound/… ment.cpp#L455
Вроде на SSE переписал, но не помню, быстрее это или нет.
Пробую реализовать внятно звучащий глокеншпиль.
Зафигачил такую довольно общую формулу (под тулзу по ссылке выше):
Частоты не кратны.
duration порядка 5 секунд.
Кому интересно - можно попробовать подобрать коэффициенты.
Давным давно был такой сайт http://democoder.ru/ но сейчас он загнулся, там очень доступно было рассказано про синтез частотной модуляцией.
как вариант из этой бородатой темы:
http://www.enlight.ru/demo/faq/ - общая сборная салянка от демокодеров.
http://www.websound.ru/ - тут есть много статей.
club.jayd-project.com - тоже загнулся печально.
может кто вспомнит был классный форум математиков, где люди кучу формул выводили в каждой теме, для расчета звуковых фильтров и тд, ни как не могу вспомнить еще в 2008.
(ссылку где то сохранил, а найти не могу)
foxes
https://web.archive.org/web/20140517063131/http://democoder.ru/
https://web.archive.org/web/20080226064627/http://club.jayd-project.com/
Читать их вроде вполне доступно.
Не нето, вспомнил, статья по FM синтез была на http://samplegenerator.narod.ru/ - еще живой.
сама демосистема - http://www.demoscene.ru/plasticator/Plasticator_demotool.html
раньше была на http://plasticator.heroez.net/ - сдохла.
жуть у меня на drum piano (club.jayd-project.com) всего 15 скачиваний http://www.gamedev.ru/sound/forum/?id=218423
наверное начать надо с физического процесса со знания что такое звук
звук это есть волна I=Imax * sin(wt+phasa) , w=2*pi*f , звук есть волна с частотой 20герц-20килогерц .
Rikk
> наверное начать надо с физического процесса со знания что такое звук
Начни.
Rikk
> звук это есть волна I=Imax * sin(wt+phasa) , w=2*pi*f , звук есть волна с
> частотой 20герц-20килогерц .
Это только одна частота, а звук - это спектр множества таких частот.
начну.
>Ну и свой огрызок синтезатора продублирую, что-ли
Тю, я некомпилирующуюся версию закинул.
Вот:
http://www.everfall.com/paste/id.php?ro9i2xej1zct
FordPerfect
> Тю, я некомпилирующуюся версию закинул.
Да там какая-то мелочь, запятая что ли вместо точки с запятой, я исправлял и компилировал.
Тема в архиве.