From 4bab8348d2842245d93833a80f0d4713f973069c Mon Sep 17 00:00:00 2001 From: Martin Peach Date: Fri, 20 Apr 2012 19:03:21 +0000 Subject: Two objects to serialize symbols and floats. svn path=/trunk/externals/loaders/pdlua/; revision=16129 --- examples/lfloat2bytes.pd_lua | 58 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 examples/lfloat2bytes.pd_lua (limited to 'examples/lfloat2bytes.pd_lua') diff --git a/examples/lfloat2bytes.pd_lua b/examples/lfloat2bytes.pd_lua new file mode 100644 index 0000000..7dc8480 --- /dev/null +++ b/examples/lfloat2bytes.pd_lua @@ -0,0 +1,58 @@ +--[[ + lfloat2bytes + Output a float as a sequence of bytes + author Martin Peach 20120420 +--]] + +-- Pd class + +local lfloat2bytes = pd.Class:new():register("lfloat2bytes") +local digitstr = "%g" -- defaut format string gives up to 6 significant digits + +function lfloat2bytes:initialize(name, atoms) + self.inlets = 1 + self.outlets = 1 + if (#atoms > 0) then + --pd.post(#atoms .. " args") + --pd.post("atom 1: " .. atoms[1]) + --pd.post(type(atoms[1])) + if (type(atoms[1]) ~= "number") then + self:error("lfloat2bytes: Digit count not a number") + elseif (atoms[1] > 0) and (atoms[1] <= 24) then + digitstr = "%0." .. atoms[1] .. "g" + else + self:error("lfloat2bytes: Digit count out of range") + end + end + + return true +end + +-- lfloat2bytes:drip: output characters from buf as floats on [0..255] +function lfloat2bytes:drip(buf) + --pd.post(buf.. " size " .. #buf) + local i = 1, b + local len = #buf + + for i = 1, len do + self:outlet(1, "float", {string.byte(buf, i)}) + end +end + +function lfloat2bytes:in_1(sel, atoms) -- anything + --pd.post("sel is " .. sel); + --pd.post("number of atoms is ".. #atoms) + --for i,v in ipairs(atoms) do + -- pd.post(i .. " = " .. v) + --end + local buf + if sel == "float" then -- the usual case + --buf = tostring(atoms[1]) + buf = string.format(digitstr, atoms[1]) + self:drip(buf) + else -- reject non-floats + self:error("lfloat2bytes: input not a float") + end +end +-- end of lfloat2bytes + -- cgit v1.2.1