{
   "ancestor_list" : [],
   "description" : "basic OSC recorder, writes messages to zipped files.",
   "name" : "OSC recorder",
   "author" : "LFSaw",
   "code" : "(\r\nvar beginTime;\r\n\r\ne  = e ? ();\r\ne.oscMsgs = [];\r\nthisProcess.addOSCRecvFunc({|time, netAddr, msg| \r\n\tvar relTime , cmd, sep;\r\n\t\r\n\tbeginTime = beginTime ? time;\r\n\trelTime = time - beginTime;\r\n\t#cmd ... msg = msg;\r\n\t#sep ... cmd = cmd.asString;\r\n\r\n\te.oscMsgs = e.oscMsgs ++ [[relTime, [cmd] ++ msg]];\r\n// debug\r\n//\t[time -beginTime, netAddr, msg.collect{|it| format(\"% (: %)\", it, it.class)}].postln\r\n})\r\n\r\n)\r\n\r\n// send messages...\r\n\r\n// show message array\r\ne.oscMsgs.do{|osc| osc.postln}; \"\"\r\n\r\n\r\n(\r\n// write object file\r\nf = File(\"~/tmp/oscRecorderOut.txt\".standardizePath,\"w\");\r\nf.write(e.oscMsgs.asCompileString);\r\nf.close;\r\n//\r\n)\r\n\r\n\r\n// write csv file\r\nFileWriter.write(e.oscMsgs.collect{|row| row.flatten}, \"~/tmp/oscRecorderOut.csv\".standardizePath);\r\n\r\n\r\n// write tab-delimited file file\r\nFileWriter.write(e.oscMsgs.collect{|row| row.flatten}, \"~/tmp/oscRecorderOut.tdv\".standardizePath, \"\\t\");\r\n\r\n\r\n// write OSC file\r\nScore.write(e.oscMsgs, \"~/tmp/oscRecorderOut.osc\".standardizePath)\r\n\r\n\r\n(\r\n// write zipped txt\r\na = ZArchive.write(\"~/tmp/oscRecorderOut.zscar\".standardizePath);\r\na.writeItem(e.oscMsgs);\r\na.writeClose\r\n)\r\n\r\n\r\n// test:\r\nn = NetAddr.localAddr;\r\nn.sendMsg(\"/test2\", 100.rand, \"dfkljsdflkjsdflksdjflsdkfjlsdkfjsd\".scramble);",
   "id" : "1-4Sn",
   "is_private" : null,
   "labels" : [
      "osc",
      "tool",
      "recorder"
   ]
}
