This is an old revision of the document!


StreamByter: CC High Range Remap with GUI

The following script allows to remap the values of a specific CC. Values higher than a threshold are remapped to a new range.

# === CC High Range Remap ===
# Remaps the range of a single CC. Values higher than
# a threshold are remapped to a new range.
#
#      Input         Output
#  0 to Threshold      0
#  Threshold to 127    0 to Output Range
#
# One of its use-cases is to remap an XY CC controller
# to output its vibrato CC-1 only on the right half of
# the XY controller and at the same time limit the 
# vibrato to a specific range
#
# Author: -ki   https://forum.audiob.us/profile/_ki 
#
# ——— No need to modify anything in the script itself ——-
#
# Version history
#   v1 / 14.05.2021  Initial version

alias Q0 input_cc
alias Q5 threshold
alias Q6 output_range
alias I4 curr_val
alias I5 last_output
alias I6 last_M0
alias I7 last_M1
alias I8 last_M2
alias I9 out_M2

if LOAD
  subroutine remap value
    if value < threshold
      assign curr_val = 0
    else
      math I0 = $127 - threshold
      
      math I1 = value - threshold
      math I2 = I1 * output_range
      math curr_val = I2 / I0
    end
  end
  
  set NAME CC_High_Range_Remap
  
  # Default values
  assign threshold = $64 +P
  assign output_range = $127 +P
  assign input_cc = $1 +P
  assign last_output = FF
  
  # Set slider values  
  assign Q0 = input_cc
  assign Q5 = threshold
  assign Q6 = output_range
  
  # Set slider UI names
  set Q0 Input_CC# 1 $120
  set Q1 +hide
  set Q2 +hide
  set Q3 +hide
  
  set Q4 +hide
  set Q5 Threshold 0 $126
  set Q6 Output_Range 0 $127
  set Q7 +hide
  
  set slider_display 1
end


if MT == B0
  if M1 == input_cc
    remap M2
    
    assign last_M0 = M0
    assign last_M1 = M1
    assign last_M2 = M2
    
    # Check if CC update is needed
    if last_output != curr_val
      assign last_output = curr_val
      assign M2 = curr_val
    else
      block
    end
  end
end

# Slide Output_Range change, update CC if needed
if M0 == F0 7D 01 06
  remap last_M2
  if last_output != curr_val
    assign last_output = curr_val
    send last_M0 last_M1 curr_val
  end
end
  • streambyter_cc_high_range_remap.1621080756.txt.gz
  • Last modified: 2021/05/15 22:12
  • by _ki