• Register
  • Help
Page 1 of 2 12 LastLast
Results 1 to 10 of 20

Topic: K2 Script for GPO

Share/Bookmark
  1. #1

    K2 Script for GPO

    Something I cobbled together from different things...

    -- Bob

    Code:
    {GPO Kontrol - Kontakt 2 script Bob Richards bob@ndpcci.com
    
    A handy little script for GPO orchestra (www.garritan.com)
    
    mod      current mod wheel setting (resets to 64 on all notes off) [cc 1]
    porta    current portamento setting [cc 20]
    length   currrent length setting [cc 21]
    tune     current tune setting [cc 22]
    timbre   current timbre setting [cc 23]
              
    vol      percentage of received midi 7 cc (volume) to apply to mod setting [cc 75]
    	  (Remember to check Vol/Pan in Instrument Options and Auto
    expr     percentage of received midi 11 cc (expression) to apply to mod setting [cc 76]
    vel	 percentage of received note velocity to apply [cc 77]
    velmod   percentage of received velocity to apply as mod wheel [cc 78]
    
    timing   percentage of timing delay to use for humanization [cc 25]
    tuning   percentage of tuning change to use for humanization [cc 26]
    velocity percentage of velocity change to use for humanization [cc 27]
    volume   percentage of volume change to use for humanization [cc 28]
    
    legato   current legato status [cc 64]
              (Remember to set the CC64 as CC only in Instrument Options)
    defaults set controls to defaults
    Humanize quick setting menu for different huminization settings
    
    }
    
    on init
      declare ui_label $info1 (1,2)
      set_text ($info1, "GPO: 1,20,21,22,23")
      declare ui_label $info2 (1,2)
      set_text ($info2, "MIDI (%): 75,76,77,78")
      declare ui_label $info3 (1,2)
      set_text ($info3, "Humanize (%): 25,26,27,28")
      declare ui_button $legato
      declare ui_knob $vol (0,100,1)
      declare ui_knob $expr (0,100,1)
      declare ui_knob $vel (0,100,1)
      declare ui_knob $velmod (0,100,1)
      declare ui_knob $mod (0,127,1)
      declare ui_knob $porta (0,127,1)
      declare ui_knob $length (0,127,1)
      declare ui_knob $tune (0,127,1)
      declare ui_knob $timbre (0,127,1)
      
      declare ui_knob $timing (0,100,1)
      declare ui_knob $tuning (0,100,1)
      declare ui_knob $velocity (0,100,1)
      declare ui_knob $volume (0,100,1)
      declare ui_button $defaults
    
      declare ui_menu $preset
      add_menu_item ($preset,"On the spot",0)
      add_menu_item ($preset,"Human touch",1)
      add_menu_item ($preset,"Slight but tight",2)
      add_menu_item ($preset,"Old rusty tunes",3)
      add_menu_item ($preset,"Drunk driver",4)
      add_menu_item ($preset,"Total desaster",5)
      add_menu_item ($preset,"GPO Winds",6)
      add_menu_item ($preset,"GPO Brass",7)
      add_menu_item ($preset,"GPO Percussion",8)
      add_menu_item ($preset,"GPO Strings",9)
    
      move_control ($info1,1,1)
      move_control ($info2,1,3)
      move_control ($info3,1,5)
      move_control ($vol,2,3)
      move_control ($expr,3,3)
      move_control ($vel,4,3)
      move_control ($velmod,5,3)
      move_control ($timing,2,7)
      move_control ($tuning,3,7)
      move_control ($velocity,4,7)
      move_control ($volume,5,7)
      move_control ($legato,6,3)
      move_control ($defaults,6,5)
      move_control ($preset,6,6)
    
      declare $first
      declare $new_time
      declare $new_vel
      declare $new_vol
      declare $new_tune
      declare $new_event
      
      $mod:=64
      $porta:= 0
      $length:= 50
      $tune:= 0
      $timbre:= 0
      $legato:=0
      $vol:=0
      $expr:=0
      $vel:=0
      $velmod:=0
      $timing:=0
      $velocity:=0
      $tuning:=0
      $volume:=0
      $first:=1
      
      make_persistent ($mod)
      make_persistent ($porta)
      make_persistent ($length)
      make_persistent ($tune)
      make_persistent ($timbre)
      make_persistent ($legato)
      make_persistent ($vol)
      make_persistent ($expr)
      make_persistent ($vel)
      make_persistent ($velmod)
      make_persistent ($timing)
      make_persistent ($velocity)
      make_persistent ($tuning)
      make_persistent ($volume)
      make_persistent ($preset)
    
      message("")
    end on
    
    on note
      {handle setting values after reloading instrument, but do this just once on first note recieved}
      if ($first=1)
        set_controller (1,$mod)  
        set_controller (20,$porta)
        set_controller (21,$length)
        set_controller (22,$tune)
        set_controller (23,$timbre)
        if ($legato>1)
          set_controller (64,127)
        else
          set_controller (64,0)
        end if
        $first:=0
      end if
    
      {now handle note changes}
      ignore_event ($EVENT_ID)
    
      $new_time:=random (0,$timing * 1000)
      $new_vel:=$EVENT_VELOCITY + (random (-127,127) * $Velocity / 200)
      $new_tune := random (-1000,1000) * $tuning
      $new_vol:=random (-60,60) * $volume
    
      {set velocity and make sure it is in range}
      if ($vel>1)
        $new_vel:=$new_vel * $vel/100
      end if 
      if ($new_vel>127)
        $new_vel:=127
      else
        if ($new_vel<1)
          $new_vel:=1
        end if
      end if
    
      {handle mod wheel following velocity}
      if ($velmod>1)
        $mod:=$EVENT_VELOCITY * $velmod/100
        if ($mod>127)
          $mod:=127
        else
          if ($mod<1) 
            $mod:=1
          end if
        end if
        set_controller (1,$mod)
      end if 
    
      {now play the new note event}
      wait($new_time+1)
      $new_event:=play_note ($EVENT_NOTE,$new_vel,0,-1)
      change_tune ($new_event,$new_tune,1)
      change_vol ($new_event,$new_vol,1)
    end on
    
    {handle when the user interface controls are touched}
    on ui_control ($mod)
      set_controller (1,$mod)
    end on
    
    on ui_control ($porta)
      set_controller (20,$porta)
    end on
    
    on ui_control ($length)
      set_controller (21,$length)
    end on
    
    on ui_control ($tune)
      set_controller (22,$tune)
    end on
    
    on ui_control ($timbre)
      set_controller (23,$timbre)
    end on
    
    on ui_control ($legato)
      if ($legato>1)
        set_controller (64,127)
      else
        set_controller (64,0)
      end if
    end on
    
    on ui_control ($defaults)
      $mod:=64
      $porta:= 0
      $length:= 50
      $tune:= 0
      $timbre:= 0
      $legato:=0
      $vol:=0
      $expr:=0
      $vel:=0
      $velmod:=0
      $timing:=0
      $velocity:=0
      $tuning:=0
      $volume:=0
      $first:=1
      $preset:=0
      $defaults:=0
      message("")
    end on 
    
    on ui_control ($preset)
      select ($preset)
        case 0
          $timing:=0
          $velocity:=0
          $tuning:=0
          $volume:=0
          $timbre:=0
          $tune:=0
        case 1
          $timing:=10
          $velocity:=5
          $tuning:=15
          $volume:=10
          $timbre:=0
          $tune:=0
        case 2
          $timing:=0
          $velocity:=15
          $tuning:=15
          $volume:=20
          $timbre:=0
          $tune:=0
        case 3
          $timing:=9
          $velocity:=25
          $tuning:=65
          $volume:=40
          $timbre:=0
          $tune:=0
        case 4
          $timing:=70
          $velocity:=20
          $tuning:=80
          $volume:=50
          $timbre:=0
          $tune:=0
        case 5
          $timing:=100
          $velocity:=100
          $tuning:=100
          $volume:=100
          $timbre:=0
          $tune:=0
        case 6
          $timing:=5
          $velocity:=5
          $tuning:=0
          $volume:=5
          $timbre:=5
          $tune:=5
        case 7
          $timing:=10
          $velocity:=5
          $tuning:=0
          $volume:=5
          $timbre:=15
          $tune:=10
        case 8
          $timing:=10
          $velocity:=10
          $tuning:=0
          $volume:=10
          $timbre:=10
          $tune:=0
        case 9
          $timing:=5
          $velocity:=5
          $tuning:=0
          $volume:=10
          $timbre:=10
          $tune:=10
      end select
      {force a first time init again}
      $first:=1
    end on
    
    {handle the update of script knobs when external CC events are received}
    on controller
      if (%CC_TOUCHED[1]=1)
        $mod:=%CC[1]
      end if
    
      if (%CC_TOUCHED[20]=1)
        $porta:=%CC[20]
      end if
    
      if (%CC_TOUCHED[21]=1)
        $length:=%CC[21]
      end if
    
      if (%CC_TOUCHED[22]=1)
        $tune:=%CC[22]
      end if
    
      if (%CC_TOUCHED[23]=1)
        $timbre:=%CC[23]
      end if
    
      if (%CC_TOUCHED[64]=1)
        if (%CC[64]>1)
          $legato:=1
        else
          $legato:=0
        end if
      end if
    
      if (%CC_TOUCHED[25]=1)
        $timing:=%CC[25] * 100 / 127
      end if
      
      if (%CC_TOUCHED[26]=1)
        $tuning:=%CC[26] * 100 / 127
      end if
      
      if (%CC_TOUCHED[27]=1)
        $velocity:=%CC[27] * 100 / 127
      end if
      
      if (%CC_TOUCHED[28]=1)
        $volume:=%CC[28] * 100 / 127
      end if
    
      if (%CC_TOUCHED[7]=1 and $vol>0)
        $mod:=%CC[7] * $vol/100
        if ($mod>127)
          $mod:=127
        else
          if ($mod<1) 
            $mod:=1
          end if
        end if
        set_controller (1,$mod)
      end if
        
      if (%CC_TOUCHED[11]=1 and $expr>0)
        $mod:=%CC[11] * $expr/100
        if ($mod>127)
          $mod:=127
        else
          if ($mod<1) 
            $mod:=1
          end if
        end if
        set_controller (1,$mod)
      end if
      
      if (%CC_TOUCHED[75]=1)
        $vol:=%CC[75] * 100 / 127
      end if
    
      if (%CC_TOUCHED[76]=1)
        $expr:=%CC[76] * 100 / 127
      end if
      
      if (%CC_TOUCHED[77]=1)
        $vel:=%CC[77] * 100 / 127
      end if
    
      if (%CC_TOUCHED[78]=1)
        $velmod:=%CC[78] * 100 / 127
      end if
    
      {cc121 or cc123 are resets, set cc 1 back to default, also do first time init again}
      if (%CC_TOUCHED[121]=1 or %CC_TOUCHED[123]=1)
        $mod:=64
        $first:=1
      end if
    end on

  2. #2

    Re: K2 Script for GPO

    What does this do? I am collecting these scripts for my little K2 page and a short description would be great
    Theo Krueger - Composer

    www.TheoKrueger.com

    Kontakt 2 Scripts

  3. #3

    Re: K2 Script for GPO

    I sent you an email on 3/27 with this script and I am glad that you interested in it.

    Here is a further break down of the controls.

    -- Bob


    This script can make it easier for GPO users to "bridge the gap" between standard midi methods of volume control vs GPO mod method as well as doing some on-the-fly midi translations, velocity scaling and humanization.

    mod current mod wheel setting (resets to 64 on all notes off) [cc 1]

    - This allows an initial setting for the mod (volume) level instead of zero (no sound).

    porta current portamento setting [cc 20]

    - Standard porta control used by GPO.

    length current length setting [cc 21]

    - Standard length control used by GPO.

    tune current tune setting [cc 22]

    - Standard tune control used by GPO.

    timbre current timbre setting [cc 23]

    - Standard timbre control used by GPO.

    vol percentage of received midi 7 cc (volume) to apply to mod setting [cc 75]
    (Remember to check Vol/Pan in Instrument Options and Auto

    - Translates midi volume messages to mod messages and is controllable with midi cc 75.

    expr percentage of received midi 11 cc (expression) to apply to mod setting [cc 76]

    - Translates midi expression messages to mod messages and is controllable with midi cc 76.

    vel percentage of received note velocity to apply [cc 77]

    - Scales note velocity and is controllable with midi cc 77.

    velmod percentage of received velocity to apply as mod wheel [cc 78]

    - Translates and scales note velocity to mod messages and is controllable with midi cc 78.

    timing percentage of timing delay to use for humanization [cc 25]

    - Amount of timing humanization to apply and is controllable with midi cc 25.

    tuning percentage of tuning change to use for humanization [cc 26]

    - Amount of tuning humanization to apply and is controllable with midi cc 26.

    velocity percentage of velocity change to use for humanization [cc 27]

    - Amount of velocity humanization to apply and is controllable with midi cc 27.

    volume percentage of volume change to use for humanization [cc 28]

    - Amount of volume humanization to apply and is controllable with midi cc 28.

    legato current legato status [cc 64]
    (Remember to set the CC64 as CC only in Instrument Options)

    - Standard legato control used by GPO.

    defaults set controls to defaults

    - Sets all controls to the default settings.

    Humanize quick setting menu for different humanization settings

    - A quick menu for setting humanization.


    Code:
    {GPO Kontrol - Kontakt 2 script Bob Richards bob@ndpcci.com
    
    A handy little script for GPO orchestra (www.garritan.com)
    
    mod      current mod wheel setting (resets to 64 on all notes off) [cc 1]
    porta    current portamento setting [cc 20]
    length   current length setting [cc 21]
    tune     current tune setting [cc 22]
    timbre   current timbre setting [cc 23]
              
    vol      percentage of received midi 7 cc (volume) to apply to mod setting [cc 75]
    	  (Remember to check Vol/Pan in Instrument Options and Auto
    expr     percentage of received midi 11 cc (expression) to apply to mod setting [cc 76]
    vel	 percentage of received note velocity to apply [cc 77]
    velmod   percentage of received velocity to apply as mod wheel [cc 78]
    
    timing   percentage of timing delay to use for humanization [cc 25]
    tuning   percentage of tuning change to use for humanization [cc 26]
    velocity percentage of velocity change to use for humanization [cc 27]
    volume   percentage of volume change to use for humanization [cc 28]
    
    legato   current legato status [cc 64]
              (Remember to set the CC64 as CC only in Instrument Options)
    defaults set controls to defaults
    Humanize quick setting menu for different huminzation settings
    
    }
    
    on init
      declare ui_label $info1 (1,2)
      set_text ($info1, "GPO: 1,20,21,22,23")
      declare ui_label $info2 (1,2)
      set_text ($info2, "MIDI (%): 75,76,77,78")
      declare ui_label $info3 (1,2)
      set_text ($info3, "Humanize (%): 25,26,27,28")
      declare ui_button $legato
      declare ui_knob $vol (0,100,1)
      declare ui_knob $expr (0,100,1)
      declare ui_knob $vel (0,100,1)
      declare ui_knob $velmod (0,100,1)
      declare ui_knob $mod (0,127,1)
      declare ui_knob $porta (0,127,1)
      declare ui_knob $length (0,127,1)
      declare ui_knob $tune (0,127,1)
      declare ui_knob $timbre (0,127,1)
      
      declare ui_knob $timing (0,100,1)
      declare ui_knob $tuning (0,100,1)
      declare ui_knob $velocity (0,100,1)
      declare ui_knob $volume (0,100,1)
      declare ui_button $defaults
    
      declare ui_menu $preset
      add_menu_item ($preset,"On the spot",0)
      add_menu_item ($preset,"Human touch",1)
      add_menu_item ($preset,"Slight but tight",2)
      add_menu_item ($preset,"Old rusty tunes",3)
      add_menu_item ($preset,"Drunk driver",4)
      add_menu_item ($preset,"Total desaster",5)
      add_menu_item ($preset,"GPO Winds",6)
      add_menu_item ($preset,"GPO Brass",7)
      add_menu_item ($preset,"GPO Percussion",8)
      add_menu_item ($preset,"GPO Strings",9)
    
      move_control ($info1,1,1)
      move_control ($info2,1,3)
      move_control ($info3,1,5)
      move_control ($vol,2,3)
      move_control ($expr,3,3)
      move_control ($vel,4,3)
      move_control ($velmod,5,3)
      move_control ($timing,2,7)
      move_control ($tuning,3,7)
      move_control ($velocity,4,7)
      move_control ($volume,5,7)
      move_control ($legato,6,3)
      move_control ($defaults,6,5)
      move_control ($preset,6,6)
    
      declare $first
      declare $new_time
      declare $new_vel
      declare $new_vol
      declare $new_tune
      declare $new_event
      
      $mod:=64
      $porta:= 0
      $length:= 50
      $tune:= 0
      $timbre:= 0
      $legato:=0
      $vol:=0
      $expr:=0
      $vel:=0
      $velmod:=0
      $timing:=0
      $velocity:=0
      $tuning:=0
      $volume:=0
      $first:=1
      
      make_persistent ($mod)
      make_persistent ($porta)
      make_persistent ($length)
      make_persistent ($tune)
      make_persistent ($timbre)
      make_persistent ($legato)
      make_persistent ($vol)
      make_persistent ($expr)
      make_persistent ($vel)
      make_persistent ($velmod)
      make_persistent ($timing)
      make_persistent ($velocity)
      make_persistent ($tuning)
      make_persistent ($volume)
      make_persistent ($preset)
    
      message("")
    end on
    
    on note
      {handle setting values after reloading instrument, but do this just once on first note recieved}
      if ($first=1)
        set_controller (1,$mod)  
        set_controller (20,$porta)
        set_controller (21,$length)
        set_controller (22,$tune)
        set_controller (23,$timbre)
        if ($legato>1)
          set_controller (64,127)
        else
          set_controller (64,0)
        end if
        $first:=0
      end if
    
      {now handle note changes}
      ignore_event ($EVENT_ID)
    
      $new_time:=random (0,$timing * 1000)
      $new_vel:=$EVENT_VELOCITY + (random (-127,127) * $Velocity / 200)
      $new_tune := random (-1000,1000) * $tuning
      $new_vol:=random (-60,60) * $volume
    
      {set velocity and make sure it is in range}
      if ($vel>1)
        $new_vel:=$new_vel * $vel/100
      end if 
      if ($new_vel>127)
        $new_vel:=127
      else
        if ($new_vel<1)
          $new_vel:=1
        end if
      end if
    
      {handle mod wheel following velocity}
      if ($velmod>1)
        $mod:=$EVENT_VELOCITY * $velmod/100
        if ($mod>127)
          $mod:=127
        else
          if ($mod<1) 
            $mod:=1
          end if
        end if
        set_controller (1,$mod)
      end if 
    
      {now play the new note event}
      wait($new_time+1)
      $new_event:=play_note ($EVENT_NOTE,$new_vel,0,-1)
      change_tune ($new_event,$new_tune,1)
      change_vol ($new_event,$new_vol,1)
    end on
    
    {handle when the user interface controls are touched}
    on ui_control ($mod)
      set_controller (1,$mod)
    end on
    
    on ui_control ($porta)
      set_controller (20,$porta)
    end on
    
    on ui_control ($length)
      set_controller (21,$length)
    end on
    
    on ui_control ($tune)
      set_controller (22,$tune)
    end on
    
    on ui_control ($timbre)
      set_controller (23,$timbre)
    end on
    
    on ui_control ($legato)
      if ($legato>1)
        set_controller (64,127)
      else
        set_controller (64,0)
      end if
    end on
    
    on ui_control ($defaults)
      $mod:=64
      $porta:= 0
      $length:= 50
      $tune:= 0
      $timbre:= 0
      $legato:=0
      $vol:=0
      $expr:=0
      $vel:=0
      $velmod:=0
      $timing:=0
      $velocity:=0
      $tuning:=0
      $volume:=0
      $first:=1
      $preset:=0
      $defaults:=0
      message("")
    end on 
    
    on ui_control ($preset)
      select ($preset)
        case 0
          $timing:=0
          $velocity:=0
          $tuning:=0
          $volume:=0
          $timbre:=0
          $tune:=0
        case 1
          $timing:=10
          $velocity:=5
          $tuning:=15
          $volume:=10
          $timbre:=0
          $tune:=0
        case 2
          $timing:=0
          $velocity:=15
          $tuning:=15
          $volume:=20
          $timbre:=0
          $tune:=0
        case 3
          $timing:=9
          $velocity:=25
          $tuning:=65
          $volume:=40
          $timbre:=0
          $tune:=0
        case 4
          $timing:=70
          $velocity:=20
          $tuning:=80
          $volume:=50
          $timbre:=0
          $tune:=0
        case 5
          $timing:=100
          $velocity:=100
          $tuning:=100
          $volume:=100
          $timbre:=0
          $tune:=0
        case 6
          $timing:=5
          $velocity:=5
          $tuning:=0
          $volume:=5
          $timbre:=5
          $tune:=5
        case 7
          $timing:=10
          $velocity:=5
          $tuning:=0
          $volume:=5
          $timbre:=15
          $tune:=10
        case 8
          $timing:=10
          $velocity:=10
          $tuning:=0
          $volume:=10
          $timbre:=10
          $tune:=0
        case 9
          $timing:=5
          $velocity:=5
          $tuning:=0
          $volume:=10
          $timbre:=10
          $tune:=10
      end select
      {force a first time init again}
      $first:=1
    end on
    
    {handle the update of script knobs when external CC events are received}
    on controller
      if (%CC_TOUCHED[1]=1)
        $mod:=%CC[1]
      end if
    
      if (%CC_TOUCHED[20]=1)
        $porta:=%CC[20]
      end if
    
      if (%CC_TOUCHED[21]=1)
        $length:=%CC[21]
      end if
    
      if (%CC_TOUCHED[22]=1)
        $tune:=%CC[22]
      end if
    
      if (%CC_TOUCHED[23]=1)
        $timbre:=%CC[23]
      end if
    
      if (%CC_TOUCHED[64]=1)
        if (%CC[64]>1)
          $legato:=1
        else
          $legato:=0
        end if
      end if
    
      if (%CC_TOUCHED[25]=1)
        $timing:=%CC[25] * 100 / 127
      end if
      
      if (%CC_TOUCHED[26]=1)
        $tuning:=%CC[26] * 100 / 127
      end if
      
      if (%CC_TOUCHED[27]=1)
        $velocity:=%CC[27] * 100 / 127
      end if
      
      if (%CC_TOUCHED[28]=1)
        $volume:=%CC[28] * 100 / 127
      end if
    
      if (%CC_TOUCHED[7]=1 and $vol>0)
        $mod:=%CC[7] * $vol/100
        if ($mod>127)
          $mod:=127
        else
          if ($mod<1) 
            $mod:=1
          end if
        end if
        set_controller (1,$mod)
      end if
        
      if (%CC_TOUCHED[11]=1 and $expr>0)
        $mod:=%CC[11] * $expr/100
        if ($mod>127)
          $mod:=127
        else
          if ($mod<1) 
            $mod:=1
          end if
        end if
        set_controller (1,$mod)
      end if
      
      if (%CC_TOUCHED[75]=1)
        $vol:=%CC[75] * 100 / 127
      end if
    
      if (%CC_TOUCHED[76]=1)
        $expr:=%CC[76] * 100 / 127
      end if
      
      if (%CC_TOUCHED[77]=1)
        $vel:=%CC[77] * 100 / 127
      end if
    
      if (%CC_TOUCHED[78]=1)
        $velmod:=%CC[78] * 100 / 127
      end if
    
      {cc121 or cc123 are resets, set cc 1 back to default, also do first time init again}
      if (%CC_TOUCHED[121]=1 or %CC_TOUCHED[123]=1)
        $mod:=64
        $first:=1
      end if
    end on

  4. #4

    Re: K2 Script for GPO

    Btw I also did this for GPO.

    This script will take any left hand note and alternate
    with the right hand as well as adjust the delay,
    velocity and sample offset by the user selected amounts.

    It helps to remove the machine gun effect from timpani rolls.

    -- Bob

    Code:
    {******************************************************
    "Timpani Left Right" script for GPO "Timpani KS.nki"
    Bob Richards bob@ndpcci.com
    
    This script will take any left hand note and alternate
    with the right hand as well as adjust the delay, 
    velocity and sample offset by the user selected amounts.
    
    Note: offset (sample_offset) only works when instrument
    source is "sampler", not DFD!
    *******************************************************}
    
    on init
      {Variable to keep track if the next note is played with the left or right hand}
      declare $left:=1
    
      {Define knob so that we can set random delay offset}
      declare ui_knob $delay(0,100000,1000000)
    
      {Define knob so that we can set the random velocity offset}
      declare ui_knob $velocity(0,32,1)
    
      {Define knob so that we can set the play_note sample offset}
      declare ui_knob $offset(0,1000000,1000000)
    
      {Label text}
      declare ui_label $label(2,2)
      set_text($label,"'offset' requires sampler, not DFD")
      add_text_line($label,"also try adjusting ADSR release")
      move_control ($label,4,1)
    
      {Other variable(s)}
      declare $new_delay
      declare $new_velocity
    
      {Make knob values persistent}
      make_persistent($delay)
      make_persistent($offset)
    
      {Clear error message}
      message("")
    end on
    
    on note 
      {Only process for notes that are in the left hand}
      if ($EVENT_NOTE>=36 and $EVENT_NOTE<=58)
        {Ignore the original note event}
        ignore_event($EVENT_ID)
    
        {Add initial randomn delay}
        $new_delay:=random(0,$delay)
        if ($new_delay>0)
          wait(random(0,$delay))
        end if
       
        {Start with the current event velocity}
        $new_velocity:=$EVENT_VELOCITY
        {Get a valid random velocity value if user selected a non-zero velocity}
        if ($velocity>0)
          $new_velocity:=$EVENT_VELOCITY+random(-1*$velocity,$velocity)
          if ($new_velocity<0)
            $new_velocity:=0
          end if
          if ($new_velocity>127)
            $new_velocity:=127
          end if
        end if    
    
        {Do we play the left or right hand?}
        if ($left=1)
          {Left hand, play note as-is}
          play_note($EVENT_NOTE,$new_velocity,random(-1*$offset,$offset),-1)
          {Set flag so that next note plays with right hand}
          $left:=0
        else
          {Right hand, play note two octaves higher}
          play_note($EVENT_NOTE+24,$new_velocity,random(-1*$offset,$offset),-1)
          {Set flag so that next note plays with left hand}
          $left:=1
        end if
      end if
    end on

  5. #5
    Moderator
    Join Date
    Oct 2000
    Location
    Orcas Island
    Posts
    11,454

    Re: K2 Script for GPO

    Bob,

    What a nice Easter surprise. We're going to check this out today. This looks like it would be a great benefit to GPO users who use Kontakt 2. Thanks for doing these scripts and sharing them with us.

    Gary Garritan

  6. #6

    Re: K2 Script for GPO

    Bob, how did you learn to write those scripts? Is there somewhere you can learn the language?

  7. #7

    Re: K2 Script for GPO

    K2 comes with a scipting reference manual in pdf format. It is very limited and just gives basic syntax. I am a software engineer and programming in k2 script is just another language for me. The tricky part is trying to figure out what it is that the scripting can and cannot do.

    The best way to learn is to look at other scripts that have been written to see what and how things can be done.

    You can look at most of the scripts that came with k2 using the "edit" button (and also user scripts).

    Check out these links for user scripts:

    http://www.theokrueger.com/kontakt2.htm
    http://nilsliberg.se/ksp/scripts/scripts.html#partmaker

    Also check out the new k2 script forum at http://vi[hyphen]control.net/forum/

    (replace [hyphen] with a hypen, I can't seem to get this editor to take it).

    -- Bob

  8. #8
    Senior Member
    Join Date
    Jan 2002
    Location
    UK- teeming with life....
    Posts
    2,567

    Re: K2 Script for GPO

    Quote Originally Posted by Nick Batzdorf
    Bob, how did you learn to write those scripts? Is there somewhere you can learn the language?
    I believe that there's a magazine called VI magazine which will be running a series in the near future......

    Seriously though, I recently followed the kotori thread http://www.northernsounds.com/forum/...ad.php?t=44299 and also Big Bob. Quite a lot of useful stuff on kotori's site.

    I'm always impressed and very grateful for the generosity of these guys who produce scripts and samples which they share for nothing. It's almost all in the scripts these days as long as the samples are half decent.

    I would also like to do some script writing, but there are some other things I need to do first!

    Thanks again

    Frank

  9. #9

    Re: K2 Script for GPO

    Thanks Bob. And of course I know about The Scripts.

    Hardy, that's too nerdy even for us. We'd lose readers all over the place.

    But we do have an article coming up on scripting.

  10. #10
    Senior Member
    Join Date
    Jan 2005
    Location
    The Hurricane place
    Posts
    276

    Re: K2 Script for GPO

    I have never been able to get GPO into K2 without cracks and pops and I have no clue why. Velocity based instruments however seem to work fine on the other hand.
    Anyone have a clue as to why this happens or a possible solution?
    Robert Davis

Go Back to forum

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •