;; Datamosh effect - glitch block corruption

(define-effect datamosh
  :params (
    (block_size :type int :default 32 :range [8 128])
    (corruption :type float :default 0.3 :range [0 1])
    (max_offset :type int :default 50 :range [0 200])
    (color_corrupt :type bool :default true)
  )
  ;; Get previous frame from state, or use current frame if none
  (let ((prev (state-get "prev_frame" frame)))
    (begin
      (state-set "prev_frame" (copy frame))
      (datamosh frame prev block_size corruption max_offset color_corrupt))))
