// an ExternalControlSource is used as an argument for the Plug UGen.

// warps for external control sources can be either 'linear', or 'exponential' currently.
// if exponential, then minval and maxval must be non zero and have the same sign.

ExternalControlSource {
 var <>minval = 0.0, <>maxval = 1.0, <>warp = 'linear';

 *new { arg minval = 0.0, maxval = 1.0, warp = 'linear';
  ^super.new.setRange(minval, maxval, warp).activate;
 }
 setRange { arg argMinVal, argMaxVal, argWarp;
  minval = argMinVal;
  maxval = argMaxVal;
  warp = argWarp;
 }
 value {
  _ExternalControlSource_Value
  ^this.primitiveFailed
 }  

 // PRIVATE
 activate {
  // initializes raw data part to access host specific external data
  _ExternalControlSource_Activate
  ^this.primitiveFailed
 }  
}

MIDIController : ExternalControlSource {
 var <>channel = 1, <>controller = 7;
 
 *new { arg channel = 1, controller = 7, minval = 0.0, maxval = 1.0, warp = 'linear';
  ^super.new(minval, maxval, warp).initMIDIController(channel, controller);
 }
 *kr { arg channel = 1, controller = 7, minval = 0.0, maxval = 1.0,
   warp = 'linear', lagTime = 0.1;
  ^Plug.kr(this.new(channel, controller, minval, maxval, warp), lagTime)
 }
 initMIDIController { arg argChannel, argController;
  channel = argChannel;
  controller = argController;
 }
 
}

MIDIPolyTouch : ExternalControlSource {
 var <>channel = 1, <>key = 60;
 
 *new { arg channel = 1, key = 60, minval = 0.0, maxval = 1.0, warp = 'linear';
  ^super.new(minval, maxval, warp).initMIDIPolyTouch(channel, key);
 }
 *kr { arg channel = 1, key = 60, minval = 0.0, maxval = 1.0,
   warp = 'linear', lagTime = 0.1;
  ^Plug.kr(this.new(channel, key, minval, maxval, warp), lagTime)
 }
 initMIDIPolyTouch { arg argChannel, argKey;
  channel = argChannel;
  key = argKey;
 }
 
}

MIDINoteGate : ExternalControlSource {
 var <>channel = 1, <>key = 60;
 
 *new { arg channel = 1, key = 60, minval = 0.0, maxval = 1.0;
  ^super.new(minval, maxval).initMIDINoteGate(channel, key);
 }
 *kr { arg channel = 1, key = 60, minval = 0.0, maxval = 1.0, lagTime = 0.1;
  ^Plug.kr(this.new(channel, key, minval, maxval), lagTime)
 }
 initMIDINoteGate { arg argChannel, argKey;
  channel = argChannel;
  key = argKey;
 } 
}

MIDIPitchBend : ExternalControlSource {
 var <>channel = 1;
 
 *new { arg channel = 1, minval = -1.0, maxval = 1.0, warp = 'linear';
  ^super.new(minval, maxval, warp).initMIDIPitchBend(channel);
 }
 *kr { arg channel = 1, minval = -1.0, maxval = 1.0,
   warp = 'linear', lagTime = 0.1;
  ^Plug.kr(this.new(channel, minval, maxval, warp), lagTime)
 }
 initMIDIPitchBend { arg argChannel;
  channel = argChannel;
 }
 
}

MIDITouch : ExternalControlSource {
 var <>channel = 1;
 
 *new { arg channel = 1, minval = 0.0, maxval = 1.0, warp = 'linear';
  ^super.new(minval, maxval, warp).initMIDITouch(channel);
 }
 *kr { arg channel = 1, minval = 0.0, maxval = 1.0,
   warp = 'linear', lagTime = 0.1;
  ^Plug.kr(this.new(channel, minval, maxval, warp), lagTime)
 }
 initMIDITouch { arg argChannel;
  channel = argChannel;
 }
 
}

MIDIProgram : ExternalControlSource {
 var <>channel = 1;
 
 *new { arg channel = 1, minval = 0.0, maxval = 127.0, warp = 'linear';
  ^super.new(minval, maxval, warp).initMIDIProgram(channel);
 }
 *kr { arg channel = 1, minval = 0.0, maxval = 1.0,
   warp = 'linear', lagTime = 0.1;
  ^Plug.kr(this.new(channel, minval, maxval, warp), lagTime)
 }
 initMIDIProgram { arg argChannel;
  channel = argChannel;
 }
 
}

MIDIMostRecentNote : ExternalControlSource {
 var <>channel = 1;
 
 *new { arg channel = 1, minval = 0.0, maxval = 127.0, warp = 'linear';
  ^super.new(minval, maxval, warp).initMIDIMostRecentNote(channel);
 }
 *kr { arg channel = 1, minval = 0.0, maxval = 127.0,
   warp = 'linear', lagTime = 0.0;
  ^Plug.kr(this.new(channel, minval, maxval, warp), lagTime)
 }
 initMIDIMostRecentNote { arg argChannel;
  channel = argChannel;
 }
}

MIDIMostRecentVelocity : ExternalControlSource {
 var <>channel = 1;
 
 *new { arg channel = 1, minval = 0.0, maxval = 1.0, warp = 'linear';
  ^super.new(minval, maxval, warp).initMIDIMostRecentVelocity(channel);
 }
 *kr { arg channel = 1, minval = 0.0, maxval = 1.0,
   warp = 'linear', lagTime = 0.1;
  ^Plug.kr(this.new(channel, minval, maxval, warp), lagTime)
 }
 initMIDIMostRecentVelocity { arg argChannel;
  channel = argChannel;
 }
}

MouseAxis : ExternalControlSource {
 var <>axis = 'x'; // or 'y'
 
 *kr { arg minval = 0.0, maxval = 1.0, warp = 'linear', lagTime = 0.1;
  ^Plug.kr(this.new(minval, maxval, warp), lagTime)
 }
}

MouseX : MouseAxis {
 *new { arg minval = 0.0, maxval = 1.0, warp = 'linear';
  ^super.new(minval, maxval, warp);
 }
}

MouseY : MouseAxis {
 *new { arg minval = 0.0, maxval = 1.0, warp = 'linear';
  ^super.new(minval, maxval, warp).axis_('y');
 }
}


This page was created by SimpleText2Html 1.0.3 on 22-Feb-100.