JInTController

Superclass: Object

/**

2006 Till Bovermann (IEM)

*/

Imagine a Faderbox or a GamePad, or …

In general there are a fixed number of controls which behave in different ways.

there are e.g.

Fader (1 DOF)

Knob (1 DOF)

Pad (1 DOF)

2D Fader (joystick) (2 DOF)

tangible rigid object (6 DOF)

pen on graphics-tablet (5 DOF)

...

This class is a general representation of one of these controllers.

Subclasses implement the dedicated semantics.

JInTC_<lowercase> – abstract class

JInTC_<Uppercase> – usable class

a = JInTController.new

Methods

rawVals

array of raw controller values.

No specs assigned.

One for each dimension.

value(i)

returns array of current normed values of controller.

if i is Integer:

returns current normed value i of controller.

numDOF

number of available degrees of freedom

description

a String describing the functionality

semantics

array of arrays containing symbols for each DOF:

[values]

\discrete [discrete values]

\continuous [contiuous values]

[what happens if user lets go controller?]

\snapBack [snaps back into a predefined state]

\sticky [remains in last state]

[]

\range [m .. n]

\ring [modulo ring]

[active or passive?]

\passive

\settable

specs

for each dimension one ControlSpec. nil: [0,1,'linear'].asSpec

1-DOF

JInTC_onoff : JInTController

simple one-DOF controller with on/off

a = JInTC_onoff.new;

a.numDOF;

a.description;

a.semantics;

a.specs.do{|a| a.asCompileString.postln};

a.inspect;

JInTC_Button : JInTC_onoff

Button (on/off) with snap back ("Taster")

a = JInTC_Button.new

a.numDOF;

a.description;

a.semantics;

a.specs.do{|a| a.asCompileString.postln};

a.inspect;

JInTC_linear : JInTController

simple one-DOF contiuous controller (abstract)

a = JInTC_linear.new

a.numDOF;

a.description;

a.semantics;

a.specs.do{|a| a.asCompileString.postln};

a.inspect;

JInTC_linearSnapper : JInTController

simple one-DOF contiuous controller, snapping back into default position

a = JInTC_linearSnapper.new

a.numDOF;

a.description;

a.semantics;

a.specs.do{|a| a.asCompileString.postln};

a.inspect;

JInTC_Fader : JInTC_linear

simple one-DOF Fader

a = JInTC_onoff.new

a.numDOF;

a.description;

a.semantics;

a.specs.do{|a| a.asCompileString.postln};

a.inspect;

JInTC_Knob : JInTC_linear

simple knob to turn

a = JInTC_onoff.new

a.numDOF;

a.description;

a.semantics;

a.specs.do{|a| a.asCompileString.postln};

a.inspect;

n-DOF

I decided to not build trees of 1-DOF JInTController, since the definition of a controller

(see above) says, that a controller is something stick together, where it is near to

impossible to change one dimension without changing the others.

Therefore it is not intendet to use one (of many) DOF for a single parameter.

JInTC_composite : JInTController

A composite of several controllers. Should not be used (abstract class)

a = JInTC_composite.new

a.numDOF;

a.description;

a.semantics;

a.specs.do{|a| a.asCompileString.postln};

a.inspect;

JInTC_ThumbStick : JInTC_composite

small two DOF analog joystick with an additional knob-functionality by pressing it. Normally actuated by thumb.

a = JInTC_ThumbStick.new

a.numDOF;

a.description;

a.semantics;

a.specs.do{|a| a.asCompileString.postln};

a.inspect;

Examples