Open lain-dono opened 11 years ago
Асло -k*c[i]=a[i]-4*b[i]+b[i-1]+b[i+1]
-формулу можно получить в виде человекочитаемом виде?
Про формулы к математик-куну(nichegovamneskazhet). А про алгоритм, если я ничего не упустил, то он принимает следующие вещи: 1 сигнальный(аудио) вход, с помощью него можно подавать например щелчки(имитируя медиатор), или звук других инструментов для симпатического резонанса; много числовых входов(float), на них приходит: в первую очередь частота в герцах(в Pure Data нет целых, так что тоже float), во вторую очередь все остальные физические параметры(aka переменные в формуле), чьё изменение имеет смысл(вероятно все). Кажется тут есть противоречие: удельная масса(и толщина, может быть ещё что-нибудь) струны влияет на высоту, а высота должна задаваться одним параметром, но с этим разберёмся, опять же математику вопрос. А на выходе только звук, т.е. выход один.
Про формулы к математик-куну(nichegovamneskazhet).
Реквестирую его сюда. Ну или пусть в тред свои выкладки напишет.
1 сигнальный(аудио) вход аудио
Но зачем? Алгоритм должен сам примешивать себя к другому аудио?
в Pure Data нет целых, так что тоже float
Было очевидно из мануала и примеров.
во вторую очередь все остальные физические параметры(aka переменные в формуле)
Меня интересует полный список. Будет список - будет уже прям вся обвязка плугина готова. Пять минут работы.
Будут подробные математические выкладки - будет код. Судя по всему там работы на джва часа от силы. Ман PureData весьма маленький. И хидер там милипусечный(~600 строк это ниачом).
Реквестирую его сюда.
Можно в треде позвать. Но зачем? Алгоритм должен сам примешивать себя к другому аудио?
Нам ведь нужна физическая модель струны, а струна резонирует с другими струнами и прочими звуками. Если щипок можно имитировать по-другому, то симпатический резонанс нельзя, и это не примешивание(микширование), а направление данных внутрь модели, чтобы она с ними прореагировала. Меня интересует полный список. Будет список - будет уже прям вся обвязка плугина готова. Пять минут работы.
Будет сделано, но когда переведём формулу.
Ман PureData весьма маленький. И хидер там милипусечный(~600 строк это ниачом).
Это здорово, что тебе это просто. Не мог бы ты построчно откомментить, когда будешь делать, чтобы не знающий С понял? Я пытался разобраться в этом мане, но обилия незнакомых концепций мозг закипал.
Будет сделано, но когда переведём формулу.
Жду.
Не мог бы ты построчно откомментить, когда будешь делать, чтобы не знающий С понял?
Да не вопрос.
Я пытался разобраться в этом мане, но обилия незнакомых концепций мозг закипал.
http://pdstatic.iem.at/externals-HOWTO/node2.html http://pdstatic.iem.at/externals-HOWTO/node3.html Конечный продукт - библиотека, а не исполняемый файл(нет main).
// вставляем объявления всех типов и ф-ий puredata
#include "m_pd.h"
static t_class *helloworld_class;
// Тип
typedef struct _helloworld {
t_object x_obj;
} t_helloworld;
// Когда к нам приходит сообщение - мы обрабатываем его этой ф-ей
// т.е. это те "чёрточки" в блоках
// такие ф-ии могут иметь доп. параметры в разных форматах
void helloworld_bang(t_helloworld *x) {
post("Hello world !!");
}
// Это конструктор нашего объекта
void *helloworld_new(void) {
t_helloworld *x = (t_helloworld *)pd_new(helloworld_class);
return (void *)x;
}
// Вызывается один раз при подключении библиотеки
void helloworld_setup(void) {
// генерим ссылку на класс
helloworld_class = class_new(
gensym("helloworld"), // имя плашечки
(t_newmethod)helloworld_new, // конструктор класса
0, sizeof(t_helloworld),
CLASS_DEFAULT, 0);
// Добавляем ф-ию обработки значений, приходящих на "черточку"
// (как "черточку" вообще правильно назвать?)
class_addbang(helloworld_class, helloworld_bang);
}
И это я ещё только глазами пробежался. Дальше надо курить ман взатяг. Но мне оно всё ну прям совсем очевидно.
О да, это я хотел узнать ещё с августа, когда первый раз его открыл. Но всё равно до конца(даже на 10%) не понял :С (синтаксис-то не знаю). Может всё-таки в джабере початимся, или в скайпе созвонимся? Или может откомментишь этот кусок в стиле учебника, типа: "структура _helloworld
содержит две переменных: t_object
и x_obj
, которые впоследствии будут использованы для..".
(как "черточку" вообще правильно назвать?)
Вход или выход же, технически-литературный вариант: впуск и выпуск.
Лейн, я тебе так скажу - на математической модели мы будем сидеть месяц как минимум. В настоящее время нам нет смысла сразу собирать все, нам нужно получить правильно работающую модель, а потом привинтить интерфейс.
Подробные математические выкладки эквивалентны перепечатыванию сюда учебника Пирумова. Краткое описание работы алгоритма я дал - из двух массивов нужно получить третий, затем массивы переставить.
Начнем с моделирования дерганья струны медиатором. Нужно знать положение всех точек струны в момент срыва с нее медиатора и скорости этих точек.
Положению всех точек струны соответствует треугольник с вершинам в концах струны и в точке приложения медиатора.
Лейн, я тебе так скажу - на математической модели мы будем сидеть месяц как минимум.
Ого! А в чём такой объём задачи? Получается надо не просто буквально перенести формулу, а что-то ещё додумать?
Да, потому как хитрожопые авторы описали в статье примерно десятую часть алгоритма, остальной текст - КАКИЕ МЫ ПИЗДАТЫЕ, КАКИЕ МЫ ХОРОШИЕ. Как обычно все короче
@nichegovamneskazhet
математические выкладки эквивалентны перепечатыванию сюда учебника Пирумова
OH SHI~ Пойду гуглить мат. библиотеки тогда.
Как обычно все короче
Ато!
@omich
Может всё-таки в джабере початимся, или в скайпе созвонимся?
Я слоупок же.
Или может откомментишь этот кусок в стиле учебника, типа: "структура
_helloworld
содержит две переменных:t_object
иx_obj
, которые впоследствии будут использованы для..".
Прям сейчас нет. Завтра вечером может даже вольно переведу часть мана. Самому же удобнее будет. Но если ты не знаешь синтаксиса, то тебе неособо поможет.
В общем к завтрашнему вечеру я уже буду знать puredata и разберусь с доп. инструментарием. Как я понял задачка таки немного объёмнее, чем кажется на первый взгляд.
Не надо сейчас хвататься за PureData!!1111 Нужно разобраться с математикой! Математическая библиотека нам может понадобиться только одна - GSL. Код будет очень тупой, но нужно кодить без ошибок.
Но если ты не знаешь синтаксиса, то тебе неособо поможет.
Поможет! Я хочу написать пару простых объектов, которые нужны будут для моего синта, отличий от хеловорда мало, помимо метода. Учить С целиком конечно надо бы, но это как в военном походе ещё каждый день отжиматься и подтягиваться по 20 раз, даже хуже.
Не надо сейчас хвататься за PureData!!1111
Но мне-то можно, я же ничем не могу помочь с формулой. Кстати, я сейчас пишу одному шарящему человеку, если он будет в добром расположении духа, то может зайдёт, подскажет что-нибудь по алгоритму.
..У нас есть конкретные вопросы? Если предположить, что он знает всё по теме. Может даже формулу целиком знает. Предлагаю обсуждать что касается непосредственно алгоритма в issue 2.
Бампую реквест про мануал. @lain-dono, ответь хоть что-нибудь.
С PureData разобрался в общих чертах.
Насколько я понел в итоге должно получиться что-то вроде: Где sitarcheg~ это некая числомолотилка.
А теперь внимание вопрос: Что принимает алгоритм и что выплёвывает на выходе? Т.е. каков формат входящих и выходящих данных?