how do you process a message with js object?
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)
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.
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---
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
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);
}