54 lines
1.2 KiB
Lua
54 lines
1.2 KiB
Lua
pflags=klass()
|
|
function pflags:init(o)
|
|
self.speed = o.speed or 15
|
|
self.len = o.len or 32
|
|
self.noiz = o.noiz or 0
|
|
self.buzz = o.buzz or 0
|
|
self.detune = o.detune or 0
|
|
self.reverb = o.reverb or 0
|
|
self.dampen = o.dampen or 0
|
|
self.editormode = o.editormode or 1
|
|
end
|
|
|
|
function pflags:validate()
|
|
local speed,len,noiz,buzz,detune,reverb,dampen,editormode
|
|
=self.speed,self.len,self.noiz,self.buzz,
|
|
self.detune,self.reverb,self.dampen,self.editormode
|
|
|
|
assert_range(speed,1,255,"speed")
|
|
assert_range(len,1,33,"len")
|
|
assert_range(noiz,0,2,"noiz")
|
|
assert_range(buzz,0,2,"buzz")
|
|
assert_range(detune,0,3,"detune")
|
|
assert_range(reverb,0,3,"reverb")
|
|
assert_range(dampen,0,3,"dampen")
|
|
assert_range(editormode,0,2,"editormode")
|
|
end
|
|
|
|
function pflags:encode()
|
|
local speed,len,noiz,buzz,detune,reverb,dampen,editormode
|
|
=self.speed,self.len,self.noiz,self.buzz,
|
|
self.detune,self.reverb,self.dampen,self.editormode
|
|
|
|
speed &= 0xffff
|
|
len &= 0xffff
|
|
noiz &= 0xffff
|
|
buzz &= 0xffff
|
|
detune &= 0xffff
|
|
reverb &= 0xffff
|
|
dampen &= 0xffff
|
|
editormode &= 0xffff
|
|
|
|
self:validate()
|
|
local byte0 = (
|
|
dampen*72 +
|
|
reverb*24 +
|
|
detune*8 +
|
|
buzz*4 +
|
|
noiz*2 +
|
|
editormode -- "in editor mode" flag
|
|
)
|
|
return len | speed>>8 | byte0 >>16
|
|
end
|
|
|