Skip to content

Commit

Permalink
Merge pull request #2089 from ben-wes/master
Browse files Browse the repository at this point in the history
decouple repaint from signaldata update
  • Loading branch information
porres committed Apr 25, 2024
2 parents 39b7296 + 0dadbd8 commit fac7c3e
Showing 1 changed file with 16 additions and 2 deletions.
18 changes: 16 additions & 2 deletions Code_source/Compiled/audio/scope3d~.pd_lua
Original file line number Diff line number Diff line change
Expand Up @@ -50,14 +50,17 @@ end

function scope3d:reset_buffer()
self.bufferIndex = 1
self.displayBufferIndex = 1
self.sampleIndex = 1
self.displaySignalX, self.displaySignalY, self.displaySignalZ = {}, {}, {}
self.signalX, self.signalY, self.signalZ = {}, {}, {}
self.rotatedX, self.rotatedY, self.rotatedZ = {}, {}, {}
-- prefill ring buffer
for i = 1, self.nlines do
self.signalX[i], self.signalY[i], self.signalZ[i] = 0, 0, 0
self.rotatedX[i], self.rotatedY[i], self.rotatedZ[i] = 0, 0, 0
end
self:update_lines()
end

function scope3d:postinitialize()
Expand All @@ -67,6 +70,7 @@ end

function scope3d:tick()
self.width, self.height = self:get_size()
self:update_lines()
self:repaint()
self.clock:delay(self.frameDelay)
end
Expand Down Expand Up @@ -214,6 +218,7 @@ function scope3d:mouse_drag(x, y)
if self.drag == 1 then
self.rotationAngleY = self.rotationStartAngleY + ((x-self.dragStartX) / 2)
self.rotationAngleX = self.rotationStartAngleX + ((-y+self.dragStartY) / 2)
self:repaint()
end
end

Expand Down Expand Up @@ -328,8 +333,8 @@ function scope3d:paint(g)
end

for i = 1, self.nlines do
local offsetIndex = (i + self.bufferIndex-2) % self.nlines + 1
local rotatedX, rotatedY, rotatedZ = self:rotate_y(self.signalX[offsetIndex], self.signalY[offsetIndex], self.signalZ[offsetIndex], self.rotationAngleY)
local offsetIndex = (i + self.displayBufferIndex-2) % self.nlines + 1
local rotatedX, rotatedY, rotatedZ = self:rotate_y(self.displaySignalX[offsetIndex], self.displaySignalY[offsetIndex], self.displaySignalZ[offsetIndex], self.rotationAngleY)
self.rotatedX[i], self.rotatedY[i], self.rotatedZ[i] = self:rotate_x(rotatedX, rotatedY, rotatedZ, self.rotationAngleX)
end

Expand All @@ -352,6 +357,13 @@ function scope3d:paint(g)
end
end

function scope3d:update_lines()
self.displayBufferIndex = self.bufferIndex
for i = 1, self.nlines do
self.displaySignalX[i], self.displaySignalY[i], self.displaySignalZ[i] = self.signalX[i], self.signalY[i], self.signalZ[i]
end
end

function scope3d:rotate_y(x, y, z, angle)
local cosTheta = math.cos(angle * math.pi / 180)
local sinTheta = math.sin(angle * math.pi / 180)
Expand Down Expand Up @@ -437,6 +449,8 @@ function pdlua_flames:init_pd_methods(pdclass, name, methods, atoms)
end
end

---------------------------------------------------------------------------------------------

function pdlua_flames:parse_atoms(atoms)
local kwargs = {}
local args = {}
Expand Down

0 comments on commit fac7c3e

Please sign in to comment.