Так, обновил скрипт, ссылка та же.
Мелкая инструкция:
В первую очередь нужно выбрать трек и установить выделение(time selection).
На треке, в области выделения, может находится несколько айтемов, но желательно, чтобы это все-таки был один айтем.
=============
Get Selection - это основная кнопка для захвата аудио с трека.
HP - LP - настройки фильтра, это понятно - hight Pass - low Pass. Для дальнейшего анализа используется то, что попало в диапазон между ними.
Input 1-2 - это используемый канал - левый-правый.
Out Gain - уровень выходного сигнала(с фильтра).
=============
Threshold - порог гейта, ниже которого аудио не анализируется.
Sensetive - разница между быстрой и медленной огибающей, в дБ, это немного неверно, но зато понятно.
Чем ниже значение - тем выше чувствительность, тем больше точек будет создано.
Retrig - время, которое гейт будет неактивен после срабатывания. Проше говоря, минимальное время между точками.
Reduce Points - удаляет "слабые" точки.
Detect Velo - время детектирования уровня для расчета велосити. По идее, большие значения дадут более точный результат.
Но это не всегда.
Все значения между собой очень сильно связаны и влияют друг на друга.
=============
RMS - Peak - определяет, как будут вычисляться значения велосити. Время расчета = Detect Velo.
Create MIDI - создает миди, в зависимости от настроек(нота, канал, длина ноты).
Velo Scale - масштабирует велосити в зависимости от настроек, интересная игрушка.
Самая интересная настройка - та, что под кнопкой миди - третья, Use selected item.
Все изменения на выделенном айтеме происходят автоматически, любые настройки учитывается и пересоздают выбранную ноту на выделенном айтеме.
При этом, воспроизведение можно не останавливать, то есть слушать, что получается, если на миди-треке висит инструмент.
=====================
По скорости. Что бы ни говорилось - мне это важно. Нет никакой возможности что-либо нормально настраивать, когда нет обратной связи.
Без обратной связи можно только предполжить, как все произойдет. И ждать.
До 10 - 15 секунд у меня все работает практически в режиме обратной связи, а на совр. компах будет еще раза в два быстрее.
На длинных участках - уже приходится ждать. Вообще, по-нормальному, можно просто брать участки друг за другом - настройки же остаются те же.
Далее говорю о 180 секундах - довольно большое время.
Попросили, я сделал неограничено по времени. Лимит можно установить в скрипте(time_limit)
И попытался расположить все по порядку - настройки из первой секции(фильтр) работают достаточно медленно.
Кроме гейна - гейн работает средне.
Из второй(гейт) средне, из третьей все - быстро, то есть по отпусканию мыши, моментально.
=====================
По графике.
Колесо мыши - зум по горизонтали.
Shift+Колесо - зум по вертикали.
Midle drag - "перетаскивание"
Shift+drag - на триг-линии - изменение позиции
Ctrl+drag - на триг-линии - изменение велосити
То же самое. Пять секунд наставить точек на нормальной графике, даже вручную.
=====================
== Я пьяный и злой ==
Вот по этому поводу я скажу еще раз, может не совсем корректно, но не могу, это все не так.
Бери gfx.blit() и зумь/скролль сколько влезет. Сэкономим аж целых n секунд.
Растягивать, сжимать буферы - это вообще никакой не вариант.
Ни на кокосе, ни на рмм, даже для абстрактных бета-тестеров не пройдет такой способ. Это не зум, а херня, точно говорю.
А если поставить зум в 1000 - легко же ставится - проверьте на моем варианте - ставьте self.max_Zoom = 1000.
При растягивании на 1000 весь Ваш буфер стал бы 1-2 пиксела. Вот и весь Ваш gfx.blit() - или не так я говорю?
Про скролл я тихонько промолчу - там еще посчитать надо, что куда и при каком зуме уйдет.
Я решил это довольно просто, а в этом и вся суть. Я не кичился, как Вы говорите.
++++++++++++++++
Мне просто это слово не понравилось - "кичился". Какая-то в нем мерзость есть. Если бы только Вы сказали иначе...