Work-in-progress repo for ambisonics extensions for OM-SoX
Marlon Schumacher
4 days ago 3c36efb7ea5dd8cccd9bcc47f4f6e71ee4cfcbb2
commit | author | age
143f4e 1 ; OM File Header - Saved 2025/03/05 15:52:46
MS 2 ; (7.05 :patc (om-make-point 238 218) (om-make-point 390 297) (om-make-point 1016 593) "" 183 0 "2025/03/01 02:15:44" "2025/03/05 15:52:46")
4a52f9 3 ; End File Header
MS 4 ; External resources 
143f4e 5 ; (list (list (quote :picture) "#P\"../../../../resources/pict/omsox\"") (list (quote :sound) "#P\"../../../../../../../../../../../../../Shared/_Development/OM-SoX/Alexander Ng/OM-SoX hoaencode/resources/sounds/clarinet-multi-mono.aif\"") (list (quote :abstraction) "#P\"../distance-cue rendering.omp\"" "#P\"sox-hoaencode continuous.omp\""))
MS 6 (in-package :om)(load-lib-for (quote ("OM-SoX")))(setf *om-current-persistent* (om-load-patch1 "sox-hoaencode" (quote ((let ((box (om-load-boxcall (quote patch-box) "distance-cue rendering" (quote ("elements" "OM-SoX-tutorial-patches" "support" "distance-cue rendering")) (quote nil) (om-make-point 698 321) nil nil nil nil 0))) (when (fboundp (quote set-active)) (set-active box nil)) box) (let ((box (om-load-boxcomment "comment 3" (om-make-point 188 72) (quote "SoX-HOAENCODE $does not render distance natively.$ $Check out this example $for distance cue rendering") "" (om-make-point 695 257) nil (om-make-color 0.0 0.0 1.0) (om-make-font "Verdana" 10.0 :family "Verdana" :style (quote (:italic)) :mode (quote nil))))) (when (fboundp (quote set-active)) (set-active box nil)) box) (let ((box (om-load-boxcomment "comment 2" (om-make-point 279 24) (quote "Select box and press 'd' for documentation of inlets.") "" (om-make-point 231 265) nil (om-make-color 0.0 0.0 1.0) (om-make-font "Verdana" 10.0 :family "Verdana" :style (quote (:italic)) :mode (quote nil))))) (when (fboundp (quote set-active)) (set-active box nil)) box) (let ((box (om-load-boxcall (quote patch-box) "sox-hoaencode continuous" (quote ("elements" "OM-SoX-tutorial-patches" "support" "input-combiners" "sox-hoaencode continuous")) (quote nil) (om-make-point 686 424) nil nil nil nil 0))) (when (fboundp (quote set-active)) (set-active box nil)) box) (let ((box (om-load-boxcomment "comment 3" (om-make-point 136 36) (quote "check out this example $for continuous panning") "" (om-make-point 699 394) nil (om-make-color 0.0 0.0 1.0) (om-make-font "Verdana" 10.0 :family "Verdana" :style (quote (:italic)) :mode (quote nil))))) (when (fboundp (quote set-active)) (set-active box nil)) box) (let ((box (om-load-boxcomment "comment 2" (om-make-point 49 24) (quote "(x y z)") "" (om-make-point 721 154) nil (om-make-color 0.0 0.0 1.0) (om-make-font "Verdana" 10.0 :family "Verdana" :style (quote (:italic)) :mode (quote nil))))) (when (fboundp (quote set-active)) (set-active box nil)) box) (let ((box (om-load-boxcall (quote genfun) "SOX-PROCESS" (quote sox-process) (quote ((om-load-inputfun (quote input-funbox) "Audio input to be processed [sound, path, string/pipe, sox-input]" "SOX-INPUT" nil) (om-load-inputfun (quote input-funbox) "Sox-effect to be applied to audio input [string]" "SOX-EFFECT" "") (om-load-inputkeyword (quote input-keyword) "Filetype of produced audio [string]" "filetype" (quote :filetype) "aif" (list (list "aif" "aif") (list "wav" "wav") (list "flac" "flac") (list "ogg" "ogg"))))) (om-make-point 541 315) nil nil nil nil 1))) (when (fboundp (quote set-active)) (set-active box nil)) box) (let ((box (om-load-editor-box1 "" (quote sound) (quote ((om-load-inputfun (quote input-funbox) "object" "self" nil) (om-load-inputfun (quote input-funbox) "a track index for multichannel mixing" "tracknum" 0) (om-load-inputfun (quote input-funbox) "a list of markers (s)" "markers" nil))) (om-make-point 556 403) (om-make-point 80 50) (let ((newobj nil)) (load-port-info newobj (quote nil)) (init-mus-color newobj (quote nil)) (set-extra-pairs newobj (quote nil)) (set-patch-pairs newobj (quote nil)) (set-name newobj "") (set-tonalite newobj nil) newobj) nil nil (pairlis (quote (approx fontsize staff cmnpref deltapict outport inport player zoom notechancolor? grillestep mode winsize winpos score-mode obj-mode show-stems scale palette-mode onset measure)) (list 2 24 (quote g) (let ((newobj (make-instance (quote edition-values)))) (setf (paper-size newobj) (om-make-point 600 800)) (setf (top-margin newobj) 2) (setf (left-margin newobj) 1) (setf (right-margin newobj) 1) (setf (bottom-margin newobj) 1) (setf (orientation newobj) nil) (setf (scale newobj) nil) (setf (system-space newobj) (quote (1))) (setf (system-color newobj) (quote nil)) (setf (line-space newobj) 1) (setf (title newobj) nil) (setf (show-title? newobj) nil) (setf (show-page? newobj) nil) (setf (sheet-id newobj) nil) (setf (page-mode newobj) nil) newobj) (om-make-point 0 0) nil 0 (quote :soxplayer) 1 nil 1000 0 (om-make-point 559 303) (om-make-point 400 38) 0 1 (quote t) nil 0 nil nil)) t nil nil nil (quote nil)))) (when (fboundp (quote set-active)) (set-active box nil)) box) (let ((box (om-load-boxcall (quote bastype) "aux" (quote t) (quote nil) (om-make-point 723 190) (om-make-point 27 30) 3 "3" nil))) (when (fboundp (quote set-active)) (set-active box nil)) box) (let ((box (om-load-editor-box1 "SOX-HOAENCODE 2" (quote sox-hoaencode) (quote ((om-load-inputfun (quote input-funbox) "object" "self" nil) (om-load-inputfun (quote input-funbox) "Audio input for sox input modules. [sound object, pathname, string/pipe]" "sound" nil) (om-load-inputfun (quote input-funbox) "Positions as 3dc object, or list of azimuth+elevation values, or list of x+y+z coordinates. [3dc, list]" "positions" (list 0 0)) (om-load-inputfun (quote input-funbox) "Ambisonics order. [int]" "order" 3))) (om-make-point 547 234) (om-make-point 70 50) (if (find-class (quote sox-hoaencode) nil) (make-instance (quote sox-hoaencode) :sound (om-make-pathname :directory (quote (:absolute "Users" "Shared" "_Development" "OM-SoX" "Alexander Ng" "OM-SoX hoaencode" "resources" "sounds")) :device :unspecific :host nil :name "clarinet-multi-mono" :type "aif") :positions (list (list -90 0)) :order 3 :from-file t)) nil nil (pairlis (quote (winsize winpos)) (list (om-make-point 104 150) (om-make-point 10 40))) nil nil nil nil (quote nil)))) (when (fboundp (quote set-active)) (set-active box nil)) box) (let ((box (om-load-boxcall (quote bastype) "aux 3" (quote t) (quote nil) (om-make-point 658 157) (om-make-point 59 30) (list 1 0 0) "(1 0 0)" nil))) (when (fboundp (quote set-active)) (set-active box nil)) box) (let ((box (om-load-editor-box1 "clarinet-multi-mono.aif" (quote sound) (quote ((om-load-inputfun (quote input-funbox) "object" "self" nil) (om-load-inputfun (quote input-funbox) "a track index for multichannel mixing" "tracknum" 0) (om-load-inputfun (quote input-funbox) "a list of markers (s)" "markers" nil))) (om-make-point 557 131) (om-make-point 80 50) (let ((newobj (let ((thesound (load-sound (om-make-pathname :directory (quote (:absolute "Users" "Shared" "_Development" "OM-SoX" "Alexander Ng" "OM-SoX hoaencode" "resources" "sounds")) :device nil :host nil :name "clarinet-multi-mono" :type "aif") 0 1.0 0))) (when thesound (setf (markers thesound) (quote nil))) thesound))) (load-port-info newobj (quote nil)) (init-mus-color newobj (quote nil)) (set-extra-pairs newobj (quote nil)) (set-patch-pairs newobj (quote nil)) (set-name newobj "clarinet-multi-mono.aif") (set-tonalite newobj nil) newobj) "x" nil (pairlis (quote (measure onset :show-spectrum approx fontsize staff cmnpref deltapict outport inport player zoom notechancolor? grillestep mode winsize winpos score-mode obj-mode show-stems scale palette-mode)) (list nil nil (quote t) 2 24 (quote g) (let ((newobj (make-instance (quote edition-values)))) (setf (paper-size newobj) (om-make-point 600 800)) (setf (top-margin newobj) 2) (setf (left-margin newobj) 1) (setf (right-margin newobj) 1) (setf (bottom-margin newobj) 1) (setf (orientation newobj) nil) (setf (scale newobj) nil) (setf (system-space newobj) (quote (1))) (setf (system-color newobj) (quote nil)) (setf (line-space newobj) 1) (setf (title newobj) nil) (setf (show-title? newobj) nil) (setf (show-page? newobj) nil) (setf (sheet-id newobj) nil) (setf (page-mode newobj) nil) newobj) (om-make-point 0 0) nil 0 (quote :soxplayer) 1 nil 1000 0 (om-make-point 540 306) (om-make-point 400 38) 0 1 (quote t) nil 0)) t nil nil nil (quote nil)))) (when (fboundp (quote set-active)) (set-active box nil)) box) (let ((box (om-load-boxcomment "comment 2" (om-make-point 115 24) (quote "(azimuth elevation)") "" (om-make-point 310 154) nil (om-make-color 0.0 0.0 1.0) (om-make-font "Verdana" 10.0 :family "Verdana" :style (quote (:italic)) :mode (quote nil))))) (when (fboundp (quote set-active)) (set-active box nil)) box) (let ((box (om-load-boxcall (quote genfun) "SOX-PROCESS" (quote sox-process) (quote ((om-load-inputfun (quote input-funbox) "Audio input to be processed [sound, path, string/pipe, sox-input]" "SOX-INPUT" nil) (om-load-inputfun (quote input-funbox) "Sox-effect to be applied to audio input [string]" "SOX-EFFECT" "") (om-load-inputkeyword (quote input-keyword) "Filetype of produced audio [string]" "filetype" (quote :filetype) "aif" (list (list "aif" "aif") (list "wav" "wav") (list "flac" "flac") (list "ogg" "ogg"))))) (om-make-point 130 315) nil nil nil nil 1))) (when (fboundp (quote set-active)) (set-active box nil)) box) (let ((box (om-load-boxcomment "comment 2" (om-make-point 524 36) (quote "The signal follows the ambiX convention, i.e. it uses SN3D normalization and ACN channel ordering. $The resulting file will have (<order>+1)^2 channels") "" (om-make-point 141 468) nil (om-make-color 0.0 0.0 1.0) (om-make-font "Verdana" 10.0 :family "Verdana" :style (quote (:italic)) :mode (quote nil))))) (when (fboundp (quote set-active)) (set-active box nil)) box) (let ((box (om-load-boxcall (quote bastype) "aux" (quote t) (quote nil) (om-make-point 312 190) (om-make-point 27 30) 3 "3" nil))) (when (fboundp (quote set-active)) (set-active box nil)) box) (let ((box (om-load-editor-box1 "SOX-HOAENCODE 2" (quote sox-hoaencode) (quote ((om-load-inputfun (quote input-funbox) "object" "self" nil) (om-load-inputfun (quote input-funbox) "Audio input for sox input modules. [sound object, pathname, string/pipe]" "sound" nil) (om-load-inputfun (quote input-funbox) "Positions as 3dc object, or list of azimuth+elevation values, or list of x+y+z coordinates. [3dc, list]" "positions" (list 0 0)) (om-load-inputfun (quote input-funbox) "Ambisonics order. [int]" "order" 3))) (om-make-point 136 234) (om-make-point 70 50) (if (find-class (quote sox-hoaencode) nil) (make-instance (quote sox-hoaencode) :sound (om-make-pathname :directory (quote (:absolute "Users" "Shared" "_Development" "OM-SoX" "Alexander Ng" "OM-SoX hoaencode" "resources" "sounds")) :device :unspecific :host :unspecific :name "clarinet-multi-mono" :type "aif") :positions (list -90 0) :order 3 :from-file t)) nil nil (pairlis (quote (winsize winpos)) (list (om-make-point 104 150) (om-make-point 10 40))) nil nil nil nil (quote nil)))) (when (fboundp (quote set-active)) (set-active box nil)) box) (let ((box (om-load-boxcall (quote bastype) "aux 3" (quote t) (quote nil) (om-make-point 246 156) (om-make-point 60 30) (list -90 0) "(-90 0)" nil))) (when (fboundp (quote set-active)) (set-active box nil)) box) (let ((box (om-load-editor-box1 "clarinet-multi-mono.aif" (quote sound) (quote ((om-load-inputfun (quote input-funbox) "object" "self" nil) (om-load-inputfun (quote input-funbox) "a track index for multichannel mixing" "tracknum" 0) (om-load-inputfun (quote input-funbox) "a list of markers (s)" "markers" nil))) (om-make-point 146 131) (om-make-point 80 50) (let ((newobj (let ((thesound (load-sound (om-make-pathname :directory (quote (:absolute "Users" "Shared" "_Development" "OM-SoX" "Alexander Ng" "OM-SoX hoaencode" "resources" "sounds")) :device nil :host nil :name "clarinet-multi-mono" :type "aif") 0 1.0 0))) (when thesound (setf (markers thesound) (quote nil))) thesound))) (load-port-info newobj (quote nil)) (init-mus-color newobj (quote nil)) (set-extra-pairs newobj (quote nil)) (set-patch-pairs newobj (quote nil)) (set-name newobj "clarinet-multi-mono.aif") (set-tonalite newobj nil) newobj) "x" nil (pairlis (quote (measure onset :show-spectrum approx fontsize staff cmnpref deltapict outport inport player zoom notechancolor? grillestep mode winsize winpos score-mode obj-mode show-stems scale palette-mode)) (list nil nil (quote t) 2 24 (quote g) (let ((newobj (make-instance (quote edition-values)))) (setf (paper-size newobj) (om-make-point 600 800)) (setf (top-margin newobj) 2) (setf (left-margin newobj) 1) (setf (right-margin newobj) 1) (setf (bottom-margin newobj) 1) (setf (orientation newobj) nil) (setf (scale newobj) nil) (setf (system-space newobj) (quote (1))) (setf (system-color newobj) (quote nil)) (setf (line-space newobj) 1) (setf (title newobj) nil) (setf (show-title? newobj) nil) (setf (show-page? newobj) nil) (setf (sheet-id newobj) nil) (setf (page-mode newobj) nil) newobj) (om-make-point 0 0) nil 0 (quote :soxplayer) 1 nil 1000 0 (om-make-point 540 306) (om-make-point 400 38) 0 1 (quote t) nil 0)) t nil nil nil (quote nil)))) (when (fboundp (quote set-active)) (set-active box nil)) box) (let ((box (om-load-editor-box1 "" (quote sound) (quote ((om-load-inputfun (quote input-funbox) "object" "self" nil) (om-load-inputfun (quote input-funbox) "a track index for multichannel mixing" "tracknum" 0) (om-load-inputfun (quote input-funbox) "a list of markers (s)" "markers" nil))) (om-make-point 145 403) (om-make-point 80 50) (let ((newobj nil)) (load-port-info newobj (quote nil)) (init-mus-color newobj (quote nil)) (set-extra-pairs newobj (quote nil)) (set-patch-pairs newobj (quote nil)) (set-name newobj "") (set-tonalite newobj nil) newobj) nil nil (pairlis (quote (approx fontsize staff cmnpref deltapict outport inport player zoom notechancolor? grillestep mode winsize winpos score-mode obj-mode show-stems scale palette-mode onset measure)) (list 2 24 (quote g) (let ((newobj (make-instance (quote edition-values)))) (setf (paper-size newobj) (om-make-point 600 800)) (setf (top-margin newobj) 2) (setf (left-margin newobj) 1) (setf (right-margin newobj) 1) (setf (bottom-margin newobj) 1) (setf (orientation newobj) nil) (setf (scale newobj) nil) (setf (system-space newobj) (quote (1))) (setf (system-color newobj) (quote nil)) (setf (line-space newobj) 1) (setf (title newobj) nil) (setf (show-title? newobj) nil) (setf (show-page? newobj) nil) (setf (sheet-id newobj) nil) (setf (page-mode newobj) nil) newobj) (om-make-point 0 0) nil 0 (quote :soxplayer) 1 nil 1000 0 (om-make-point 559 303) (om-make-point 400 38) 0 1 (quote t) nil 0 nil nil)) t nil nil nil (quote nil)))) (when (fboundp (quote set-active)) (set-active box nil)) box) (let ((box (om-load-boxcomment "comment 2" (om-make-point 190 24) (quote "-> NB: this class has no editor yet") "" (om-make-point 230 240) nil (om-make-color 0.0 0.0 1.0) (om-make-font "Verdana" 10.0 :family "Verdana" :style (quote (:italic)) :mode (quote nil))))) (when (fboundp (quote set-active)) (set-active box nil)) box) (let ((box (om-load-boxcomment "comment" (om-make-point 662 60) (quote "Encode audio into higher-order ambisonics B-format following SN3D and ACN conventions. $Positions can be specified in polar (azimuth elevation in degrees) or cartesian coordinates (x y z), see doc.$Order can be specified numerically up to 3rd-order.") "" (om-make-point 128 52) nil (om-make-color 0.0 0.0 1.0) (om-make-font "Verdana" 12.0 :family "Verdana" :style (quote (:plain)) :mode (quote nil))))) (when (fboundp (quote set-active)) (set-active box nil)) box) (let ((box (om-load-boxcomment "comment" (om-make-point 141 34) (quote "SoX-HOAENCODE") "" (om-make-point 135 18) nil (om-make-color 0.0 0.0 0.0) (om-make-font "Verdana" 14.0 :family "Verdana" :style (quote (:plain)) :mode (quote nil))))) (when (fboundp (quote set-active)) (set-active box nil)) box))) (quote ((9 0 6 0 nil 0) (6 0 7 0 nil 0) (11 0 9 1 nil 0) (10 0 9 2 nil 0) (8 0 9 3 nil 0) (16 0 13 0 nil 0) (18 0 16 1 nil 0) (17 0 16 2 nil 0) (15 0 16 3 nil 0) (13 0 19 0 nil 0))) (list (let ((newpict (make-instance (quote patch-picture) :name "omsox" :source (quote user) :pict-pathname (restore-pict-path (restore-path nil)) :thepict (om-get-picture "omsox" (quote user)) :storemode :external :draw-params (quote (p 0 0 100 100)) :extraobjs nil))) (setf (pict-pos newpict) (om-make-point 60 8)) (setf (pict-size newpict) (om-make-point 63 48)) newpict)) 7.05))