KSP все о нем

Т.е. если нужно что бы видоизмененный скриптами миди сигнал попадал на другие инструменты?
в настройках плагина ставим в окошке про midi output (или как-то так), чтобы уходили только скриптовые миди, или как там надо.
А потом забываем про инструменты и пишем все в мульти-скриптах и каллбеке on midi_in.
@EUGEN27771, или Ваш вопрос конкретно про KSP? Для KSP люди с vi-control уже нарисовали отдельный апплет-визуальный редактор, который экспортирует весь GUI во вполне приличный код.
[DOUBLEPOST=1510500755][/DOUBLEPOST]@Bborisss, не понял, что должен делать код, если честно. точнее, он же ничего не делает :)
к сожалению, я сейчас тоже в поисках кроссплатформенного миди-процессора. И ничего лучше, чем JUCE в голову не приходит.
А в рипере есть чудесный JSFX :)
 
  • Like
Реакции: Bborisss
в настройках плагина ставим в окошке про midi output (или как-то так), чтобы уходили только скриптовые миди, или как там надо.
А потом забываем про инструменты и пишем все в мульти-скриптах и каллбеке on midi_in.
Работает, спасибо!!!
[DOUBLEPOST=1510590374][/DOUBLEPOST]
@Bborisss, не понял, что должен делать код, если честно. точнее, он же ничего не делает
По-моему тут возможности безграничны :)
 
По-моему тут возможности безграничны
Я к тому, что предыдущий кусок кода делал ровно то, что игнорил все эвенты и заменял их скриптовыми аналогами, что, в принципе, ничего не делало :)
Вот в мульти-скрипте с настройкой отправки только скриптовых ноты - это уже первый шаг к просветлению, а именно - организация в перспективе умного passtrough.
Если не заглядывали ко мне в блог еще - там есть вводная статья по миди-процессорам (правда, прям вводная), но пока будет полезно
 
  • Like
Реакции: Bborisss
Я к тому, что предыдущий кусок кода делал ровно то, что игнорил все эвенты и заменял их скриптовыми аналогами, что, в принципе, ничего не делало
Вот в мульти-скрипте с настройкой отправки только скриптовых ноты - это уже первый шаг к просветлению, а именно - организация в перспективе умного passtrough.
Да, это для проверки работы только. Попробовал писать в мульти-скрипте, все работает, все получается. Фантазия уже полетела)


Если не заглядывали ко мне в блог еще - там есть вводная статья по миди-процессорам (правда, прям вводная), но пока будет полезно
Блог нашел, а где именно там статейка не пойму?
 
  • Like
Реакции: PianoIst
@PianoIst Здорово!
Узнал про существование функций в KSP!
А что значит "функция в KSP не может принимать в себя аргумент. Вместо него используем дополнительную переменную..."?
 
"функция в KSP не может принимать в себя аргумент
В нормальных языках пользовательская функция обязана вернуть значение, то-есть приравнивается к выражению. И как правило, она может принять в себя какие-то значения, как аргументы, чтобы потом вернуть результат на их основе. Функции, которые просто выполняются, как правило, редкость, но в KSP присутствуют только они.
В расширенном синтаксисе SublimeKSP функции могут принимать в себя аргументы, но тогда они становятся inline (увеличивается результиующий код, что, как оказалось, сильно просаживает производительность скрипта), поэтому ннадо костыли такие юзать.
 
  • Like
Реакции: Bborisss
@Bborisss, почти:
Код:
function add(x,y)
(
x+y
);
z = add (3,5)
Ваш пример (из-за именования) будет работать тока для z. А тогда вторая строчка не нужна вовсе, а с другой переменной тоже работать не будет.

Бывает еще так как-то:
Код:
function exp(x,y)
  local (i,exp)
  (
    exp = x
    for i = 0 to y
      (
        exp = exp * x
      );
     return (exp)
  );
z = exp(2,4)
//16 получится

а если еще в дебри углубиться, то этот пример можно развернуть в "контактовский вариант" (к вопросу о написании библиотек и компиляторов)
Код:
on init
  declare $_exp__x
  declare $_exp__y
  declare $_exp___i
  declare $_exp___exp
end on
function (exp)
  $_exp___exp := $_exp__x
  $_exp___i := 0
  while ($_exp___i # $_exp__y)
    $_exp___exp = $_exp___exp * $_exp__x
  end while
end function

on (чего-нибудь)
  $_exp__x := 2
  $_exp__y := 4
  call (exp)
  z = $_exp___exp
end on
//16 получится
 
Последнее редактирование:
Знаю, что вряд ли это кому-то будет интересно, но вдруг:)
Я тут запилил форк плагину SublimeKSP, позволяющий интегрировать свои плагины на Python (исопльзуя, преимущественно, reStructuredText) https://github.com/Levitanus/SublimeKSP
Смысл в том, что xeenm большими усилиями, чем обычными макросами оригинальной версии можно добиваться куда более комплексных решений, которые, к тому же, выиграют по проиводительности. А, поскольку, плагины работают как подключаемые модули, нет необходимости все время лезть в архив плагина и дрожать, что после очередной обновы все накроется.
Очень надеюсь, Дженет его включит в официальный репозиторий :)
Уже пилю первое расширение синтаксиса на новой системе (правда, закрытое). Пока работает)

А здесь небольшой about: https://github.com/nojanath/SublimeKSP/issues/80
 
Друзья, подскажите!
Не понимаю, почему не удается считать параметр события с помощью маркеров. Вот кусок кода:

set_event_mark(play_note(EVENT_NOTE, EVENT_VELOCITY, 0, -1), MARK_1)
set_event_par(by_marks(MARK_1), EVENT_PAR_PAN, 1000)
message(get_event_par(by_marks(MARK_1), EVENT_PAR_PAN))

дело в том, что установить параметр удается, а считать нет. Причем первый параметр в set_event_par и get_event_par одинаковый, однако сообщение выдает "0". Не понимаю...
 
@Hedgehog, боюсь, у нас никто не поможет, иди к Марио (EvilDragon). Я с миди в контакте никогда не работал.
Женя Емельянов сейчас вроде тоже разбирается, но хз на какой стадии
 
  • Like
Реакции: Hedgehog
@Hedgehog, боюсь, у нас никто не поможет, иди к Марио (EvilDragon). Я с миди в контакте никогда не работал.
Женя Емельянов сейчас вроде тоже разбирается, но хз на какой стадии
что ты подразумеваешь? это не только к работе с миди относится. Маркеры должны любому событию давать возможность обращения по имени, а не по ID. И это работает, но только в одну сторону, а именно set_event_par.
В любом случае, это не критично, просто не понятно, я что-то делаю не так или же это недоработка NI.
 
обращения по имени, а не по ID
а, ну я как-то не вникал в этот механизм. По идее, зачем? Если можно сделать так:
Код:
$my_event = $EVENT_ID
[DOUBLEPOST=1531332456][/DOUBLEPOST]@Hedgehog, вообще я ща в своем компиляторе закончу релизацию стека и функций, перейду к построению классов built-in. Там и пройдусь по-новой по всему мануалу, может чего-то дельного нахватаюсь. Все-таки я его перечитывал от корки до корки последний раз года 3 назад, уже многое добавилось
 
а, ну я как-то не вникал в этот механизм. По идее, зачем? Если можно сделать так:
Код:
$my_event = $EVENT_ID
[DOUBLEPOST=1531332456][/DOUBLEPOST]@Hedgehog, вообще я ща в своем компиляторе закончу релизацию стека и функций, перейду к построению классов built-in. Там и пройдусь по-новой по всему мануалу, может чего-то дельного нахватаюсь. Все-таки я его перечитывал от корки до корки последний раз года 3 назад, уже многое добавилось

Да, действительно в этом нет проблемы, просто хотел использовать этот механизм для хранения ID нот при реализации true_legato, но столкнулся с описанными выше проблемами, поэтому придется хранить ID в массиве или переменных)) Эх, а задумка интересная была у нэйтивов)
 
Алгоритм готовый и работающий у меня уже есть, просто хотел попробовать реализовать его другими инстументами))
 
  • Like
Реакции: PianoIst
@Hedgehog, кстати, это реальные замеры: если есть вариант обратиться к значению в массиве, или вызвать нативную функцию - надо решать через массив. Это занимает меньше кода и это быстрее в микросекундах.
 
  • Like
Реакции: Hedgehog
Добрый день, можно ли с помощью KSP подписывать клавиши в пианороле хоста?

Зачем мне это. Я работаю в FL Studio, там есть родной плагин для ударных FPC, так вот, этот плагин задаёт свои имена для клавиш в pianoroll. Это очень удобно, когда мышью вбиваешь партии ударных в пианороле, то сразу видно на какой клавише какой инструмент назначен. Допустим бочка на клавише С1, так в пианороле эта клавиша так и подписывается "Kick". Соответственно в самом FPC эти названия задаются произвольно на каждом пэде.

Ударные я сейчас использую другие, не FPC, а библиотечные на базе NI Kontakt. Но вот этой фишки очень не хватает.

П.с. буду рад любым решениям этого вопроса, любыми другими средствами, не только KSP.
 
Я, если честно, тоже сомневался в том что это возможно, так как перерыл уже кучу статей и форумов по FL Studio с её FPC, и всё безрезультатно. Но всё же надеялся, и когда узнал о KSP, решил спросить.

Значит просто красиво распечатаю драм-мэп и положу перед монитором:)
 
О, я не знал что в Рипере так можно, круто!
Я и так на него перехожу потихоньку, планировал сведение в нём делать, а аранжировку по привычке во фруктах. Но раз так, нужно глубже его возможности изучить, может и полностью на него тогда перейти.
@Pianolst, Спасибо за наводку!
 
  • Like
Реакции: PianoIst
кстати, нашёл у себя самую первую рукопись по KSP скриптингу от апреля 2006...решил прикрепить, думаю, лишней не будет...)))

А можете перезалить? Не возможно скачать
-------------------

Я уже тут создал тему ))
https://rmmedia.ru/threads/135658/

Потому что ничего не нашёл, обыскался по словам "Создание" библиотек, а оказывается надо было искать по фразе "KSP" , о которой ничего и не знал ) Ну перечитал всю эту тему, софт по поводу GUI примерно понятен в общих чертах, скачал, ознакомился. И собственно вопрос по скриптам - по KSP Reference Manual понятно мало, начинается всё с callback .. и пошли функции без какого-либо подробного объяснения, для чего оно и как на примерах использовать. Хоть там и есть примеры, но мануал больше похож на справочник уже для маститых прогеров. А есть что-то более простое и доступное с примерами? С чего можно начать изучать самые простые скрипты и вобще основу этого всего?

PianoIst, для этого надо знать какой-то язык программирования? Вы программист? Или тоже освоили базовые навыки начиная с KSP Reference Manual ? Посоветуйте пожалуйста, с чего лучше всего начать, чтоб влиться в тему?
 
@TechnoIsBack, KSP и есть ЯП) Просто он не нормальный ЯП, а DSL.
Я бы посоветовал сразу двинуться в сторону HISE
Но там чутка посерьезнее все, чем в контакте. И обе платформы имеют свои ограничения. Зато жизнь себе не сломаете ни контактом, ни KSP.
А если хочецца прям в контакте делать - погодите чутка, я обновление на свой компилятор накачу в течении месяца, и можно будет относительно норм прогать.

А можете перезалить?
c 2006 много воды утекло))

Посоветуйте пожалуйста, с чего лучше всего начать, чтоб влиться в тему?
начните вообще не со скриптинга. Берете контакт, или лучше HISE (если сможете собрать), и пытаетесь что-то делать через GUI. Когда чувствуете, что GUI не хватает – курите потихоньку ЯП и мануалы, спрашивайте, что не получается (лучше, конечно, на профильном форуме, хотя и я могу много чего ответить на первых порах)
 
  • Like
Реакции: TechnoIsBack и Elle
Нужно получить скрипт, который будет по нажатию кнопки выбирать один из имеющихся в маппинге семплов, а остальные мьютить.
Или расширенный вариант - на кнобе число семплов, которые останутся после случайного перебора, после нажатия кнопки.
Это возможно?
 
@ljekio, нужно более подоробное тз: из какого маппинга, после нажатия кнопки на кнобе число каких сэмплов?
Можно ли захардкодить сэмплы, то-есть рекомпидировать скрипт под конкретный инструмент, или надо постоянно в один и тот же инструмент кидать разные сэмплы?
 
Да, разные, именно смысл, чтоб пачку семплов закидываешь и оно само выбирает.
Но нюанс в том, что к азам KSP я никогда не приближался...
 

Сейчас просматривают