Физическое моделирование гитары.

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Физическое моделирование гитары.

Сообщение Mikle » 21.08.2011 (Вс) 10:46

Я пытаюсь эмулировать физику колебания струн. Представляю струну, как цепочку точек, обладающих массой и связанных пружинками, даже сделал визуальный прототип для проверки:
http://tuapse-mikle.narod.ru/VisualString.zip
Тут скорость для наглядности уменьшена в 1000 раз.
Чтобы струна колебалась затухая, приходится вводить вязкость, как на гитаре, струна на порожке часть энергии отдаёт дэке. Но такая вязкость даёт одинаковое затухание на любой частоте, а в реальной струне более высокие гармоники затухают быстрее, это можно было бы фейково эмулировать, но я не хочу фейково, звучать потом тоже фейково будет, пришлось вводить вязкость самой струны, то есть потери на колебаниях участков струны друг относительно друга.
Вот небольшая демка:
http://tuapse-mikle.narod.ru/Gt.zip
Можно менять ноту в пределах трёх октав и извлекать звук, дёргая струну в разных местах (кликаем по зелёной полосе).
Последний звук сохраняется в текущей папке в виде WAV файла.

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

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Физическое моделирование гитары.

Сообщение Proxy » 21.08.2011 (Вс) 12:46

Звук довольно правдоподобный, во всяком случае я худшего ожидал :) Только бывает просто отрывок звука какой-то при нажатии на зелёную полоску, не знаю в чём проблема, может аудио ноута слабое сильно.
Да, антивирусу что-то на душе не спокойно. Может компрессор применён к exe?

Mikle писал(а):Далее хочу сделать шесть струн, чтобы их колебания взаимно передавались через порожек.

А потом из этого выйдет хороший аналог GTP RSE? Или как это планируется использовать?
Вложения
123.jpg
123.jpg (10.06 Кб) Просмотров: 10333
Follow the white rabbit.

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Физическое моделирование гитары.

Сообщение FireFenix » 21.08.2011 (Вс) 14:21

Хорошо звучит, но что-то во время старта после перемотки - иногда запинается, и нужно ещё раз нажать для звучания
Было бы прикольно ещё сделать эффект, как во время колебания струны, по ней елозиешь. Получается такой не обычный звук.

Даёшь Guitar Hero! :)
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Физическое моделирование гитары.

Сообщение Mikle » 21.08.2011 (Вс) 14:39

Proxy писал(а):антивирусу что-то на душе не спокойно. Может компрессор применён к exe?

Да, применён UPX.
Иногда затыкается (но не у меня), но в файле звук нормальный записан.
Proxy писал(а):А потом из этого выйдет хороший аналог GTP RSE? Или как это планируется использовать?

Это планируется использовать в демосцене, есть такой жанр - 32k Exe Music.
FireFenix писал(а):Было бы прикольно ещё сделать эффект, как во время колебания струны, по ней елозиешь.

Это есть - можно сдвигать лад, не заглушая струну, можно подтягивать. Проблема теперь описать гитарную партию, сейчас бьюсь над редактором.

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Физическое моделирование гитары.

Сообщение FireFenix » 21.08.2011 (Вс) 15:30

Mikle писал(а):
FireFenix писал(а):Было бы прикольно ещё сделать эффект, как во время колебания струны, по ней елозиешь.

Это есть - можно сдвигать лад, не заглушая струну, можно подтягивать. Проблема теперь описать гитарную партию, сейчас бьюсь над редактором.

Странно, если ты говоришь про скролл, то во время звучания, если его перемещать - ничего не даёт.

Также если окошко сдвинуть с центра и нажать на "струну", то звук прервётся и окошко центрируется. Такй же эффект наблюдается при после некоторого нажатия в одной и тойже позиции.
Не знаю с чем это связано
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Физическое моделирование гитары.

Сообщение Proxy » 21.08.2011 (Вс) 16:12

Mikle писал(а):Проблема теперь описать гитарную партию, сейчас бьюсь над редактором.

А чем midi не подходит?
Mikle писал(а):Это планируется использовать в демосцене, есть такой жанр - 32k Exe Music.

По окончании можно немного побаловаться с компьютерным творчеством, полностью ИИ созданную гитарную партию делать, без изначальных примитивов :D
Follow the white rabbit.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Физическое моделирование гитары.

Сообщение Mikle » 21.08.2011 (Вс) 16:35

FireFenix писал(а):во время звучания, если его перемещать - ничего не даёт.

Нет! В демке этого нет, это поддерживает класс, а демка использует не все его возможности.
Proxy писал(а):А чем midi не подходит?

У меня есть возможность коснуться струны в любом месте с любым коэффициентом вязкости, чтобы вызвать обертон. Как это передать в миди?
Proxy писал(а):полностью ИИ созданную гитарную партию делать, без изначальных примитивов

ИИ всё равно должен по какой-то партитуре играть, или он должен сочинять?

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Физическое моделирование гитары.

Сообщение Proxy » 21.08.2011 (Вс) 16:58

Mikle писал(а):ИИ всё равно должен по какой-то партитуре играть, или он должен сочинять?

В том вся и соль, что "сочинять". Нет жёстких фрагментов партитуры, есть только критерии оценки последовательности на звучит и не звучит. И вот задача ИИ создавать какие-либо произвольные последовательности и оценивать так, как бы это оценил человек (т.е. знает ноты и интервалы, кусков фрагментов партитуры, которые можно стыковать оно не знает). Точно так же, как компьютерное творчество стихи, там всё, чем владеет ИИ изначально — база слов, в лучшем случае ещё какой-то граф, описывающий связь между некоторыми словами (но нет готовых предложений, словосочетаний, шаблонов и т.д). Это походит на шизофазию, т.е. смыслом обделено, но вполне складно звучит. Походит, например, на творчество Алины Витухновской.
Mikle писал(а):У меня есть возможность коснуться струны в любом месте с любым коэффициентом вязкости, чтобы вызвать обертон. Как это передать в миди?

midi + расширение. Я midi (со всеми его недостатками) предложил только потому, что в midi быстрее всего и проще всего готовые партии из той же GTP конвертировать. Можно, конечно и в чём-то более сложном покопаться, но не думаю, что эти усилия будут оправданы. Да и к тому же сам midi тоже весьма не прост, спецификации по MIDI XG очень не маленькие, возможно там всё необходимое уже есть.
Follow the white rabbit.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Физическое моделирование гитары.

Сообщение Mikle » 22.08.2011 (Пн) 9:38

Шесть струн есть, вот как звучит аккорд ми-мажор:
http://tuapse-mikle.narod.ru/Gt.mp3

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Физическое моделирование гитары.

Сообщение Mikle » 23.08.2011 (Вт) 11:11

Сделал редактор, уже кое-что:
http://tuapse-mikle.narod.ru/Gt.mp3

CyberPunk
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 23.06.2006 (Пт) 7:54

Re: Физическое моделирование гитары.

Сообщение CyberPunk » 25.08.2011 (Чт) 14:22

На нейлон похоже...
И походу слишком чистый звук... Нет погрешностей, щипка и т.д.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Физическое моделирование гитары.

Сообщение Mikle » 26.08.2011 (Пт) 8:46

CyberPunk писал(а):На нейлон похоже...
И походу слишком чистый звук... Нет погрешностей, щипка и т.д.

Сейчас уже есть, только показать не могу, принял участие в конкурсе тут:
chaos constructions

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Физическое моделирование гитары.

Сообщение Mikle » 28.08.2011 (Вс) 17:29

Всё, показ работ прошёл, могу выкладывать.
Вот моя демка:
http://tuapse-mikle.narod.ru/SpainGuitar.zip

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Физическое моделирование гитары.

Сообщение Proxy » 28.08.2011 (Вс) 18:00

Весьма занятно.
Follow the white rabbit.

1Steps
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 505
Зарегистрирован: 20.12.2006 (Ср) 0:50
Откуда: New York

Re: Физическое моделирование гитары.

Сообщение 1Steps » 29.08.2011 (Пн) 3:57

Класс, мне понравилось.
Удалена за ненадобностью.

CyberPunk
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 23.06.2006 (Пт) 7:54

Re: Физическое моделирование гитары.

Сообщение CyberPunk » 29.08.2011 (Пн) 10:27

Порадовала настройка гитары... Очень реалистично получилось...

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Физическое моделирование гитары.

Сообщение FireFenix » 31.08.2011 (Ср) 23:20

Mikle писал(а):http://tuapse-mikle.narod.ru/SpainGuitar.zip

Класс...

Может не много оффтоп, но где можно найти подобную музыку как в демке? Понравилась гитара, хотелось бы больше :)
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Физическое моделирование гитары.

Сообщение Mikle » 01.09.2011 (Чт) 8:47

FireFenix писал(а):где можно найти подобную музыку как в демке?

Мне нравится, например, группа Arcoluz - акустическая гитара, контрабас и барабаны.
Вот, например:
http://youtu.be/aqeuF39vcM4

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Физическое моделирование гитары.

Сообщение Mikle » 06.09.2011 (Вт) 11:07

Работаю над звуком стальных струн:
http://tuapse-mikle.narod.ru/Guitar.zip
№12 - ми большой октавы, то есть открытая 6-я струна,
№60 - ми третьей октавы, то есть 1-я струна, 24-й лад.
Как, реалистично?

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Физическое моделирование гитары.

Сообщение Proxy » 07.09.2011 (Ср) 14:17

Круто. Вот интересно стало, а что взято за основу модели? Про точки и пружинки — это понятно, но массы точек (и минимальное необходимое число их), изначальные расстояния и т.д. и т.п, это всё сам подбирал по звуку? Т.е. можно ли получить в итоге сколько-нибудь несложную мат. формулу амплитуды по времени (до металлизации звука)?
Follow the white rabbit.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Физическое моделирование гитары.

Сообщение Mikle » 08.09.2011 (Чт) 9:13

Не понял, что значит "до металлизации звука".
Система простая:
Код: Выделить всё
Private Type sState
  stLen As Long
  p() As Single
  s() As Single
  f() As Single
End Type

Dim St As sState

'....... далее это
  ReDim St.p(St.stLen)
  ReDim St.s(St.stLen)
  ReDim St.f(St.stLen)

'....... это в процедуре рассчёта нового состояния системы:
    For i = 1 To St.stLen - 1
      St.s(i) = St.s(i) + ((St.p(i - 1) + St.p(i + 1)) * 0.5 - St.p(i)) * St.f(i)
    Next i
    For i = 1 To St.stLen - 1
      St.p(i) = St.p(i) + St.s(i)
    Next i

Фактически - численное интегрирование.
Здесь p() - позиция, s() - скорость,f() - некоторая условная величина, пропорциональная силе натяжения, обратно пропорциональная массе частицы. Эта величина задана не общей, для всей струны, а для каждой точки потому, что я вношу в неё небольшой рэндом для натуральности.
Точки с номерами 0 и St.stLen неподвижны - это начало и конец струны.
Если такую систему возбудить - сместить позиции некоторых точек от нуля, то она будет вечно колебаться.
Система ведёт себя аналогично настоящей струне - её частота обратно пропорциональна stLen и пропорциональна квадрату f. Коэффициенты пропорциональности, наверное, можно было бы рассчитать, но я нашёл их опытным путём.
Чем струна длиннее (stLen больше), тем натуральнее звук, но больше нужно ставить f для той же частоты. Однако для f есть предел - 2, дальше частота колебания отдельной частицы (высшая гармоника) становится больше половины частоты дискретизации, интеграл становится не сходящимся.
Чтобы струна не колебалась вечно, а затухала, нужно отбирать энергию колебаний, тут много разных способов.

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Физическое моделирование гитары.

Сообщение FireFenix » 14.12.2011 (Ср) 22:42

Случайно наткнулся в инете на интересное исполнение http://www.youtube.com/watch?v=Z9KLfRIrGXs

Будем надеяться, что ещё осталась мотивация и ждём новых хитов :)
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Физическое моделирование гитары.

Сообщение Mikle » 15.12.2011 (Чт) 11:02

Круто играет, и в начале даже не верится, что это бас.
Но в демосцене всё наоборот - тут никого техникой не удивить, тут наоборот, сделать обычную "восьмёрочку" по блатному, зато похоже, как настоящее, с ошибками, расстроенной гитарой и т. п. - это интересно.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Физическое моделирование гитары.

Сообщение Mikle » 09.03.2012 (Пт) 14:23

Пробую вместо линейной струны колебать 2D плоскость, получается что-то от гонга до колокола, вот первые опыты:
http://tuapse-mikle.narod.ru/Bell.zip
При других параметрах больше похоже на разного вида барабаны.

А это - звук смычка по струне:
http://tuapse-mikle.narod.ru/Viola.zip

Вот MP3 микс из нескольких семплов колокола и смычковых от контрабаса до скрипки:
http://tuapse-mikle.narod.ru/mix.mp3

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Физическое моделирование гитары.

Сообщение FireFenix » 31.07.2012 (Вт) 1:35

Случайно наткнулся на исполнителей Rodrigo Y Gabriela, необычная игра на гитаре.
Если ещё не видел - посмотри, может вдохновит на новые произведения :)

Одно из произведений: http://www.youtube.com/watch?v=LpI2JSn2o0A
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Физическое моделирование гитары.

Сообщение Mikle » 31.07.2012 (Вт) 10:10

Я знаю Rodrigo Y Gabriela, видел много их клипов, отлично играют.

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Физическое моделирование гитары.

Сообщение Proxy » 08.09.2012 (Сб) 7:04

Mikle писал(а):Система простая

Попробовал на досуге кое-что из вышеизложенного.
Но как добиться реалистичного "звона" в начале? Как отпускать струну? У меня получилась атака чем-то вроде варёной сосиски, а хотелось бы до пальца и до медиатора дойти. Я отпускаю как в примере с анимацией (VisualString; линейная зависимость), потом попробовал придать форму синусоиды и отпустить, вышло чуть-чуть поинтереснее, но всё же до реалистичной атаки очень-очень далеко.
В макете использовал всё очевидное и плюс позаимствовал расчёт состояния системы (не знаю почему, но сам бы я не додумался, хотя решение вполне очевидное :D ). В чистом виде звук очень далёк от натурального (ну может ещё 16 бит сказывается). Но для начала хочу разобраться с атакой.
Попробовал на настоящем басу — вроде приглушённая струна такую форму и принимает при атаке, но сложно успеть рассмотреть и сложно сопоставить масштабы (нет конечного числа точек). В чём соль?

И ещё вопрос: а нет ли функции частоты для той системы, когда известно число точек и их средняя f? Мне кажется, что в моём макете частота почему-то не верно определяется, с тюнером (хотя скорее камертоном) не сходится вроде.
Последний раз редактировалось Anonymous 09.09.2012 (Вс) 3:46, всего редактировалось 1 раз.
Follow the white rabbit.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Физическое моделирование гитары.

Сообщение Mikle » 08.09.2012 (Сб) 15:28

Сегодня занят, завтра распишу подробно.

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Физическое моделирование гитары.

Сообщение Proxy » 08.09.2012 (Сб) 17:47

Я тут немного продвинулся с мёртвой точки. Изучил теорию. Всё не дальше школьного курса физики, выводы понятны (но сам бы не вывел :) ).
В моём случае частота вычисляется так (это так же, как для того твоего примера выше, без всяких наворотов):
((2 / (2 * stLength)) * Sqr(stForce / 2)) * WH.samplesPerSecond
Или если упростить
(Sqr(stForce / 2)/stLength) * WH.samplesPerSecond

Здесь stLength - длина струны, stForce - среднее отношение количества полуволн к линейной плотности струны (иначе говоря основная физическая характеристика в диапазоне от 0 до 2)

С атакой тоже есть прогресс, понял, что нужно не мгновенно воздействовать на струну, а за постепенно за некоторый промежуток времени (оказывается это и есть тот звук, о котором я говорил, только я думал, что он возникает уже после того, как палец оторвался). Ну и не нужно придавать строго форму струны (это мешает смешивать остаточные колебания от прежнего щипка и от нового), работает и если просто оттягивать струну в одной точке (ну и если учесть отношение длины участка контакта медиатора или пальца к струне к отношению длины струны к количеству точек в модели, то примерно так и выходит, что палец касается струны в приделах одной точки).
Фуф, вроде стало более-менее адекватно звучать. Выложу, как закончу с частотой.

ЗЫ. Пока писал код — очень многое для себя узнал о физике струны.
Вложения
sequencer.7z
(8.95 Кб) Скачиваний: 134
Follow the white rabbit.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Физическое моделирование гитары.

Сообщение Mikle » 09.09.2012 (Вс) 10:20

Что-то с качеством косяк, ты, случайно, не на целых числай всё считаешь? Попробуй на синглах, если так.
И ещё, чтобы звон был максимальным в начале и убавал быстрее основного тона, можно ввести вязкость струны. Это некая величина, противодействующая движению в зависимости от скорости узла относительно усреднённой скорости двух соседних узлов. Регулировка такой вязкости ощущается, как смена материала струны, от нейлона до жёсткого металла.

След.

Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

    TopList