From d34cb8372f87cda438f4bf1f86a223f6b6a9def9 Mon Sep 17 00:00:00 2001 From: eliott paris Date: Thu, 29 May 2014 21:38:10 +0200 Subject: [PATCH] Max::hoa.3d.wider~ refs --- Max/Max2D/HoaWider/hoa.2d.wider~.cpp | 2 +- Max/Max3D/HoaWider/hoa.3d.wider~.cpp | 41 +++- .../hoa.3d.wider~.xcodeproj/project.pbxproj | 200 +++++++++--------- .../docs/refpages/hoa-ref/_c74_contents.xml | 1 + .../refpages/hoa-ref/hoa.2d.wider~.maxref.xml | 2 +- .../refpages/hoa-ref/hoa.3d.wider~.maxref.xml | 99 +++++++++ .../{hoa.space.png => hoa.2d.space.png} | Bin .../refpages/hoa-ref/images/hoa.space~.png | Bin 93095 -> 0 bytes .../docs/refpages/init/hoa-objectlist.txt | 1 + .../Contents/MacOS/hoa.3d.wider~ | Bin 437036 -> 472516 bytes .../Contents/Resources/MaxHoa3D.xcconfig | 4 +- .../help/Hoa3d/hoa.3d.wider~.maxhelp | 9 +- .../interfaces/hoa-obj-qlookup.json | 10 + 13 files changed, 255 insertions(+), 114 deletions(-) create mode 100644 Max/Package/HoaLibrary/docs/refpages/hoa-ref/hoa.3d.wider~.maxref.xml rename Max/Package/HoaLibrary/docs/refpages/hoa-ref/images/{hoa.space.png => hoa.2d.space.png} (100%) delete mode 100644 Max/Package/HoaLibrary/docs/refpages/hoa-ref/images/hoa.space~.png mode change 100644 => 100755 Max/Package/HoaLibrary/externals/Hoa3d/hoa.3d.wider~.mxo/Contents/MacOS/hoa.3d.wider~ diff --git a/Max/Max2D/HoaWider/hoa.2d.wider~.cpp b/Max/Max2D/HoaWider/hoa.2d.wider~.cpp index fe44a5b15..9e8e9378c 100644 --- a/Max/Max2D/HoaWider/hoa.2d.wider~.cpp +++ b/Max/Max2D/HoaWider/hoa.2d.wider~.cpp @@ -62,7 +62,7 @@ int C74_EXPORT main(void) hoa_initclass(c, (method)hoa_getinfos); // @method signal @digest Array of circular harmonic signals to be processed, widening value. - // @description Array of circular harmonic signals to be processes. Set the widening value in the last inlet at signal rate. The widening value is clipped between 0. and 1. + // @description Array of circular harmonic signals to be processed. Set the widening value in the last inlet at signal rate. The widening value is clipped between 0. and 1. class_addmethod(c, (method)hoa_wider_dsp64, "dsp64", A_CANT, 0); class_addmethod(c, (method)hoa_wider_assist, "assist", A_CANT, 0); diff --git a/Max/Max3D/HoaWider/hoa.3d.wider~.cpp b/Max/Max3D/HoaWider/hoa.3d.wider~.cpp index 81f032f60..fd7080f02 100644 --- a/Max/Max3D/HoaWider/hoa.3d.wider~.cpp +++ b/Max/Max3D/HoaWider/hoa.3d.wider~.cpp @@ -1,8 +1,30 @@ /* -// Copyright (c) 2012-2014 Eliott Paris, Julien Colafrancesco & Pierre Guillot, CICM, Universite Paris 8. -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "LICENSE.txt," in this distribution. -*/ + // Copyright (c) 2012-2014 Eliott Paris, Julien Colafrancesco & Pierre Guillot, CICM, Universite Paris 8. + // For information on usage and redistribution, and for a DISCLAIMER OF ALL + // WARRANTIES, see the file, "LICENSE.txt," in this distribution. + */ + +/** + @file hoa.3d.wider~.cpp + @name hoa.3d.wider~ + @realname hoa.3d.wider~ + @type object + @module hoa + @author Julien Colafrancesco, Pierre Guillot, Eliott Paris. + + @digest + A fractional ambisonic orders simulator for 2d + + @description + hoa.3d.wider~ can be used to wide the diffusion of a localised sound. The order depending signals are weighted and appear in a logarithmic way to have linear changes. + + @discussion + hoa.3d.wider~ can be used to wide the diffusion of a localised sound. The order depending signals are weighted and appear in a logarithmic way to have linear changes. + + @category ambisonics, hoa objects, audio, MSP + + @seealso hoa.2d.wider~, hoa.3d.encoder~, hoa.3d.decoder~, hoa.3d.map~, hoa.3d.optim~, hoa.3d.scope~ + */ #include "../Hoa3D.max.h" @@ -39,8 +61,16 @@ int C74_EXPORT main(void) hoa_initclass(c, (method)hoa_getinfos); + // @method float @digest Set the widening value. + // @description Set the widening value in the last inlet at control rate. The widening value is clipped between 0. and 1. class_addmethod(c, (method)hoa_wider_float, "float", A_FLOAT, 0); + + // @method int @digest Set the widening value. + // @description Set the widening value in the last inlet at control rate. The widening value is clipped between 0. and 1. class_addmethod(c, (method)hoa_wider_int, "int", A_LONG, 0); + + // @method signal @digest Array of spherical harmonics signals to be processed, widening value. + // @description Array of spherical harmonics signals to be processed. Set the widening value in the last inlet at signal rate. The widening value is clipped between 0. and 1. class_addmethod(c, (method)hoa_wider_dsp64, "dsp64", A_CANT, 0); class_addmethod(c, (method)hoa_wider_assist, "assist", A_CANT, 0); @@ -52,6 +82,9 @@ int C74_EXPORT main(void) void *hoa_wider_new(t_symbol *s, long argc, t_atom *argv) { + // @arg 0 @name ambisonic-order @optional 0 @type int @digest The ambisonic order of decomposition + // @description First argument is the ambisonic order of decomposition. + t_hoa_wider *x = NULL; int order = 1; x = (t_hoa_wider *)object_alloc(hoa_wider_class); diff --git a/Max/Max3D/HoaWider/hoa.3d.wider~.xcodeproj/project.pbxproj b/Max/Max3D/HoaWider/hoa.3d.wider~.xcodeproj/project.pbxproj index ddbbcb059..018fa554b 100644 --- a/Max/Max3D/HoaWider/hoa.3d.wider~.xcodeproj/project.pbxproj +++ b/Max/Max3D/HoaWider/hoa.3d.wider~.xcodeproj/project.pbxproj @@ -11,34 +11,33 @@ 2C9255BA18D1D01400A3A730 /* Hoa3D.max.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C9255B918D1D01400A3A730 /* Hoa3D.max.h */; }; 2C9255BC18D1D06000A3A730 /* MaxHoa3D.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 2C9255BB18D1D06000A3A730 /* MaxHoa3D.xcconfig */; }; 2C9255BE18D1D0EB00A3A730 /* MaxAudioAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2C9255BD18D1D0EB00A3A730 /* MaxAudioAPI.framework */; }; - 2C9255D918D1D11B00A3A730 /* Ambisonic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2C9255C018D1D11B00A3A730 /* Ambisonic.cpp */; }; - 2C9255DA18D1D11B00A3A730 /* Ambisonic.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C9255C118D1D11B00A3A730 /* Ambisonic.h */; }; - 2C9255DB18D1D11B00A3A730 /* BinauralMatrix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2C9255C218D1D11B00A3A730 /* BinauralMatrix.cpp */; }; - 2C9255DC18D1D11B00A3A730 /* Decoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2C9255C318D1D11B00A3A730 /* Decoder.cpp */; }; - 2C9255DD18D1D11B00A3A730 /* Decoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C9255C418D1D11B00A3A730 /* Decoder.h */; }; - 2C9255DE18D1D11B00A3A730 /* Encoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2C9255C518D1D11B00A3A730 /* Encoder.cpp */; }; - 2C9255DF18D1D11B00A3A730 /* Encoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C9255C618D1D11B00A3A730 /* Encoder.h */; }; - 2C9255E018D1D11B00A3A730 /* Hoa3D.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C9255C718D1D11B00A3A730 /* Hoa3D.h */; }; - 2C9255E118D1D11B00A3A730 /* Map.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2C9255C818D1D11B00A3A730 /* Map.cpp */; }; - 2C9255E218D1D11B00A3A730 /* Map.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C9255C918D1D11B00A3A730 /* Map.h */; }; - 2C9255E318D1D11B00A3A730 /* Meter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2C9255CA18D1D11B00A3A730 /* Meter.cpp */; }; - 2C9255E418D1D11B00A3A730 /* Meter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C9255CB18D1D11B00A3A730 /* Meter.h */; }; - 2C9255E518D1D11B00A3A730 /* Optim.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2C9255CC18D1D11B00A3A730 /* Optim.cpp */; }; - 2C9255E618D1D11B00A3A730 /* Optim.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C9255CD18D1D11B00A3A730 /* Optim.h */; }; - 2C9255E718D1D11B00A3A730 /* Planewaves.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2C9255CE18D1D11B00A3A730 /* Planewaves.cpp */; }; - 2C9255E818D1D11B00A3A730 /* Planewaves.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C9255CF18D1D11B00A3A730 /* Planewaves.h */; }; - 2C9255E918D1D11B00A3A730 /* Rotate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2C9255D018D1D11B00A3A730 /* Rotate.cpp */; }; - 2C9255EA18D1D11B00A3A730 /* Rotate.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C9255D118D1D11B00A3A730 /* Rotate.h */; }; - 2C9255EB18D1D11B00A3A730 /* Scope.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2C9255D218D1D11B00A3A730 /* Scope.cpp */; }; - 2C9255EC18D1D11B00A3A730 /* Scope.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C9255D318D1D11B00A3A730 /* Scope.h */; }; - 2C9255ED18D1D11B00A3A730 /* Tools.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C9255D418D1D11B00A3A730 /* Tools.h */; }; - 2C9255EE18D1D11B00A3A730 /* Vector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2C9255D518D1D11B00A3A730 /* Vector.cpp */; }; - 2C9255EF18D1D11B00A3A730 /* Vector.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C9255D618D1D11B00A3A730 /* Vector.h */; }; - 2C9255F018D1D11B00A3A730 /* Wider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2C9255D718D1D11B00A3A730 /* Wider.cpp */; }; - 2C9255F118D1D11B00A3A730 /* Wider.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C9255D818D1D11B00A3A730 /* Wider.h */; }; 2C9255F518D1D16B00A3A730 /* hoa.max_commonsyms.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C9255F218D1D16B00A3A730 /* hoa.max_commonsyms.h */; }; 2C9255F618D1D16B00A3A730 /* hoa.max.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2C9255F318D1D16B00A3A730 /* hoa.max.cpp */; }; 2C9255F718D1D16B00A3A730 /* hoa.max.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C9255F418D1D16B00A3A730 /* hoa.max.h */; }; + 2CFC5A991937C255001CCDA2 /* Ambisonic_3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2CFC5A811937C255001CCDA2 /* Ambisonic_3D.cpp */; }; + 2CFC5A9A1937C255001CCDA2 /* Ambisonic_3D.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CFC5A821937C255001CCDA2 /* Ambisonic_3D.h */; }; + 2CFC5A9B1937C255001CCDA2 /* BinauralMatrix_3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2CFC5A831937C255001CCDA2 /* BinauralMatrix_3D.cpp */; }; + 2CFC5A9C1937C255001CCDA2 /* Decoder_3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2CFC5A841937C255001CCDA2 /* Decoder_3D.cpp */; }; + 2CFC5A9D1937C255001CCDA2 /* Decoder_3D.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CFC5A851937C255001CCDA2 /* Decoder_3D.h */; }; + 2CFC5A9E1937C255001CCDA2 /* Encoder_3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2CFC5A861937C255001CCDA2 /* Encoder_3D.cpp */; }; + 2CFC5A9F1937C255001CCDA2 /* Encoder_3D.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CFC5A871937C255001CCDA2 /* Encoder_3D.h */; }; + 2CFC5AA01937C255001CCDA2 /* Hoa3D.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CFC5A881937C255001CCDA2 /* Hoa3D.h */; }; + 2CFC5AA11937C255001CCDA2 /* Map_3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2CFC5A891937C255001CCDA2 /* Map_3D.cpp */; }; + 2CFC5AA21937C255001CCDA2 /* Map_3D.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CFC5A8A1937C255001CCDA2 /* Map_3D.h */; }; + 2CFC5AA31937C255001CCDA2 /* Meter_3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2CFC5A8B1937C255001CCDA2 /* Meter_3D.cpp */; }; + 2CFC5AA41937C255001CCDA2 /* Meter_3D.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CFC5A8C1937C255001CCDA2 /* Meter_3D.h */; }; + 2CFC5AA51937C255001CCDA2 /* Optim_3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2CFC5A8D1937C255001CCDA2 /* Optim_3D.cpp */; }; + 2CFC5AA61937C255001CCDA2 /* Optim_3D.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CFC5A8E1937C255001CCDA2 /* Optim_3D.h */; }; + 2CFC5AA71937C255001CCDA2 /* Planewaves_3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2CFC5A8F1937C255001CCDA2 /* Planewaves_3D.cpp */; }; + 2CFC5AA81937C255001CCDA2 /* Planewaves_3D.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CFC5A901937C255001CCDA2 /* Planewaves_3D.h */; }; + 2CFC5AA91937C255001CCDA2 /* Rotate_3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2CFC5A911937C255001CCDA2 /* Rotate_3D.cpp */; }; + 2CFC5AAA1937C255001CCDA2 /* Rotate_3D.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CFC5A921937C255001CCDA2 /* Rotate_3D.h */; }; + 2CFC5AAB1937C255001CCDA2 /* Scope_3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2CFC5A931937C255001CCDA2 /* Scope_3D.cpp */; }; + 2CFC5AAC1937C255001CCDA2 /* Scope_3D.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CFC5A941937C255001CCDA2 /* Scope_3D.h */; }; + 2CFC5AAD1937C255001CCDA2 /* Vector_3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2CFC5A951937C255001CCDA2 /* Vector_3D.cpp */; }; + 2CFC5AAE1937C255001CCDA2 /* Vector_3D.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CFC5A961937C255001CCDA2 /* Vector_3D.h */; }; + 2CFC5AAF1937C255001CCDA2 /* Wider_3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2CFC5A971937C255001CCDA2 /* Wider_3D.cpp */; }; + 2CFC5AB01937C255001CCDA2 /* Wider_3D.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CFC5A981937C255001CCDA2 /* Wider_3D.h */; }; 8F18A8BE17287341005FD621 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8F18A8BD17287341005FD621 /* Accelerate.framework */; }; 8F7EC130177AD88600AA6CFE /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8F7EC12F177AD88600AA6CFE /* CoreFoundation.framework */; }; /* End PBXBuildFile section */ @@ -48,34 +47,33 @@ 2C9255B918D1D01400A3A730 /* Hoa3D.max.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Hoa3D.max.h; path = ../Hoa3D.max.h; sourceTree = ""; }; 2C9255BB18D1D06000A3A730 /* MaxHoa3D.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = MaxHoa3D.xcconfig; path = ../MaxHoa3D.xcconfig; sourceTree = ""; }; 2C9255BD18D1D0EB00A3A730 /* MaxAudioAPI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MaxAudioAPI.framework; path = "../../../../../SDKs/MaxSDK-6.1.4/c74support/msp-includes/MaxAudioAPI.framework"; sourceTree = ""; }; - 2C9255C018D1D11B00A3A730 /* Ambisonic.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Ambisonic.cpp; sourceTree = ""; }; - 2C9255C118D1D11B00A3A730 /* Ambisonic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Ambisonic.h; sourceTree = ""; }; - 2C9255C218D1D11B00A3A730 /* BinauralMatrix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BinauralMatrix.cpp; sourceTree = ""; }; - 2C9255C318D1D11B00A3A730 /* Decoder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Decoder.cpp; sourceTree = ""; }; - 2C9255C418D1D11B00A3A730 /* Decoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Decoder.h; sourceTree = ""; }; - 2C9255C518D1D11B00A3A730 /* Encoder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Encoder.cpp; sourceTree = ""; }; - 2C9255C618D1D11B00A3A730 /* Encoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = Encoder.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; - 2C9255C718D1D11B00A3A730 /* Hoa3D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = Hoa3D.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; - 2C9255C818D1D11B00A3A730 /* Map.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Map.cpp; sourceTree = ""; }; - 2C9255C918D1D11B00A3A730 /* Map.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Map.h; sourceTree = ""; }; - 2C9255CA18D1D11B00A3A730 /* Meter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Meter.cpp; sourceTree = ""; }; - 2C9255CB18D1D11B00A3A730 /* Meter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Meter.h; sourceTree = ""; }; - 2C9255CC18D1D11B00A3A730 /* Optim.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Optim.cpp; sourceTree = ""; }; - 2C9255CD18D1D11B00A3A730 /* Optim.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Optim.h; sourceTree = ""; }; - 2C9255CE18D1D11B00A3A730 /* Planewaves.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Planewaves.cpp; sourceTree = ""; }; - 2C9255CF18D1D11B00A3A730 /* Planewaves.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Planewaves.h; sourceTree = ""; }; - 2C9255D018D1D11B00A3A730 /* Rotate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = Rotate.cpp; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.cpp; }; - 2C9255D118D1D11B00A3A730 /* Rotate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = Rotate.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; - 2C9255D218D1D11B00A3A730 /* Scope.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = Scope.cpp; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.cpp; }; - 2C9255D318D1D11B00A3A730 /* Scope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = Scope.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; - 2C9255D418D1D11B00A3A730 /* Tools.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = Tools.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; - 2C9255D518D1D11B00A3A730 /* Vector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = Vector.cpp; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.cpp; }; - 2C9255D618D1D11B00A3A730 /* Vector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = Vector.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; - 2C9255D718D1D11B00A3A730 /* Wider.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = Wider.cpp; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.cpp; }; - 2C9255D818D1D11B00A3A730 /* Wider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = Wider.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; 2C9255F218D1D16B00A3A730 /* hoa.max_commonsyms.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = hoa.max_commonsyms.h; path = ../../hoa.max_commonsyms.h; sourceTree = ""; }; 2C9255F318D1D16B00A3A730 /* hoa.max.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = hoa.max.cpp; path = ../../hoa.max.cpp; sourceTree = ""; }; 2C9255F418D1D16B00A3A730 /* hoa.max.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = hoa.max.h; path = ../../hoa.max.h; sourceTree = ""; }; + 2CFC5A811937C255001CCDA2 /* Ambisonic_3D.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Ambisonic_3D.cpp; sourceTree = ""; }; + 2CFC5A821937C255001CCDA2 /* Ambisonic_3D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Ambisonic_3D.h; sourceTree = ""; }; + 2CFC5A831937C255001CCDA2 /* BinauralMatrix_3D.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BinauralMatrix_3D.cpp; sourceTree = ""; }; + 2CFC5A841937C255001CCDA2 /* Decoder_3D.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Decoder_3D.cpp; sourceTree = ""; }; + 2CFC5A851937C255001CCDA2 /* Decoder_3D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Decoder_3D.h; sourceTree = ""; }; + 2CFC5A861937C255001CCDA2 /* Encoder_3D.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Encoder_3D.cpp; sourceTree = ""; }; + 2CFC5A871937C255001CCDA2 /* Encoder_3D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Encoder_3D.h; sourceTree = ""; }; + 2CFC5A881937C255001CCDA2 /* Hoa3D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Hoa3D.h; sourceTree = ""; }; + 2CFC5A891937C255001CCDA2 /* Map_3D.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Map_3D.cpp; sourceTree = ""; }; + 2CFC5A8A1937C255001CCDA2 /* Map_3D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Map_3D.h; sourceTree = ""; }; + 2CFC5A8B1937C255001CCDA2 /* Meter_3D.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Meter_3D.cpp; sourceTree = ""; }; + 2CFC5A8C1937C255001CCDA2 /* Meter_3D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Meter_3D.h; sourceTree = ""; }; + 2CFC5A8D1937C255001CCDA2 /* Optim_3D.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Optim_3D.cpp; sourceTree = ""; }; + 2CFC5A8E1937C255001CCDA2 /* Optim_3D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Optim_3D.h; sourceTree = ""; }; + 2CFC5A8F1937C255001CCDA2 /* Planewaves_3D.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Planewaves_3D.cpp; sourceTree = ""; }; + 2CFC5A901937C255001CCDA2 /* Planewaves_3D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Planewaves_3D.h; sourceTree = ""; }; + 2CFC5A911937C255001CCDA2 /* Rotate_3D.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Rotate_3D.cpp; sourceTree = ""; }; + 2CFC5A921937C255001CCDA2 /* Rotate_3D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Rotate_3D.h; sourceTree = ""; }; + 2CFC5A931937C255001CCDA2 /* Scope_3D.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Scope_3D.cpp; sourceTree = ""; }; + 2CFC5A941937C255001CCDA2 /* Scope_3D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Scope_3D.h; sourceTree = ""; }; + 2CFC5A951937C255001CCDA2 /* Vector_3D.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Vector_3D.cpp; sourceTree = ""; }; + 2CFC5A961937C255001CCDA2 /* Vector_3D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Vector_3D.h; sourceTree = ""; }; + 2CFC5A971937C255001CCDA2 /* Wider_3D.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Wider_3D.cpp; sourceTree = ""; }; + 2CFC5A981937C255001CCDA2 /* Wider_3D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Wider_3D.h; sourceTree = ""; }; 2FBBEAE508F335360078DB84 /* hoa.3d.wider~.mxo */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "hoa.3d.wider~.mxo"; sourceTree = BUILT_PRODUCTS_DIR; }; 8F18A8BD17287341005FD621 /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; }; 8F7EC12F177AD88600AA6CFE /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; }; @@ -103,7 +101,7 @@ 2C9255F218D1D16B00A3A730 /* hoa.max_commonsyms.h */, 2C9255F318D1D16B00A3A730 /* hoa.max.cpp */, 2C9255F418D1D16B00A3A730 /* hoa.max.h */, - 2C9255BF18D1D11B00A3A730 /* Hoa3D */, + 2CFC5A801937C255001CCDA2 /* Hoa3D */, 2C9255BD18D1D0EB00A3A730 /* MaxAudioAPI.framework */, 8F7EC12F177AD88600AA6CFE /* CoreFoundation.framework */, 8F18A8BD17287341005FD621 /* Accelerate.framework */, @@ -121,34 +119,33 @@ name = Products; sourceTree = ""; }; - 2C9255BF18D1D11B00A3A730 /* Hoa3D */ = { + 2CFC5A801937C255001CCDA2 /* Hoa3D */ = { isa = PBXGroup; children = ( - 2C9255C018D1D11B00A3A730 /* Ambisonic.cpp */, - 2C9255C118D1D11B00A3A730 /* Ambisonic.h */, - 2C9255C218D1D11B00A3A730 /* BinauralMatrix.cpp */, - 2C9255C318D1D11B00A3A730 /* Decoder.cpp */, - 2C9255C418D1D11B00A3A730 /* Decoder.h */, - 2C9255C518D1D11B00A3A730 /* Encoder.cpp */, - 2C9255C618D1D11B00A3A730 /* Encoder.h */, - 2C9255C718D1D11B00A3A730 /* Hoa3D.h */, - 2C9255C818D1D11B00A3A730 /* Map.cpp */, - 2C9255C918D1D11B00A3A730 /* Map.h */, - 2C9255CA18D1D11B00A3A730 /* Meter.cpp */, - 2C9255CB18D1D11B00A3A730 /* Meter.h */, - 2C9255CC18D1D11B00A3A730 /* Optim.cpp */, - 2C9255CD18D1D11B00A3A730 /* Optim.h */, - 2C9255CE18D1D11B00A3A730 /* Planewaves.cpp */, - 2C9255CF18D1D11B00A3A730 /* Planewaves.h */, - 2C9255D018D1D11B00A3A730 /* Rotate.cpp */, - 2C9255D118D1D11B00A3A730 /* Rotate.h */, - 2C9255D218D1D11B00A3A730 /* Scope.cpp */, - 2C9255D318D1D11B00A3A730 /* Scope.h */, - 2C9255D418D1D11B00A3A730 /* Tools.h */, - 2C9255D518D1D11B00A3A730 /* Vector.cpp */, - 2C9255D618D1D11B00A3A730 /* Vector.h */, - 2C9255D718D1D11B00A3A730 /* Wider.cpp */, - 2C9255D818D1D11B00A3A730 /* Wider.h */, + 2CFC5A811937C255001CCDA2 /* Ambisonic_3D.cpp */, + 2CFC5A821937C255001CCDA2 /* Ambisonic_3D.h */, + 2CFC5A831937C255001CCDA2 /* BinauralMatrix_3D.cpp */, + 2CFC5A841937C255001CCDA2 /* Decoder_3D.cpp */, + 2CFC5A851937C255001CCDA2 /* Decoder_3D.h */, + 2CFC5A861937C255001CCDA2 /* Encoder_3D.cpp */, + 2CFC5A871937C255001CCDA2 /* Encoder_3D.h */, + 2CFC5A881937C255001CCDA2 /* Hoa3D.h */, + 2CFC5A891937C255001CCDA2 /* Map_3D.cpp */, + 2CFC5A8A1937C255001CCDA2 /* Map_3D.h */, + 2CFC5A8B1937C255001CCDA2 /* Meter_3D.cpp */, + 2CFC5A8C1937C255001CCDA2 /* Meter_3D.h */, + 2CFC5A8D1937C255001CCDA2 /* Optim_3D.cpp */, + 2CFC5A8E1937C255001CCDA2 /* Optim_3D.h */, + 2CFC5A8F1937C255001CCDA2 /* Planewaves_3D.cpp */, + 2CFC5A901937C255001CCDA2 /* Planewaves_3D.h */, + 2CFC5A911937C255001CCDA2 /* Rotate_3D.cpp */, + 2CFC5A921937C255001CCDA2 /* Rotate_3D.h */, + 2CFC5A931937C255001CCDA2 /* Scope_3D.cpp */, + 2CFC5A941937C255001CCDA2 /* Scope_3D.h */, + 2CFC5A951937C255001CCDA2 /* Vector_3D.cpp */, + 2CFC5A961937C255001CCDA2 /* Vector_3D.h */, + 2CFC5A971937C255001CCDA2 /* Wider_3D.cpp */, + 2CFC5A981937C255001CCDA2 /* Wider_3D.h */, ); name = Hoa3D; path = ../../../Sources/Hoa3D; @@ -161,22 +158,21 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 2C9255E018D1D11B00A3A730 /* Hoa3D.h in Headers */, - 2C9255DA18D1D11B00A3A730 /* Ambisonic.h in Headers */, - 2C9255E418D1D11B00A3A730 /* Meter.h in Headers */, - 2C9255EF18D1D11B00A3A730 /* Vector.h in Headers */, + 2CFC5A9F1937C255001CCDA2 /* Encoder_3D.h in Headers */, + 2CFC5AA81937C255001CCDA2 /* Planewaves_3D.h in Headers */, + 2CFC5AAA1937C255001CCDA2 /* Rotate_3D.h in Headers */, 2C9255F518D1D16B00A3A730 /* hoa.max_commonsyms.h in Headers */, - 2C9255EC18D1D11B00A3A730 /* Scope.h in Headers */, - 2C9255EA18D1D11B00A3A730 /* Rotate.h in Headers */, - 2C9255E618D1D11B00A3A730 /* Optim.h in Headers */, - 2C9255DD18D1D11B00A3A730 /* Decoder.h in Headers */, + 2CFC5AA21937C255001CCDA2 /* Map_3D.h in Headers */, + 2CFC5AA61937C255001CCDA2 /* Optim_3D.h in Headers */, + 2CFC5AB01937C255001CCDA2 /* Wider_3D.h in Headers */, + 2CFC5AAE1937C255001CCDA2 /* Vector_3D.h in Headers */, + 2CFC5AA41937C255001CCDA2 /* Meter_3D.h in Headers */, 2C9255BA18D1D01400A3A730 /* Hoa3D.max.h in Headers */, - 2C9255E218D1D11B00A3A730 /* Map.h in Headers */, 2C9255F718D1D16B00A3A730 /* hoa.max.h in Headers */, - 2C9255E818D1D11B00A3A730 /* Planewaves.h in Headers */, - 2C9255F118D1D11B00A3A730 /* Wider.h in Headers */, - 2C9255ED18D1D11B00A3A730 /* Tools.h in Headers */, - 2C9255DF18D1D11B00A3A730 /* Encoder.h in Headers */, + 2CFC5AA01937C255001CCDA2 /* Hoa3D.h in Headers */, + 2CFC5A9D1937C255001CCDA2 /* Decoder_3D.h in Headers */, + 2CFC5AAC1937C255001CCDA2 /* Scope_3D.h in Headers */, + 2CFC5A9A1937C255001CCDA2 /* Ambisonic_3D.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -256,20 +252,20 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 2C9255EB18D1D11B00A3A730 /* Scope.cpp in Sources */, - 2C9255E718D1D11B00A3A730 /* Planewaves.cpp in Sources */, - 2C9255DE18D1D11B00A3A730 /* Encoder.cpp in Sources */, - 2C9255E918D1D11B00A3A730 /* Rotate.cpp in Sources */, - 2C9255DB18D1D11B00A3A730 /* BinauralMatrix.cpp in Sources */, - 2C9255F018D1D11B00A3A730 /* Wider.cpp in Sources */, - 2C9255D918D1D11B00A3A730 /* Ambisonic.cpp in Sources */, - 2C9255EE18D1D11B00A3A730 /* Vector.cpp in Sources */, - 2C9255E518D1D11B00A3A730 /* Optim.cpp in Sources */, - 2C9255E118D1D11B00A3A730 /* Map.cpp in Sources */, + 2CFC5AA31937C255001CCDA2 /* Meter_3D.cpp in Sources */, + 2CFC5AAB1937C255001CCDA2 /* Scope_3D.cpp in Sources */, 2C0561C618D1F5160076AABB /* hoa.3d.wider~.cpp in Sources */, - 2C9255DC18D1D11B00A3A730 /* Decoder.cpp in Sources */, 2C9255F618D1D16B00A3A730 /* hoa.max.cpp in Sources */, - 2C9255E318D1D11B00A3A730 /* Meter.cpp in Sources */, + 2CFC5AAD1937C255001CCDA2 /* Vector_3D.cpp in Sources */, + 2CFC5A991937C255001CCDA2 /* Ambisonic_3D.cpp in Sources */, + 2CFC5AA91937C255001CCDA2 /* Rotate_3D.cpp in Sources */, + 2CFC5AA71937C255001CCDA2 /* Planewaves_3D.cpp in Sources */, + 2CFC5A9E1937C255001CCDA2 /* Encoder_3D.cpp in Sources */, + 2CFC5A9C1937C255001CCDA2 /* Decoder_3D.cpp in Sources */, + 2CFC5AAF1937C255001CCDA2 /* Wider_3D.cpp in Sources */, + 2CFC5AA11937C255001CCDA2 /* Map_3D.cpp in Sources */, + 2CFC5A9B1937C255001CCDA2 /* BinauralMatrix_3D.cpp in Sources */, + 2CFC5AA51937C255001CCDA2 /* Optim_3D.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Max/Package/HoaLibrary/docs/refpages/hoa-ref/_c74_contents.xml b/Max/Package/HoaLibrary/docs/refpages/hoa-ref/_c74_contents.xml index ed9b2db6b..2123c09d0 100644 --- a/Max/Package/HoaLibrary/docs/refpages/hoa-ref/_c74_contents.xml +++ b/Max/Package/HoaLibrary/docs/refpages/hoa-ref/_c74_contents.xml @@ -18,6 +18,7 @@ + diff --git a/Max/Package/HoaLibrary/docs/refpages/hoa-ref/hoa.2d.wider~.maxref.xml b/Max/Package/HoaLibrary/docs/refpages/hoa-ref/hoa.2d.wider~.maxref.xml index 1e72515a6..e8f6fd321 100644 --- a/Max/Package/HoaLibrary/docs/refpages/hoa-ref/hoa.2d.wider~.maxref.xml +++ b/Max/Package/HoaLibrary/docs/refpages/hoa-ref/hoa.2d.wider~.maxref.xml @@ -60,7 +60,7 @@ Array of circular harmonic signals to be processed, widening value. - Array of circular harmonic signals to be processes. Set the widening value in the last inlet at signal rate. The widening value is clipped between 0. and 1. + Array of circular harmonic signals to be processed. Set the widening value in the last inlet at signal rate. The widening value is clipped between 0. and 1. diff --git a/Max/Package/HoaLibrary/docs/refpages/hoa-ref/hoa.3d.wider~.maxref.xml b/Max/Package/HoaLibrary/docs/refpages/hoa-ref/hoa.3d.wider~.maxref.xml new file mode 100644 index 000000000..5c1168d5d --- /dev/null +++ b/Max/Package/HoaLibrary/docs/refpages/hoa-ref/hoa.3d.wider~.maxref.xml @@ -0,0 +1,99 @@ + + + + + + + + + A fractional ambisonic orders simulator for 2d + + + + hoa.3d.wider~ can be used to wide the diffusion of a localised sound. The order depending signals are weighted and appear in a logarithmic way to have linear changes. + + + + + Julien Colafrancesco, Pierre Guillot, Eliott Paris. + ambisonics + hoa objects + audio + MSP + + + + + + + The ambisonic order of decomposition + + + First argument is the ambisonic order of decomposition. + + + + + + + + + + Set the widening value. + + + Set the widening value in the last inlet at control rate. The widening value is clipped between 0. and 1. + + + + + + Set the widening value. + + + Set the widening value in the last inlet at control rate. The widening value is clipped between 0. and 1. + + + + + + Array of spherical harmonics signals to be processed, widening value. + + + Array of spherical harmonics signals to be processed. Set the widening value in the last inlet at signal rate. The widening value is clipped between 0. and 1. + + + + + + + + + + + hoa.3d.wider~ can be used to wide the diffusion of a localised sound. The order depending signals are weighted and appear in a logarithmic way to have linear changes. + + + + + + + + + + + + + + + + hoa.3d.wider~ can be used to wide the diffusion of a localised sound. The order depending signals are weighted and appear in a logarithmic way to have linear changes. + + + + + + + + + \ No newline at end of file diff --git a/Max/Package/HoaLibrary/docs/refpages/hoa-ref/images/hoa.space.png b/Max/Package/HoaLibrary/docs/refpages/hoa-ref/images/hoa.2d.space.png similarity index 100% rename from Max/Package/HoaLibrary/docs/refpages/hoa-ref/images/hoa.space.png rename to Max/Package/HoaLibrary/docs/refpages/hoa-ref/images/hoa.2d.space.png diff --git a/Max/Package/HoaLibrary/docs/refpages/hoa-ref/images/hoa.space~.png b/Max/Package/HoaLibrary/docs/refpages/hoa-ref/images/hoa.space~.png deleted file mode 100644 index f68055889397e809458f95175ad3cd609605a722..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 93095 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