Work-in-progress repo for ambisonics extensions for OM-SoX
Alexander Nguyen
yesterday 0f6a661989c92122eccf6555117c401a2be05805
fix: ensure computations don't accidentally switch to single-floats
1 files modified
76 ■■■■ changed files
sources/classes/sox-hoaencode.lisp 76 ●●●● patch | view | raw | blame | history
sources/classes/sox-hoaencode.lisp
@@ -46,7 +46,11 @@
)
(defun sox-hoaencode-deg-to-rad (x)
    (* (/ x 180) pi)
    (* (/ x 180d0) pi)
)
(defun sox-hoaencode-rad-to-deg (x)
    (* (/ x pi) 180d0)
)
(defun sox-hoaencode-double-to-float (lst)
@@ -61,62 +65,62 @@
(defun sox-hoaencode-sn3d-factor (order degree)
"This is a placeholder for documentation"
    (ecase order
        (0 1)
        (1 1)
        (0 1d0)
        (1 1d0)
        (2 
            (ecase (abs degree)
                (0 1)
                (1 (/ (sqrt 3) 3))
                (2 (/ (sqrt 3) 6))
                (0 1d0)
                (1 (/ (sqrt 3d0) 3))
                (2 (/ (sqrt 3d0) 6))
            ))
        (3 
            (ecase (abs degree)
                (0 1)
                (1 (/ (sqrt 6) 6))
                (2 (/ (sqrt 15) 30))
                (3 (/ (sqrt 10) 60))
                (0 1d0)
                (1 (/ (sqrt 6d0) 6))
                (2 (/ (sqrt 15d0) 30))
                (3 (/ (sqrt 10d0) 60))
            )
        )
        (4 
            (ecase (abs degree)
                (0 1)
                (1 (/ (sqrt 10) 10))
                (2 (/ (sqrt 5) 30))
                (3 (/ (sqrt 70) 420))
                (4 (/ (sqrt 35) 840))
                (0 1d0)
                (1 (/ (sqrt 10d0) 10))
                (2 (/ (sqrt 5d0) 30))
                (3 (/ (sqrt 70d0) 420))
                (4 (/ (sqrt 35d0) 840))
            )
        )
        (5
            (ecase (abs degree)
                (0 1)
                (1 (/ (sqrt 15) 15))
                (2 (/ (sqrt 105) 210))
                (3 (/ (sqrt 70) 840))
                (4 (/ (sqrt 35) 2520))
                (5 (/ (sqrt 14) 5040))
                (0 1d0)
                (1 (/ (sqrt 15d0) 15))
                (2 (/ (sqrt 105d0) 210))
                (3 (/ (sqrt 70d0) 840))
                (4 (/ (sqrt 35d0) 2520))
                (5 (/ (sqrt 14d0) 5040))
            )
        )
        (6
            (ecase (abs degree)
                (0 1)
                (1 (/ (sqrt 21) 21))
                (2 (/ (sqrt 210) 420))
                (3 (/ (sqrt 210) 2520))
                (4 (/ (sqrt 7) 2520))
                (5 (/ (sqrt 154) 55440))
                (6 (/ (sqrt 462) 332640))
                (0 1d0)
                (1 (/ (sqrt 21d0) 21))
                (2 (/ (sqrt 210d0) 420))
                (3 (/ (sqrt 210d0) 2520))
                (4 (/ (sqrt 7d0) 2520))
                (5 (/ (sqrt 154d0) 55440))
                (6 (/ (sqrt 462d0) 332640))
            )
        )
        (7
            (ecase (abs degree)
                (0 1)
                (1 (/ (sqrt 7) 14))
                (2 (/ (sqrt 42) 252))
                (3 (/ (sqrt 21) 1260))
                (4 (/ (sqrt 231) 27720))
                (5 (/ (sqrt 231) 166320))
                (6 (/ (sqrt 6006) 4324320))
                (7 (/ (sqrt 429) 4324320))
                (0 1d0)
                (1 (/ (sqrt 7d0) 14))
                (2 (/ (sqrt 42d0) 252))
                (3 (/ (sqrt 21d0) 1260))
                (4 (/ (sqrt 231d0) 27720))
                (5 (/ (sqrt 231d0) 166320))
                (6 (/ (sqrt 6006d0) 4324320))
                (7 (/ (sqrt 429d0) 4324320))
            )
        )
    )