Обновления в версии 3
Прошу обратить внимание - дзен режет табуляцию, поэтому скрипты будут выглядеть немножко неприятно.
Не забудьте подписаться - чем больше подписчиков, тем больше переводов.
Что нового в Контакте 3 – KSP
Авторское право © 2007 Native Instruments Software Synthesis GmbH. Все права защищены.
Последнее изменение: 8 октября 2007 г.
Обработка представления производительности
Теперь можно использовать более одного сценария в качестве сценария просмотра производительности — все пять сценариев можно вывести на передний план с помощью кнопки make_persistent команда.
С помощью новой команды
_set_skin_offset(<offset in pixel>) (_set_skin_offset(<смещение в пикселях>))
смещает выбранный фоновый tga-файл на указанное количество пикселей
Если в параметрах прибора был выбран фоновый графический файл tga, и этот файл больше, чем максимальная высота представления производительности, вы можете использовать эту команду для смещения фонового рисунка, создавая таким образом отдельные фоны для каждого из слотов скрипта.
Взаимодействие между сценариями: PGS
Теперь можно отправлять и получать значения из одного сценария в другой, отбрасывая обычный порядок слева направо, используя новые команды Program Global Storage (PGS). PGS — это динамическая память, которая может быть прочитана/записана любым скриптом. Вот команды:
Команды PGS
_pgs_create_key(<key-id>,<size>) (<идентификатор ключа>,<размер>)
_pgs_key_exists(<key-id>) (<идентификатор ключа>)
_pgs_set_key_val(<key-id>,<index>,<value>) (<id-ключа>,<индекс>,<значение>)
_pgs_get_key_val(<key-id>,<index>) (<id-ключа>,<индекс>)
<key-id> похоже на имя переменной, оно может содержать только буквы и цифры и должно начинаться с цифры. Может быть хорошей идеей всегда писать их заглавными буквами, чтобы подчеркнуть их уникальный статус.
Вот пример, вставьте этот скрипт в любой слот:
on init
_pgs_create_key(FIRST_KEY, 1) {defines a key with 1 element}
{ определяет ключ с 1 элементом }
_pgs_create_key(NEXT_KEY, 128) {defines a key with 128 elements}
{ определяет ключ со 128 элементами}
declare ui_button $Just_Do_It
end on
on ui_control($Just_Do_It)
{writes 70 into the first and only memory location of FIRST_KEY}
{записывает 70 в первую и единственную ячейку памяти FIRST_KEY}
_pgs_set_key_val(FIRST_KEY, 0, 70)
{writes 50 into the first and 60 into the last memory location of NEXT_KEY}
{ записывает 50 в первую и 60 в последнюю ячейку памяти NEXT_KEY}
_pgs_set_key_val(NEXT_KEY, 0, 50)
_pgs_set_key_val(NEXT_KEY, 127, 60)
end on
1
и вставьте следующий скрипт в любой другой слот:
on init
declare ui_knob $First (0,100,1)
declare ui_table %Next[128] (5,2,100)
end on
on _pgs_changed
{checks if FIRST_KEY and NEXT_KEY have been declared}
{проверяет, объявлены ли FIRST_KEY и NEXT_KEY}
if(_pgs_key_exists(FIRST_KEY) and _pgs_key_exists(NEXT_KEY))
$First := _pgs_get_key_val(FIRST_KEY,0) {in this case 70}{в данном
случае 70}
%Next[0] := _pgs_get_key_val(NEXT_KEY,0) {in this case 50}{в данном
случае 50}
%Next[127] := _pgs_get_key_val(NEXT_KEY,127){in this case 60}{в
данном случае 60}
end if
end on
Как показано выше, существует также новый тип обратного вызова, который выполняется всякий раз, когда выполняется команда set_key:
on _pgs_changed
тип обратного вызова, выполняемый всякий раз, когда любой _pgs_set_key_val() выполняется в любом скрипте
Ключей может быть сколько угодно, однако каждый ключ может содержать не более 256 элементов. Обращение к модуляторам по имени
Теперь можно обращаться к модуляторам и интенсивности модуляции, используя имя модулятора или назначение модуляции. Эта текстовая строка может быть задана заранее или изменена вручную.
Две новые команды
find_mod(<group-idx>,<mod-name>) (find_mod(<idx-группы>,<имя-мода>))
возвращает индекс модулятора
а также
find_target(<group-idx>, <mod-idx>, <target-name>)
возвращает индекс назначения модуляции
Давайте посмотрим, как эти команды можно использовать в реальной жизни. Допустим, мы хотим контролировать время атаки огибающей громкости первой группы в инструменте. Мы можем просто написать:
on init
declare $mod_idx
$mod_idx := find_mod(0,"ENV_AHDSR")
declare ui_knob $Attack (0,1000000,1)
set_knob_unit ($Attack,$KNOB_UNIT_MS)
set_knob_label
($Attack,_get_engine_par_disp($ENGINE_PAR_ATTACK,0,$mod_idx,-1))
end on
on ui_control ($Attack)
_set_engine_par ($ENGINE_PAR_ATTACK,$Attack,0,0,-1)
set_knob_label
($Attack,_get_engine_par_disp($ENGINE_PAR_ATTACK,0,$mod_idx,-1))
end on
2
Но почему мы пишем "ENV_AHDSR"? Потому что это имя по умолчанию для любого конверта ahdsr. Вы можете просмотреть и изменить имя, когда редактор сценариев открыт и щелкните правой кнопкой мыши модуль:
Это означает, что вы можете переименовать существующий модулятор, например, если вам нужны огибающие (один для громкости, один для фильтра).
Теперь так же легко управлять модуляцией скорости и громкости, просто напишите это:
on init
declare $mod_idx
$mod_idx := find_mod(0,"VEL_VOLUME")
declare ui_knob $Velocity (0,1000000,1)
set_knob_label...
($Velocity,_get_engine_par_disp($ENGINE_PAR_MOD_TARGET_INTENSITY,0,$mod_idx,-1))
end on
on ui_control ($Velocity)
_set_engine_par($ENGINE_PAR_MOD_TARGET_INTENSITY,$Velocity,0,$mod_idx,-1)
set_knob_label...
($Velocity,_get_engine_par_disp($ENGINE_PAR_MOD_TARGET_INTENSITY,0,$mod_idx,-1))
end on
3
Здесь мы изменяем значение ползунка модуляции (от скорости до модуляции громкости). Поскольку мы обращаемся к внешнему модулятору, мы также можем использовать команду find_mod.
Если вы хотите контролировать интенсивность модуляции, например, огибающей фильтра, проверьте это:
on init
declare $mod_idx
$mod_idx := find_mod(0,"FILTER_ENV")
declare $target_idx
$target_idx := find_target(0,$mod_idx,"ENV_AHDSR_CUTOFF")
declare ui_knob $Knob (-100,100,1)
$Knob := 0
set_text ($Knob, "FLT Env")
end on
on ui_control ($Knob)
if ($Knob < 0)
_set_engine_par
($MOD_TARGET_INVERT_SOURCE,1,0,$mod_idx,$target_idx)
else
_set_engine_par
($MOD_TARGET_INVERT_SOURCE,0,0,$mod_idx,$target_idx)
end if _set_engine_par($ENGINE_PAR_MOD_TARGET_INTENSITY,abs($Knob*10000),0,$mod_idx,$target_idx)
end on
Обратите внимание, что мы вручную переименовали конверт ahdsr в «FILTER_ENV».
Другие изменения/улучшения
Изменения в таблице пользовательского интерфейса
Теперь вы можете изменить количество отображаемых столбцов в таблице пользовательского интерфейса:
set_table_steps_shown(<ui-table-variable>,<num-steps>)
set_table_steps_shown (<переменная таблицы пользовательского интерфейса>, <количество шагов>)
изменяет количество отображаемых столбцов в таблице пользовательского интерфейса
Кроме того, теперь также можно объявлять таблицы с высотой 1. Это может быть полезно, например, для отображения шагов в модуле последовательности:
4
Информационные теги для элементов пользовательского интерфейса
С помощью следующей команды:
set_control_help(<control-id>,<text-string>)
назначает текстовую строку, которая будет отображаться при наведении на элемент пользовательского интерфейса
Вы можете создавать тексты справки, которые появляются при наведении мыши на элемент пользовательского интерфейса (убедитесь, что информационная панель Kontakt видна). Просто попробуйте:
on init
declare ui_knob $Knob(0,100,1)
set_control_help($Knob, "Hello, I'm the only knob, folks")
end on
Ручка Unit Mark for Semitone (Ручка полутонов)
$KNOB_UNIT_ST
отображает «ST» (полутон) в качестве метки регулятора
Новые переменные параметры двигателя
Ниже приведен список всех новых переменных параметров движка для новых эффектов в Kontakt 3:
Skreamer (Скример)
$ENGINE_PAR_SK_TONE
$ENGINE_PAR_SK_DRIVE
$ENGINE_PAR_SK_BASS
$ENGINE_PAR_SK_BRIGHT
$ENGINE_PAR_SK_MIX
Rotator (Ротатор)
$ENGINE_PAR_RT_SPEED
$ENGINE_PAR_RT_BALANCE
$ENGINE_PAR_RT_ACCEL_HI
$ENGINE_PAR_RT_ACCEL_LO
$ENGINE_PAR_RT_DISTANCE
$ENGINE_PAR_RT_MIX
Twang (Звонкий)
$ENGINE_PAR_TW_VOLUME
$ENGINE_PAR_TW_TREBLE
$ENGINE_PAR_TW_MID
$ENGINE_PAR_TW_BASS
Cabinet (Кабинет)
$ENGINE_PAR_CB_SIZE
$ENGINE_PAR_CB_AIR
$ENGINE_PAR_CB_TREBLE
$ENGINE_PAR_CB_BASS
$ENGINE_PAR_CABINET_TYPE
5
Не забудьте подписаться!