Velocity Switcher скрипт для Kontakt (1 онлайн

Не знаю кидал кто-нибудь похожий скрипт, если да пусть модераторы удалят тему.

Собственно сабж:


Немного о плагине:
Переключает патчи в банке в зависимости от силы нажатия клавиш на миди клавиатуре, или просто согласно громкости миди нот. Всего имеется 4 зоны громкости, которые соотвeтвуют 4 столбцам в банке.

Громкость нот ругулируется колесом Mod Wheel.
Min Med Max устанавливают границы зон.
Ручка Length устанавливает, как долго будет длится нота, удобно играть длинные ноты не удерживая нажатыми клавиши, при переключении патчей автоматически выключаются все ноты старого патча
Tempo Sync регулирует в чем измеряется длительность нот, так же выключает удерживание нот.
Row switcher определяет начиная с какой клавиши происходит переключение строчек банка.
Так же можно переключать строчки колесиком Pitch Bend.

С длинными нотами удобно использовать плагин Unisono - Portamento (из раздела Perfomance) в режиме Mono Mode On, Expert -> Vol Enu Release или с ручными установками Fade Out.

Все баги, замечания и предложения пишем ниже, буду править. :victory:
[HIDE="10"] [/HIDE]

Примеры:

один экспрешин штрих:
Посмотреть вложение n2.mp3

экспрешин (слабое нажатие на клавиши) и легато(все остальные):
Посмотреть вложение y1.mp3

только экспрешин:
Посмотреть вложение 5.mp3

эспрешин (слабое нажатие на клавиши) и маркато(сильное нажатие):
Посмотреть вложение 4.mp3
 

shamilovv

New Member
29 Июн 2009
14
15
3
Браво, Сер Ёжик!!!
Великолепный скрипт!
Всю ночь гонял его с разными библами... оторваться не мог.
Хочу предложить только одно - предоставить возможность в выборе контроллера на переключения столбцов в банке с СС7 на СС11 или на то-же колесо-СС1, а велосити оставить традиционным.
 

Microtonic

Любознательный
21 Сен 2008
489
112
43
Москва
Сэр Ёжик, спасибо за скрипт. Удобно управлять не только скрипками, но и ударными - слабое нажатие - Крещендо дробь - среднее просто удар - сильное - дробь диминуендо.

А можно написать такой скрипт. В свой время я пытался, но не смогу довести до конечной точки...
Скрипт как в инструменте Prominy SC Electric Guitar.

Одна из возможностей скрипта:
- Загружаем несколько инструментов;
- Все инструменты имеют выход на одинаковый MIDI канал - 1 midi ch (естественно канал можно поставить любой).
- Выбираем управляющую midi-клавишу для переключения на нужный инструмент;

Что получаем?
Без скрипта: записываем партию, когда нажимаем плей у нас каждый загруженный инструмент начинает играть т.к. всё идёт в один midi-канал. Получаем кашу.

Со скриптом: записываем партию, каждому инструменту назначаем свою «Горячую клавишу» включения, нажимаем плей и в зависимости от того какая управляющая клавиша нажата, начинает играть нужный нам инструмент.

Конечно же переключение на новую идёт тогда, когда уже будет новая нота и если поставлено новая управляющая клавиша.

При помощи этого очень удобно делать программинг сложных партий где требуется различные артикуляции инструмента.

Ещё один важный момент - возможность встраивать такой скрипт в уже имеющиеся скрипты. Для тех инструментов где уже прописана какая-то своя скриптовая архитектра. Как бы безболезненное встраивание кода, допустим в самом низу (можно написать инструкцию как это сделать). Ну и конечно конечный полноценный без этой функции.

P.S. готов даже оплатить (в разумных приделах) такую работу.
 
Последнее редактирование:

Microtonic

Любознательный
21 Сен 2008
489
112
43
Москва
Скрип переключения по Велосити.


Хочу предложить только одно - предоставить возможность в выборе контроллера на переключения столбцов в банке с СС7 на СС11 или на то-же колесо-СС1, а велосити оставить традиционным.
Согласен. Сделать выбор чем управлять, а то Велосити бывает нужно для управления динамикой.

Ну или сделать (доработать) скрипт как я описал выше. Или сделать просто разные версии и модификации.
 

P00H

New Member
12 Мар 2004
8.193
2.787
0
55
Moscow
Одна из возможностей скрипта:
- Загружаем несколько инструментов;
- Все инструменты имеют выход на одинаковый MIDI канал - 1 midi ch (естественно канал можно поставить любой).
- Выбираем управляющую midi-клавишу для переключения на нужный инструмент;
Mind Control как раз это и ещё много чего делает

[media]http://www.youtube.com/watch?v=R9vJXxdOnkk[/media]
[media]http://www.youtube.com/watch?v=MgFYyYWZrYk[/media]
[media]http://www.youtube.com/watch?v=hTw6mwqq2VI[/media]
 
  • Like
Реакции: shamilovv

Microtonic

Любознательный
21 Сен 2008
489
112
43
Москва
P00H, ой, а где ж его взять? Ну этот самый скрипт? Не в полноценном виде как у Prominy SC Electric Guitar, хоть бы часть про которую я написал? ;)

О, вот он - http://www.orangetreesamples.com/mind-control

Скрипт интересный - даже очень, но вот бы сделать простую версию - так сказать: "Без заморочек" - как я описал выше. В Prominy SC Electric Guitar довольно просто это реализовано. Два три нажатия задаётся "Горячая клавиша переключения".
 
Последнее редактирование:

shamilovv

New Member
29 Июн 2009
14
15
3
каждому инструменту назначаем свою «Горячую клавишу» включения, нажимаем плей и в зависимости от того какая управляющая клавиша нажата, начинает играть нужный нам инструмент.
Ну, вроде бы, в скрипте у Сэра Ёжика это можно реализовать с помощью Row switcher - (определяет начиная с какой клавиши происходит переключение строчек банка).
Правда инструменты (артикуляции) в банк придется грузить в первый столбец это 128 : 4 = 32 строки.
И какая разница на каких каналах они будут находиться...
 
Последнее редактирование:

denus

Member
7 Фев 2009
30
2
8
Благодарю за скрипт. Только можно ли файл загрузить по новой, а то скачать вложение уже не удается из-за смены движка форума... :( Или может у кого сохранился скрипт этот...
 
Последнее редактирование:
Перезалил.

[HIDE=1]
{***********************************************
Velocity Swither
Author: Alexey Bozhenko
Written Alexey Bozhenko
Modified: December 28, 2010
*************************************************}

on init
set_script_title("Velocity Swither")
set_ui_height(3)
message("")
declare $count
declare $cur_vel
declare $cc_vel
declare $counter_min
declare $counter_max
{declare %note_id[128] remember the last Event-ID }
declare %lock[128] {lock note_off to prevent note_off while programm switch }
declare $last_note
declare $last_prog
declare $cur_prog
declare $shift_prog
{declare ui_switch $Panic
declare ui_switch $Mono}
declare ui_table %note_play[128] (6,2,10) {1 if the note is still playing, 0 if not}
declare ui_label $label1 (3, 1)
set_text ($label1, "Velocity switch zones:")
declare ui_label $label2 (6, 1)
set_text ($label2, ...
"0 10 20 30 40 50 60 70 80 90 100+")
declare ui_label $label3 (1, 1)
set_text ($label3, "Row switcher:")
declare ui_value_edit $Min (0, 127, 1)
declare ui_value_edit $Med (0, 127, 1)
declare ui_value_edit $Max (0, 127, 1)
declare ui_value_edit $KeySw (0, 127, $VALUE_EDIT_MODE_NOTE_NAMES)
$Min := 50
$Med := 90
$Max := 120
$KeySw := 12
$cur_vel := -1
$cc_vel := 90
$shift_prog :=0
move_control (%note_play, 1,3)
move_control ($Min, 1,2)
move_control ($Med, 2,2)
move_control ($Max, 3,2)
move_control ($label3, 6,1)
move_control ($label2, 1,5)
move_control ($label1, 1,1)
move_control ($KeySw, 6,2)
{move_control ($Panic, 6,6)
move_control ($Mono, 5,6)}
make_persistent ($Min)
make_persistent ($Med)
make_persistent ($Max)
make_persistent ($cc_vel)
make_persistent ($shift_prog)
make_persistent ($KeySw)
{make_persistent ($Mono)}
read_persistent_var($Min)
read_persistent_var($Med)
read_persistent_var($Max)
read_persistent_var($cc_vel)
read_persistent_var($shift_prog)
read_persistent_var($KeySw)
$counter_min:=0 {Apdate table to show zones}
while ($counter_min < $Min)
%note_play[$counter_min] := 9
inc ($counter_min)
end while
$counter_min:=$Med
while ($counter_min < $Max)
%note_play[$counter_min] := 9
inc ($counter_min)
end while
{--------Pulse Mode-------}
declare $duration
make_persistent ($duration)
read_persistent_var($duration)
declare const $Tempo_label_X := 5
declare const $Tempo_label_Y := 1
declare const $Tempo_knob_X := 4
declare const $Tempo_knob_Y := 1
declare @knob_name
@knob_name := "Length"
declare !tempo_names[18]
!tempo_names[0] := "1/128"
!tempo_names[1] := "1/64"
!tempo_names[2] := "1/32"
!tempo_names[3] := "1/16 T"
!tempo_names[4] := "3/64"
!tempo_names[5] := "1/16"
!tempo_names[6] := "1/8 T"
!tempo_names[7] := "3/32"
!tempo_names[8] := "1/8"
!tempo_names[9] := "1/4 T"
!tempo_names[10] := "3/16"
!tempo_names[11] := "1/4"
!tempo_names[12] := "1/2 T"
!tempo_names[13] := "3/8"
!tempo_names[14] := "1/2"
!tempo_names[15] := "3/4"
!tempo_names[16] := "4/4"
!tempo_names[17] := "Bar"
declare ui_label $tempo_label (1,1)
set_text ($tempo_label,"Tempo Sync:")
move_control ($tempo_label,$Tempo_label_X,$Tempo_label_Y)
set_control_help ($tempo_label,"Tempo Sync: Choose whether the tempo is free or synced to the master clock.")
declare ui_menu $Tempo_menu
add_menu_item ($Tempo_menu,"Free",0)
add_menu_item ($Tempo_menu,"Sync",1)
add_menu_item ($Tempo_menu,"OFF",2)
move_control ($Tempo_menu,$Tempo_label_X,$Tempo_label_Y+1)
make_persistent ($Tempo_menu)
set_control_help ($Tempo_menu,"Tempo Sync: Choose whether the tempo is free or synced to the master clock.")
declare ui_knob $Free_knob (1,1000,1000)
set_knob_unit($Free_knob,$KNOB_UNIT_MS)
set_knob_defval ($Free_knob,500)
$Free_knob := 500
set_text ($Free_knob,@knob_name)
make_persistent ($Free_knob)
set_control_help ($Free_knob,@knob_name & " (Free): Adjust the length of the notes in miliseconds, regardless of the master clock.")
declare ui_knob $Sync_knob (0,17,1)
set_text ($Sync_knob,@knob_name)
$Sync_knob := 5
set_knob_defval ($Sync_knob,8)
set_knob_label ($Sync_knob,!tempo_names[$Sync_knob])
make_persistent ($Sync_knob)
set_control_help ($Sync_knob,@knob_name & " (Sync): Adjust the length of the notes in rhythmical values, synced to the master clock. T stands for
triplet.")
declare ui_label $beat_label (1,1)
set_text ($beat_label,"Beat multiplied by:")
set_control_help ($beat_label,"Sync (Beat): Adjust the length of the notes in fractions/multiples of one beat, synced to the master clock. <0.25>
equals a 16th, <0.75> a dotted 8th, <2.5> two quarter notes and an 8th, <0.2> a quintuplet etc.")
$Tempo_menu := 1
move_control ($Sync_knob,$Tempo_knob_X,$Tempo_knob_Y)
move_control ($Free_knob,0,0)
move_control ($beat_label,0,0)
_read_persistent_var($Sync_knob)
set_knob_label ($Sync_knob,!tempo_names[$Sync_knob])
_read_persistent_var($Tempo_menu)
select ($Tempo_menu)
case 0
move_control ($Sync_knob,0,0)
move_control ($Free_knob,$Tempo_knob_X,$Tempo_knob_Y)
move_control ($beat_label,0,0)
case 1
move_control ($Sync_knob,$Tempo_knob_X,$Tempo_knob_Y)
move_control ($Free_knob,0,0)
move_control ($beat_label,0,0)
end select
end on
on midi_in
if ($MIDI_COMMAND = $MIDI_COMMAND_CC and $MIDI_BYTE_1 = 1) {TRANSFORMS CC TO VELOCITY}
$cc_vel := $MIDI_BYTE_2
end if
if ($MIDI_COMMAND = $MIDI_COMMAND_NOTE_ON and $MIDI_BYTE_2 > 0) {TRANSFORMS VELOCITY TO PROGRAMM CHANGE}
ignore_midi
if (in_range($MIDI_BYTE_1,$KeySw,$KeySw+11)) {ROW SWITCHER}
$shift_prog:=4*($MIDI_BYTE_1-$KeySw)
end if
if (in_range($MIDI_BYTE_2, 0, $Min)) {TRANSFORM VELOCITY ZONES TO CONSTANT NOTE VELOCITY}
$cur_prog := 0+$shift_prog
end if
if (in_range($MIDI_BYTE_2, $Min, $Med))
$cur_prog := 1+$shift_prog
end if
if (in_range($MIDI_BYTE_2, $Med, $Max))
$cur_prog := 2+$shift_prog
end if
if (in_range($MIDI_BYTE_2, $Max, 127))
$cur_prog := 3+$shift_prog
end if
if ($last_prog # $cur_prog) {NOTE OFF BEFORE PROG CHANGE}
{set_midi($MIDI_CHANNEL,$MIDI_COMMAND_NOTE_OFF,$last_note,0)
set_midi($MIDI_CHANNEL+16,$MIDI_COMMAND_NOTE_OFF,$last_note,0)}
%lock[$last_note] := 1
set_midi($MIDI_CHANNEL,$MIDI_COMMAND_CC,123,0)
set_midi($MIDI_CHANNEL+16,$MIDI_COMMAND_CC,123,0)
end if
set_midi($MIDI_CHANNEL,$MIDI_COMMAND_PROGRAM_CHANGE,$cur_prog,0)
set_midi($MIDI_CHANNEL+16,$MIDI_COMMAND_PROGRAM_CHANGE,$cur_prog,0)
$last_prog := $cur_prog
if ($cur_vel = -1) {SHOW ON INDICATOR ONLY FIRST NOTE}
$cur_vel := $MIDI_BYTE_2
%note_play[$cur_vel] := %note_play[$cur_vel]+1
end if
set_midi($MIDI_CHANNEL,$MIDI_COMMAND_NOTE_ON,$MIDI_BYTE_1,$cc_vel)
set_midi($MIDI_CHANNEL+16,$MIDI_COMMAND_NOTE_ON,$MIDI_BYTE_1,$cc_vel)
$last_note:=$MIDI_BYTE_1
end if
if ($MIDI_COMMAND = $MIDI_COMMAND_NOTE_OFF or $MIDI_BYTE_2 = 0) {NOTE OFF}
if ($Tempo_menu # 2)
ignore_midi
wait($duration)
if (%lock[$MIDI_BYTE_1] # 1) {prevent note_off when programm switched}
set_midi($MIDI_CHANNEL,$MIDI_COMMAND_NOTE_OFF,$MIDI_BYTE_1,0)
set_midi($MIDI_CHANNEL+16,$MIDI_COMMAND_NOTE_OFF,$MIDI_BYTE_1,0)
end if
%lock[$MIDI_BYTE_1] := 0
end if
%note_play[$cur_vel] := %note_play[$cur_vel]-1 {REMOVE INDICATOR}
$cur_vel:=-1
$last_note:=0
message("OFF!")
end if
if ($MIDI_COMMAND = $MIDI_COMMAND_PITCH_BEND) {SWITCH PROGAMM ROW}
ignore_midi
if ($MIDI_BYTE_2 = 127 and $shift_prog > 0)
$shift_prog:=$shift_prog-4
$last_prog := $last_prog-4
{NOTE OFF BEFORE PROG CHANGE}
%lock[$last_note] := 1
set_midi($MIDI_CHANNEL,$MIDI_COMMAND_CC,123,0)
set_midi($MIDI_CHANNEL+16,$MIDI_COMMAND_CC,123,0)
set_midi($MIDI_CHANNEL,$MIDI_COMMAND_PROGRAM_CHANGE,$last_prog,0)
set_midi($MIDI_CHANNEL+16,$MIDI_COMMAND_PROGRAM_CHANGE,$last_prog,0)
end if
if ($MIDI_BYTE_2 = 0 and $shift_prog < 32)
$shift_prog:=$shift_prog+4
$last_prog := $last_prog+4
{NOTE OFF BEFORE PROG CHANGE}
%lock[$last_note] := 1
set_midi($MIDI_CHANNEL,$MIDI_COMMAND_CC,123,0)
set_midi($MIDI_CHANNEL+16,$MIDI_COMMAND_CC,123,0)
set_midi($MIDI_CHANNEL,$MIDI_COMMAND_PROGRAM_CHANGE,$last_prog,0)
set_midi($MIDI_CHANNEL+16,$MIDI_COMMAND_PROGRAM_CHANGE,$last_prog,0)
end if
end if
end on
{on ui_control ($Panic)
$Panic := 0
note_off ($ALL_EVENTS)
$count := 0
while ($count < 128)
%note_play[$count] := 0
inc ($count)
end while
end on}
on ui_control ($Min)
if ($Min > $Med)
$Med := $Min
end if
if ($Min > $Max)
$Max := $Min
end if
$counter_max := $Med
$counter_min := 0
while ($counter_min < $Min)
%note_play[$counter_min] := 9
%note_play[$counter_min+1] := 0
inc ($counter_min)
end while
while ($counter_max > $Min)
%note_play[$counter_max] := 0
dec ($counter_max)
end while
end on
on ui_control ($Med)
if ($Med > $Max)
$Max := $Med
end if
if ($Med < $Min)
$Min := $Med
end if
$counter_max := $Max
$counter_min := $Min
while ($counter_min < $Med)
%note_play[$counter_min] := 0
%note_play[$counter_min+1] := 9
inc ($counter_min)
end while
while ($counter_max > $Med)
%note_play[$counter_max] := 9
dec ($counter_max)
end while
end on
on ui_control ($Max)
if ($Max < $Med)
$Med := $Max
end if
if ($Max < $Min)
$Min := $Max
end if
$counter_max := 127
$counter_min := $Med
while ($counter_max > $Max)
%note_play[$counter_max] := 0
%note_play[$counter_max-1] := 9
dec ($counter_max)
end while
while ($counter_min < $Max)
%note_play[$counter_min] := 9
inc ($counter_min)
end while
end on
{--------Pulse Mode-------}
on ui_control ($Tempo_menu)
select ($Tempo_menu)
case 0
move_control ($Sync_knob,0,0)
move_control ($Free_knob,$Tempo_knob_X,$Tempo_knob_Y)
move_control ($beat_label,0,0)
case 1
move_control ($Sync_knob,$Tempo_knob_X,$Tempo_knob_Y)
move_control ($Free_knob,0,0)
move_control ($beat_label,0,0)
end select
$duration := $Free_knob * 1000
end on
on ui_control ($Sync_knob)
set_knob_label ($Sync_knob,!tempo_names[$Sync_knob])
select ($Sync_knob)
case 0
$duration := $DURATION_SIXTEENTH/8
case 1
$duration := $DURATION_SIXTEENTH/4
case 2
$duration := $DURATION_SIXTEENTH/2
case 3
$duration := $DURATION_QUARTER/6
case 4
$duration := ($DURATION_SIXTEENTH/4)*3
case 5
$duration := $DURATION_SIXTEENTH
case 6
$duration := $DURATION_QUARTER/3
case 7
$duration := ($DURATION_SIXTEENTH/2)*3
case 8
$duration := $DURATION_EIGHTH
case 9
$duration := ($DURATION_QUARTER*2)/3
case 10
$duration := $DURATION_SIXTEENTH*3
case 11
$duration := $DURATION_QUARTER
case 12
$duration := ($DURATION_QUARTER*4)/3
case 13
$duration := $DURATION_EIGHTH*3
case 14
$duration := $DURATION_QUARTER*2
case 15
$duration := $DURATION_QUARTER*3
case 16
$duration := $DURATION_QUARTER*4
case 17
$duration := $DURATION_BAR
end select
end on
{END OF SCRIPT}
[/HIDE]
 
  • Like
Реакции: Elle и denus

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