Войти
ПрограммированиеФорумЗвук

Программирование звука музыкальных инструментов

Страницы: 1 2 318 19 Следующая »
#0
22:25, 12 сен. 2016

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

Акцент в первую очередь на относительно компактные синтезаторы (хотя и не обязательно именно демосцена).

Не обязательно MIDI. Не обязательно классические инструменты.

Вообще - тема для централизации общения на данную тематику, задавания вопросов разной степени дурацкости и т. д..

В тему приглашаются все желающие (в частности - и люди, обычно обитающие в разделе "Звук").


#1
22:26, 12 сен. 2016

Общие сведения:
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/

#2
22:27, 12 сен. 2016

Откуда брать семплы музыкальных инструментов?
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 ("Спектрограмма"). Это может помочь на глаз оценить поведение разных гармоник в динамике.

#3
22:35, 12 сен. 2016

Добавлю пару ссылок на свой синтезатор:
Исходники: https://github.com/gammaker/Intra/tree/master/IntraLib/src/Sound
Обсуждение: http://www.gamedev.ru/projects/forum/?id=189866
На Linux и\или GCC пока не работает - хоть и компилируется, но какие-то странные баги.

#4
23:11, 12 сен. 2016

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/
Она кривая, но по-быстрому продемонстрировать что-то может пригодиться.

#5
0:04, 13 сен. 2016

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 переписал, но не помню, быстрее это или нет.

#6
2:15, 13 сен. 2016

Пробую реализовать внятно звучащий глокеншпиль.

Зафигачил такую довольно общую формулу (под тулзу по ссылке выше):

+ Показать

Частоты не кратны.
duration порядка 5 секунд.

Кому интересно - можно попробовать подобрать коэффициенты.

#7
(Правка: 3:55) 3:35, 13 сен. 2016

Давным давно был такой сайт http://democoder.ru/ но сейчас он загнулся, там очень доступно было рассказано про синтез частотной модуляцией.

как вариант из этой бородатой темы:
http://www.enlight.ru/demo/faq/ - общая сборная салянка от демокодеров.
http://www.websound.ru/ - тут есть много статей.
club.jayd-project.com - тоже загнулся печально.

может кто вспомнит был классный форум математиков, где люди кучу формул выводили в каждой теме, для расчета звуковых фильтров и тд, ни как не могу вспомнить еще в 2008.
(ссылку где то сохранил, а найти не могу)

#8
(Правка: 4:45) 4:43, 13 сен. 2016

foxes
https://web.archive.org/web/20140517063131/http://democoder.ru/
https://web.archive.org/web/20080226064627/http://club.jayd-project.com/
Читать их вроде вполне доступно.

#9
(Правка: 12:53) 12:20, 13 сен. 2016

Не нето, вспомнил, статья по 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
#10
12:53, 13 сен. 2016

наверное начать надо с физического процесса со знания что такое звук

звук это есть волна I=Imax * sin(wt+phasa) , w=2*pi*f , звук есть волна с частотой 20герц-20килогерц .

#11
13:04, 13 сен. 2016

Rikk
> наверное начать надо с физического процесса со знания что такое звук
Начни.

Rikk
> звук это есть волна I=Imax * sin(wt+phasa) , w=2*pi*f , звук есть волна с
> частотой 20герц-20килогерц .
Это только одна частота, а звук - это спектр множества таких частот.

#12
13:36, 13 сен. 2016

начну.

#13
23:20, 13 сен. 2016

>Ну и свой огрызок синтезатора продублирую, что-ли
Тю, я некомпилирующуюся версию закинул.
Вот:
http://www.everfall.com/paste/id.php?ro9i2xej1zct

#14
23:27, 13 сен. 2016

FordPerfect
> Тю, я некомпилирующуюся версию закинул.
Да там какая-то мелочь, запятая что ли вместо точки с запятой, я исправлял и компилировал.

Страницы: 1 2 318 19 Следующая »
ПрограммированиеФорумЗвук