accessing other inlets within code

    Mar 04 2013 | 12:18 pm
    Hi there
    I am developing a code to make a comb filter within maxmsp using java. However I have stumbled upon a problem. Here is my code public class IntelliTest extends MSPPerformer{ float []_circBuffer = sr; //defined in dsp setup method int _delayTime = getInlet(); int _readIndex1 = 0; int _writeIndex = _delayTime;
    float _feedBack = 0.0f; float _feedForward = 0.0f; float _blend = 0.0f;
    //constructor IntelliTest(){ declareInlets(new int[]{SIGNAL, DataTypes.FLOAT,DataTypes.FLOAT,DataTypes.FLOAT,DataTypes.INT,SIGNAL}); declareOutlets(new int[]{SIGNAL}); }
    // user set delaytime public void inlet (int i) { if(i >= 0 && i < _circBuffer.length){ _delayTime = i; // need to convert to samples } else{ post("Delay cannot be negative or exceed the buffer size"); } }
    // user set feedback public void inlet (float f){ if(f > 0 && f < 0.99){ _feedBack = f; } else{ post("Feedback cannot be negative or exceed 0.99"); //need to establish processing of other float inlets } }
    As you can see I have missed out part of the code as I can't work out how to establish the other inlets within the code. For example I can access the delay time via float..but can't access any of the other inlets as I don't know how to number them. Do I use atoms?
    Any help would be appreciated.

    • Mar 04 2013 | 10:18 pm
      you need to tell the object to check which inlet has been used, this code is for 6 inlets (0,1,2,3,4,5) so for your float inlets you need to have the code like so ....
      public void inlet(float f) { int floatInlet; floatInlet = getInlet(); // this tells your inlet to check what inlet the signals are coming from
      if (floatInlet == 1){ // this says if the info is coming in on inlet 1 then do such and such with the info do something } if (floatInlet == 2){ // this says if the info is coming in on inlet 2 then do such and such with the info do something else } etc....
      good luck with the comb filter.
      ps. you might wanna change Daves delay post comments. :-P
    • Mar 05 2013 | 11:41 am
      As an aside, I've yet to be convinced that this technique (explicit callback to determine the inlet used) is thread-safe. It depends, I suppose, whether getInlet() contains a link to the thread which made the initial call to inlet(), but there's no mention of this in any of the documentation. So, you might want to think about using a pak upstream to pack messages into one inlet with a prefix string to distinguish them.