Уголок программиста (1 онлайн

Astor-Piazzolla

Well-Known Member
22 Июл 2007
976
412
63
40
Новосибирск
vkontakte.ru
Чисто из академического интереса...
Язык не важен.
Возможно ли решить такую задачу?
181179

Известны начало, конец и высота нот.
Знаем, что голоса 3.
Нужно разделить итем на 3 разых трека, как обведено красным.
 
Последнее редактирование:

PianoIst

Well-Known Member
19 Май 2010
4.091
4.143
113
29
Kirchberg, kreis Zwickau
soundcloud.com
@Astor-Piazzolla, Когда количество голосов постоянно — при условии, что они не перекрещиваются — это решаемо даже в realtime.
Основные проблемы возникают, когда они постоянно сходятся-расходятся.

Над псевдо-кодом думать откровенно лень, но общий алгоритм в базовом случае примерно такой: Задаем кол-во голосов, окно для распознавания, резолвим голоса по порядку, попутно проверяя, что остаются свободные ноты для остальных. Если не остается — расширяем окно и пробуем дальше.

В конкретном кейсе, допустим, проблемна первая нота из второго аккорда: она к верхнему голосу ближе, чем к среднему. Но в принципе, если потвикать алгоритм для пачки подобных случаев — то будет работать. Я б в качестве второго граничного примера 3 аккорд сделал с захлестом на 2й любым голосом.
Ну, день-два посидеть надо над этим. В принципе, похоже чем-то на парсинг какого-нибудь ЯП, когда делается AST в какой-нибудь польской нотации через рекурсивный спуск.
 
  • Like
Реакции: Astor-Piazzolla

Astor-Piazzolla

Well-Known Member
22 Июл 2007
976
412
63
40
Новосибирск
vkontakte.ru
Когда количество голосов постоянно — при условии, что они не перекрещиваются
всегда бы такие тепличные условия.:)
Это же не 3 голоса в задаче по гармонии. Это чаще группа pizz, например. В этом случае правила не работают, ибо группа как бы один голос. (Имеется в виду, что если по контексту все партии по сути 1 голос, то то правила гармонии неприменимы. Правила работают только для ЯВНО РАЗНЫХ голосов).
 
Последнее редактирование:

Astor-Piazzolla

Well-Known Member
22 Июл 2007
976
412
63
40
Новосибирск
vkontakte.ru
В конкретном кейсе, допустим, проблемна первая нота из второго аккорда: она к верхнему голосу ближе, чем к среднему.
А вот это интересно. Я думал, что проблема в том, что она заканчивается раньше, чем начинаются другие голоса этого аккорда.
 
  • Like
Реакции: PianoIst

PianoIst

Well-Known Member
19 Май 2010
4.091
4.143
113
29
Kirchberg, kreis Zwickau
soundcloud.com
всегда бы такие тепличные условия.
На самом деле такие условия создаются протечкой абстракции. Допустим, я давно хожу вокруг идеи явного указания количества голосов для divisi. В принципе, педаль sustain + еще какой-нибудь контроллер под пальцем дают свободу точного указания от 1 до 4 голосов. Там дальше для реалтайма идет вопрос того, какой голос куда легатирует, и, как раз скорее всего потекут ошибки по моему кейсу с дистанцией до соседнего голоса.
Вообще тут господа @dr-music и @V_ad_im обсуждают софт, который это все, вроде как решает, под названием divisimate. Но я пока туда не смотрю)
Добавлено:

заканчивается раньше, чем начинаются другие голоса этого аккорда.
а ыот этого я не заметил, да)
 

V_ad_im

Well-Known Member
1 Ноя 2006
2.699
2.276
113
48
Возможно ли решить такую задачу?
и да и нет)

навскидку видится такое:
главной задачей тут будет правильно задать временнОе окно (которое очерчивает условный аккорд), внутри которого сортировать ноты на самую нижнюю, среднюю и самую верхнюю, чтобы присвоить их голосам. И явно это временнОе окно будет всё время разное - т. е. его надо будет по ходу вычислять своё для каждого случая. И хорошо бы, чтобы этим занималась программа, а не человек..

правило определения этого окна может быть такое: окно для аккорда из трёх нот длится до момента, пока не встретится любая новая нота. Это правило действует как вперёд по временнОй шкале, так и назад. В данном примере эти окна будут накладываться друг на друга.
 
Последнее редактирование:
  • Like
Реакции: Astor-Piazzolla

H-ron

Well-Known Member
13 Апр 2011
7.651
5.775
113
58
Москва
Чисто из академического интереса...
Язык не важен.
Возможно ли решить такую задачу?
Посмотреть вложение 181179
Известны начало, конец и высота нот.
Знаем, что голоса 3.
Нужно разделить итем на 3 разых трека, как обведено красным.
Элементарно. Если голоса постоянно идут подобными аккордами с примерно одинаковым таймингом, то можно тупо дожидаться трех нот, из которых разбрасывать по голосам верхнюю-среднюю-нижнюю, сбрасывать счетчик и дожидаться следующей тройки...

Более сложная логика потребуется если в каком-либо голосе будет удержание.
 

Trasher

Well-Known Member
12 Янв 2013
606
423
63
Длительность ноты тут не так важна,так как считать можно и по note_on, только скорее всего весь путь длины куска(отрывка) придется сохранять (нужно сосчитать лямбды(отрезки тишины между нотами) + длительность нот).Считаем по три команды(note_on)(запоминаем последовательность),затем вычисляем и выбираем нужную высоту нот(вычисляем голос/голоса),затем выделяем из исходных данных по условию нужные ноты на трек_per_voice,разделяем/копируем/генерим(в зависимости от задачи).
181216
181217
181219
181220
181221
181222
181223
 
  • Like
Реакции: Astor-Piazzolla и PianoIst

H-ron

Well-Known Member
13 Апр 2011
7.651
5.775
113
58
Москва
@Trasher, конечно, длительность в данном примере вообще не важна, если не ожидается удержание. А если возможна пауза в голосе, без вмешательства человека однозначно разделить по голосам, боюсь, невозможно в принципе - все время будет конкуренция...
 
  • Like
Реакции: Astor-Piazzolla и Trasher

PianoIst

Well-Known Member
19 Май 2010
4.091
4.143
113
29
Kirchberg, kreis Zwickau
soundcloud.com
Если стереть верхнюю ноту второго аккорда в задачке, то разрешить ход голосов может лишь автор)
на самом деле и стирать ничего не надо. Вдруг там в верхнем голосе на ноту больше?))) В смысле, мелодия. Так шта...
 
  • Like
  • Haha
Реакции: Astor-Piazzolla и H-ron

Astor-Piazzolla

Well-Known Member
22 Июл 2007
976
412
63
40
Новосибирск
vkontakte.ru
Если голоса постоянно идут подобными аккордами с примерно одинаковым таймингом, то можно тупо дожидаться трех нот, из которых разбрасывать по голосам верхнюю-среднюю-нижнюю, сбрасывать счетчик и дожидаться следующей тройки...
Видимо, пытаясь всякое предусмотреть, я бессмысленно усложнил задачу. Подразумеваются аккомпанирующие преимущественно аккордовые фактуры.
В таком контексте ситуация похожая на первый аккорд маловероятна. А если и возникнет, то скорее всего все эти ноты окажутся в одном голосе. А вот второй может возникать часто. Даже при отсутствии опеваний может быть исполнено 2 голоса (например, при разрешении ум3).
Думается, что счетчик полифонии можно прерывать при общей паузе. И если получилась мелодия, определить к какому голосу следующего аккорда ведёт её высотный тренд. Или от какого голоса предыдущего, при соответствующих обстоятельствах.
 

H-ron

Well-Known Member
13 Апр 2011
7.651
5.775
113
58
Москва
@Astor-Piazzolla, а нет ничего страшного. Если начало самой поздней ноты каждой тройки происходит раньше, чем начало самой ранней ноты следующей тройки, то все группируется элементарным счетом этих начал до трех, затем сортируется по высоте, сбрасывается и повторяется снова) При этом абсолютно не важно в каком порядке они в этих самых тройках поступают, т.к. группируются тупо последовательно, а затем сортируются по высоте в уже сформированных тройках-аккордах.

Даже напрягаться не надо...
 
Последнее редактирование:

H-ron

Well-Known Member
13 Апр 2011
7.651
5.775
113
58
Москва
Тогда конечно надо задавать минимально возможное время между нотами мелодии, а если ноты поступают в пределах этого заданного временного интервала, разносить их по голосам. Но если в пределах заданного интервала лишь одно событие - скидывать в верхний. Тоже не великая проблема)
 
Последнее редактирование:
  • Like
Реакции: Astor-Piazzolla

Astor-Piazzolla

Well-Known Member
22 Июл 2007
976
412
63
40
Новосибирск
vkontakte.ru
ну это уж другой пример)
Две ноты мелодии далее аккорд?
Ага.:) Я просто совсем не учел в примере, что случай опеваний всяких даже в аккордовой фактуре вероятней всего произойдёт.
 
  • Like
Реакции: H-ron

Astor-Piazzolla

Well-Known Member
22 Июл 2007
976
412
63
40
Новосибирск
vkontakte.ru
@Hron, вот тоже сижу про это думаю. Может допустить отрицательное значение и выразить в процентах?
Впрочем, я больше думаю про случайные легаты, если темп шустрый. От pizz и spicc вряд ли стоит ожидать кудрявой орнаментики.
 
Последнее редактирование:

H-ron

Well-Known Member
13 Апр 2011
7.651
5.775
113
58
Москва
@Astor-Piazzolla, идея в чем:
53159430-ABB9-41E7-8030-466455B4E913.jpeg


Задали некий временной интервал - красным. Если между последовательными нотами интервал больше заданного, то обрабатываем отдельно, если меньше - группируем и добавляем в аккорд, а затем раскидываем по голосам сообразно высоте, как только очередная нота выскакивает за заданный интервал. Цикл.

При таком подходе нот в аккорде может быть неограниченно)

Интервал пропорционален доле...
 
Последнее редактирование:
  • Like
Реакции: Morpheus и Astor-Piazzolla

H-ron

Well-Known Member
13 Апр 2011
7.651
5.775
113
58
Москва
случайные легаты
Кстати, я б для начала обрабатывал бы исключительно тайминг Note-On. Дополнительную логику по длительности включал бы лишь при явной необходимости, которой в примерах пока не видно)
 

V_ad_im

Well-Known Member
1 Ноя 2006
2.699
2.276
113
48
вот ещё задачка из серии "тут бы ИИ не помешал..":

Имеем звуковой файл (легатная нота одной известной струнной библиотеки) - нужно объяснить программе, как в рилтайме измерить время от начала миди ноты до условного пика получаемого аудио-звука. Сам звук непростой, с нарастающей атакой - поэтому за синхрометку его скорее следует принимать момент первого максимального пика громкости. При этом имеем в виду, что таких звуков измерить надо тонну, они могут быть разной громкости. Поэтому не хотелось бы сравнивать звуки с неким общим порогом - хочется мерить их внутри себя, сравнивая относительные точки огибающей, чтобы тихие звуки не нужно было нормализовать перед измерением. Поэтому, к примеру, берём за основу такой алгоритм: сравниваем в рилтайме поступающую громкость со звука, если она больше значения, записанного в буфер, тригерим таймер ("найден пик") и записываем новое значение в буфер. Т.е., пока громкость нарастает, мы каждый момент времени засекаем время "вот, сейчас достигнут пик, меряем время". А когда значения поступают такие же или меньше, то не тригерим. Таким образом мы имеем время, прошедшее с момента начала замера, до времени максимального пика сигнала любой громкости, пусть он даже - 55 дБ. По сути это алгоритм Peak-hold индикаторов уровня. Но вот тут задача усложняется тем, что разные звуки могут иметь разные огибающие, и первый пик может быть не максимальным в рамках всего звука. И тут программе надо отличить - какой пик считать начальным и таймстемпом, а какой уже является продолжением звука.. И вот тут следствие зашло в тупик) кроме как выставить гейт "пики возможны в течении только n-го количества первых миллисекунд" ничего не придумал. Но так можно ошибиться, если, например, если я этот гейт выставил на 200мс, а у сигнала пик прозойдёт на 230 мс..
 

Вложения

Последнее редактирование:

H-ron

Well-Known Member
13 Апр 2011
7.651
5.775
113
58
Москва
@V_ad_im, Реальность времени довольно относительная, но как вариант:

Оперируем суммой квадратов значений напряжения сигнала за некий небольшой промежуток времени, превышающий некоторое количество периодов несущей. Это позволит сгладить одиночные пики. По производной данной величины(приращению), а точнее по изменению ее знака, находим очередной максимум. И сравниваем его величину с предидущим. Для надежности, возможно, надо рассматривать больше двух последовательных значений максимумов - опытным путем находим оптимум.
 
  • Like
Реакции: V_ad_im

basЫl

атрофировал юмор.
5 Янв 2004
7.153
5.002
113
а как насчёт квадратов разности соседних значений.
 
  • Like
Реакции: V_ad_im

baloo

Distor-Dreamer
19 Июн 2011
8.743
5.575
113
Ekaterinburg
спрошу тут)
вслед за отдельными форматами, научился делать VST2.4, понятно что Steinberg мне не даст лицензию сегодня на продажу вст2, только на тройку.. но это отдельная история.
Меня больше интересует вопрос лицензирования по части VST / AU / AAX
По VST в пакете VST3_SDK есть VST3_License_Agreement. Первую страницу заполняю на себя, а что в конце документа? Поля для Штайна или для меня в том числе?
Поделитесь если кто подписывал ранее соглашение VST?

Так же ткните плиз на то как подписать AU соглашение? Пока я нашел только соглашение на использование логотипа AU.
Проекты НЕ-опенсурсные, коммерческие.
Гуглю третий день, не густо на эту тематику совсем на форумах западных, именно по вопросу подписания лицензионных соглашений на издание VST/AU/AAX.
 

V_ad_im

Well-Known Member
1 Ноя 2006
2.699
2.276
113
48
Поля для Штайна или для меня в том числе?
дык по идее самое логичное - это самих штайнов и спросить, на их форуме, например. Или в Ямахе - техподдержку по штайни на русском они осуществляют на территории РФ
 
  • Like
Реакции: baloo

baloo

Distor-Dreamer
19 Июн 2011
8.743
5.575
113
Ekaterinburg
аккаунт форума на аппруве завис, прийдется ждать, но смотрю и ответ там не быстрые, за Ямаху спасибо
писал на почту так же, вобщем зависшая ситуация)
 
Последнее редактирование:

PianoIst

Well-Known Member
19 Май 2010
4.091
4.143
113
29
Kirchberg, kreis Zwickau
soundcloud.com
Проекты НЕ-опенсурсные
С этим у VST все очень плохо:
VST3 по факту правильно работает только на винде. На маке уже с костылями, вроде. На Linux вообще лажа.
VST2.4, как правильно заметили, все, ахтунг, не лицензируется. Но для open-source вроде бы, типа, прокатывает.
Так что... Грустно это все. Очень грустно. Особенно грустно то, что по факту — безальтернативно... Очень надеюсь, что Cokos что-нибудь начнет с этим делать. Но даже на это толком не стоит надеяться, потому что у Cokos есть, типа, JSFX, и им, по большому счету, нас⋅рать

@V_ad_im, Вопрос крайне обширный. Если очень коротко — то надо гуглить по ключевым словам MIR (Music Feature Re... (extraction)) и librosa (python). Это самый быстрый путь начать что-то реально делать. Еще как вариант — курить новый препроцессор сэмплов от NI (Kontakt Developer tools + MIR), но там, боюсь, быстро уткнешься в то, что что-то не сможешь сделать.
У меня давно руки чешутся в эти вопросы погрузиться, но все не до того...
 
  • Like
Реакции: V_ad_im

baloo

Distor-Dreamer
19 Июн 2011
8.743
5.575
113
Ekaterinburg
Да, перспективы не радужные. Что с ВСТ3 все плохо это понятно. Они и покрывают сейчас всего 30% рынка в сравнении, встречал много раз, и это за свои 10 лет формата. Из идейного встречал по теме предложения поиска и покупки умершей конторы которая когда то выпускала 2.4 (с большим вопросом по ребрендинг в свою пользу)..

Искажу вопрос тогда... в сторону AU / AAX лицензирования. На сайте Apple я нашел соглашение на использование логотипа только.
где брать лицензионное соглашение (и существует ли оно, предусмотрено - думал что да) для продаж AU.
То же самое с AAX (эту тему я вообще еще не трогал, но слышал что лицензия там под 500 евро?).
 

Сейчас онлайн (Пользователей: 0, Гостей: 1)