how do you process a message with js object?


    May 04 2014 | 8:50 pm
    It looks like a message is not a string in Max and so I can't use string functions on the message. How do I convert message to string and process it in Max, then output the message.
    i tried this:
    inlets = 1;
    outlets = 1;
    function anything()
    {
    outlet(0,jsarguments[0]);
    }
    it outputs nothing :(
    ultimately i want to do a replace function like this:
    message = this and that
    string = message to string function goes here
    string.replace("this and that","nothing")
    outlet(0,string to message function goes here)

    • May 04 2014 | 10:34 pm
      jsarguments is the array of the js/jsui objects arguments not the function's arguments. You can get those using the arguments array. Have a look at the arrayfromargs method as well if you want to convert the arguments to a real array.
    • May 05 2014 | 12:08 am
      really having trouble locating enough information to help me translate inlet messages into strings. So far I have this, I just want to replace prepend and folder variables with inlet message variables. The first inlet is currently a filepath+name such as C:/test/folder/something. I switch / to ~ to make it easier to work with, then convert ~ to / and \\ at the end for my various path requirements
      ---code tag isn't working---
      inlets = 3;
      outlets = 3;
      prepend = "sine_"
      folder = "processed"
      function anything()
      {
      a = arrayfromargs(messagename, arguments);
      string = a.join();
      outlet(0,string);
      string = a.join().replace(/,/g," ").replace(/set/,'');
      string = string.replace(/\//g,'~');
      open = string.replace(/(.*)/,"open $1").replace(/~/g,'/')
      save = string.replace(/(.*~)(.*)/,"open $1"+prepend+"$2").replace(/~/g,'/')
      mkdir = string.replace(/(.*)~.*/,"mkdir $1~"+folder+"~").replace(/~/g,'\\\\')
      outlet(0,open);
      outlet(1,save);
      outlet(2,mkdir);
      }
      ---code tag isn't working---
    • May 05 2014 | 12:40 am
      ok found my first clue
      if you send a message to js, something like [myMESSAGE]
      then you need this in js
      function myMESSAGE()
      {
      do stuff
      }
      and if you send [myMESSAGE yes maybe no]
      then you need
      function myMESSAGE(a,b,c)
      {
      outlet(0,a);
      outlet(1,b);
      outlet(2,c);
      }
      and in each outlet you will get
      yes
      maybe
      no
    • May 05 2014 | 3:38 am
      alright, here's the new code. The only thing left I'd like to do is name the inlets/outlets. Is there any syntax for that?
      inlets = 1;
      outlets = 3;
      function set(fullpath,prepend,folder)
      {
      fname = fullpath.replace(/.*\/(.*\.wav)/,"$1");
      fpath = fullpath.replace(/(.*\/).*\.wav/,"$1");
      newpath = fpath.replace(/\//g,'\\\\') + folder.replace(/\//g,'\\\\');
      outlet(0,fullpath);
      outlet(1,fpath+folder+prepend+fname);
      outlet(2,newpath);
      }