├── .gitignore ├── .gitmodules ├── README.md ├── example3DSources ├── Makefile ├── Project.xcconfig ├── addons.make ├── bin │ └── data │ │ └── .gitkeep ├── config.make ├── example3DSources.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ ├── xcshareddata │ │ │ └── example3DSources.xccheckout │ │ └── xcuserdata │ │ │ └── claudiocabral.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ ├── xcshareddata │ │ └── xcschemes │ │ │ ├── example3DSources Debug.xcscheme │ │ │ └── example3DSources Release.xcscheme │ └── xcuserdata │ │ └── claudiocabral.xcuserdatad │ │ ├── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── openFrameworks-Info.plist └── src │ ├── main.cpp │ ├── ofApp.cpp │ └── ofApp.h ├── exampleBinaural ├── Makefile ├── Project.xcconfig ├── addons.make ├── bin │ └── data │ │ └── .gitkeep ├── config.make ├── exampleBinaural.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── xcshareddata │ │ │ └── exampleBinaural.xccheckout │ │ └── xcuserdata │ │ │ └── claudiocabral.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ ├── xcshareddata │ │ └── xcschemes │ │ │ ├── exampleBinaural Debug.xcscheme │ │ │ └── exampleBinaural Release.xcscheme │ └── xcuserdata │ │ └── claudiocabral.xcuserdatad │ │ ├── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── openFrameworks-Info.plist └── src │ ├── main.cpp │ ├── ofApp.cpp │ └── ofApp.h ├── exampleMultipleSources ├── Makefile ├── Project.xcconfig ├── addons.make ├── bin │ └── data │ │ └── .gitkeep ├── config.make ├── exampleMultipleSources.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ ├── xcshareddata │ │ │ └── exampleMultipleSources.xccheckout │ │ └── xcuserdata │ │ │ └── claudiocabral.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ ├── xcshareddata │ │ └── xcschemes │ │ │ ├── exampleMultipleSources Debug.xcscheme │ │ │ └── exampleMultipleSources Release.xcscheme │ └── xcuserdata │ │ └── claudiocabral.xcuserdatad │ │ ├── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── openFrameworks-Info.plist └── src │ ├── main.cpp │ ├── ofApp.cpp │ └── ofApp.h ├── exampleOneSource ├── Makefile ├── Project.xcconfig ├── addons.make ├── bin │ └── data │ │ └── .gitkeep ├── config.make ├── exampleOneSource.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ ├── xcshareddata │ │ │ └── exampleOneSource.xccheckout │ │ └── xcuserdata │ │ │ └── claudiocabral.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ ├── xcshareddata │ │ └── xcschemes │ │ │ ├── exampleOneSource Debug.xcscheme │ │ │ └── exampleOneSource Release.xcscheme │ └── xcuserdata │ │ └── claudiocabral.xcuserdatad │ │ ├── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── openFrameworks-Info.plist └── src │ ├── main.cpp │ ├── ofApp.cpp │ └── ofApp.h ├── libs └── ofxHoaClasses │ ├── ofxHoaCoord.h │ └── ofxHoaOscillator.h ├── license.md ├── ofxaddons_thumbnail.png └── src └── ofxHoa.h /.gitignore: -------------------------------------------------------------------------------- 1 | examples3DSources/bin/* 2 | !examples3DSources/bin/data/ 3 | 4 | examplesMultipleSources/bin/* 5 | !examplesMultipleSources/bin/data/ 6 | 7 | exampleOneSource/bin/* 8 | !examplesOneSource/bin/data/ 9 | 10 | *.app -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "libs/HoaLibrary-light"] 2 | path = libs/HoaLibrary-light 3 | url = https://github.com/CICM/HoaLibrary-light 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ofxHoa 2 | ================ 3 | 4 | ofxHoa is a wrapper of the [Hoa Library](https://github.com/CICM/HoaLibrary-Light "Hoa Library") (High Order Ambisonics), a set of C++ classes for sound spatialization in 2D and 3D based on Ambisonics. The current versions of the HoaLibrary support MacOs X, Windows and Linux. For openFrameworks we only support MacOs X. Windows and Linux are still a work in progress. 5 | 6 | ## IMPORTANT INSTALLATION NOTES 7 | 8 | The ofxHoa uses a git submodule. If you choose to download it directly through the site, 9 | the submodule may not be included. 10 | Please check that you have the folder 11 | 12 | ofxHoa/libs/HoaLibrary-Light 13 | 14 | and all of it’s contents. If not, download the HoaLibrary-Light in the following link: 15 | 16 | https://github.com/CICM/HoaLibrary-Light 17 | 18 | and put the /Sources folder inside ofxHoa/libs/HoaLibrary-Light 19 | 20 | ## Using the Library in openFrameworks 21 | 22 | When using this library with oF, a few things must be taken into account. 23 | Your speakers must be set in a circular or semi-spherical formation. For further information, check the the official site linked bellow. 24 | When design your software, Hoa objects expect a traditional cartesian coordinate system centered around (0,0). If you do not take this into account, you’ll end up with a reversed Y axis and a source spacialized in relation to the top left corner of your screen. 25 | It also considers that a source is inside the circle of speakers if it’s polar coordinate has a radius <= 1. Beyond that, there’s reduction of gain to emulate it’s distance. 26 | If you use the math functions with the corrected cartesian coordinates, you’ll end up with a very low volume, as you’ll probably have radius values around 300 or more. 27 | To avoid that, you must multiply the radius by the inverse of a radius in pixels that’ll correspond to your unity circle in screen. This may sound complicated, but everything is explained in detail and demonstrated in exampleOneSource. 28 | Another thing to consider is that speakers are generally set at the same height in 2D sound, so the Y axis is not equal to the height of the source, but rather to it’s depth. 29 | So, in 3 dimensions the Z axis corresponds to it’s height. As a result, when dealing with 3D sound you must give the value of Z when the method asks for an ordinate and the value of Y when it asks for the height. This may seem confusing but it corresponds to common practices of sound. 30 | 31 | The oscillator provided with this library was built for demonstration purposes only. It’s there to prevent the need for other addons in order to compile the examples. 32 | Since the class ofxHoaOsc is quite CPU-intensive for a simple oscillator, We recommend to use this library with other addons such as ofxMaxim and ofxStk. 33 | 34 | We hope this library you’ll bring you joy and help you in your work! 35 | 36 | ## Hoa Library 37 | 38 | #### A high order ambisonics library. 39 | 40 | Sound space is one of the principal dimensions of the contemporary musical thought, specially in the electroacoustic music domain but also in intermedia arts. In this context, the CICM has made spatialization its principal research axis. This project’s aim is to give to musician spatialization models based on high order ambisonics and sound fields synthesis. This project is developed in a part of the Paris 8 University LABEX arts H2H. You can visit the official website : HoaLibrary. 41 | 42 | ![Image](https://raw.github.com/CICM/HoaLibrary/master/Ressources/hoa-icon.png "Hoa-Icon") 43 | 44 | #### Authors : 45 | 46 | Julien Colafrancesco, Pierre Guillot, Eliott Paris 47 | 48 | #### Documentation : 49 | 50 | documentation 51 | 52 | #### Dependencies : 53 | 54 | Cblas, you can use Gsl, Apple Accelerate or Intel Composer XE. 55 | 56 | ##### License : 57 | 58 | The Hoa Library in under the GNU Public License. If you'd like to avoid the restrictions of the GPL and use Hoa Library for a closed-source product, you contact the CICM. 59 | 60 | 61 | -------------------------------------------------------------------------------- /example3DSources/Makefile: -------------------------------------------------------------------------------- 1 | # Attempt to load a config.make file. 2 | # If none is found, project defaults in config.project.make will be used. 3 | ifneq ($(wildcard config.make),) 4 | include config.make 5 | endif 6 | 7 | # make sure the the OF_ROOT location is defined 8 | ifndef OF_ROOT 9 | OF_ROOT=../../.. 10 | endif 11 | 12 | # call the project makefile! 13 | include $(OF_ROOT)/libs/openFrameworksCompiled/project/makefileCommon/compile.project.mk 14 | -------------------------------------------------------------------------------- /example3DSources/Project.xcconfig: -------------------------------------------------------------------------------- 1 | //THE PATH TO THE ROOT OF OUR OF PATH RELATIVE TO THIS PROJECT. 2 | //THIS NEEDS TO BE DEFINED BEFORE CoreOF.xcconfig IS INCLUDED 3 | OF_PATH = ../../.. 4 | 5 | //THIS HAS ALL THE HEADER AND LIBS FOR OF CORE 6 | #include "../../../libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig" 7 | 8 | //ICONS - NEW IN 0072 9 | ICON_NAME_DEBUG = icon-debug.icns 10 | ICON_NAME_RELEASE = icon.icns 11 | ICON_FILE_PATH = $(OF_PATH)/libs/openFrameworksCompiled/project/osx/ 12 | 13 | //IF YOU WANT AN APP TO HAVE A CUSTOM ICON - PUT THEM IN YOUR DATA FOLDER AND CHANGE ICON_FILE_PATH to: 14 | //ICON_FILE_PATH = bin/data/ 15 | 16 | OTHER_LDFLAGS = $(OF_CORE_LIBS) 17 | HEADER_SEARCH_PATHS = $(OF_CORE_HEADERS) 18 | -------------------------------------------------------------------------------- /example3DSources/addons.make: -------------------------------------------------------------------------------- 1 | ofxHoa 2 | -------------------------------------------------------------------------------- /example3DSources/bin/data/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CICM/ofxHoa/930fbbd20e5db3622951549edd4d743a118528a5/example3DSources/bin/data/.gitkeep -------------------------------------------------------------------------------- /example3DSources/config.make: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # CONFIGURE PROJECT MAKEFILE (optional) 3 | # This file is where we make project specific configurations. 4 | ################################################################################ 5 | 6 | ################################################################################ 7 | # OF ROOT 8 | # The location of your root openFrameworks installation 9 | # (default) OF_ROOT = ../../.. 10 | ################################################################################ 11 | # OF_ROOT = ../../.. 12 | 13 | ################################################################################ 14 | # PROJECT ROOT 15 | # The location of the project - a starting place for searching for files 16 | # (default) PROJECT_ROOT = . (this directory) 17 | # 18 | ################################################################################ 19 | # PROJECT_ROOT = . 20 | 21 | ################################################################################ 22 | # PROJECT SPECIFIC CHECKS 23 | # This is a project defined section to create internal makefile flags to 24 | # conditionally enable or disable the addition of various features within 25 | # this makefile. For instance, if you want to make changes based on whether 26 | # GTK is installed, one might test that here and create a variable to check. 27 | ################################################################################ 28 | # None 29 | 30 | ################################################################################ 31 | # PROJECT EXTERNAL SOURCE PATHS 32 | # These are fully qualified paths that are not within the PROJECT_ROOT folder. 33 | # Like source folders in the PROJECT_ROOT, these paths are subject to 34 | # exlclusion via the PROJECT_EXLCUSIONS list. 35 | # 36 | # (default) PROJECT_EXTERNAL_SOURCE_PATHS = (blank) 37 | # 38 | # Note: Leave a leading space when adding list items with the += operator 39 | ################################################################################ 40 | # PROJECT_EXTERNAL_SOURCE_PATHS = 41 | 42 | ################################################################################ 43 | # PROJECT EXCLUSIONS 44 | # These makefiles assume that all folders in your current project directory 45 | # and any listed in the PROJECT_EXTERNAL_SOURCH_PATHS are are valid locations 46 | # to look for source code. The any folders or files that match any of the 47 | # items in the PROJECT_EXCLUSIONS list below will be ignored. 48 | # 49 | # Each item in the PROJECT_EXCLUSIONS list will be treated as a complete 50 | # string unless teh user adds a wildcard (%) operator to match subdirectories. 51 | # GNU make only allows one wildcard for matching. The second wildcard (%) is 52 | # treated literally. 53 | # 54 | # (default) PROJECT_EXCLUSIONS = (blank) 55 | # 56 | # Will automatically exclude the following: 57 | # 58 | # $(PROJECT_ROOT)/bin% 59 | # $(PROJECT_ROOT)/obj% 60 | # $(PROJECT_ROOT)/%.xcodeproj 61 | # 62 | # Note: Leave a leading space when adding list items with the += operator 63 | ################################################################################ 64 | # PROJECT_EXCLUSIONS = 65 | 66 | ################################################################################ 67 | # PROJECT LINKER FLAGS 68 | # These flags will be sent to the linker when compiling the executable. 69 | # 70 | # (default) PROJECT_LDFLAGS = -Wl,-rpath=./libs 71 | # 72 | # Note: Leave a leading space when adding list items with the += operator 73 | ################################################################################ 74 | 75 | # Currently, shared libraries that are needed are copied to the 76 | # $(PROJECT_ROOT)/bin/libs directory. The following LDFLAGS tell the linker to 77 | # add a runtime path to search for those shared libraries, since they aren't 78 | # incorporated directly into the final executable application binary. 79 | # TODO: should this be a default setting? 80 | # PROJECT_LDFLAGS=-Wl,-rpath=./libs 81 | 82 | ################################################################################ 83 | # PROJECT DEFINES 84 | # Create a space-delimited list of DEFINES. The list will be converted into 85 | # CFLAGS with the "-D" flag later in the makefile. 86 | # 87 | # (default) PROJECT_DEFINES = (blank) 88 | # 89 | # Note: Leave a leading space when adding list items with the += operator 90 | ################################################################################ 91 | # PROJECT_DEFINES = 92 | 93 | ################################################################################ 94 | # PROJECT CFLAGS 95 | # This is a list of fully qualified CFLAGS required when compiling for this 96 | # project. These CFLAGS will be used IN ADDITION TO the PLATFORM_CFLAGS 97 | # defined in your platform specific core configuration files. These flags are 98 | # presented to the compiler BEFORE the PROJECT_OPTIMIZATION_CFLAGS below. 99 | # 100 | # (default) PROJECT_CFLAGS = (blank) 101 | # 102 | # Note: Before adding PROJECT_CFLAGS, note that the PLATFORM_CFLAGS defined in 103 | # your platform specific configuration file will be applied by default and 104 | # further flags here may not be needed. 105 | # 106 | # Note: Leave a leading space when adding list items with the += operator 107 | ################################################################################ 108 | # PROJECT_CFLAGS = 109 | 110 | ################################################################################ 111 | # PROJECT OPTIMIZATION CFLAGS 112 | # These are lists of CFLAGS that are target-specific. While any flags could 113 | # be conditionally added, they are usually limited to optimization flags. 114 | # These flags are added BEFORE the PROJECT_CFLAGS. 115 | # 116 | # PROJECT_OPTIMIZATION_CFLAGS_RELEASE flags are only applied to RELEASE targets. 117 | # 118 | # (default) PROJECT_OPTIMIZATION_CFLAGS_RELEASE = (blank) 119 | # 120 | # PROJECT_OPTIMIZATION_CFLAGS_DEBUG flags are only applied to DEBUG targets. 121 | # 122 | # (default) PROJECT_OPTIMIZATION_CFLAGS_DEBUG = (blank) 123 | # 124 | # Note: Before adding PROJECT_OPTIMIZATION_CFLAGS, please note that the 125 | # PLATFORM_OPTIMIZATION_CFLAGS defined in your platform specific configuration 126 | # file will be applied by default and further optimization flags here may not 127 | # be needed. 128 | # 129 | # Note: Leave a leading space when adding list items with the += operator 130 | ################################################################################ 131 | # PROJECT_OPTIMIZATION_CFLAGS_RELEASE = 132 | # PROJECT_OPTIMIZATION_CFLAGS_DEBUG = 133 | 134 | ################################################################################ 135 | # PROJECT COMPILERS 136 | # Custom compilers can be set for CC and CXX 137 | # (default) PROJECT_CXX = (blank) 138 | # (default) PROJECT_CC = (blank) 139 | # Note: Leave a leading space when adding list items with the += operator 140 | ################################################################################ 141 | # PROJECT_CXX = 142 | # PROJECT_CC = 143 | -------------------------------------------------------------------------------- /example3DSources/example3DSources.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | BBAB23CB13894F3D00AA2426 /* GLUT.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = BBAB23BE13894E4700AA2426 /* GLUT.framework */; }; 11 | E4328149138ABC9F0047C5CB /* openFrameworksDebug.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E4328148138ABC890047C5CB /* openFrameworksDebug.a */; }; 12 | E45BE97B0E8CC7DD009D7055 /* AGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9710E8CC7DD009D7055 /* AGL.framework */; }; 13 | E45BE97C0E8CC7DD009D7055 /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9720E8CC7DD009D7055 /* ApplicationServices.framework */; }; 14 | E45BE97D0E8CC7DD009D7055 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9730E8CC7DD009D7055 /* AudioToolbox.framework */; }; 15 | E45BE97F0E8CC7DD009D7055 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9750E8CC7DD009D7055 /* CoreAudio.framework */; }; 16 | E45BE9800E8CC7DD009D7055 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9760E8CC7DD009D7055 /* CoreFoundation.framework */; }; 17 | E45BE9810E8CC7DD009D7055 /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9770E8CC7DD009D7055 /* CoreServices.framework */; }; 18 | E45BE9830E8CC7DD009D7055 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9790E8CC7DD009D7055 /* OpenGL.framework */; }; 19 | E45BE9840E8CC7DD009D7055 /* QuickTime.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE97A0E8CC7DD009D7055 /* QuickTime.framework */; }; 20 | E4B69E200A3A1BDC003C02F2 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4B69E1D0A3A1BDC003C02F2 /* main.cpp */; }; 21 | E4B69E210A3A1BDC003C02F2 /* ofApp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4B69E1E0A3A1BDC003C02F2 /* ofApp.cpp */; }; 22 | E4C2424710CC5A17004149E2 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C2424410CC5A17004149E2 /* AppKit.framework */; }; 23 | E4C2424810CC5A17004149E2 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C2424510CC5A17004149E2 /* Cocoa.framework */; }; 24 | E4C2424910CC5A17004149E2 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C2424610CC5A17004149E2 /* IOKit.framework */; }; 25 | E4EB6799138ADC1D00A09F29 /* GLUT.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BBAB23BE13894E4700AA2426 /* GLUT.framework */; }; 26 | E7E077E515D3B63C0020DFD4 /* CoreVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E7E077E415D3B63C0020DFD4 /* CoreVideo.framework */; }; 27 | E7E077E815D3B6510020DFD4 /* QTKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E7E077E715D3B6510020DFD4 /* QTKit.framework */; }; 28 | E7F985F815E0DEA3003869B5 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E7F985F515E0DE99003869B5 /* Accelerate.framework */; }; 29 | /* End PBXBuildFile section */ 30 | 31 | /* Begin PBXContainerItemProxy section */ 32 | E4328147138ABC890047C5CB /* PBXContainerItemProxy */ = { 33 | isa = PBXContainerItemProxy; 34 | containerPortal = E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */; 35 | proxyType = 2; 36 | remoteGlobalIDString = E4B27C1510CBEB8E00536013; 37 | remoteInfo = openFrameworks; 38 | }; 39 | E4EEB9AB138B136A00A80321 /* PBXContainerItemProxy */ = { 40 | isa = PBXContainerItemProxy; 41 | containerPortal = E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */; 42 | proxyType = 1; 43 | remoteGlobalIDString = E4B27C1410CBEB8E00536013; 44 | remoteInfo = openFrameworks; 45 | }; 46 | /* End PBXContainerItemProxy section */ 47 | 48 | /* Begin PBXCopyFilesBuildPhase section */ 49 | E4C2427710CC5ABF004149E2 /* CopyFiles */ = { 50 | isa = PBXCopyFilesBuildPhase; 51 | buildActionMask = 2147483647; 52 | dstPath = ""; 53 | dstSubfolderSpec = 10; 54 | files = ( 55 | BBAB23CB13894F3D00AA2426 /* GLUT.framework in CopyFiles */, 56 | ); 57 | runOnlyForDeploymentPostprocessing = 0; 58 | }; 59 | /* End PBXCopyFilesBuildPhase section */ 60 | 61 | /* Begin PBXFileReference section */ 62 | 0190812EA96FA79079A4F708 /* Tools.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Tools.hpp; path = "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources/Tools.hpp"; sourceTree = SOURCE_ROOT; }; 63 | 0A45FE374225665EBBB699E3 /* Planewaves.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Planewaves.hpp; path = "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources/Planewaves.hpp"; sourceTree = SOURCE_ROOT; }; 64 | 0E138C8D1AD5447F00C04EA1 /* ofxHoaCoord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxHoaCoord.h; sourceTree = ""; }; 65 | 0E2502E71AC30E49009CFCC7 /* ofxHoaOscillator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxHoaOscillator.h; sourceTree = ""; }; 66 | 3299B5F0527C1EE60A9B4C50 /* Math.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Math.hpp; path = "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources/Math.hpp"; sourceTree = SOURCE_ROOT; }; 67 | 3E10A66180CDBA7C978E1764 /* Harmonics.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Harmonics.hpp; path = "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources/Harmonics.hpp"; sourceTree = SOURCE_ROOT; }; 68 | 4B2C781104A15351EB6993D3 /* Defs.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Defs.hpp; path = "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources/Defs.hpp"; sourceTree = SOURCE_ROOT; }; 69 | 545BDBFC9096189763C6B4C6 /* Decoder.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Decoder.hpp; path = "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources/Decoder.hpp"; sourceTree = SOURCE_ROOT; }; 70 | 563E00609BC319E856F2662A /* Hrtf.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Hrtf.hpp; path = "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources/Hrtf.hpp"; sourceTree = SOURCE_ROOT; }; 71 | 59C4E10826F056938BFB0863 /* Voronoi.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Voronoi.hpp; path = "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources/Voronoi.hpp"; sourceTree = SOURCE_ROOT; }; 72 | 6218AD7D60658E29858270CC /* Hoa.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Hoa.hpp; path = "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources/Hoa.hpp"; sourceTree = SOURCE_ROOT; }; 73 | 68911386ED64AB7157CB0170 /* Meter.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Meter.hpp; path = "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources/Meter.hpp"; sourceTree = SOURCE_ROOT; }; 74 | 8E01F0E0DD6DDC8F64E44B95 /* Optim.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Optim.hpp; path = "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources/Optim.hpp"; sourceTree = SOURCE_ROOT; }; 75 | 986635D9DE756DBCE99B3E84 /* Projector.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Projector.hpp; path = "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources/Projector.hpp"; sourceTree = SOURCE_ROOT; }; 76 | 991FF2A6D62B1D5D32BB2A00 /* Vector.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Vector.hpp; path = "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources/Vector.hpp"; sourceTree = SOURCE_ROOT; }; 77 | 9BA40B344E0B90C2DF810852 /* Wider.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Wider.hpp; path = "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources/Wider.hpp"; sourceTree = SOURCE_ROOT; }; 78 | 9EAE7A59BEF09EBFF1F8C8FA /* Scope.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Scope.hpp; path = "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources/Scope.hpp"; sourceTree = SOURCE_ROOT; }; 79 | A02F5BEC7DEA69D4FE8EEECA /* Encoder.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Encoder.hpp; path = "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources/Encoder.hpp"; sourceTree = SOURCE_ROOT; }; 80 | B69054F80248A5BE18B83BD7 /* Recomposer.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Recomposer.hpp; path = "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources/Recomposer.hpp"; sourceTree = SOURCE_ROOT; }; 81 | BBAB23BE13894E4700AA2426 /* GLUT.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLUT.framework; path = ../../../libs/glut/lib/osx/GLUT.framework; sourceTree = ""; }; 82 | DAE3733BC0D94D61D1965743 /* Signal.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Signal.hpp; path = "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources/Signal.hpp"; sourceTree = SOURCE_ROOT; }; 83 | DB322A043499860A25CDCA44 /* ofxHoa.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = ofxHoa.h; path = ../../../addons/ofxHoa/src/ofxHoa.h; sourceTree = SOURCE_ROOT; }; 84 | E1C8CE47C1D3CBF3DA4026C5 /* Rotate.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Rotate.hpp; path = "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources/Rotate.hpp"; sourceTree = SOURCE_ROOT; }; 85 | E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = openFrameworksLib.xcodeproj; path = ../../../libs/openFrameworksCompiled/project/osx/openFrameworksLib.xcodeproj; sourceTree = SOURCE_ROOT; }; 86 | E45BE9710E8CC7DD009D7055 /* AGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AGL.framework; path = /System/Library/Frameworks/AGL.framework; sourceTree = ""; }; 87 | E45BE9720E8CC7DD009D7055 /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = /System/Library/Frameworks/ApplicationServices.framework; sourceTree = ""; }; 88 | E45BE9730E8CC7DD009D7055 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = /System/Library/Frameworks/AudioToolbox.framework; sourceTree = ""; }; 89 | E45BE9750E8CC7DD009D7055 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = /System/Library/Frameworks/CoreAudio.framework; sourceTree = ""; }; 90 | E45BE9760E8CC7DD009D7055 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = ""; }; 91 | E45BE9770E8CC7DD009D7055 /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = /System/Library/Frameworks/CoreServices.framework; sourceTree = ""; }; 92 | E45BE9790E8CC7DD009D7055 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = ""; }; 93 | E45BE97A0E8CC7DD009D7055 /* QuickTime.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuickTime.framework; path = /System/Library/Frameworks/QuickTime.framework; sourceTree = ""; }; 94 | E4B69B5B0A3A1756003C02F2 /* example3DSourcesDebug.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = example3DSourcesDebug.app; sourceTree = BUILT_PRODUCTS_DIR; }; 95 | E4B69E1D0A3A1BDC003C02F2 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = main.cpp; path = src/main.cpp; sourceTree = SOURCE_ROOT; }; 96 | E4B69E1E0A3A1BDC003C02F2 /* ofApp.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = ofApp.cpp; path = src/ofApp.cpp; sourceTree = SOURCE_ROOT; }; 97 | E4B69E1F0A3A1BDC003C02F2 /* ofApp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ofApp.h; path = src/ofApp.h; sourceTree = SOURCE_ROOT; }; 98 | E4B6FCAD0C3E899E008CF71C /* openFrameworks-Info.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.xml; path = "openFrameworks-Info.plist"; sourceTree = ""; }; 99 | E4C2424410CC5A17004149E2 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; 100 | E4C2424510CC5A17004149E2 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; 101 | E4C2424610CC5A17004149E2 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = ""; }; 102 | E4EB691F138AFCF100A09F29 /* CoreOF.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = CoreOF.xcconfig; path = ../../../libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig; sourceTree = SOURCE_ROOT; }; 103 | E4EB6923138AFD0F00A09F29 /* Project.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Project.xcconfig; sourceTree = ""; }; 104 | E7E077E415D3B63C0020DFD4 /* CoreVideo.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreVideo.framework; path = /System/Library/Frameworks/CoreVideo.framework; sourceTree = ""; }; 105 | E7E077E715D3B6510020DFD4 /* QTKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QTKit.framework; path = /System/Library/Frameworks/QTKit.framework; sourceTree = ""; }; 106 | E7F985F515E0DE99003869B5 /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = /System/Library/Frameworks/Accelerate.framework; sourceTree = ""; }; 107 | F2D72A3D4988BFB868B1F36C /* Source.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Source.hpp; path = "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources/Source.hpp"; sourceTree = SOURCE_ROOT; }; 108 | /* End PBXFileReference section */ 109 | 110 | /* Begin PBXFrameworksBuildPhase section */ 111 | E4B69B590A3A1756003C02F2 /* Frameworks */ = { 112 | isa = PBXFrameworksBuildPhase; 113 | buildActionMask = 2147483647; 114 | files = ( 115 | E7F985F815E0DEA3003869B5 /* Accelerate.framework in Frameworks */, 116 | E7E077E815D3B6510020DFD4 /* QTKit.framework in Frameworks */, 117 | E4EB6799138ADC1D00A09F29 /* GLUT.framework in Frameworks */, 118 | E4328149138ABC9F0047C5CB /* openFrameworksDebug.a in Frameworks */, 119 | E45BE97B0E8CC7DD009D7055 /* AGL.framework in Frameworks */, 120 | E45BE97C0E8CC7DD009D7055 /* ApplicationServices.framework in Frameworks */, 121 | E45BE97D0E8CC7DD009D7055 /* AudioToolbox.framework in Frameworks */, 122 | E45BE97F0E8CC7DD009D7055 /* CoreAudio.framework in Frameworks */, 123 | E45BE9800E8CC7DD009D7055 /* CoreFoundation.framework in Frameworks */, 124 | E45BE9810E8CC7DD009D7055 /* CoreServices.framework in Frameworks */, 125 | E45BE9830E8CC7DD009D7055 /* OpenGL.framework in Frameworks */, 126 | E45BE9840E8CC7DD009D7055 /* QuickTime.framework in Frameworks */, 127 | E4C2424710CC5A17004149E2 /* AppKit.framework in Frameworks */, 128 | E4C2424810CC5A17004149E2 /* Cocoa.framework in Frameworks */, 129 | E4C2424910CC5A17004149E2 /* IOKit.framework in Frameworks */, 130 | E7E077E515D3B63C0020DFD4 /* CoreVideo.framework in Frameworks */, 131 | ); 132 | runOnlyForDeploymentPostprocessing = 0; 133 | }; 134 | /* End PBXFrameworksBuildPhase section */ 135 | 136 | /* Begin PBXGroup section */ 137 | 0E2502E61AC30E49009CFCC7 /* ofxHoaClasses */ = { 138 | isa = PBXGroup; 139 | children = ( 140 | 0E138C8D1AD5447F00C04EA1 /* ofxHoaCoord.h */, 141 | 0E2502E71AC30E49009CFCC7 /* ofxHoaOscillator.h */, 142 | ); 143 | name = ofxHoaClasses; 144 | path = ../libs/ofxHoaClasses; 145 | sourceTree = ""; 146 | }; 147 | 3A0BDB552FAB59EE9DCD8F0F /* Sources */ = { 148 | isa = PBXGroup; 149 | children = ( 150 | 545BDBFC9096189763C6B4C6 /* Decoder.hpp */, 151 | 4B2C781104A15351EB6993D3 /* Defs.hpp */, 152 | A02F5BEC7DEA69D4FE8EEECA /* Encoder.hpp */, 153 | 3E10A66180CDBA7C978E1764 /* Harmonics.hpp */, 154 | 6218AD7D60658E29858270CC /* Hoa.hpp */, 155 | 563E00609BC319E856F2662A /* Hrtf.hpp */, 156 | 3299B5F0527C1EE60A9B4C50 /* Math.hpp */, 157 | 68911386ED64AB7157CB0170 /* Meter.hpp */, 158 | 8E01F0E0DD6DDC8F64E44B95 /* Optim.hpp */, 159 | 0A45FE374225665EBBB699E3 /* Planewaves.hpp */, 160 | 986635D9DE756DBCE99B3E84 /* Projector.hpp */, 161 | B69054F80248A5BE18B83BD7 /* Recomposer.hpp */, 162 | E1C8CE47C1D3CBF3DA4026C5 /* Rotate.hpp */, 163 | 9EAE7A59BEF09EBFF1F8C8FA /* Scope.hpp */, 164 | DAE3733BC0D94D61D1965743 /* Signal.hpp */, 165 | F2D72A3D4988BFB868B1F36C /* Source.hpp */, 166 | 0190812EA96FA79079A4F708 /* Tools.hpp */, 167 | 991FF2A6D62B1D5D32BB2A00 /* Vector.hpp */, 168 | 59C4E10826F056938BFB0863 /* Voronoi.hpp */, 169 | 9BA40B344E0B90C2DF810852 /* Wider.hpp */, 170 | ); 171 | name = Sources; 172 | sourceTree = ""; 173 | }; 174 | 4E7DE452E86C5BB2BA0427B9 /* HoaLibrary-Light */ = { 175 | isa = PBXGroup; 176 | children = ( 177 | 3A0BDB552FAB59EE9DCD8F0F /* Sources */, 178 | ); 179 | name = "HoaLibrary-Light"; 180 | sourceTree = ""; 181 | }; 182 | BB4B014C10F69532006C3DED /* addons */ = { 183 | isa = PBXGroup; 184 | children = ( 185 | D1E2A30752E5944A6D5E1363 /* ofxHoa */, 186 | ); 187 | name = addons; 188 | sourceTree = ""; 189 | }; 190 | BBAB23C913894ECA00AA2426 /* system frameworks */ = { 191 | isa = PBXGroup; 192 | children = ( 193 | E7F985F515E0DE99003869B5 /* Accelerate.framework */, 194 | E4C2424410CC5A17004149E2 /* AppKit.framework */, 195 | E4C2424510CC5A17004149E2 /* Cocoa.framework */, 196 | E4C2424610CC5A17004149E2 /* IOKit.framework */, 197 | E45BE9710E8CC7DD009D7055 /* AGL.framework */, 198 | E45BE9720E8CC7DD009D7055 /* ApplicationServices.framework */, 199 | E45BE9730E8CC7DD009D7055 /* AudioToolbox.framework */, 200 | E45BE9750E8CC7DD009D7055 /* CoreAudio.framework */, 201 | E45BE9760E8CC7DD009D7055 /* CoreFoundation.framework */, 202 | E45BE9770E8CC7DD009D7055 /* CoreServices.framework */, 203 | E45BE9790E8CC7DD009D7055 /* OpenGL.framework */, 204 | E45BE97A0E8CC7DD009D7055 /* QuickTime.framework */, 205 | E7E077E415D3B63C0020DFD4 /* CoreVideo.framework */, 206 | E7E077E715D3B6510020DFD4 /* QTKit.framework */, 207 | ); 208 | name = "system frameworks"; 209 | sourceTree = ""; 210 | }; 211 | BBAB23CA13894EDB00AA2426 /* 3rd party frameworks */ = { 212 | isa = PBXGroup; 213 | children = ( 214 | BBAB23BE13894E4700AA2426 /* GLUT.framework */, 215 | ); 216 | name = "3rd party frameworks"; 217 | sourceTree = ""; 218 | }; 219 | C05C1669BA18F088D4BE708A /* src */ = { 220 | isa = PBXGroup; 221 | children = ( 222 | DB322A043499860A25CDCA44 /* ofxHoa.h */, 223 | ); 224 | name = src; 225 | sourceTree = ""; 226 | }; 227 | D1E2A30752E5944A6D5E1363 /* ofxHoa */ = { 228 | isa = PBXGroup; 229 | children = ( 230 | C05C1669BA18F088D4BE708A /* src */, 231 | EA9BA723784D775C9A86500D /* libs */, 232 | ); 233 | name = ofxHoa; 234 | sourceTree = ""; 235 | }; 236 | E4328144138ABC890047C5CB /* Products */ = { 237 | isa = PBXGroup; 238 | children = ( 239 | E4328148138ABC890047C5CB /* openFrameworksDebug.a */, 240 | ); 241 | name = Products; 242 | sourceTree = ""; 243 | }; 244 | E45BE5980E8CC70C009D7055 /* frameworks */ = { 245 | isa = PBXGroup; 246 | children = ( 247 | BBAB23CA13894EDB00AA2426 /* 3rd party frameworks */, 248 | BBAB23C913894ECA00AA2426 /* system frameworks */, 249 | ); 250 | name = frameworks; 251 | sourceTree = ""; 252 | }; 253 | E4B69B4A0A3A1720003C02F2 = { 254 | isa = PBXGroup; 255 | children = ( 256 | E4B6FCAD0C3E899E008CF71C /* openFrameworks-Info.plist */, 257 | E4EB6923138AFD0F00A09F29 /* Project.xcconfig */, 258 | E4B69E1C0A3A1BDC003C02F2 /* src */, 259 | E4EEC9E9138DF44700A80321 /* openFrameworks */, 260 | BB4B014C10F69532006C3DED /* addons */, 261 | E45BE5980E8CC70C009D7055 /* frameworks */, 262 | E4B69B5B0A3A1756003C02F2 /* example3DSourcesDebug.app */, 263 | ); 264 | sourceTree = ""; 265 | }; 266 | E4B69E1C0A3A1BDC003C02F2 /* src */ = { 267 | isa = PBXGroup; 268 | children = ( 269 | E4B69E1D0A3A1BDC003C02F2 /* main.cpp */, 270 | E4B69E1E0A3A1BDC003C02F2 /* ofApp.cpp */, 271 | E4B69E1F0A3A1BDC003C02F2 /* ofApp.h */, 272 | ); 273 | path = src; 274 | sourceTree = SOURCE_ROOT; 275 | }; 276 | E4EEC9E9138DF44700A80321 /* openFrameworks */ = { 277 | isa = PBXGroup; 278 | children = ( 279 | E4EB691F138AFCF100A09F29 /* CoreOF.xcconfig */, 280 | E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */, 281 | ); 282 | name = openFrameworks; 283 | sourceTree = ""; 284 | }; 285 | EA9BA723784D775C9A86500D /* libs */ = { 286 | isa = PBXGroup; 287 | children = ( 288 | 0E2502E61AC30E49009CFCC7 /* ofxHoaClasses */, 289 | 4E7DE452E86C5BB2BA0427B9 /* HoaLibrary-Light */, 290 | ); 291 | name = libs; 292 | sourceTree = ""; 293 | }; 294 | /* End PBXGroup section */ 295 | 296 | /* Begin PBXNativeTarget section */ 297 | E4B69B5A0A3A1756003C02F2 /* example3DSources */ = { 298 | isa = PBXNativeTarget; 299 | buildConfigurationList = E4B69B5F0A3A1757003C02F2 /* Build configuration list for PBXNativeTarget "example3DSources" */; 300 | buildPhases = ( 301 | E4B69B580A3A1756003C02F2 /* Sources */, 302 | E4B69B590A3A1756003C02F2 /* Frameworks */, 303 | E4B6FFFD0C3F9AB9008CF71C /* ShellScript */, 304 | E4C2427710CC5ABF004149E2 /* CopyFiles */, 305 | ); 306 | buildRules = ( 307 | ); 308 | dependencies = ( 309 | E4EEB9AC138B136A00A80321 /* PBXTargetDependency */, 310 | ); 311 | name = example3DSources; 312 | productName = myOFApp; 313 | productReference = E4B69B5B0A3A1756003C02F2 /* example3DSourcesDebug.app */; 314 | productType = "com.apple.product-type.application"; 315 | }; 316 | /* End PBXNativeTarget section */ 317 | 318 | /* Begin PBXProject section */ 319 | E4B69B4C0A3A1720003C02F2 /* Project object */ = { 320 | isa = PBXProject; 321 | attributes = { 322 | LastUpgradeCheck = 0460; 323 | }; 324 | buildConfigurationList = E4B69B4D0A3A1720003C02F2 /* Build configuration list for PBXProject "example3DSources" */; 325 | compatibilityVersion = "Xcode 3.2"; 326 | developmentRegion = English; 327 | hasScannedForEncodings = 0; 328 | knownRegions = ( 329 | English, 330 | Japanese, 331 | French, 332 | German, 333 | ); 334 | mainGroup = E4B69B4A0A3A1720003C02F2; 335 | productRefGroup = E4B69B4A0A3A1720003C02F2; 336 | projectDirPath = ""; 337 | projectReferences = ( 338 | { 339 | ProductGroup = E4328144138ABC890047C5CB /* Products */; 340 | ProjectRef = E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */; 341 | }, 342 | ); 343 | projectRoot = ""; 344 | targets = ( 345 | E4B69B5A0A3A1756003C02F2 /* example3DSources */, 346 | ); 347 | }; 348 | /* End PBXProject section */ 349 | 350 | /* Begin PBXReferenceProxy section */ 351 | E4328148138ABC890047C5CB /* openFrameworksDebug.a */ = { 352 | isa = PBXReferenceProxy; 353 | fileType = archive.ar; 354 | path = openFrameworksDebug.a; 355 | remoteRef = E4328147138ABC890047C5CB /* PBXContainerItemProxy */; 356 | sourceTree = BUILT_PRODUCTS_DIR; 357 | }; 358 | /* End PBXReferenceProxy section */ 359 | 360 | /* Begin PBXShellScriptBuildPhase section */ 361 | E4B6FFFD0C3F9AB9008CF71C /* ShellScript */ = { 362 | isa = PBXShellScriptBuildPhase; 363 | buildActionMask = 2147483647; 364 | files = ( 365 | ); 366 | inputPaths = ( 367 | ); 368 | outputPaths = ( 369 | ); 370 | runOnlyForDeploymentPostprocessing = 0; 371 | shellPath = /bin/sh; 372 | shellScript = "cp -f ../../../libs/fmodex/lib/osx/libfmodex.dylib \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/MacOS/libfmodex.dylib\"; install_name_tool -change ./libfmodex.dylib @executable_path/libfmodex.dylib \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/MacOS/$PRODUCT_NAME\";\nmkdir -p \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/Resources/\"\ncp -f \"$ICON_FILE\" \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/Resources/\"\n"; 373 | }; 374 | /* End PBXShellScriptBuildPhase section */ 375 | 376 | /* Begin PBXSourcesBuildPhase section */ 377 | E4B69B580A3A1756003C02F2 /* Sources */ = { 378 | isa = PBXSourcesBuildPhase; 379 | buildActionMask = 2147483647; 380 | files = ( 381 | E4B69E200A3A1BDC003C02F2 /* main.cpp in Sources */, 382 | E4B69E210A3A1BDC003C02F2 /* ofApp.cpp in Sources */, 383 | ); 384 | runOnlyForDeploymentPostprocessing = 0; 385 | }; 386 | /* End PBXSourcesBuildPhase section */ 387 | 388 | /* Begin PBXTargetDependency section */ 389 | E4EEB9AC138B136A00A80321 /* PBXTargetDependency */ = { 390 | isa = PBXTargetDependency; 391 | name = openFrameworks; 392 | targetProxy = E4EEB9AB138B136A00A80321 /* PBXContainerItemProxy */; 393 | }; 394 | /* End PBXTargetDependency section */ 395 | 396 | /* Begin XCBuildConfiguration section */ 397 | E4B69B4E0A3A1720003C02F2 /* Debug */ = { 398 | isa = XCBuildConfiguration; 399 | baseConfigurationReference = E4EB6923138AFD0F00A09F29 /* Project.xcconfig */; 400 | buildSettings = { 401 | ARCHS = "$(NATIVE_ARCH)"; 402 | CONFIGURATION_BUILD_DIR = "$(SRCROOT)/bin/"; 403 | COPY_PHASE_STRIP = NO; 404 | DEAD_CODE_STRIPPING = YES; 405 | GCC_AUTO_VECTORIZATION = YES; 406 | GCC_ENABLE_SSE3_EXTENSIONS = YES; 407 | GCC_ENABLE_SUPPLEMENTAL_SSE3_INSTRUCTIONS = YES; 408 | GCC_INLINES_ARE_PRIVATE_EXTERN = NO; 409 | GCC_OPTIMIZATION_LEVEL = 0; 410 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 411 | GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = YES; 412 | GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = NO; 413 | GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = NO; 414 | GCC_WARN_UNINITIALIZED_AUTOS = NO; 415 | GCC_WARN_UNUSED_VALUE = NO; 416 | GCC_WARN_UNUSED_VARIABLE = NO; 417 | HEADER_SEARCH_PATHS = ( 418 | "$(OF_CORE_HEADERS)", 419 | ../../../addons/ofxHoa/libs, 420 | "../../../addons/ofxHoa/libs/HoaLibrary-Light", 421 | "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources", 422 | ../../../addons/ofxHoa/libs/ofxHoaOsc, 423 | ../../../addons/ofxHoa/src, 424 | ../../../addons/ofxHoa/src/ofxHoaOsc, 425 | ); 426 | MACOSX_DEPLOYMENT_TARGET = 10.6; 427 | OTHER_CPLUSPLUSFLAGS = ( 428 | "-D__MACOSX_CORE__", 429 | "-lpthread", 430 | "-mtune=native", 431 | ); 432 | SDKROOT = macosx; 433 | }; 434 | name = Debug; 435 | }; 436 | E4B69B4F0A3A1720003C02F2 /* Release */ = { 437 | isa = XCBuildConfiguration; 438 | baseConfigurationReference = E4EB6923138AFD0F00A09F29 /* Project.xcconfig */; 439 | buildSettings = { 440 | ARCHS = "$(NATIVE_ARCH)"; 441 | CONFIGURATION_BUILD_DIR = "$(SRCROOT)/bin/"; 442 | COPY_PHASE_STRIP = YES; 443 | DEAD_CODE_STRIPPING = YES; 444 | GCC_AUTO_VECTORIZATION = YES; 445 | GCC_ENABLE_SSE3_EXTENSIONS = YES; 446 | GCC_ENABLE_SUPPLEMENTAL_SSE3_INSTRUCTIONS = YES; 447 | GCC_INLINES_ARE_PRIVATE_EXTERN = NO; 448 | GCC_OPTIMIZATION_LEVEL = 3; 449 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 450 | GCC_UNROLL_LOOPS = YES; 451 | GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = YES; 452 | GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = NO; 453 | GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = NO; 454 | GCC_WARN_UNINITIALIZED_AUTOS = NO; 455 | GCC_WARN_UNUSED_VALUE = NO; 456 | GCC_WARN_UNUSED_VARIABLE = NO; 457 | HEADER_SEARCH_PATHS = ( 458 | "$(OF_CORE_HEADERS)", 459 | ../../../addons/ofxHoa/libs, 460 | "../../../addons/ofxHoa/libs/HoaLibrary-Light", 461 | "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources", 462 | ../../../addons/ofxHoa/libs/ofxHoaOsc, 463 | ../../../addons/ofxHoa/src, 464 | ../../../addons/ofxHoa/src/ofxHoaOsc, 465 | ); 466 | MACOSX_DEPLOYMENT_TARGET = 10.6; 467 | OTHER_CPLUSPLUSFLAGS = ( 468 | "-D__MACOSX_CORE__", 469 | "-lpthread", 470 | "-mtune=native", 471 | ); 472 | SDKROOT = macosx; 473 | }; 474 | name = Release; 475 | }; 476 | E4B69B600A3A1757003C02F2 /* Debug */ = { 477 | isa = XCBuildConfiguration; 478 | buildSettings = { 479 | COMBINE_HIDPI_IMAGES = YES; 480 | COPY_PHASE_STRIP = NO; 481 | FRAMEWORK_SEARCH_PATHS = ( 482 | "$(inherited)", 483 | "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", 484 | ); 485 | FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../../libs/glut/lib/osx\""; 486 | GCC_DYNAMIC_NO_PIC = NO; 487 | GCC_GENERATE_DEBUGGING_SYMBOLS = YES; 488 | GCC_MODEL_TUNING = NONE; 489 | ICON = "$(ICON_NAME_DEBUG)"; 490 | ICON_FILE = "$(ICON_FILE_PATH)$(ICON)"; 491 | INFOPLIST_FILE = "openFrameworks-Info.plist"; 492 | INSTALL_PATH = "$(HOME)/Applications"; 493 | LIBRARY_SEARCH_PATHS = ( 494 | "$(inherited)", 495 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", 496 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", 497 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", 498 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_4)", 499 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_5)", 500 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_6)", 501 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_7)", 502 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_8)", 503 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_9)", 504 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_10)", 505 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_11)", 506 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_12)", 507 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_13)", 508 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_14)", 509 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_15)", 510 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", 511 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", 512 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_7)", 513 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_8)", 514 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_9)", 515 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_10)", 516 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_11)", 517 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_12)", 518 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_13)", 519 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_16)", 520 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_17)", 521 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_18)", 522 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_19)", 523 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_20)", 524 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_21)", 525 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_22)", 526 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_23)", 527 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_24)", 528 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_25)", 529 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_26)", 530 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_27)", 531 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_28)", 532 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_29)", 533 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_30)", 534 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_31)", 535 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_32)", 536 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_33)", 537 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_34)", 538 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_35)", 539 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_36)", 540 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_37)", 541 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_38)", 542 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_39)", 543 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_40)", 544 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_41)", 545 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_42)", 546 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_43)", 547 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_44)", 548 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_45)", 549 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_46)", 550 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_47)", 551 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_48)", 552 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_49)", 553 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_50)", 554 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_51)", 555 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_52)", 556 | ); 557 | PRODUCT_NAME = "$(TARGET_NAME)Debug"; 558 | WRAPPER_EXTENSION = app; 559 | }; 560 | name = Debug; 561 | }; 562 | E4B69B610A3A1757003C02F2 /* Release */ = { 563 | isa = XCBuildConfiguration; 564 | buildSettings = { 565 | COMBINE_HIDPI_IMAGES = YES; 566 | COPY_PHASE_STRIP = YES; 567 | FRAMEWORK_SEARCH_PATHS = ( 568 | "$(inherited)", 569 | "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", 570 | ); 571 | FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../../libs/glut/lib/osx\""; 572 | GCC_GENERATE_DEBUGGING_SYMBOLS = YES; 573 | GCC_MODEL_TUNING = NONE; 574 | ICON = "$(ICON_NAME_RELEASE)"; 575 | ICON_FILE = "$(ICON_FILE_PATH)$(ICON)"; 576 | INFOPLIST_FILE = "openFrameworks-Info.plist"; 577 | INSTALL_PATH = "$(HOME)/Applications"; 578 | LIBRARY_SEARCH_PATHS = ( 579 | "$(inherited)", 580 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", 581 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", 582 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", 583 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_4)", 584 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_5)", 585 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_6)", 586 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_7)", 587 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_8)", 588 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_9)", 589 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_10)", 590 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_11)", 591 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_12)", 592 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_13)", 593 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_14)", 594 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_15)", 595 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", 596 | "$(LIBRARY_SEARCH_PATHS_QUOTED_1)", 597 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", 598 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_7)", 599 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_8)", 600 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_9)", 601 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_10)", 602 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_11)", 603 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_12)", 604 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_13)", 605 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_16)", 606 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_17)", 607 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_18)", 608 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_19)", 609 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_20)", 610 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_21)", 611 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_22)", 612 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_23)", 613 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_24)", 614 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_25)", 615 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_26)", 616 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_27)", 617 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_28)", 618 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_29)", 619 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_30)", 620 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_31)", 621 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_32)", 622 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_33)", 623 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_34)", 624 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_35)", 625 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_36)", 626 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_37)", 627 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_38)", 628 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_39)", 629 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_40)", 630 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_41)", 631 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_42)", 632 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_43)", 633 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_44)", 634 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_45)", 635 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_46)", 636 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_47)", 637 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_48)", 638 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_49)", 639 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_50)", 640 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_51)", 641 | ); 642 | PRODUCT_NAME = "$(TARGET_NAME)"; 643 | WRAPPER_EXTENSION = app; 644 | }; 645 | name = Release; 646 | }; 647 | /* End XCBuildConfiguration section */ 648 | 649 | /* Begin XCConfigurationList section */ 650 | E4B69B4D0A3A1720003C02F2 /* Build configuration list for PBXProject "example3DSources" */ = { 651 | isa = XCConfigurationList; 652 | buildConfigurations = ( 653 | E4B69B4E0A3A1720003C02F2 /* Debug */, 654 | E4B69B4F0A3A1720003C02F2 /* Release */, 655 | ); 656 | defaultConfigurationIsVisible = 0; 657 | defaultConfigurationName = Release; 658 | }; 659 | E4B69B5F0A3A1757003C02F2 /* Build configuration list for PBXNativeTarget "example3DSources" */ = { 660 | isa = XCConfigurationList; 661 | buildConfigurations = ( 662 | E4B69B600A3A1757003C02F2 /* Debug */, 663 | E4B69B610A3A1757003C02F2 /* Release */, 664 | ); 665 | defaultConfigurationIsVisible = 0; 666 | defaultConfigurationName = Release; 667 | }; 668 | /* End XCConfigurationList section */ 669 | }; 670 | rootObject = E4B69B4C0A3A1720003C02F2 /* Project object */; 671 | } 672 | -------------------------------------------------------------------------------- /example3DSources/example3DSources.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /example3DSources/example3DSources.xcodeproj/project.xcworkspace/xcshareddata/example3DSources.xccheckout: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDESourceControlProjectFavoriteDictionaryKey 6 | 7 | IDESourceControlProjectIdentifier 8 | AE7A6C75-A477-4198-9DCC-7C11DF88D317 9 | IDESourceControlProjectName 10 | example3DSources 11 | IDESourceControlProjectOriginsDictionary 12 | 13 | 2FFF2BF69BB0C863F897CA4B5613034382303A01 14 | https://github.com/CICM/ofxHoa 15 | 5B4B1295257546E4C2809C4B80513989C199CD34 16 | https://github.com/CICM/HoaLibrary-Light.git 17 | 18 | IDESourceControlProjectPath 19 | example3DSources/example3DSources.xcodeproj 20 | IDESourceControlProjectRelativeInstallPathDictionary 21 | 22 | 2FFF2BF69BB0C863F897CA4B5613034382303A01 23 | ../../.. 24 | 5B4B1295257546E4C2809C4B80513989C199CD34 25 | ../../..libs 26 | 27 | IDESourceControlProjectURL 28 | https://github.com/CICM/ofxHoa 29 | IDESourceControlProjectVersion 30 | 111 31 | IDESourceControlProjectWCCIdentifier 32 | 2FFF2BF69BB0C863F897CA4B5613034382303A01 33 | IDESourceControlProjectWCConfigurations 34 | 35 | 36 | IDESourceControlRepositoryExtensionIdentifierKey 37 | public.vcs.git 38 | IDESourceControlWCCIdentifierKey 39 | 2FFF2BF69BB0C863F897CA4B5613034382303A01 40 | IDESourceControlWCCName 41 | ofxHoa 42 | 43 | 44 | IDESourceControlRepositoryExtensionIdentifierKey 45 | public.vcs.git 46 | IDESourceControlWCCIdentifierKey 47 | 5B4B1295257546E4C2809C4B80513989C199CD34 48 | IDESourceControlWCCName 49 | ofxHoalibs 50 | 51 | 52 | IDESourceControlRepositoryExtensionIdentifierKey 53 | public.vcs.git 54 | IDESourceControlWCCIdentifierKey 55 | 5B4B1295257546E4C2809C4B80513989C199CD34 56 | IDESourceControlWCCName 57 | ofxHoalibs 58 | 59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /example3DSources/example3DSources.xcodeproj/project.xcworkspace/xcuserdata/claudiocabral.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CICM/ofxHoa/930fbbd20e5db3622951549edd4d743a118528a5/example3DSources/example3DSources.xcodeproj/project.xcworkspace/xcuserdata/claudiocabral.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /example3DSources/example3DSources.xcodeproj/xcshareddata/xcschemes/example3DSources Debug.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 51 | 52 | 58 | 59 | 60 | 61 | 62 | 63 | 69 | 70 | 76 | 77 | 78 | 79 | 81 | 82 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /example3DSources/example3DSources.xcodeproj/xcshareddata/xcschemes/example3DSources Release.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 51 | 52 | 58 | 59 | 60 | 61 | 62 | 63 | 69 | 70 | 76 | 77 | 78 | 79 | 81 | 82 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /example3DSources/example3DSources.xcodeproj/xcuserdata/claudiocabral.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /example3DSources/example3DSources.xcodeproj/xcuserdata/claudiocabral.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SuppressBuildableAutocreation 6 | 7 | E4B69B5A0A3A1756003C02F2 8 | 9 | primary 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /example3DSources/openFrameworks-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | cc.openFrameworks.ofapp 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundlePackageType 14 | APPL 15 | CFBundleSignature 16 | ???? 17 | CFBundleVersion 18 | 1.0 19 | CFBundleIconFile 20 | ${ICON} 21 | 22 | 23 | -------------------------------------------------------------------------------- /example3DSources/src/main.cpp: -------------------------------------------------------------------------------- 1 | #include "ofMain.h" 2 | #include "ofApp.h" 3 | 4 | //======================================================================== 5 | int main( ){ 6 | ofSetupOpenGL(1024,768,OF_WINDOW); // <-------- setup the GL context 7 | 8 | // this kicks off the running of my app 9 | // can be OF_WINDOW or OF_FULLSCREEN 10 | // pass in width and height too: 11 | ofRunApp(new ofApp()); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /example3DSources/src/ofApp.cpp: -------------------------------------------------------------------------------- 1 | #include "ofApp.h" 2 | 3 | //-------------------------------------------------------------- 4 | void ofApp::setup(){ 5 | 6 | // ENABLE DEPTH TEST FOR 3D DRAWING WITH Z-AXIS 7 | ofEnableDepthTest(); 8 | 9 | // soundStream.listDevices(); 10 | // soundStream.setDeviceID(5); 11 | // INITIALIZE AUDIO VARIABLES 12 | 13 | nOutputs = 2; 14 | nInputs = 0; 15 | sampleRate = 44100; 16 | bufferSize = 512; 17 | nBuffers = (nOutputs+nInputs)*2; 18 | 19 | // CHOOSE NUMBER OF SOURCES AND SET POSITION OF CENTRAL SPHERE 20 | numberOfSources = 5; 21 | centralSphereRadius = 100; 22 | centralSpherePosition = ofVec3f(ofGetWidth()/2, ofGetHeight()/2, 0); 23 | centralSphere = ofSpherePrimitive(centralSphereRadius, 50); 24 | centralSphere.setPosition(centralSpherePosition); 25 | 26 | velMax = 10; 27 | 28 | // CREATE PARTICLES AND ASSOCIATED OSCILLATOR 29 | for (int i = 0; i()); 38 | oscillator.back().setup(sampleRate, oscType(floor(ofRandom(4.9)))); 39 | oscillator.back().setFrequency(ofRandom(100, 1000)); 40 | 41 | } 42 | 43 | /*INITIALIZE HOA VARIBLES. NOTE THAT FOR 3D SPACIALIZATION, THE NUMBER OF REQUIRED 44 | LOUDSPEAKERS EQUALS (ORDER+1)^2 AND LINE STORES 3 VALUES PER SOURCE */ 45 | hoaOrder = 3; 46 | 47 | harmonic = new float[(hoaOrder+1)*(hoaOrder+1)]; 48 | input = new float[numberOfSources]; 49 | memset(harmonic, 0, sizeof(float)*(hoaOrder+1)*(hoaOrder+1)); 50 | memset(input, 0, sizeof(float)*numberOfSources); 51 | 52 | encoder = new Encoder::Multi(hoaOrder, numberOfSources); 53 | 54 | // CHOOSE DECODER 55 | decoder = new Decoder::Regular(hoaOrder, nOutputs); 56 | decoder->computeRendering(bufferSize); 57 | 58 | // CHOOSE OPTIM 59 | optim = new Optim::Basic(hoaOrder); 60 | // optim = new Optim::InPhase(hoaOrder); 61 | 62 | // CREATE HOACOORD AND SET RAMP IN MILLISECONDS 63 | hoaCoord = new ofxHoaCoord(numberOfSources); 64 | hoaCoord->setRamp(50, sampleRate); 65 | 66 | // SET SPATIAL REFERENCE 67 | hoaCoord->setAmbisonicRadius(centralSphereRadius*4); 68 | hoaCoord->setAmbisonicCenter(centralSpherePosition); 69 | 70 | 71 | // INTIALIZE VALUES TO A DISTANT POINT TO AVOID CLICKS IN THE BEGINNING 72 | for (int i = 0; isetSourcePositionDirect(i, ofVec3f(300,300,300)); 74 | } 75 | 76 | // SET CAM POSITION 77 | cam.setPosition(ofGetWidth()/2, ofGetHeight()/2, 640); 78 | cam.setVFlip(true); 79 | cam.lookAt(ofVec3f(ofGetWidth()/2,ofGetHeight()/2,0)); 80 | 81 | // SET LIGHT 82 | light.setDiffuseColor(ofColor(255)); 83 | light.setPosition(0,0,10); 84 | light.lookAt(ofVec3f(ofGetWidth()/2, ofGetHeight(), 0)); 85 | 86 | // INITIALIZE AUDIO 87 | soundStream.setup(this, nOutputs, nInputs, sampleRate, bufferSize, nBuffers); 88 | } 89 | 90 | //-------------------------------------------------------------- 91 | void ofApp::update(){ 92 | 93 | for (int i = 0; isetSourcePosition(i, position[i]); 100 | 101 | if (position[i].distance(centralSpherePosition) < centralSphereRadius + 102 | sphere[i].getRadius()) { 103 | velocity[i].z *= -1; 104 | } 105 | 106 | if (position[i].x < 0 || position[i].x > ofGetWidth()) { 107 | velocity[i].x*= -1; 108 | } 109 | if (position[i].y < 0 || position[i].y > ofGetHeight()) { 110 | velocity[i].y*= -1; 111 | } 112 | if (position[i].z < -640 || position[i].z > 640) { 113 | velocity[i].z*= -1; 114 | } 115 | } 116 | } 117 | 118 | //-------------------------------------------------------------- 119 | void ofApp::draw(){ 120 | 121 | ofBackground(0); 122 | 123 | cam.begin(); 124 | light.enable(); 125 | 126 | ofSetColor(ofColor::papayaWhip); 127 | 128 | centralSphere.draw(); 129 | for (int i = 0; iprocess(); 192 | 193 | for (int j = 0; jsetRadius(j, hoaCoord->getRadius(j)); 197 | encoder->setAzimuth(j, hoaCoord->getAzimuth(j)); 198 | encoder->setElevation(j, hoaCoord->getElevation(j)); 199 | } 200 | 201 | encoder->process(input, harmonic); 202 | optim->process(harmonic, harmonic); 203 | decoder->process(harmonic, output+i*nChannels); 204 | } 205 | } 206 | 207 | //-------------------------------------------------------------- 208 | 209 | void ofApp::exit(){ 210 | 211 | // CLOSE AUDIO AND CLEAR OBJECTS WHEN CLOSING 212 | 213 | soundStream.close(); 214 | 215 | delete [] harmonic; 216 | delete [] input; 217 | delete hoaCoord; 218 | delete encoder; 219 | delete decoder; 220 | delete optim; 221 | } 222 | -------------------------------------------------------------------------------- /example3DSources/src/ofApp.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "ofMain.h" 4 | #include "ofxHoa.h" 5 | 6 | using namespace hoa; 7 | 8 | class ofApp : public ofBaseApp{ 9 | 10 | public: 11 | void setup(); 12 | void update(); 13 | void draw(); 14 | 15 | void keyPressed(int key); 16 | void keyReleased(int key); 17 | void mouseMoved(int x, int y ); 18 | void mouseDragged(int x, int y, int button); 19 | void mousePressed(int x, int y, int button); 20 | void mouseReleased(int x, int y, int button); 21 | void windowResized(int w, int h); 22 | void dragEvent(ofDragInfo dragInfo); 23 | void gotMessage(ofMessage msg); 24 | 25 | void audioOut(float * output, int bufferSize, int nChannels); 26 | void exit(); 27 | 28 | ofCamera cam; 29 | ofLight light; 30 | int numberOfSources; 31 | ofSpherePrimitive centralSphere; 32 | ofVec3f centralSpherePosition; 33 | float centralSphereRadius; 34 | vector sphere; 35 | vector position; 36 | vector velocity; 37 | vector seed; 38 | vector sphereColor; 39 | 40 | float velMax; 41 | 42 | ofSoundStream soundStream; 43 | 44 | int nOutputs, nInputs, sampleRate, bufferSize, nBuffers; 45 | 46 | int hoaOrder; 47 | 48 | vector > oscillator; 49 | 50 | ofxHoaCoord * hoaCoord; 51 | 52 | float * harmonic; 53 | float * input; 54 | 55 | Encoder::Multi * encoder; 56 | Decoder * decoder; 57 | Optim * optim; 58 | 59 | 60 | }; 61 | -------------------------------------------------------------------------------- /exampleBinaural/Makefile: -------------------------------------------------------------------------------- 1 | # Attempt to load a config.make file. 2 | # If none is found, project defaults in config.project.make will be used. 3 | ifneq ($(wildcard config.make),) 4 | include config.make 5 | endif 6 | 7 | # make sure the the OF_ROOT location is defined 8 | ifndef OF_ROOT 9 | OF_ROOT=../../.. 10 | endif 11 | 12 | # call the project makefile! 13 | include $(OF_ROOT)/libs/openFrameworksCompiled/project/makefileCommon/compile.project.mk 14 | -------------------------------------------------------------------------------- /exampleBinaural/Project.xcconfig: -------------------------------------------------------------------------------- 1 | //THE PATH TO THE ROOT OF OUR OF PATH RELATIVE TO THIS PROJECT. 2 | //THIS NEEDS TO BE DEFINED BEFORE CoreOF.xcconfig IS INCLUDED 3 | OF_PATH = ../../.. 4 | 5 | //THIS HAS ALL THE HEADER AND LIBS FOR OF CORE 6 | #include "../../../libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig" 7 | 8 | //ICONS - NEW IN 0072 9 | ICON_NAME_DEBUG = icon-debug.icns 10 | ICON_NAME_RELEASE = icon.icns 11 | ICON_FILE_PATH = $(OF_PATH)/libs/openFrameworksCompiled/project/osx/ 12 | 13 | //IF YOU WANT AN APP TO HAVE A CUSTOM ICON - PUT THEM IN YOUR DATA FOLDER AND CHANGE ICON_FILE_PATH to: 14 | //ICON_FILE_PATH = bin/data/ 15 | 16 | OTHER_LDFLAGS = $(OF_CORE_LIBS) 17 | HEADER_SEARCH_PATHS = $(OF_CORE_HEADERS) 18 | -------------------------------------------------------------------------------- /exampleBinaural/addons.make: -------------------------------------------------------------------------------- 1 | ofxHoa 2 | -------------------------------------------------------------------------------- /exampleBinaural/bin/data/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CICM/ofxHoa/930fbbd20e5db3622951549edd4d743a118528a5/exampleBinaural/bin/data/.gitkeep -------------------------------------------------------------------------------- /exampleBinaural/config.make: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # CONFIGURE PROJECT MAKEFILE (optional) 3 | # This file is where we make project specific configurations. 4 | ################################################################################ 5 | 6 | ################################################################################ 7 | # OF ROOT 8 | # The location of your root openFrameworks installation 9 | # (default) OF_ROOT = ../../.. 10 | ################################################################################ 11 | # OF_ROOT = ../../.. 12 | 13 | ################################################################################ 14 | # PROJECT ROOT 15 | # The location of the project - a starting place for searching for files 16 | # (default) PROJECT_ROOT = . (this directory) 17 | # 18 | ################################################################################ 19 | # PROJECT_ROOT = . 20 | 21 | ################################################################################ 22 | # PROJECT SPECIFIC CHECKS 23 | # This is a project defined section to create internal makefile flags to 24 | # conditionally enable or disable the addition of various features within 25 | # this makefile. For instance, if you want to make changes based on whether 26 | # GTK is installed, one might test that here and create a variable to check. 27 | ################################################################################ 28 | # None 29 | 30 | ################################################################################ 31 | # PROJECT EXTERNAL SOURCE PATHS 32 | # These are fully qualified paths that are not within the PROJECT_ROOT folder. 33 | # Like source folders in the PROJECT_ROOT, these paths are subject to 34 | # exlclusion via the PROJECT_EXLCUSIONS list. 35 | # 36 | # (default) PROJECT_EXTERNAL_SOURCE_PATHS = (blank) 37 | # 38 | # Note: Leave a leading space when adding list items with the += operator 39 | ################################################################################ 40 | # PROJECT_EXTERNAL_SOURCE_PATHS = 41 | 42 | ################################################################################ 43 | # PROJECT EXCLUSIONS 44 | # These makefiles assume that all folders in your current project directory 45 | # and any listed in the PROJECT_EXTERNAL_SOURCH_PATHS are are valid locations 46 | # to look for source code. The any folders or files that match any of the 47 | # items in the PROJECT_EXCLUSIONS list below will be ignored. 48 | # 49 | # Each item in the PROJECT_EXCLUSIONS list will be treated as a complete 50 | # string unless teh user adds a wildcard (%) operator to match subdirectories. 51 | # GNU make only allows one wildcard for matching. The second wildcard (%) is 52 | # treated literally. 53 | # 54 | # (default) PROJECT_EXCLUSIONS = (blank) 55 | # 56 | # Will automatically exclude the following: 57 | # 58 | # $(PROJECT_ROOT)/bin% 59 | # $(PROJECT_ROOT)/obj% 60 | # $(PROJECT_ROOT)/%.xcodeproj 61 | # 62 | # Note: Leave a leading space when adding list items with the += operator 63 | ################################################################################ 64 | # PROJECT_EXCLUSIONS = 65 | 66 | ################################################################################ 67 | # PROJECT LINKER FLAGS 68 | # These flags will be sent to the linker when compiling the executable. 69 | # 70 | # (default) PROJECT_LDFLAGS = -Wl,-rpath=./libs 71 | # 72 | # Note: Leave a leading space when adding list items with the += operator 73 | ################################################################################ 74 | 75 | # Currently, shared libraries that are needed are copied to the 76 | # $(PROJECT_ROOT)/bin/libs directory. The following LDFLAGS tell the linker to 77 | # add a runtime path to search for those shared libraries, since they aren't 78 | # incorporated directly into the final executable application binary. 79 | # TODO: should this be a default setting? 80 | # PROJECT_LDFLAGS=-Wl,-rpath=./libs 81 | 82 | ################################################################################ 83 | # PROJECT DEFINES 84 | # Create a space-delimited list of DEFINES. The list will be converted into 85 | # CFLAGS with the "-D" flag later in the makefile. 86 | # 87 | # (default) PROJECT_DEFINES = (blank) 88 | # 89 | # Note: Leave a leading space when adding list items with the += operator 90 | ################################################################################ 91 | # PROJECT_DEFINES = 92 | 93 | ################################################################################ 94 | # PROJECT CFLAGS 95 | # This is a list of fully qualified CFLAGS required when compiling for this 96 | # project. These CFLAGS will be used IN ADDITION TO the PLATFORM_CFLAGS 97 | # defined in your platform specific core configuration files. These flags are 98 | # presented to the compiler BEFORE the PROJECT_OPTIMIZATION_CFLAGS below. 99 | # 100 | # (default) PROJECT_CFLAGS = (blank) 101 | # 102 | # Note: Before adding PROJECT_CFLAGS, note that the PLATFORM_CFLAGS defined in 103 | # your platform specific configuration file will be applied by default and 104 | # further flags here may not be needed. 105 | # 106 | # Note: Leave a leading space when adding list items with the += operator 107 | ################################################################################ 108 | # PROJECT_CFLAGS = 109 | 110 | ################################################################################ 111 | # PROJECT OPTIMIZATION CFLAGS 112 | # These are lists of CFLAGS that are target-specific. While any flags could 113 | # be conditionally added, they are usually limited to optimization flags. 114 | # These flags are added BEFORE the PROJECT_CFLAGS. 115 | # 116 | # PROJECT_OPTIMIZATION_CFLAGS_RELEASE flags are only applied to RELEASE targets. 117 | # 118 | # (default) PROJECT_OPTIMIZATION_CFLAGS_RELEASE = (blank) 119 | # 120 | # PROJECT_OPTIMIZATION_CFLAGS_DEBUG flags are only applied to DEBUG targets. 121 | # 122 | # (default) PROJECT_OPTIMIZATION_CFLAGS_DEBUG = (blank) 123 | # 124 | # Note: Before adding PROJECT_OPTIMIZATION_CFLAGS, please note that the 125 | # PLATFORM_OPTIMIZATION_CFLAGS defined in your platform specific configuration 126 | # file will be applied by default and further optimization flags here may not 127 | # be needed. 128 | # 129 | # Note: Leave a leading space when adding list items with the += operator 130 | ################################################################################ 131 | # PROJECT_OPTIMIZATION_CFLAGS_RELEASE = 132 | # PROJECT_OPTIMIZATION_CFLAGS_DEBUG = 133 | 134 | ################################################################################ 135 | # PROJECT COMPILERS 136 | # Custom compilers can be set for CC and CXX 137 | # (default) PROJECT_CXX = (blank) 138 | # (default) PROJECT_CC = (blank) 139 | # Note: Leave a leading space when adding list items with the += operator 140 | ################################################################################ 141 | # PROJECT_CXX = 142 | # PROJECT_CC = 143 | -------------------------------------------------------------------------------- /exampleBinaural/exampleBinaural.xcodeproj/project.xcworkspace/xcshareddata/exampleBinaural.xccheckout: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDESourceControlProjectFavoriteDictionaryKey 6 | 7 | IDESourceControlProjectIdentifier 8 | 17ADE348-5567-4C53-B800-5EB9E58DFD85 9 | IDESourceControlProjectName 10 | exampleBinaural 11 | IDESourceControlProjectOriginsDictionary 12 | 13 | 2FFF2BF69BB0C863F897CA4B5613034382303A01 14 | https://github.com/CICM/ofxHoa 15 | 5B4B1295257546E4C2809C4B80513989C199CD34 16 | https://github.com/CICM/HoaLibrary-Light.git 17 | 18 | IDESourceControlProjectPath 19 | exampleBinaural/exampleBinaural.xcodeproj 20 | IDESourceControlProjectRelativeInstallPathDictionary 21 | 22 | 2FFF2BF69BB0C863F897CA4B5613034382303A01 23 | ../../.. 24 | 5B4B1295257546E4C2809C4B80513989C199CD34 25 | ../../..libs 26 | 27 | IDESourceControlProjectURL 28 | https://github.com/CICM/ofxHoa 29 | IDESourceControlProjectVersion 30 | 111 31 | IDESourceControlProjectWCCIdentifier 32 | 2FFF2BF69BB0C863F897CA4B5613034382303A01 33 | IDESourceControlProjectWCConfigurations 34 | 35 | 36 | IDESourceControlRepositoryExtensionIdentifierKey 37 | public.vcs.git 38 | IDESourceControlWCCIdentifierKey 39 | 2FFF2BF69BB0C863F897CA4B5613034382303A01 40 | IDESourceControlWCCName 41 | ofxHoa 42 | 43 | 44 | IDESourceControlRepositoryExtensionIdentifierKey 45 | public.vcs.git 46 | IDESourceControlWCCIdentifierKey 47 | 5B4B1295257546E4C2809C4B80513989C199CD34 48 | IDESourceControlWCCName 49 | ofxHoalibs 50 | 51 | 52 | IDESourceControlRepositoryExtensionIdentifierKey 53 | public.vcs.git 54 | IDESourceControlWCCIdentifierKey 55 | 5B4B1295257546E4C2809C4B80513989C199CD34 56 | IDESourceControlWCCName 57 | ofxHoalibs 58 | 59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /exampleBinaural/exampleBinaural.xcodeproj/project.xcworkspace/xcuserdata/claudiocabral.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CICM/ofxHoa/930fbbd20e5db3622951549edd4d743a118528a5/exampleBinaural/exampleBinaural.xcodeproj/project.xcworkspace/xcuserdata/claudiocabral.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /exampleBinaural/exampleBinaural.xcodeproj/xcshareddata/xcschemes/exampleBinaural Debug.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 51 | 52 | 58 | 59 | 60 | 61 | 62 | 63 | 69 | 70 | 76 | 77 | 78 | 79 | 81 | 82 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /exampleBinaural/exampleBinaural.xcodeproj/xcshareddata/xcschemes/exampleBinaural Release.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 51 | 53 | 59 | 60 | 61 | 62 | 63 | 64 | 70 | 72 | 78 | 79 | 80 | 81 | 83 | 84 | 87 | 88 | 89 | -------------------------------------------------------------------------------- /exampleBinaural/exampleBinaural.xcodeproj/xcuserdata/claudiocabral.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /exampleBinaural/exampleBinaural.xcodeproj/xcuserdata/claudiocabral.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SuppressBuildableAutocreation 6 | 7 | E4B69B5A0A3A1756003C02F2 8 | 9 | primary 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /exampleBinaural/openFrameworks-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | cc.openFrameworks.ofapp 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundlePackageType 14 | APPL 15 | CFBundleSignature 16 | ???? 17 | CFBundleVersion 18 | 1.0 19 | CFBundleIconFile 20 | ${ICON} 21 | 22 | 23 | -------------------------------------------------------------------------------- /exampleBinaural/src/main.cpp: -------------------------------------------------------------------------------- 1 | #include "ofMain.h" 2 | #include "ofApp.h" 3 | 4 | //======================================================================== 5 | int main( ){ 6 | ofSetupOpenGL(1024,768,OF_WINDOW); // <-------- setup the GL context 7 | 8 | // this kicks off the running of my app 9 | // can be OF_WINDOW or OF_FULLSCREEN 10 | // pass in width and height too: 11 | ofRunApp(new ofApp()); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /exampleBinaural/src/ofApp.cpp: -------------------------------------------------------------------------------- 1 | #include "ofApp.h" 2 | 3 | //-------------------------------------------------------------- 4 | void ofApp::setup(){ 5 | 6 | nOutputs = 2; 7 | nInputs = 0; 8 | sampleRate = 44100; 9 | nBuffers = (nInputs+nOutputs)*2; 10 | 11 | input = 0; 12 | 13 | myOsc.setup(sampleRate, OF_SQUARE_WAVE); 14 | myOsc.setFrequency(330); 15 | myEnv.setup(sampleRate, OF_SAWTOOTH_WAVE); 16 | myEnv.setFrequency(-2); 17 | 18 | 19 | harmonicMatrix = new float * [order * 2+1]; 20 | 21 | for (int i = 0; i< order*2+1;++i) harmonicMatrix[i] = new float[bufferSize]; 22 | 23 | outputMatrix = new float * [2]; 24 | outputMatrix[0] = new float[bufferSize]; 25 | outputMatrix[1] = new float[bufferSize]; 26 | hoaDecoder.setCropSize(256); 27 | 28 | hoaDecoder.computeRendering(bufferSize); 29 | 30 | circleCenter = ofVec3f(ofGetWidth()/2,ofGetHeight()/2); 31 | circleRadius = 100; 32 | 33 | hoaCoord.setAmbisonicCenter(circleCenter); 34 | hoaCoord.setAmbisonicRadius(circleRadius); 35 | 36 | 37 | hoaCoord.setRamp(50, sampleRate); 38 | 39 | hoaCoord.setSourcePositionDirect(0, ofVec3f(10000,10000)); 40 | 41 | ofSetCircleResolution(50); 42 | 43 | soundStream.setup(this, nOutputs, nInputs, sampleRate, bufferSize, nBuffers); 44 | } 45 | 46 | //-------------------------------------------------------------- 47 | void ofApp::update(){ 48 | // CHANGE SOURCE POSITION 49 | sourcePosition = ofVec3f(mouseX, mouseY); 50 | hoaCoord.setSourcePosition(0, sourcePosition); 51 | } 52 | 53 | //-------------------------------------------------------------- 54 | void ofApp::draw(){ 55 | 56 | ofBackgroundGradient(ofColor::gold, ofColor::black); 57 | ofSetColor(ofColor::crimson); 58 | ofFill(); 59 | ofCircle(sourcePosition, 10); 60 | ofNoFill(); 61 | ofCircle(circleCenter, circleRadius); 62 | 63 | } 64 | 65 | //-------------------------------------------------------------- 66 | void ofApp::keyPressed(int key){ 67 | 68 | } 69 | 70 | //-------------------------------------------------------------- 71 | void ofApp::keyReleased(int key){ 72 | 73 | } 74 | 75 | //-------------------------------------------------------------- 76 | void ofApp::mouseMoved(int x, int y ){ 77 | 78 | } 79 | 80 | //-------------------------------------------------------------- 81 | void ofApp::mouseDragged(int x, int y, int button){ 82 | 83 | } 84 | 85 | //-------------------------------------------------------------- 86 | void ofApp::mousePressed(int x, int y, int button){ 87 | 88 | } 89 | 90 | //-------------------------------------------------------------- 91 | void ofApp::mouseReleased(int x, int y, int button){ 92 | 93 | } 94 | 95 | //-------------------------------------------------------------- 96 | void ofApp::windowResized(int w, int h){ 97 | 98 | } 99 | 100 | //-------------------------------------------------------------- 101 | void ofApp::gotMessage(ofMessage msg){ 102 | 103 | } 104 | 105 | //-------------------------------------------------------------- 106 | void ofApp::dragEvent(ofDragInfo dragInfo){ 107 | 108 | } 109 | 110 | void ofApp::audioOut( float * output, int bufferSize, int nChannels){ 111 | 112 | for (int i = 0; i(harmonicMatrix), outputMatrix); 126 | 127 | for (int i = 0; i myOsc, myEnv; 35 | 36 | static const int order = 3; 37 | int nInputs, nOutputs; 38 | static const int bufferSize = 512; 39 | int sampleRate; 40 | int nBuffers; 41 | 42 | //MOST HOA CLASSES REQUIRE ARGUMENTS FOR INITILIZATION, SO WE CREATE THEM AS POINTERS 43 | Encoder::DC hoaEncoder = Encoder::DC(order); 44 | Decoder::Binaural hoaDecoder = Decoder::Binaural(order); 45 | Optim::Basic hoaOptim = Optim::Basic(order); 46 | ofxHoaCoord hoaCoord = ofxHoaCoord(1); 47 | 48 | ofSoundStream soundStream; 49 | 50 | float input; 51 | float harmonicsBuffer[order*2+1]; 52 | 53 | float ** harmonicMatrix; 54 | float ** outputMatrix; 55 | 56 | float circleRadius; 57 | ofVec3f circleCenter; 58 | ofVec3f sourcePosition; 59 | }; -------------------------------------------------------------------------------- /exampleMultipleSources/Makefile: -------------------------------------------------------------------------------- 1 | # Attempt to load a config.make file. 2 | # If none is found, project defaults in config.project.make will be used. 3 | ifneq ($(wildcard config.make),) 4 | include config.make 5 | endif 6 | 7 | # make sure the the OF_ROOT location is defined 8 | ifndef OF_ROOT 9 | OF_ROOT=../../.. 10 | endif 11 | 12 | # call the project makefile! 13 | include $(OF_ROOT)/libs/openFrameworksCompiled/project/makefileCommon/compile.project.mk 14 | -------------------------------------------------------------------------------- /exampleMultipleSources/Project.xcconfig: -------------------------------------------------------------------------------- 1 | //THE PATH TO THE ROOT OF OUR OF PATH RELATIVE TO THIS PROJECT. 2 | //THIS NEEDS TO BE DEFINED BEFORE CoreOF.xcconfig IS INCLUDED 3 | OF_PATH = ../../.. 4 | 5 | //THIS HAS ALL THE HEADER AND LIBS FOR OF CORE 6 | #include "../../../libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig" 7 | 8 | //ICONS - NEW IN 0072 9 | ICON_NAME_DEBUG = icon-debug.icns 10 | ICON_NAME_RELEASE = icon.icns 11 | ICON_FILE_PATH = $(OF_PATH)/libs/openFrameworksCompiled/project/osx/ 12 | 13 | //IF YOU WANT AN APP TO HAVE A CUSTOM ICON - PUT THEM IN YOUR DATA FOLDER AND CHANGE ICON_FILE_PATH to: 14 | //ICON_FILE_PATH = bin/data/ 15 | 16 | OTHER_LDFLAGS = $(OF_CORE_LIBS) 17 | HEADER_SEARCH_PATHS = $(OF_CORE_HEADERS) 18 | -------------------------------------------------------------------------------- /exampleMultipleSources/addons.make: -------------------------------------------------------------------------------- 1 | ofxHoa 2 | -------------------------------------------------------------------------------- /exampleMultipleSources/bin/data/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CICM/ofxHoa/930fbbd20e5db3622951549edd4d743a118528a5/exampleMultipleSources/bin/data/.gitkeep -------------------------------------------------------------------------------- /exampleMultipleSources/config.make: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # CONFIGURE PROJECT MAKEFILE (optional) 3 | # This file is where we make project specific configurations. 4 | ################################################################################ 5 | 6 | ################################################################################ 7 | # OF ROOT 8 | # The location of your root openFrameworks installation 9 | # (default) OF_ROOT = ../../.. 10 | ################################################################################ 11 | # OF_ROOT = ../../.. 12 | 13 | ################################################################################ 14 | # PROJECT ROOT 15 | # The location of the project - a starting place for searching for files 16 | # (default) PROJECT_ROOT = . (this directory) 17 | # 18 | ################################################################################ 19 | # PROJECT_ROOT = . 20 | 21 | ################################################################################ 22 | # PROJECT SPECIFIC CHECKS 23 | # This is a project defined section to create internal makefile flags to 24 | # conditionally enable or disable the addition of various features within 25 | # this makefile. For instance, if you want to make changes based on whether 26 | # GTK is installed, one might test that here and create a variable to check. 27 | ################################################################################ 28 | # None 29 | 30 | ################################################################################ 31 | # PROJECT EXTERNAL SOURCE PATHS 32 | # These are fully qualified paths that are not within the PROJECT_ROOT folder. 33 | # Like source folders in the PROJECT_ROOT, these paths are subject to 34 | # exlclusion via the PROJECT_EXLCUSIONS list. 35 | # 36 | # (default) PROJECT_EXTERNAL_SOURCE_PATHS = (blank) 37 | # 38 | # Note: Leave a leading space when adding list items with the += operator 39 | ################################################################################ 40 | # PROJECT_EXTERNAL_SOURCE_PATHS = 41 | 42 | ################################################################################ 43 | # PROJECT EXCLUSIONS 44 | # These makefiles assume that all folders in your current project directory 45 | # and any listed in the PROJECT_EXTERNAL_SOURCH_PATHS are are valid locations 46 | # to look for source code. The any folders or files that match any of the 47 | # items in the PROJECT_EXCLUSIONS list below will be ignored. 48 | # 49 | # Each item in the PROJECT_EXCLUSIONS list will be treated as a complete 50 | # string unless teh user adds a wildcard (%) operator to match subdirectories. 51 | # GNU make only allows one wildcard for matching. The second wildcard (%) is 52 | # treated literally. 53 | # 54 | # (default) PROJECT_EXCLUSIONS = (blank) 55 | # 56 | # Will automatically exclude the following: 57 | # 58 | # $(PROJECT_ROOT)/bin% 59 | # $(PROJECT_ROOT)/obj% 60 | # $(PROJECT_ROOT)/%.xcodeproj 61 | # 62 | # Note: Leave a leading space when adding list items with the += operator 63 | ################################################################################ 64 | # PROJECT_EXCLUSIONS = 65 | 66 | ################################################################################ 67 | # PROJECT LINKER FLAGS 68 | # These flags will be sent to the linker when compiling the executable. 69 | # 70 | # (default) PROJECT_LDFLAGS = -Wl,-rpath=./libs 71 | # 72 | # Note: Leave a leading space when adding list items with the += operator 73 | ################################################################################ 74 | 75 | # Currently, shared libraries that are needed are copied to the 76 | # $(PROJECT_ROOT)/bin/libs directory. The following LDFLAGS tell the linker to 77 | # add a runtime path to search for those shared libraries, since they aren't 78 | # incorporated directly into the final executable application binary. 79 | # TODO: should this be a default setting? 80 | # PROJECT_LDFLAGS=-Wl,-rpath=./libs 81 | 82 | ################################################################################ 83 | # PROJECT DEFINES 84 | # Create a space-delimited list of DEFINES. The list will be converted into 85 | # CFLAGS with the "-D" flag later in the makefile. 86 | # 87 | # (default) PROJECT_DEFINES = (blank) 88 | # 89 | # Note: Leave a leading space when adding list items with the += operator 90 | ################################################################################ 91 | # PROJECT_DEFINES = 92 | 93 | ################################################################################ 94 | # PROJECT CFLAGS 95 | # This is a list of fully qualified CFLAGS required when compiling for this 96 | # project. These CFLAGS will be used IN ADDITION TO the PLATFORM_CFLAGS 97 | # defined in your platform specific core configuration files. These flags are 98 | # presented to the compiler BEFORE the PROJECT_OPTIMIZATION_CFLAGS below. 99 | # 100 | # (default) PROJECT_CFLAGS = (blank) 101 | # 102 | # Note: Before adding PROJECT_CFLAGS, note that the PLATFORM_CFLAGS defined in 103 | # your platform specific configuration file will be applied by default and 104 | # further flags here may not be needed. 105 | # 106 | # Note: Leave a leading space when adding list items with the += operator 107 | ################################################################################ 108 | # PROJECT_CFLAGS = 109 | 110 | ################################################################################ 111 | # PROJECT OPTIMIZATION CFLAGS 112 | # These are lists of CFLAGS that are target-specific. While any flags could 113 | # be conditionally added, they are usually limited to optimization flags. 114 | # These flags are added BEFORE the PROJECT_CFLAGS. 115 | # 116 | # PROJECT_OPTIMIZATION_CFLAGS_RELEASE flags are only applied to RELEASE targets. 117 | # 118 | # (default) PROJECT_OPTIMIZATION_CFLAGS_RELEASE = (blank) 119 | # 120 | # PROJECT_OPTIMIZATION_CFLAGS_DEBUG flags are only applied to DEBUG targets. 121 | # 122 | # (default) PROJECT_OPTIMIZATION_CFLAGS_DEBUG = (blank) 123 | # 124 | # Note: Before adding PROJECT_OPTIMIZATION_CFLAGS, please note that the 125 | # PLATFORM_OPTIMIZATION_CFLAGS defined in your platform specific configuration 126 | # file will be applied by default and further optimization flags here may not 127 | # be needed. 128 | # 129 | # Note: Leave a leading space when adding list items with the += operator 130 | ################################################################################ 131 | # PROJECT_OPTIMIZATION_CFLAGS_RELEASE = 132 | # PROJECT_OPTIMIZATION_CFLAGS_DEBUG = 133 | 134 | ################################################################################ 135 | # PROJECT COMPILERS 136 | # Custom compilers can be set for CC and CXX 137 | # (default) PROJECT_CXX = (blank) 138 | # (default) PROJECT_CC = (blank) 139 | # Note: Leave a leading space when adding list items with the += operator 140 | ################################################################################ 141 | # PROJECT_CXX = 142 | # PROJECT_CC = 143 | -------------------------------------------------------------------------------- /exampleMultipleSources/exampleMultipleSources.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /exampleMultipleSources/exampleMultipleSources.xcodeproj/project.xcworkspace/xcshareddata/exampleMultipleSources.xccheckout: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDESourceControlProjectFavoriteDictionaryKey 6 | 7 | IDESourceControlProjectIdentifier 8 | D7B5985A-5805-46A1-ADF1-EDE80A05B181 9 | IDESourceControlProjectName 10 | exampleMultipleSources 11 | IDESourceControlProjectOriginsDictionary 12 | 13 | 2FFF2BF69BB0C863F897CA4B5613034382303A01 14 | https://github.com/CICM/ofxHoa 15 | 5B4B1295257546E4C2809C4B80513989C199CD34 16 | https://github.com/CICM/HoaLibrary-Light.git 17 | 18 | IDESourceControlProjectPath 19 | exampleMultipleSources/exampleMultipleSources.xcodeproj 20 | IDESourceControlProjectRelativeInstallPathDictionary 21 | 22 | 2FFF2BF69BB0C863F897CA4B5613034382303A01 23 | ../../.. 24 | 5B4B1295257546E4C2809C4B80513989C199CD34 25 | ../../..libs/HoaLibrary-Light 26 | 27 | IDESourceControlProjectURL 28 | https://github.com/CICM/ofxHoa 29 | IDESourceControlProjectVersion 30 | 111 31 | IDESourceControlProjectWCCIdentifier 32 | 2FFF2BF69BB0C863F897CA4B5613034382303A01 33 | IDESourceControlProjectWCConfigurations 34 | 35 | 36 | IDESourceControlRepositoryExtensionIdentifierKey 37 | public.vcs.git 38 | IDESourceControlWCCIdentifierKey 39 | 5B4B1295257546E4C2809C4B80513989C199CD34 40 | IDESourceControlWCCName 41 | HoaLibrary-Light 42 | 43 | 44 | IDESourceControlRepositoryExtensionIdentifierKey 45 | public.vcs.git 46 | IDESourceControlWCCIdentifierKey 47 | 2FFF2BF69BB0C863F897CA4B5613034382303A01 48 | IDESourceControlWCCName 49 | ofxHoa 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /exampleMultipleSources/exampleMultipleSources.xcodeproj/project.xcworkspace/xcuserdata/claudiocabral.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CICM/ofxHoa/930fbbd20e5db3622951549edd4d743a118528a5/exampleMultipleSources/exampleMultipleSources.xcodeproj/project.xcworkspace/xcuserdata/claudiocabral.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /exampleMultipleSources/exampleMultipleSources.xcodeproj/xcshareddata/xcschemes/exampleMultipleSources Debug.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 51 | 52 | 58 | 59 | 60 | 61 | 62 | 63 | 69 | 70 | 76 | 77 | 78 | 79 | 81 | 82 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /exampleMultipleSources/exampleMultipleSources.xcodeproj/xcshareddata/xcschemes/exampleMultipleSources Release.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 51 | 52 | 58 | 59 | 60 | 61 | 62 | 63 | 69 | 70 | 76 | 77 | 78 | 79 | 81 | 82 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /exampleMultipleSources/exampleMultipleSources.xcodeproj/xcuserdata/claudiocabral.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /exampleMultipleSources/exampleMultipleSources.xcodeproj/xcuserdata/claudiocabral.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SuppressBuildableAutocreation 6 | 7 | E4B69B5A0A3A1756003C02F2 8 | 9 | primary 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /exampleMultipleSources/openFrameworks-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | cc.openFrameworks.ofapp 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundlePackageType 14 | APPL 15 | CFBundleSignature 16 | ???? 17 | CFBundleVersion 18 | 1.0 19 | CFBundleIconFile 20 | ${ICON} 21 | 22 | 23 | -------------------------------------------------------------------------------- /exampleMultipleSources/src/main.cpp: -------------------------------------------------------------------------------- 1 | #include "ofMain.h" 2 | #include "ofApp.h" 3 | 4 | //======================================================================== 5 | int main( ){ 6 | ofSetupOpenGL(1024,768,OF_WINDOW); // <-------- setup the GL context 7 | 8 | // this kicks off the running of my app 9 | // can be OF_WINDOW or OF_FULLSCREEN 10 | // pass in width and height too: 11 | ofRunApp(new ofApp()); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /exampleMultipleSources/src/ofApp.cpp: -------------------------------------------------------------------------------- 1 | #include "ofApp.h" 2 | 3 | //-------------------------------------------------------------- 4 | void ofApp::setup(){ 5 | 6 | // soundStream.setDeviceID(5); 7 | // ofSoundStreamListDevices(); 8 | 9 | // CHOOSE NUMBER OF PARTICLES; EACH ONE WILL HAVE IT'S OWN COLOR AND FREQUENCY 10 | numberOfParticles = 3; 11 | 12 | // CREATE VARIABLES OF THE SPEAKER CIRCLE 13 | circleCenter = ofVec3f(ofGetWidth()/2,ofGetHeight()/2); 14 | circleRadius = ofGetWidth()/4; 15 | circleMin = circleCenter - circleRadius; 16 | circleMax = circleCenter + circleRadius; 17 | 18 | // CONFIGURE AUDIO 19 | nOutputs = 2; 20 | nInputs = 0; 21 | sampleRate = 44100; 22 | bufferSize = 512; 23 | nBuffers = (nOutputs + nInputs)*2; 24 | 25 | // CHOOSE HOA ORDER 26 | order = 3; 27 | 28 | // CREATE ALL THE ARRAYS WE'LL NEED 29 | position = new ofVec3f[numberOfParticles]; 30 | velocity = new ofVec3f[numberOfParticles]; 31 | noise = new ofVec3f[numberOfParticles]; 32 | inputBuffer = new float[numberOfParticles]; 33 | harmonicsBuffer = new float[order*2+1]; 34 | myOsc = new ofxHoaOscillator[numberOfParticles]; 35 | 36 | // THE ENCODERMULTI ALLOWS TO DISTRIBUTE MULTIPLE SOURCES IN SPACE 37 | encoderMulti = new Encoder::Multi(order,numberOfParticles); 38 | 39 | // CHOSE DECODER TYPE 40 | // decoder = new Decoder::Binaural(order); 41 | decoder = new Decoder::Regular(order,nOutputs); 42 | // COMPUE MATRIX OF SPEAKERS 43 | decoder->computeRendering(bufferSize); 44 | 45 | /*THE OPTIM ALLOWS TO ACOUNT FOR DISPLACEMENTS IN IDEAL SPEAKER POSITION 46 | "Basic" WORKS AS A BYPASS. 47 | "InPhase" AND "MaxRe" SHOULD BE USED IF THE AMBSIONICS CIRCLE/SPHERE IS NOT PERFECT */ 48 | // optimizer = new Optim::Basic(order); 49 | optimizer = new Optim::InPhase(order); 50 | 51 | 52 | hoaCoord = new ofxHoaCoord(numberOfParticles); 53 | 54 | // SET THE RAMP FOR SMOOTHING THE VALUES 55 | hoaCoord->setRamp(50, sampleRate); 56 | 57 | // SETUP MESH, THIS IS JUST A CHEAP WAY OF MAKING BIG POINTS 58 | mesh.setMode(OF_PRIMITIVE_POINTS); 59 | glEnable(GL_POINT_SMOOTH); 60 | glPointSize(20); 61 | 62 | // MAXIMUM VALUE FOR THE VELOCITY OF THE PARTICLES 63 | velocityMax = 5; 64 | 65 | // INITIALIZE ALL ARRAYS AND ADD VERTICES TO MESH 66 | for (int i = 0; isetAmbisonicCenter(circleCenter); 81 | hoaCoord->setAmbisonicRadius(circleRadius); 82 | hoaCoord->setSourcePositionDirect(i, position[i]); 83 | } 84 | 85 | soundStream.setup(this, nOutputs, nInputs, sampleRate, bufferSize, nBuffers); 86 | 87 | // MAKE A PRETIER CIRCLE 88 | ofSetCircleResolution(50); 89 | } 90 | 91 | //-------------------------------------------------------------- 92 | void ofApp::update(){ 93 | 94 | // CHECK FOR WALL COLLISION 95 | for (int i = 0; i= circleMax.x) { 98 | velocity[i].x*= -1; 99 | } 100 | if (position[i].y <= circleMin.y || position[i].y >= circleMax.y) { 101 | velocity[i].y*= -1; 102 | } 103 | 104 | relativePosition.x = position[i].x - circleCenter.x; 105 | relativePosition.y = (ofGetHeight() - position[i].y) - circleCenter.y; 106 | 107 | // CALCULATE NEW POSITION USING VELOCITY AND PERLIN NOISE 108 | noise[i]+=0.01; 109 | position[i]+=ofNoise(noise[i].x,noise[i].y)*velocity[i]; 110 | mesh.setVertex(i, position[i]); 111 | 112 | // SET SOURCE POSITION 113 | hoaCoord->setSourcePosition(i, position[i]); 114 | } 115 | } 116 | 117 | //-------------------------------------------------------------- 118 | void ofApp::draw(){ 119 | 120 | // DRAW EVERYTHING 121 | ofBackgroundGradient(ofColor::gold, ofColor::black); 122 | ofNoFill(); 123 | ofSetColor(ofColor::paleVioletRed); 124 | 125 | //MAKE A THICK CIRCLE 126 | for (int i = 0; i<10; i++){ 127 | ofCircle(circleCenter, circleRadius+i-5); 128 | } 129 | 130 | //DRAW THE SOURCES 131 | ofSetColor(255); 132 | mesh.draw(); 133 | 134 | } 135 | 136 | //-------------------------------------------------------------- 137 | void ofApp::keyPressed(int key){ 138 | 139 | } 140 | 141 | //-------------------------------------------------------------- 142 | void ofApp::keyReleased(int key){ 143 | 144 | } 145 | 146 | //-------------------------------------------------------------- 147 | void ofApp::mouseMoved(int x, int y ){ 148 | 149 | } 150 | 151 | //-------------------------------------------------------------- 152 | void ofApp::mouseDragged(int x, int y, int button){ 153 | 154 | } 155 | 156 | //-------------------------------------------------------------- 157 | void ofApp::mousePressed(int x, int y, int button){ 158 | 159 | } 160 | 161 | //-------------------------------------------------------------- 162 | void ofApp::mouseReleased(int x, int y, int button){ 163 | 164 | } 165 | 166 | //-------------------------------------------------------------- 167 | void ofApp::windowResized(int w, int h){ 168 | 169 | } 170 | 171 | //-------------------------------------------------------------- 172 | void ofApp::gotMessage(ofMessage msg){ 173 | 174 | } 175 | 176 | //-------------------------------------------------------------- 177 | void ofApp::dragEvent(ofDragInfo dragInfo){ 178 | 179 | } 180 | 181 | //-------------------------------------------------------------- 182 | void ofApp::audioOut(float *output, int bufferSize, int nChannels){ 183 | 184 | // BEGIN AUDIO LOOP 185 | for (int i = 0; iprocess(); 188 | 189 | 190 | // SET CURRENT POSITION FOR EACH PARTICLE 191 | for (int j = 0; jsetRadius(j, hoaCoord->getRadius(j)); 197 | encoderMulti->setAzimuth(j, hoaCoord->getAzimuth(j)); 198 | } 199 | 200 | // PROCESS ONE SAMPLE OF EACH PARTICLE AND CREATE THE SPHERICAL HARMONICS 201 | encoderMulti->process(inputBuffer,harmonicsBuffer); 202 | 203 | // PROCESS THE HARMONICS WITH OPTIM 204 | optimizer->process(harmonicsBuffer, harmonicsBuffer); 205 | 206 | // TRANSFORM THE HARMONICS TO AUDIO SIGNALS 207 | decoder->process(harmonicsBuffer, output+i*nChannels); 208 | 209 | } 210 | } 211 | 212 | //-------------------------------------------------------------- 213 | void ofApp::exit(){ 214 | 215 | // CLEAR AUDIO AND DELETE OBJECTS WHEN CLOSING 216 | soundStream.close(); 217 | 218 | delete [] position; 219 | delete [] velocity; 220 | delete [] noise; 221 | delete [] inputBuffer; 222 | delete [] harmonicsBuffer; 223 | delete [] myOsc; 224 | 225 | delete encoderMulti; 226 | delete decoder; 227 | delete optimizer; 228 | delete hoaCoord; 229 | } -------------------------------------------------------------------------------- /exampleMultipleSources/src/ofApp.h: -------------------------------------------------------------------------------- 1 | // FOR A MORE COMMENTED EXAMPLE SEE exampleOneSource 2 | 3 | #pragma once 4 | 5 | #include "ofMain.h" 6 | #include "ofxHoa.h" 7 | 8 | using namespace hoa; 9 | 10 | class ofApp : public ofBaseApp{ 11 | 12 | public: 13 | void setup(); 14 | void update(); 15 | void draw(); 16 | 17 | void keyPressed(int key); 18 | void keyReleased(int key); 19 | void mouseMoved(int x, int y ); 20 | void mouseDragged(int x, int y, int button); 21 | void mousePressed(int x, int y, int button); 22 | void mouseReleased(int x, int y, int button); 23 | void windowResized(int w, int h); 24 | void dragEvent(ofDragInfo dragInfo); 25 | void gotMessage(ofMessage msg); 26 | 27 | void audioOut(float * output, int bufferSize, int nChannels); 28 | void exit(); 29 | 30 | Encoder::Multi * encoderMulti; 31 | Decoder * decoder; 32 | Optim * optimizer; 33 | ofxHoaCoord * hoaCoord; 34 | 35 | ofxHoaOscillator * myOsc; 36 | 37 | float * inputBuffer; 38 | float * harmonicsBuffer; 39 | 40 | ofSoundStream soundStream; 41 | int nInputs, nOutputs, nChannels, nBuffers, sampleRate, bufferSize; 42 | 43 | int numberOfParticles; 44 | int order; 45 | 46 | ofMesh mesh; 47 | ofVec3f relativePosition; 48 | ofVec3f * position; 49 | ofVec3f * velocity; 50 | ofVec3f * noise; 51 | ofVec3f circleCenter; 52 | ofVec3f circleMin, circleMax; 53 | float circleRadius; 54 | float velocityMax; 55 | }; 56 | -------------------------------------------------------------------------------- /exampleOneSource/Makefile: -------------------------------------------------------------------------------- 1 | # Attempt to load a config.make file. 2 | # If none is found, project defaults in config.project.make will be used. 3 | ifneq ($(wildcard config.make),) 4 | include config.make 5 | endif 6 | 7 | # make sure the the OF_ROOT location is defined 8 | ifndef OF_ROOT 9 | OF_ROOT=../../.. 10 | endif 11 | 12 | # call the project makefile! 13 | include $(OF_ROOT)/libs/openFrameworksCompiled/project/makefileCommon/compile.project.mk 14 | -------------------------------------------------------------------------------- /exampleOneSource/Project.xcconfig: -------------------------------------------------------------------------------- 1 | //THE PATH TO THE ROOT OF OUR OF PATH RELATIVE TO THIS PROJECT. 2 | //THIS NEEDS TO BE DEFINED BEFORE CoreOF.xcconfig IS INCLUDED 3 | OF_PATH = ../../.. 4 | 5 | //THIS HAS ALL THE HEADER AND LIBS FOR OF CORE 6 | #include "../../../libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig" 7 | 8 | //ICONS - NEW IN 0072 9 | ICON_NAME_DEBUG = icon-debug.icns 10 | ICON_NAME_RELEASE = icon.icns 11 | ICON_FILE_PATH = $(OF_PATH)/libs/openFrameworksCompiled/project/osx/ 12 | 13 | //IF YOU WANT AN APP TO HAVE A CUSTOM ICON - PUT THEM IN YOUR DATA FOLDER AND CHANGE ICON_FILE_PATH to: 14 | //ICON_FILE_PATH = bin/data/ 15 | 16 | OTHER_LDFLAGS = $(OF_CORE_LIBS) 17 | HEADER_SEARCH_PATHS = $(OF_CORE_HEADERS) 18 | -------------------------------------------------------------------------------- /exampleOneSource/addons.make: -------------------------------------------------------------------------------- 1 | ofxHoa 2 | -------------------------------------------------------------------------------- /exampleOneSource/bin/data/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CICM/ofxHoa/930fbbd20e5db3622951549edd4d743a118528a5/exampleOneSource/bin/data/.gitkeep -------------------------------------------------------------------------------- /exampleOneSource/config.make: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # CONFIGURE PROJECT MAKEFILE (optional) 3 | # This file is where we make project specific configurations. 4 | ################################################################################ 5 | 6 | ################################################################################ 7 | # OF ROOT 8 | # The location of your root openFrameworks installation 9 | # (default) OF_ROOT = ../../.. 10 | ################################################################################ 11 | # OF_ROOT = ../../.. 12 | 13 | ################################################################################ 14 | # PROJECT ROOT 15 | # The location of the project - a starting place for searching for files 16 | # (default) PROJECT_ROOT = . (this directory) 17 | # 18 | ################################################################################ 19 | # PROJECT_ROOT = . 20 | 21 | ################################################################################ 22 | # PROJECT SPECIFIC CHECKS 23 | # This is a project defined section to create internal makefile flags to 24 | # conditionally enable or disable the addition of various features within 25 | # this makefile. For instance, if you want to make changes based on whether 26 | # GTK is installed, one might test that here and create a variable to check. 27 | ################################################################################ 28 | # None 29 | 30 | ################################################################################ 31 | # PROJECT EXTERNAL SOURCE PATHS 32 | # These are fully qualified paths that are not within the PROJECT_ROOT folder. 33 | # Like source folders in the PROJECT_ROOT, these paths are subject to 34 | # exlclusion via the PROJECT_EXLCUSIONS list. 35 | # 36 | # (default) PROJECT_EXTERNAL_SOURCE_PATHS = (blank) 37 | # 38 | # Note: Leave a leading space when adding list items with the += operator 39 | ################################################################################ 40 | # PROJECT_EXTERNAL_SOURCE_PATHS = 41 | 42 | ################################################################################ 43 | # PROJECT EXCLUSIONS 44 | # These makefiles assume that all folders in your current project directory 45 | # and any listed in the PROJECT_EXTERNAL_SOURCH_PATHS are are valid locations 46 | # to look for source code. The any folders or files that match any of the 47 | # items in the PROJECT_EXCLUSIONS list below will be ignored. 48 | # 49 | # Each item in the PROJECT_EXCLUSIONS list will be treated as a complete 50 | # string unless teh user adds a wildcard (%) operator to match subdirectories. 51 | # GNU make only allows one wildcard for matching. The second wildcard (%) is 52 | # treated literally. 53 | # 54 | # (default) PROJECT_EXCLUSIONS = (blank) 55 | # 56 | # Will automatically exclude the following: 57 | # 58 | # $(PROJECT_ROOT)/bin% 59 | # $(PROJECT_ROOT)/obj% 60 | # $(PROJECT_ROOT)/%.xcodeproj 61 | # 62 | # Note: Leave a leading space when adding list items with the += operator 63 | ################################################################################ 64 | # PROJECT_EXCLUSIONS = 65 | 66 | ################################################################################ 67 | # PROJECT LINKER FLAGS 68 | # These flags will be sent to the linker when compiling the executable. 69 | # 70 | # (default) PROJECT_LDFLAGS = -Wl,-rpath=./libs 71 | # 72 | # Note: Leave a leading space when adding list items with the += operator 73 | ################################################################################ 74 | 75 | # Currently, shared libraries that are needed are copied to the 76 | # $(PROJECT_ROOT)/bin/libs directory. The following LDFLAGS tell the linker to 77 | # add a runtime path to search for those shared libraries, since they aren't 78 | # incorporated directly into the final executable application binary. 79 | # TODO: should this be a default setting? 80 | # PROJECT_LDFLAGS=-Wl,-rpath=./libs 81 | 82 | ################################################################################ 83 | # PROJECT DEFINES 84 | # Create a space-delimited list of DEFINES. The list will be converted into 85 | # CFLAGS with the "-D" flag later in the makefile. 86 | # 87 | # (default) PROJECT_DEFINES = (blank) 88 | # 89 | # Note: Leave a leading space when adding list items with the += operator 90 | ################################################################################ 91 | # PROJECT_DEFINES = 92 | 93 | ################################################################################ 94 | # PROJECT CFLAGS 95 | # This is a list of fully qualified CFLAGS required when compiling for this 96 | # project. These CFLAGS will be used IN ADDITION TO the PLATFORM_CFLAGS 97 | # defined in your platform specific core configuration files. These flags are 98 | # presented to the compiler BEFORE the PROJECT_OPTIMIZATION_CFLAGS below. 99 | # 100 | # (default) PROJECT_CFLAGS = (blank) 101 | # 102 | # Note: Before adding PROJECT_CFLAGS, note that the PLATFORM_CFLAGS defined in 103 | # your platform specific configuration file will be applied by default and 104 | # further flags here may not be needed. 105 | # 106 | # Note: Leave a leading space when adding list items with the += operator 107 | ################################################################################ 108 | # PROJECT_CFLAGS = 109 | 110 | ################################################################################ 111 | # PROJECT OPTIMIZATION CFLAGS 112 | # These are lists of CFLAGS that are target-specific. While any flags could 113 | # be conditionally added, they are usually limited to optimization flags. 114 | # These flags are added BEFORE the PROJECT_CFLAGS. 115 | # 116 | # PROJECT_OPTIMIZATION_CFLAGS_RELEASE flags are only applied to RELEASE targets. 117 | # 118 | # (default) PROJECT_OPTIMIZATION_CFLAGS_RELEASE = (blank) 119 | # 120 | # PROJECT_OPTIMIZATION_CFLAGS_DEBUG flags are only applied to DEBUG targets. 121 | # 122 | # (default) PROJECT_OPTIMIZATION_CFLAGS_DEBUG = (blank) 123 | # 124 | # Note: Before adding PROJECT_OPTIMIZATION_CFLAGS, please note that the 125 | # PLATFORM_OPTIMIZATION_CFLAGS defined in your platform specific configuration 126 | # file will be applied by default and further optimization flags here may not 127 | # be needed. 128 | # 129 | # Note: Leave a leading space when adding list items with the += operator 130 | ################################################################################ 131 | # PROJECT_OPTIMIZATION_CFLAGS_RELEASE = 132 | # PROJECT_OPTIMIZATION_CFLAGS_DEBUG = 133 | 134 | ################################################################################ 135 | # PROJECT COMPILERS 136 | # Custom compilers can be set for CC and CXX 137 | # (default) PROJECT_CXX = (blank) 138 | # (default) PROJECT_CC = (blank) 139 | # Note: Leave a leading space when adding list items with the += operator 140 | ################################################################################ 141 | # PROJECT_CXX = 142 | # PROJECT_CC = 143 | -------------------------------------------------------------------------------- /exampleOneSource/exampleOneSource.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | BBAB23CB13894F3D00AA2426 /* GLUT.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = BBAB23BE13894E4700AA2426 /* GLUT.framework */; }; 11 | E4328149138ABC9F0047C5CB /* openFrameworksDebug.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E4328148138ABC890047C5CB /* openFrameworksDebug.a */; }; 12 | E45BE97B0E8CC7DD009D7055 /* AGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9710E8CC7DD009D7055 /* AGL.framework */; }; 13 | E45BE97C0E8CC7DD009D7055 /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9720E8CC7DD009D7055 /* ApplicationServices.framework */; }; 14 | E45BE97D0E8CC7DD009D7055 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9730E8CC7DD009D7055 /* AudioToolbox.framework */; }; 15 | E45BE97F0E8CC7DD009D7055 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9750E8CC7DD009D7055 /* CoreAudio.framework */; }; 16 | E45BE9800E8CC7DD009D7055 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9760E8CC7DD009D7055 /* CoreFoundation.framework */; }; 17 | E45BE9810E8CC7DD009D7055 /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9770E8CC7DD009D7055 /* CoreServices.framework */; }; 18 | E45BE9830E8CC7DD009D7055 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9790E8CC7DD009D7055 /* OpenGL.framework */; }; 19 | E45BE9840E8CC7DD009D7055 /* QuickTime.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE97A0E8CC7DD009D7055 /* QuickTime.framework */; }; 20 | E4B69E200A3A1BDC003C02F2 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4B69E1D0A3A1BDC003C02F2 /* main.cpp */; }; 21 | E4B69E210A3A1BDC003C02F2 /* ofApp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4B69E1E0A3A1BDC003C02F2 /* ofApp.cpp */; }; 22 | E4C2424710CC5A17004149E2 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C2424410CC5A17004149E2 /* AppKit.framework */; }; 23 | E4C2424810CC5A17004149E2 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C2424510CC5A17004149E2 /* Cocoa.framework */; }; 24 | E4C2424910CC5A17004149E2 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C2424610CC5A17004149E2 /* IOKit.framework */; }; 25 | E4EB6799138ADC1D00A09F29 /* GLUT.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BBAB23BE13894E4700AA2426 /* GLUT.framework */; }; 26 | E7E077E515D3B63C0020DFD4 /* CoreVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E7E077E415D3B63C0020DFD4 /* CoreVideo.framework */; }; 27 | E7E077E815D3B6510020DFD4 /* QTKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E7E077E715D3B6510020DFD4 /* QTKit.framework */; }; 28 | E7F985F815E0DEA3003869B5 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E7F985F515E0DE99003869B5 /* Accelerate.framework */; }; 29 | /* End PBXBuildFile section */ 30 | 31 | /* Begin PBXContainerItemProxy section */ 32 | E4328147138ABC890047C5CB /* PBXContainerItemProxy */ = { 33 | isa = PBXContainerItemProxy; 34 | containerPortal = E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */; 35 | proxyType = 2; 36 | remoteGlobalIDString = E4B27C1510CBEB8E00536013; 37 | remoteInfo = openFrameworks; 38 | }; 39 | E4EEB9AB138B136A00A80321 /* PBXContainerItemProxy */ = { 40 | isa = PBXContainerItemProxy; 41 | containerPortal = E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */; 42 | proxyType = 1; 43 | remoteGlobalIDString = E4B27C1410CBEB8E00536013; 44 | remoteInfo = openFrameworks; 45 | }; 46 | /* End PBXContainerItemProxy section */ 47 | 48 | /* Begin PBXCopyFilesBuildPhase section */ 49 | E4C2427710CC5ABF004149E2 /* CopyFiles */ = { 50 | isa = PBXCopyFilesBuildPhase; 51 | buildActionMask = 2147483647; 52 | dstPath = ""; 53 | dstSubfolderSpec = 10; 54 | files = ( 55 | BBAB23CB13894F3D00AA2426 /* GLUT.framework in CopyFiles */, 56 | ); 57 | runOnlyForDeploymentPostprocessing = 0; 58 | }; 59 | /* End PBXCopyFilesBuildPhase section */ 60 | 61 | /* Begin PBXFileReference section */ 62 | 0190812EA96FA79079A4F708 /* Tools.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Tools.hpp; path = "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources/Tools.hpp"; sourceTree = SOURCE_ROOT; }; 63 | 0A45FE374225665EBBB699E3 /* Planewaves.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Planewaves.hpp; path = "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources/Planewaves.hpp"; sourceTree = SOURCE_ROOT; }; 64 | 0E138C871AD5293300C04EA1 /* ofxHoaCoord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxHoaCoord.h; sourceTree = ""; }; 65 | 0EAE9D241AC5CB4B00CB6594 /* ofxHoaOscillator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxHoaOscillator.h; sourceTree = ""; }; 66 | 3299B5F0527C1EE60A9B4C50 /* Math.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Math.hpp; path = "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources/Math.hpp"; sourceTree = SOURCE_ROOT; }; 67 | 3E10A66180CDBA7C978E1764 /* Harmonics.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Harmonics.hpp; path = "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources/Harmonics.hpp"; sourceTree = SOURCE_ROOT; }; 68 | 4B2C781104A15351EB6993D3 /* Defs.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Defs.hpp; path = "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources/Defs.hpp"; sourceTree = SOURCE_ROOT; }; 69 | 545BDBFC9096189763C6B4C6 /* Decoder.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Decoder.hpp; path = "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources/Decoder.hpp"; sourceTree = SOURCE_ROOT; }; 70 | 59C4E10826F056938BFB0863 /* Voronoi.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Voronoi.hpp; path = "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources/Voronoi.hpp"; sourceTree = SOURCE_ROOT; }; 71 | 6218AD7D60658E29858270CC /* Hoa.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Hoa.hpp; path = "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources/Hoa.hpp"; sourceTree = SOURCE_ROOT; }; 72 | 68911386ED64AB7157CB0170 /* Meter.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Meter.hpp; path = "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources/Meter.hpp"; sourceTree = SOURCE_ROOT; }; 73 | 8E01F0E0DD6DDC8F64E44B95 /* Optim.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Optim.hpp; path = "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources/Optim.hpp"; sourceTree = SOURCE_ROOT; }; 74 | 986635D9DE756DBCE99B3E84 /* Projector.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Projector.hpp; path = "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources/Projector.hpp"; sourceTree = SOURCE_ROOT; }; 75 | 991FF2A6D62B1D5D32BB2A00 /* Vector.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Vector.hpp; path = "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources/Vector.hpp"; sourceTree = SOURCE_ROOT; }; 76 | 9BA40B344E0B90C2DF810852 /* Wider.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Wider.hpp; path = "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources/Wider.hpp"; sourceTree = SOURCE_ROOT; }; 77 | 9EAE7A59BEF09EBFF1F8C8FA /* Scope.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Scope.hpp; path = "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources/Scope.hpp"; sourceTree = SOURCE_ROOT; }; 78 | A02F5BEC7DEA69D4FE8EEECA /* Encoder.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Encoder.hpp; path = "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources/Encoder.hpp"; sourceTree = SOURCE_ROOT; }; 79 | B69054F80248A5BE18B83BD7 /* Recomposer.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Recomposer.hpp; path = "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources/Recomposer.hpp"; sourceTree = SOURCE_ROOT; }; 80 | BBAB23BE13894E4700AA2426 /* GLUT.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLUT.framework; path = ../../../libs/glut/lib/osx/GLUT.framework; sourceTree = ""; }; 81 | DAE3733BC0D94D61D1965743 /* Signal.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Signal.hpp; path = "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources/Signal.hpp"; sourceTree = SOURCE_ROOT; }; 82 | DB322A043499860A25CDCA44 /* ofxHoa.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = ofxHoa.h; path = ../../../addons/ofxHoa/src/ofxHoa.h; sourceTree = SOURCE_ROOT; }; 83 | E1C8CE47C1D3CBF3DA4026C5 /* Rotate.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Rotate.hpp; path = "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources/Rotate.hpp"; sourceTree = SOURCE_ROOT; }; 84 | E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = openFrameworksLib.xcodeproj; path = ../../../libs/openFrameworksCompiled/project/osx/openFrameworksLib.xcodeproj; sourceTree = SOURCE_ROOT; }; 85 | E45BE9710E8CC7DD009D7055 /* AGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AGL.framework; path = /System/Library/Frameworks/AGL.framework; sourceTree = ""; }; 86 | E45BE9720E8CC7DD009D7055 /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = /System/Library/Frameworks/ApplicationServices.framework; sourceTree = ""; }; 87 | E45BE9730E8CC7DD009D7055 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = /System/Library/Frameworks/AudioToolbox.framework; sourceTree = ""; }; 88 | E45BE9750E8CC7DD009D7055 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = /System/Library/Frameworks/CoreAudio.framework; sourceTree = ""; }; 89 | E45BE9760E8CC7DD009D7055 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = ""; }; 90 | E45BE9770E8CC7DD009D7055 /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = /System/Library/Frameworks/CoreServices.framework; sourceTree = ""; }; 91 | E45BE9790E8CC7DD009D7055 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = ""; }; 92 | E45BE97A0E8CC7DD009D7055 /* QuickTime.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuickTime.framework; path = /System/Library/Frameworks/QuickTime.framework; sourceTree = ""; }; 93 | E4B69B5B0A3A1756003C02F2 /* exampleOneSourceDebug.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = exampleOneSourceDebug.app; sourceTree = BUILT_PRODUCTS_DIR; }; 94 | E4B69E1D0A3A1BDC003C02F2 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = main.cpp; path = src/main.cpp; sourceTree = SOURCE_ROOT; }; 95 | E4B69E1E0A3A1BDC003C02F2 /* ofApp.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = ofApp.cpp; path = src/ofApp.cpp; sourceTree = SOURCE_ROOT; }; 96 | E4B69E1F0A3A1BDC003C02F2 /* ofApp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ofApp.h; path = src/ofApp.h; sourceTree = SOURCE_ROOT; }; 97 | E4B6FCAD0C3E899E008CF71C /* openFrameworks-Info.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.xml; path = "openFrameworks-Info.plist"; sourceTree = ""; }; 98 | E4C2424410CC5A17004149E2 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; 99 | E4C2424510CC5A17004149E2 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; 100 | E4C2424610CC5A17004149E2 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = ""; }; 101 | E4EB691F138AFCF100A09F29 /* CoreOF.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = CoreOF.xcconfig; path = ../../../libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig; sourceTree = SOURCE_ROOT; }; 102 | E4EB6923138AFD0F00A09F29 /* Project.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Project.xcconfig; sourceTree = ""; }; 103 | E7E077E415D3B63C0020DFD4 /* CoreVideo.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreVideo.framework; path = /System/Library/Frameworks/CoreVideo.framework; sourceTree = ""; }; 104 | E7E077E715D3B6510020DFD4 /* QTKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QTKit.framework; path = /System/Library/Frameworks/QTKit.framework; sourceTree = ""; }; 105 | E7F985F515E0DE99003869B5 /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = /System/Library/Frameworks/Accelerate.framework; sourceTree = ""; }; 106 | F2D72A3D4988BFB868B1F36C /* Source.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Source.hpp; path = "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources/Source.hpp"; sourceTree = SOURCE_ROOT; }; 107 | /* End PBXFileReference section */ 108 | 109 | /* Begin PBXFrameworksBuildPhase section */ 110 | E4B69B590A3A1756003C02F2 /* Frameworks */ = { 111 | isa = PBXFrameworksBuildPhase; 112 | buildActionMask = 2147483647; 113 | files = ( 114 | E7F985F815E0DEA3003869B5 /* Accelerate.framework in Frameworks */, 115 | E7E077E815D3B6510020DFD4 /* QTKit.framework in Frameworks */, 116 | E4EB6799138ADC1D00A09F29 /* GLUT.framework in Frameworks */, 117 | E4328149138ABC9F0047C5CB /* openFrameworksDebug.a in Frameworks */, 118 | E45BE97B0E8CC7DD009D7055 /* AGL.framework in Frameworks */, 119 | E45BE97C0E8CC7DD009D7055 /* ApplicationServices.framework in Frameworks */, 120 | E45BE97D0E8CC7DD009D7055 /* AudioToolbox.framework in Frameworks */, 121 | E45BE97F0E8CC7DD009D7055 /* CoreAudio.framework in Frameworks */, 122 | E45BE9800E8CC7DD009D7055 /* CoreFoundation.framework in Frameworks */, 123 | E45BE9810E8CC7DD009D7055 /* CoreServices.framework in Frameworks */, 124 | E45BE9830E8CC7DD009D7055 /* OpenGL.framework in Frameworks */, 125 | E45BE9840E8CC7DD009D7055 /* QuickTime.framework in Frameworks */, 126 | E4C2424710CC5A17004149E2 /* AppKit.framework in Frameworks */, 127 | E4C2424810CC5A17004149E2 /* Cocoa.framework in Frameworks */, 128 | E4C2424910CC5A17004149E2 /* IOKit.framework in Frameworks */, 129 | E7E077E515D3B63C0020DFD4 /* CoreVideo.framework in Frameworks */, 130 | ); 131 | runOnlyForDeploymentPostprocessing = 0; 132 | }; 133 | /* End PBXFrameworksBuildPhase section */ 134 | 135 | /* Begin PBXGroup section */ 136 | 0EAE9D221AC5CB4B00CB6594 /* ofxHoaClasses */ = { 137 | isa = PBXGroup; 138 | children = ( 139 | 0E138C871AD5293300C04EA1 /* ofxHoaCoord.h */, 140 | 0EAE9D241AC5CB4B00CB6594 /* ofxHoaOscillator.h */, 141 | ); 142 | name = ofxHoaClasses; 143 | path = ../libs/ofxHoaClasses; 144 | sourceTree = ""; 145 | }; 146 | 3A0BDB552FAB59EE9DCD8F0F /* Sources */ = { 147 | isa = PBXGroup; 148 | children = ( 149 | 545BDBFC9096189763C6B4C6 /* Decoder.hpp */, 150 | 4B2C781104A15351EB6993D3 /* Defs.hpp */, 151 | A02F5BEC7DEA69D4FE8EEECA /* Encoder.hpp */, 152 | 3E10A66180CDBA7C978E1764 /* Harmonics.hpp */, 153 | 6218AD7D60658E29858270CC /* Hoa.hpp */, 154 | 3299B5F0527C1EE60A9B4C50 /* Math.hpp */, 155 | 68911386ED64AB7157CB0170 /* Meter.hpp */, 156 | 8E01F0E0DD6DDC8F64E44B95 /* Optim.hpp */, 157 | 0A45FE374225665EBBB699E3 /* Planewaves.hpp */, 158 | 986635D9DE756DBCE99B3E84 /* Projector.hpp */, 159 | B69054F80248A5BE18B83BD7 /* Recomposer.hpp */, 160 | E1C8CE47C1D3CBF3DA4026C5 /* Rotate.hpp */, 161 | 9EAE7A59BEF09EBFF1F8C8FA /* Scope.hpp */, 162 | DAE3733BC0D94D61D1965743 /* Signal.hpp */, 163 | F2D72A3D4988BFB868B1F36C /* Source.hpp */, 164 | 0190812EA96FA79079A4F708 /* Tools.hpp */, 165 | 991FF2A6D62B1D5D32BB2A00 /* Vector.hpp */, 166 | 59C4E10826F056938BFB0863 /* Voronoi.hpp */, 167 | 9BA40B344E0B90C2DF810852 /* Wider.hpp */, 168 | ); 169 | name = Sources; 170 | sourceTree = ""; 171 | }; 172 | 4E7DE452E86C5BB2BA0427B9 /* HoaLibrary-Light */ = { 173 | isa = PBXGroup; 174 | children = ( 175 | 3A0BDB552FAB59EE9DCD8F0F /* Sources */, 176 | ); 177 | name = "HoaLibrary-Light"; 178 | sourceTree = SOURCE_ROOT; 179 | }; 180 | BB4B014C10F69532006C3DED /* addons */ = { 181 | isa = PBXGroup; 182 | children = ( 183 | D1E2A30752E5944A6D5E1363 /* ofxHoa */, 184 | ); 185 | name = addons; 186 | sourceTree = ""; 187 | }; 188 | BBAB23C913894ECA00AA2426 /* system frameworks */ = { 189 | isa = PBXGroup; 190 | children = ( 191 | E7F985F515E0DE99003869B5 /* Accelerate.framework */, 192 | E4C2424410CC5A17004149E2 /* AppKit.framework */, 193 | E4C2424510CC5A17004149E2 /* Cocoa.framework */, 194 | E4C2424610CC5A17004149E2 /* IOKit.framework */, 195 | E45BE9710E8CC7DD009D7055 /* AGL.framework */, 196 | E45BE9720E8CC7DD009D7055 /* ApplicationServices.framework */, 197 | E45BE9730E8CC7DD009D7055 /* AudioToolbox.framework */, 198 | E45BE9750E8CC7DD009D7055 /* CoreAudio.framework */, 199 | E45BE9760E8CC7DD009D7055 /* CoreFoundation.framework */, 200 | E45BE9770E8CC7DD009D7055 /* CoreServices.framework */, 201 | E45BE9790E8CC7DD009D7055 /* OpenGL.framework */, 202 | E45BE97A0E8CC7DD009D7055 /* QuickTime.framework */, 203 | E7E077E415D3B63C0020DFD4 /* CoreVideo.framework */, 204 | E7E077E715D3B6510020DFD4 /* QTKit.framework */, 205 | ); 206 | name = "system frameworks"; 207 | sourceTree = ""; 208 | }; 209 | BBAB23CA13894EDB00AA2426 /* 3rd party frameworks */ = { 210 | isa = PBXGroup; 211 | children = ( 212 | BBAB23BE13894E4700AA2426 /* GLUT.framework */, 213 | ); 214 | name = "3rd party frameworks"; 215 | sourceTree = ""; 216 | }; 217 | C05C1669BA18F088D4BE708A /* src */ = { 218 | isa = PBXGroup; 219 | children = ( 220 | DB322A043499860A25CDCA44 /* ofxHoa.h */, 221 | ); 222 | name = src; 223 | sourceTree = ""; 224 | }; 225 | D1E2A30752E5944A6D5E1363 /* ofxHoa */ = { 226 | isa = PBXGroup; 227 | children = ( 228 | C05C1669BA18F088D4BE708A /* src */, 229 | EA9BA723784D775C9A86500D /* libs */, 230 | ); 231 | name = ofxHoa; 232 | sourceTree = ""; 233 | }; 234 | E4328144138ABC890047C5CB /* Products */ = { 235 | isa = PBXGroup; 236 | children = ( 237 | E4328148138ABC890047C5CB /* openFrameworksDebug.a */, 238 | ); 239 | name = Products; 240 | sourceTree = ""; 241 | }; 242 | E45BE5980E8CC70C009D7055 /* frameworks */ = { 243 | isa = PBXGroup; 244 | children = ( 245 | BBAB23CA13894EDB00AA2426 /* 3rd party frameworks */, 246 | BBAB23C913894ECA00AA2426 /* system frameworks */, 247 | ); 248 | name = frameworks; 249 | sourceTree = ""; 250 | }; 251 | E4B69B4A0A3A1720003C02F2 = { 252 | isa = PBXGroup; 253 | children = ( 254 | E4B6FCAD0C3E899E008CF71C /* openFrameworks-Info.plist */, 255 | E4EB6923138AFD0F00A09F29 /* Project.xcconfig */, 256 | E4B69E1C0A3A1BDC003C02F2 /* src */, 257 | E4EEC9E9138DF44700A80321 /* openFrameworks */, 258 | BB4B014C10F69532006C3DED /* addons */, 259 | E45BE5980E8CC70C009D7055 /* frameworks */, 260 | E4B69B5B0A3A1756003C02F2 /* exampleOneSourceDebug.app */, 261 | ); 262 | sourceTree = ""; 263 | }; 264 | E4B69E1C0A3A1BDC003C02F2 /* src */ = { 265 | isa = PBXGroup; 266 | children = ( 267 | E4B69E1D0A3A1BDC003C02F2 /* main.cpp */, 268 | E4B69E1E0A3A1BDC003C02F2 /* ofApp.cpp */, 269 | E4B69E1F0A3A1BDC003C02F2 /* ofApp.h */, 270 | ); 271 | path = src; 272 | sourceTree = SOURCE_ROOT; 273 | }; 274 | E4EEC9E9138DF44700A80321 /* openFrameworks */ = { 275 | isa = PBXGroup; 276 | children = ( 277 | E4EB691F138AFCF100A09F29 /* CoreOF.xcconfig */, 278 | E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */, 279 | ); 280 | name = openFrameworks; 281 | sourceTree = ""; 282 | }; 283 | EA9BA723784D775C9A86500D /* libs */ = { 284 | isa = PBXGroup; 285 | children = ( 286 | 0EAE9D221AC5CB4B00CB6594 /* ofxHoaClasses */, 287 | 4E7DE452E86C5BB2BA0427B9 /* HoaLibrary-Light */, 288 | ); 289 | name = libs; 290 | sourceTree = ""; 291 | }; 292 | /* End PBXGroup section */ 293 | 294 | /* Begin PBXNativeTarget section */ 295 | E4B69B5A0A3A1756003C02F2 /* exampleOneSource */ = { 296 | isa = PBXNativeTarget; 297 | buildConfigurationList = E4B69B5F0A3A1757003C02F2 /* Build configuration list for PBXNativeTarget "exampleOneSource" */; 298 | buildPhases = ( 299 | E4B69B580A3A1756003C02F2 /* Sources */, 300 | E4B69B590A3A1756003C02F2 /* Frameworks */, 301 | E4B6FFFD0C3F9AB9008CF71C /* ShellScript */, 302 | E4C2427710CC5ABF004149E2 /* CopyFiles */, 303 | ); 304 | buildRules = ( 305 | ); 306 | dependencies = ( 307 | E4EEB9AC138B136A00A80321 /* PBXTargetDependency */, 308 | ); 309 | name = exampleOneSource; 310 | productName = myOFApp; 311 | productReference = E4B69B5B0A3A1756003C02F2 /* exampleOneSourceDebug.app */; 312 | productType = "com.apple.product-type.application"; 313 | }; 314 | /* End PBXNativeTarget section */ 315 | 316 | /* Begin PBXProject section */ 317 | E4B69B4C0A3A1720003C02F2 /* Project object */ = { 318 | isa = PBXProject; 319 | attributes = { 320 | LastUpgradeCheck = 0460; 321 | }; 322 | buildConfigurationList = E4B69B4D0A3A1720003C02F2 /* Build configuration list for PBXProject "exampleOneSource" */; 323 | compatibilityVersion = "Xcode 3.2"; 324 | developmentRegion = English; 325 | hasScannedForEncodings = 0; 326 | knownRegions = ( 327 | English, 328 | Japanese, 329 | French, 330 | German, 331 | ); 332 | mainGroup = E4B69B4A0A3A1720003C02F2; 333 | productRefGroup = E4B69B4A0A3A1720003C02F2; 334 | projectDirPath = ""; 335 | projectReferences = ( 336 | { 337 | ProductGroup = E4328144138ABC890047C5CB /* Products */; 338 | ProjectRef = E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */; 339 | }, 340 | ); 341 | projectRoot = ""; 342 | targets = ( 343 | E4B69B5A0A3A1756003C02F2 /* exampleOneSource */, 344 | ); 345 | }; 346 | /* End PBXProject section */ 347 | 348 | /* Begin PBXReferenceProxy section */ 349 | E4328148138ABC890047C5CB /* openFrameworksDebug.a */ = { 350 | isa = PBXReferenceProxy; 351 | fileType = archive.ar; 352 | path = openFrameworksDebug.a; 353 | remoteRef = E4328147138ABC890047C5CB /* PBXContainerItemProxy */; 354 | sourceTree = BUILT_PRODUCTS_DIR; 355 | }; 356 | /* End PBXReferenceProxy section */ 357 | 358 | /* Begin PBXShellScriptBuildPhase section */ 359 | E4B6FFFD0C3F9AB9008CF71C /* ShellScript */ = { 360 | isa = PBXShellScriptBuildPhase; 361 | buildActionMask = 2147483647; 362 | files = ( 363 | ); 364 | inputPaths = ( 365 | ); 366 | outputPaths = ( 367 | ); 368 | runOnlyForDeploymentPostprocessing = 0; 369 | shellPath = /bin/sh; 370 | shellScript = "cp -f ../../../libs/fmodex/lib/osx/libfmodex.dylib \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/MacOS/libfmodex.dylib\"; install_name_tool -change ./libfmodex.dylib @executable_path/libfmodex.dylib \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/MacOS/$PRODUCT_NAME\";\nmkdir -p \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/Resources/\"\ncp -f \"$ICON_FILE\" \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/Resources/\"\n"; 371 | }; 372 | /* End PBXShellScriptBuildPhase section */ 373 | 374 | /* Begin PBXSourcesBuildPhase section */ 375 | E4B69B580A3A1756003C02F2 /* Sources */ = { 376 | isa = PBXSourcesBuildPhase; 377 | buildActionMask = 2147483647; 378 | files = ( 379 | E4B69E200A3A1BDC003C02F2 /* main.cpp in Sources */, 380 | E4B69E210A3A1BDC003C02F2 /* ofApp.cpp in Sources */, 381 | ); 382 | runOnlyForDeploymentPostprocessing = 0; 383 | }; 384 | /* End PBXSourcesBuildPhase section */ 385 | 386 | /* Begin PBXTargetDependency section */ 387 | E4EEB9AC138B136A00A80321 /* PBXTargetDependency */ = { 388 | isa = PBXTargetDependency; 389 | name = openFrameworks; 390 | targetProxy = E4EEB9AB138B136A00A80321 /* PBXContainerItemProxy */; 391 | }; 392 | /* End PBXTargetDependency section */ 393 | 394 | /* Begin XCBuildConfiguration section */ 395 | E4B69B4E0A3A1720003C02F2 /* Debug */ = { 396 | isa = XCBuildConfiguration; 397 | baseConfigurationReference = E4EB6923138AFD0F00A09F29 /* Project.xcconfig */; 398 | buildSettings = { 399 | ARCHS = "$(NATIVE_ARCH)"; 400 | CONFIGURATION_BUILD_DIR = "$(SRCROOT)/bin/"; 401 | COPY_PHASE_STRIP = NO; 402 | DEAD_CODE_STRIPPING = YES; 403 | GCC_AUTO_VECTORIZATION = YES; 404 | GCC_ENABLE_SSE3_EXTENSIONS = YES; 405 | GCC_ENABLE_SUPPLEMENTAL_SSE3_INSTRUCTIONS = YES; 406 | GCC_INLINES_ARE_PRIVATE_EXTERN = NO; 407 | GCC_OPTIMIZATION_LEVEL = 0; 408 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 409 | GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = YES; 410 | GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = NO; 411 | GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = NO; 412 | GCC_WARN_UNINITIALIZED_AUTOS = NO; 413 | GCC_WARN_UNUSED_VALUE = NO; 414 | GCC_WARN_UNUSED_VARIABLE = NO; 415 | HEADER_SEARCH_PATHS = ( 416 | "$(OF_CORE_HEADERS)", 417 | ../../../addons/ofxHoa/libs, 418 | "../../../addons/ofxHoa/libs/HoaLibrary-Light", 419 | "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources", 420 | ../../../addons/ofxHoa/libs/ofxHoaOsc, 421 | ../../../addons/ofxHoa/src, 422 | ); 423 | MACOSX_DEPLOYMENT_TARGET = 10.6; 424 | OTHER_CPLUSPLUSFLAGS = ( 425 | "-D__MACOSX_CORE__", 426 | "-lpthread", 427 | "-mtune=native", 428 | ); 429 | SDKROOT = macosx; 430 | }; 431 | name = Debug; 432 | }; 433 | E4B69B4F0A3A1720003C02F2 /* Release */ = { 434 | isa = XCBuildConfiguration; 435 | baseConfigurationReference = E4EB6923138AFD0F00A09F29 /* Project.xcconfig */; 436 | buildSettings = { 437 | ARCHS = "$(NATIVE_ARCH)"; 438 | CONFIGURATION_BUILD_DIR = "$(SRCROOT)/bin/"; 439 | COPY_PHASE_STRIP = YES; 440 | DEAD_CODE_STRIPPING = YES; 441 | GCC_AUTO_VECTORIZATION = YES; 442 | GCC_ENABLE_SSE3_EXTENSIONS = YES; 443 | GCC_ENABLE_SUPPLEMENTAL_SSE3_INSTRUCTIONS = YES; 444 | GCC_INLINES_ARE_PRIVATE_EXTERN = NO; 445 | GCC_OPTIMIZATION_LEVEL = 3; 446 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 447 | GCC_UNROLL_LOOPS = YES; 448 | GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = YES; 449 | GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = NO; 450 | GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = NO; 451 | GCC_WARN_UNINITIALIZED_AUTOS = NO; 452 | GCC_WARN_UNUSED_VALUE = NO; 453 | GCC_WARN_UNUSED_VARIABLE = NO; 454 | HEADER_SEARCH_PATHS = ( 455 | "$(OF_CORE_HEADERS)", 456 | ../../../addons/ofxHoa/libs, 457 | "../../../addons/ofxHoa/libs/HoaLibrary-Light", 458 | "../../../addons/ofxHoa/libs/HoaLibrary-Light/Sources", 459 | ../../../addons/ofxHoa/libs/ofxHoaOsc, 460 | ../../../addons/ofxHoa/src, 461 | ); 462 | MACOSX_DEPLOYMENT_TARGET = 10.6; 463 | OTHER_CPLUSPLUSFLAGS = ( 464 | "-D__MACOSX_CORE__", 465 | "-lpthread", 466 | "-mtune=native", 467 | ); 468 | SDKROOT = macosx; 469 | }; 470 | name = Release; 471 | }; 472 | E4B69B600A3A1757003C02F2 /* Debug */ = { 473 | isa = XCBuildConfiguration; 474 | buildSettings = { 475 | COMBINE_HIDPI_IMAGES = YES; 476 | COPY_PHASE_STRIP = NO; 477 | FRAMEWORK_SEARCH_PATHS = ( 478 | "$(inherited)", 479 | "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", 480 | ); 481 | FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../../libs/glut/lib/osx\""; 482 | GCC_DYNAMIC_NO_PIC = NO; 483 | GCC_GENERATE_DEBUGGING_SYMBOLS = YES; 484 | GCC_MODEL_TUNING = NONE; 485 | ICON = "$(ICON_NAME_DEBUG)"; 486 | ICON_FILE = "$(ICON_FILE_PATH)$(ICON)"; 487 | INFOPLIST_FILE = "openFrameworks-Info.plist"; 488 | INSTALL_PATH = "$(HOME)/Applications"; 489 | LIBRARY_SEARCH_PATHS = ( 490 | "$(inherited)", 491 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", 492 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", 493 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", 494 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_4)", 495 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_5)", 496 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_6)", 497 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_7)", 498 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_8)", 499 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_9)", 500 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_10)", 501 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_11)", 502 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_12)", 503 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_13)", 504 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_14)", 505 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_15)", 506 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", 507 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", 508 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_7)", 509 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_8)", 510 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_9)", 511 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_10)", 512 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_11)", 513 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_12)", 514 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_13)", 515 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_16)", 516 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_17)", 517 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_18)", 518 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_19)", 519 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_20)", 520 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_21)", 521 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_22)", 522 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_23)", 523 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_24)", 524 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_25)", 525 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_26)", 526 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_27)", 527 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_28)", 528 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_29)", 529 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_30)", 530 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_31)", 531 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_32)", 532 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_33)", 533 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_34)", 534 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_35)", 535 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_36)", 536 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_37)", 537 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_38)", 538 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_39)", 539 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_40)", 540 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_41)", 541 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_42)", 542 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_43)", 543 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_44)", 544 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_45)", 545 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_46)", 546 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_47)", 547 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_48)", 548 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_49)", 549 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_50)", 550 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_51)", 551 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_52)", 552 | ); 553 | PRODUCT_NAME = "$(TARGET_NAME)Debug"; 554 | WRAPPER_EXTENSION = app; 555 | }; 556 | name = Debug; 557 | }; 558 | E4B69B610A3A1757003C02F2 /* Release */ = { 559 | isa = XCBuildConfiguration; 560 | buildSettings = { 561 | COMBINE_HIDPI_IMAGES = YES; 562 | COPY_PHASE_STRIP = YES; 563 | FRAMEWORK_SEARCH_PATHS = ( 564 | "$(inherited)", 565 | "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", 566 | ); 567 | FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../../libs/glut/lib/osx\""; 568 | GCC_GENERATE_DEBUGGING_SYMBOLS = YES; 569 | GCC_MODEL_TUNING = NONE; 570 | ICON = "$(ICON_NAME_RELEASE)"; 571 | ICON_FILE = "$(ICON_FILE_PATH)$(ICON)"; 572 | INFOPLIST_FILE = "openFrameworks-Info.plist"; 573 | INSTALL_PATH = "$(HOME)/Applications"; 574 | LIBRARY_SEARCH_PATHS = ( 575 | "$(inherited)", 576 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", 577 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", 578 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", 579 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_4)", 580 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_5)", 581 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_6)", 582 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_7)", 583 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_8)", 584 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_9)", 585 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_10)", 586 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_11)", 587 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_12)", 588 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_13)", 589 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_14)", 590 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_15)", 591 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", 592 | "$(LIBRARY_SEARCH_PATHS_QUOTED_1)", 593 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", 594 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_7)", 595 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_8)", 596 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_9)", 597 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_10)", 598 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_11)", 599 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_12)", 600 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_13)", 601 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_16)", 602 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_17)", 603 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_18)", 604 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_19)", 605 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_20)", 606 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_21)", 607 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_22)", 608 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_23)", 609 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_24)", 610 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_25)", 611 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_26)", 612 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_27)", 613 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_28)", 614 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_29)", 615 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_30)", 616 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_31)", 617 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_32)", 618 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_33)", 619 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_34)", 620 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_35)", 621 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_36)", 622 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_37)", 623 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_38)", 624 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_39)", 625 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_40)", 626 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_41)", 627 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_42)", 628 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_43)", 629 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_44)", 630 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_45)", 631 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_46)", 632 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_47)", 633 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_48)", 634 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_49)", 635 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_50)", 636 | "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_51)", 637 | ); 638 | PRODUCT_NAME = "$(TARGET_NAME)"; 639 | WRAPPER_EXTENSION = app; 640 | }; 641 | name = Release; 642 | }; 643 | /* End XCBuildConfiguration section */ 644 | 645 | /* Begin XCConfigurationList section */ 646 | E4B69B4D0A3A1720003C02F2 /* Build configuration list for PBXProject "exampleOneSource" */ = { 647 | isa = XCConfigurationList; 648 | buildConfigurations = ( 649 | E4B69B4E0A3A1720003C02F2 /* Debug */, 650 | E4B69B4F0A3A1720003C02F2 /* Release */, 651 | ); 652 | defaultConfigurationIsVisible = 0; 653 | defaultConfigurationName = Release; 654 | }; 655 | E4B69B5F0A3A1757003C02F2 /* Build configuration list for PBXNativeTarget "exampleOneSource" */ = { 656 | isa = XCConfigurationList; 657 | buildConfigurations = ( 658 | E4B69B600A3A1757003C02F2 /* Debug */, 659 | E4B69B610A3A1757003C02F2 /* Release */, 660 | ); 661 | defaultConfigurationIsVisible = 0; 662 | defaultConfigurationName = Release; 663 | }; 664 | /* End XCConfigurationList section */ 665 | }; 666 | rootObject = E4B69B4C0A3A1720003C02F2 /* Project object */; 667 | } 668 | -------------------------------------------------------------------------------- /exampleOneSource/exampleOneSource.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /exampleOneSource/exampleOneSource.xcodeproj/project.xcworkspace/xcshareddata/exampleOneSource.xccheckout: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDESourceControlProjectFavoriteDictionaryKey 6 | 7 | IDESourceControlProjectIdentifier 8 | 419C1A59-E633-4974-9034-C6345423A833 9 | IDESourceControlProjectName 10 | exampleOneSource 11 | IDESourceControlProjectOriginsDictionary 12 | 13 | 2FFF2BF69BB0C863F897CA4B5613034382303A01 14 | https://github.com/CICM/ofxHoa 15 | 5B4B1295257546E4C2809C4B80513989C199CD34 16 | https://github.com/CICM/HoaLibrary-Light.git 17 | 18 | IDESourceControlProjectPath 19 | exampleOneSource/exampleOneSource.xcodeproj 20 | IDESourceControlProjectRelativeInstallPathDictionary 21 | 22 | 2FFF2BF69BB0C863F897CA4B5613034382303A01 23 | ../../.. 24 | 5B4B1295257546E4C2809C4B80513989C199CD34 25 | ../../..libs/HoaLibrary-Light 26 | 27 | IDESourceControlProjectURL 28 | https://github.com/CICM/ofxHoa 29 | IDESourceControlProjectVersion 30 | 111 31 | IDESourceControlProjectWCCIdentifier 32 | 2FFF2BF69BB0C863F897CA4B5613034382303A01 33 | IDESourceControlProjectWCConfigurations 34 | 35 | 36 | IDESourceControlRepositoryExtensionIdentifierKey 37 | public.vcs.git 38 | IDESourceControlWCCIdentifierKey 39 | 5B4B1295257546E4C2809C4B80513989C199CD34 40 | IDESourceControlWCCName 41 | HoaLibrary-Light 42 | 43 | 44 | IDESourceControlRepositoryExtensionIdentifierKey 45 | public.vcs.git 46 | IDESourceControlWCCIdentifierKey 47 | 2FFF2BF69BB0C863F897CA4B5613034382303A01 48 | IDESourceControlWCCName 49 | ofxHoa 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /exampleOneSource/exampleOneSource.xcodeproj/project.xcworkspace/xcuserdata/claudiocabral.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CICM/ofxHoa/930fbbd20e5db3622951549edd4d743a118528a5/exampleOneSource/exampleOneSource.xcodeproj/project.xcworkspace/xcuserdata/claudiocabral.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /exampleOneSource/exampleOneSource.xcodeproj/xcshareddata/xcschemes/exampleOneSource Debug.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 51 | 52 | 58 | 59 | 60 | 61 | 62 | 63 | 69 | 70 | 76 | 77 | 78 | 79 | 81 | 82 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /exampleOneSource/exampleOneSource.xcodeproj/xcshareddata/xcschemes/exampleOneSource Release.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 51 | 52 | 58 | 59 | 60 | 61 | 62 | 63 | 69 | 70 | 76 | 77 | 78 | 79 | 81 | 82 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /exampleOneSource/exampleOneSource.xcodeproj/xcuserdata/claudiocabral.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /exampleOneSource/exampleOneSource.xcodeproj/xcuserdata/claudiocabral.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SuppressBuildableAutocreation 6 | 7 | E4B69B5A0A3A1756003C02F2 8 | 9 | primary 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /exampleOneSource/openFrameworks-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | cc.openFrameworks.ofapp 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundlePackageType 14 | APPL 15 | CFBundleSignature 16 | ???? 17 | CFBundleVersion 18 | 1.0 19 | CFBundleIconFile 20 | ${ICON} 21 | 22 | 23 | -------------------------------------------------------------------------------- /exampleOneSource/src/main.cpp: -------------------------------------------------------------------------------- 1 | #include "ofMain.h" 2 | #include "ofApp.h" 3 | 4 | //======================================================================== 5 | int main( ){ 6 | ofSetupOpenGL(1024,768,OF_WINDOW); // <-------- setup the GL context 7 | 8 | // this kicks off the running of my app 9 | // can be OF_WINDOW or OF_FULLSCREEN 10 | // pass in width and height too: 11 | ofRunApp(new ofApp()); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /exampleOneSource/src/ofApp.cpp: -------------------------------------------------------------------------------- 1 | #include "ofApp.h" 2 | #include 3 | 4 | using namespace hoa; 5 | 6 | //-------------------------------------------------------------- 7 | void ofApp::setup() { 8 | // uncomment this line to print avaliable audio devices 9 | // ofSoundStreamListDevices(); 10 | 11 | // use this function to set the audio device if necessary 12 | // soundStream.setDeviceId(5); 13 | 14 | /*assign audio parameters 15 | number of outputs must be >= order*2+1 for decoder on regular mode*/ 16 | nOutputs = 2; 17 | nInputs = 0; 18 | sampleRate = 48000; 19 | bufferSize = 1024; 20 | nBuffers = (nInputs + nOutputs) * 2; 21 | 22 | // initialize input to 0 23 | input = 0; 24 | 25 | // setup test oscilator 26 | myOsc.setup(sampleRate, OF_SQUARE_WAVE); 27 | myOsc.setFrequency(330); 28 | myEnv.setup(sampleRate, OF_SAWTOOTH_WAVE); 29 | myEnv.setFrequency(-2); 30 | 31 | // setup hoa 32 | order = 3; 33 | // create the spherical harmonics buffer, it must have order*2+1 values for 34 | // 2 dimensions 35 | harmonicsBuffer.resize(order * 2 + 1); 36 | 37 | // the encoder calculates the spherical harmonics 38 | hoaEncoder = make_unique::DC>(order); 39 | 40 | /* the decoder translates the harmonics into audio signals for output. 41 | the number of minimum ouput channels for regular mode = order*2+1 42 | smaller values may be used, but the resulting sound won't be as expected 43 | for small differences ( 5 or 6 instead of 7 speakers) irregular mode may 44 | be used */ 45 | hoaDecoder = make_unique::Regular>(order, nOutputs); 46 | 47 | // binaural mode set for use with headphones 48 | // hoaDecoder = new Decoder::Binaural(order); 49 | 50 | /* rendering is computed in relation to the speaker's angles 51 | they maybe set with the function hoaDecoder->setPlanewaveAzimuth(const 52 | ulong index, 53 | const float azimuth); */ 54 | hoaDecoder->computeRendering(bufferSize); 55 | 56 | /*the optim allows to acount for displacements in ideal speaker position 57 | "basic" works as a bypass. 58 | "inphase" gand "maxre" should be used if the ambsionics circle/sphere is 59 | not perfect */ 60 | hoaOptim = make_unique::Basic>(order); 61 | // hoaOptim = new Optim::InPhase(order); 62 | 63 | // ofxHoaCoord used to set source position and void clicks in audio 64 | hoaCoord = make_unique>(1); 65 | 66 | // set the position in screen that'll represent the center of the speaker 67 | // circle and it's radius 68 | circleCenter = ofVec3f(ofGetWidth() / 2, ofGetHeight() / 2); 69 | circleRadius = 100; 70 | hoaCoord->setAmbisonicCenter(circleCenter); 71 | hoaCoord->setAmbisonicRadius(circleRadius); 72 | 73 | // set the ramp for interpolation in milliseconds 74 | hoaCoord->setRamp(50, sampleRate); 75 | 76 | // functions to set the position of the encoded sound source 77 | // far away to avoid clicks in the begining 78 | hoaCoord->setSourcePositionDirect(0, ofVec3f(10000, 10000)); 79 | 80 | // make a prettier circle 81 | ofSetCircleResolution(50); 82 | 83 | // initialize soundstream 84 | soundStream.setup(this, nOutputs, nInputs, sampleRate, bufferSize, 85 | nBuffers); 86 | } 87 | 88 | //-------------------------------------------------------------- 89 | void ofApp::update() { 90 | // change source position 91 | sourcePosition = ofVec3f(mouseX, mouseY); 92 | hoaCoord->setSourcePosition(0, sourcePosition); 93 | } 94 | 95 | //-------------------------------------------------------------- 96 | void ofApp::draw() { 97 | ofBackgroundGradient(ofColor::gold, ofColor::black); 98 | ofSetColor(ofColor::crimson); 99 | ofFill(); 100 | ofDrawCircle(sourcePosition, 10); 101 | ofNoFill(); 102 | ofDrawCircle(circleCenter, circleRadius); 103 | } 104 | 105 | //-------------------------------------------------------------- 106 | void ofApp::keyPressed(int key) {} 107 | 108 | //-------------------------------------------------------------- 109 | void ofApp::keyReleased(int key) {} 110 | 111 | //-------------------------------------------------------------- 112 | void ofApp::mouseMoved(int x, int y) {} 113 | 114 | //-------------------------------------------------------------- 115 | void ofApp::mouseDragged(int x, int y, int button) {} 116 | 117 | //-------------------------------------------------------------- 118 | void ofApp::mousePressed(int x, int y, int button) {} 119 | 120 | //-------------------------------------------------------------- 121 | void ofApp::mouseReleased(int x, int y, int button) {} 122 | 123 | //-------------------------------------------------------------- 124 | void ofApp::windowResized(int w, int h) {} 125 | 126 | //-------------------------------------------------------------- 127 | void ofApp::gotMessage(ofMessage msg) {} 128 | 129 | //-------------------------------------------------------------- 130 | void ofApp::dragEvent(ofDragInfo dragInfo) {} 131 | 132 | void ofApp::audioOut(float* output, int bufferSize, int nChannels) { 133 | for (int i = 0; i < bufferSize; i++) { 134 | // calculate smoothed values 135 | hoaCoord->process(); 136 | 137 | // create audio input. the last multiplication is the volume (should be 138 | // between 0 and 1) 139 | input = myOsc.tick() * (myEnv.tick() + 1) * 0.05; 140 | // set smoothed current radius and azimuth 141 | hoaEncoder->setRadius(hoaCoord->getRadius(0)); 142 | hoaEncoder->setAzimuth(hoaCoord->getAzimuth(0)); 143 | 144 | // create the spherical harmonics 145 | hoaEncoder->process(&input, &harmonicsBuffer[0]); 146 | 147 | // process the harmonics with optim 148 | hoaOptim->process(&harmonicsBuffer[0], &harmonicsBuffer[0]); 149 | 150 | // decode the harmonics; audio treatements are possible in between these 151 | // steps 152 | hoaDecoder->process(&harmonicsBuffer[0], output + i * nChannels); 153 | } 154 | } 155 | -------------------------------------------------------------------------------- /exampleOneSource/src/ofApp.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "ofMain.h" 4 | #include "ofxHoa.h" 5 | #include 6 | 7 | 8 | class ofApp : public ofBaseApp{ 9 | 10 | 11 | public: 12 | void setup(); 13 | void update(); 14 | void draw(); 15 | 16 | void keyPressed(int key); 17 | void keyReleased(int key); 18 | void mouseMoved(int x, int y ); 19 | void mouseDragged(int x, int y, int button); 20 | void mousePressed(int x, int y, int button); 21 | void mouseReleased(int x, int y, int button); 22 | void windowResized(int w, int h); 23 | void dragEvent(ofDragInfo dragInfo); 24 | void gotMessage(ofMessage msg); 25 | 26 | void audioOut(float * output, int bufferSize, int nChannels); 27 | 28 | hoa::ofxHoaOscillator myOsc, myEnv; 29 | 30 | // most hoa classes require arguments for initilization, so we create 31 | // them as pointers 32 | unique_ptr::DC> hoaEncoder; 33 | unique_ptr > hoaDecoder; 34 | unique_ptr > hoaOptim; 35 | unique_ptr > hoaCoord; 36 | ofSoundStream soundStream; 37 | 38 | float input; 39 | vector harmonicsBuffer; 40 | 41 | 42 | int order; 43 | int nInputs, nOutputs; 44 | int bufferSize; 45 | int sampleRate; 46 | int nBuffers; 47 | 48 | float circleRadius; 49 | ofVec3f circleCenter; 50 | ofVec3f sourcePosition; 51 | }; 52 | -------------------------------------------------------------------------------- /libs/ofxHoaClasses/ofxHoaCoord.h: -------------------------------------------------------------------------------- 1 | /* 2 | // Copyright (c) 2012-2015 Eliott Paris, Julien Colafrancesco, Pierre Guillot & Claudio Cabral, CICM, Universite Paris 8. 3 | // For information on usage and redistribution, and for a DISCLAIMER OF ALL 4 | // WARRANTIES, see the file, "LICENSE.txt," in this distribution. 5 | */ 6 | #ifndef __OFX_HOA_COORD__ 7 | #define __OFX_HOA_COORD__ 8 | 9 | #include "../HoaLibrary-light/Sources/Hoa.hpp" 10 | #include "ofMain.h" 11 | 12 | namespace hoa { 13 | template class ofxHoaCoord{ 14 | 15 | private: 16 | 17 | PolarLines _line; 18 | ofVec3f _ambisonicCenter; 19 | ofVec3f _lookingAt; 20 | T * _lineBuffer; 21 | int _numberOfSources; 22 | 23 | public: 24 | 25 | ofxHoaCoord(int numberOfSources); 26 | ~ofxHoaCoord(); 27 | 28 | inline void setSourcePosition(int index, ofVec3f position); 29 | inline void setSourcePosition(int index, float x, float y, float z); 30 | inline void setSourcePositionDirect(int index, ofVec3f position); 31 | inline void setSourcePositionDirect(int index, float x, float y, float z); 32 | void setAmbisonicCenter(ofVec3f position); 33 | void setAmbisonicRadius(float radius); 34 | 35 | void setRamp(int samples); 36 | void setRamp(int milliseconds, int sampleRate); 37 | 38 | inline T getAzimuth(int index); 39 | inline T getElevation(int index); 40 | inline T getRadius(int index); 41 | 42 | inline void process(); 43 | 44 | 45 | }; 46 | 47 | 48 | template class ofxHoaCoord{ 49 | 50 | private: 51 | 52 | PolarLines _line; 53 | ofVec3f _ambisonicCenter; 54 | float _ambisonicRadius; 55 | T * _lineBuffer; 56 | int _numberOfSources; 57 | 58 | public: 59 | 60 | ofxHoaCoord(int numberOfSources) : _line(numberOfSources){ 61 | 62 | _lineBuffer = new T[numberOfSources*2]; 63 | memset(_lineBuffer, 0, sizeof(T)*numberOfSources*2); 64 | _numberOfSources = numberOfSources; 65 | 66 | for(int i = 0; i(){ 73 | 74 | if (_lineBuffer) { 75 | delete [] _lineBuffer; 76 | } 77 | } 78 | 79 | inline void setSourcePosition(int index, ofVec3f position){ 80 | 81 | _line.setRadius(index, Math::radius(position.x - _ambisonicCenter.x, 82 | (ofGetHeight() - position.y) - _ambisonicCenter.y) * 1.0/_ambisonicRadius); 83 | 84 | _line.setAzimuth(index, Math::azimuth(position.x - _ambisonicCenter.x, 85 | (ofGetHeight() - position.y) - _ambisonicCenter.y)); 86 | } 87 | 88 | inline void setSourcePosition(int index, float x, float y, float z = 0.){ 89 | 90 | _line.setRadius(index, Math::radius(x - _ambisonicCenter.x, 91 | (ofGetHeight() - y) - _ambisonicCenter.y) * 1.0/_ambisonicRadius); 92 | 93 | _line.setAzimuth(index, Math::azimuth(x - _ambisonicCenter.x, 94 | (ofGetHeight() - y) - _ambisonicCenter.y)); 95 | 96 | } 97 | 98 | inline void setSourcePositionDirect(int index, ofVec3f position){ 99 | _line.setRadiusDirect(index, Math::radius(position.x - _ambisonicCenter.x, 100 | (ofGetHeight() - position.y) - _ambisonicCenter.y) * 1.0/_ambisonicRadius); 101 | 102 | _line.setAzimuthDirect(index, Math::azimuth(position.x - _ambisonicCenter.x, 103 | (ofGetHeight() - position.y) - _ambisonicCenter.y)); 104 | } 105 | 106 | inline void setSourcePositionDirect(int index, float x, float y, float z = 0.){ 107 | 108 | _line.setRadiusDirect(index, Math::radius(x - _ambisonicCenter.x, 109 | (ofGetHeight() - y) - _ambisonicCenter.y) * 1.0/_ambisonicRadius); 110 | 111 | _line.setAzimuthDirect(index, Math::azimuth(x - _ambisonicCenter.x, 112 | (ofGetHeight() - y) - _ambisonicCenter.y)); 113 | } 114 | 115 | void setAmbisonicCenter(ofVec3f position){ 116 | _ambisonicCenter = position; 117 | } 118 | 119 | void setAmbisonicRadius(float radius){ 120 | _ambisonicRadius = radius; 121 | } 122 | 123 | void setRamp(int samples){ 124 | _line.setRamp(samples); 125 | } 126 | void setRamp(int milliseconds, int sampleRate){ 127 | _line.setRamp(sampleRate/1000 * milliseconds); 128 | } 129 | 130 | inline T getRadius(int index){ 131 | return _lineBuffer[index]; 132 | } 133 | 134 | inline T getAzimuth(int index){ 135 | return _lineBuffer[index + _numberOfSources]; 136 | } 137 | 138 | inline void process(){ 139 | _line.process(_lineBuffer); 140 | } 141 | 142 | 143 | }; 144 | 145 | template class ofxHoaCoord{ 146 | 147 | private: 148 | 149 | PolarLines _line; 150 | ofVec3f _ambisonicCenter; 151 | float _ambisonicRadius; 152 | T * _lineBuffer; 153 | int _numberOfSources; 154 | 155 | public: 156 | 157 | ofxHoaCoord(int numberOfSources) : _line(numberOfSources){ 158 | 159 | _lineBuffer = new T[numberOfSources*3]; 160 | memset(_lineBuffer, 0, sizeof(T)*numberOfSources*3); 161 | _numberOfSources = numberOfSources; 162 | 163 | for(int i = 0; i(){ 171 | 172 | if (_lineBuffer) { 173 | delete [] _lineBuffer; 174 | } 175 | } 176 | 177 | inline void setSourcePosition(int index, ofVec3f position){ 178 | 179 | _line.setRadius(index, Math::radius(position.x - _ambisonicCenter.x, 180 | (ofGetHeight() - position.y) - _ambisonicCenter.y, 181 | _ambisonicCenter.z - position.z) * 1.0/_ambisonicRadius); 182 | 183 | _line.setAzimuth(index, Math::azimuth(position.x - _ambisonicCenter.x, 184 | _ambisonicCenter.z - position.z, 185 | (ofGetHeight() - position.y) - _ambisonicCenter.y)); 186 | 187 | _line.setElevation(index, Math::elevation(position.x - _ambisonicCenter.x, 188 | _ambisonicCenter.z - position.z, 189 | (ofGetHeight() - position.y) - _ambisonicCenter.y)); 190 | } 191 | 192 | inline void setSourcePosition(int index, float x, float y, float z){ 193 | 194 | _line.setRadius(index, Math::radius(x - _ambisonicCenter.x, 195 | (ofGetHeight() - y) - _ambisonicCenter.y, 196 | _ambisonicCenter.z - z) * 1.0/_ambisonicRadius); 197 | 198 | _line.setAzimuth(index, Math::azimuth(x - _ambisonicCenter.x, 199 | _ambisonicCenter.z - z, 200 | (ofGetHeight() - y) - _ambisonicCenter.y)); 201 | 202 | _line.setElevation(index, Math::elevation(x - _ambisonicCenter.x, 203 | _ambisonicCenter.z - z, 204 | (ofGetHeight() - y) - _ambisonicCenter.y)); 205 | } 206 | 207 | inline void setSourcePositionDirect(int index, ofVec3f position){ 208 | 209 | _line.setRadiusDirect(index, Math::radius(position.x - _ambisonicCenter.x, 210 | (ofGetHeight() - position.y) - _ambisonicCenter.y, 211 | _ambisonicCenter.z - position.z) * 1.0/_ambisonicRadius); 212 | 213 | _line.setAzimuthDirect(index, Math::azimuth(position.x - _ambisonicCenter.x, 214 | _ambisonicCenter.z - position.z, 215 | (ofGetHeight() - position.y) - _ambisonicCenter.y)); 216 | 217 | _line.setElevationDirect(index, Math::elevation(position.x - _ambisonicCenter.x, 218 | _ambisonicCenter.z - position.z, 219 | (ofGetHeight() - position.y) - _ambisonicCenter.y)); 220 | } 221 | 222 | inline void setSourcePositionDirect(int index, float x, float y, float z){ 223 | 224 | _line.setRadiusDirect(index, Math::radius(x - _ambisonicCenter.x, 225 | (ofGetHeight() - y) - _ambisonicCenter.y, 226 | _ambisonicCenter.z - z) * 1.0/_ambisonicRadius); 227 | 228 | _line.setAzimuthDirect(index, Math::azimuth(x - _ambisonicCenter.x, 229 | _ambisonicCenter.z - z, 230 | (ofGetHeight() - y) - _ambisonicCenter.y)); 231 | 232 | _line.setElevationDirect(index, Math::elevation(x - _ambisonicCenter.x, 233 | _ambisonicCenter.z - z, 234 | (ofGetHeight() - y) - _ambisonicCenter.y)); 235 | } 236 | 237 | void setAmbisonicCenter(ofVec3f position){ 238 | _ambisonicCenter = position; 239 | } 240 | 241 | void setAmbisonicRadius(float radius){ 242 | _ambisonicRadius = radius; 243 | } 244 | 245 | void setRamp(int samples){ 246 | _line.setRamp(samples); 247 | } 248 | void setRamp(int milliseconds, int sampleRate){ 249 | _line.setRamp(sampleRate/1000 * milliseconds); 250 | } 251 | 252 | inline T getRadius(int index){ 253 | return _lineBuffer[index]; 254 | } 255 | 256 | inline T getAzimuth(int index){ 257 | return _lineBuffer[index + _numberOfSources]; 258 | } 259 | 260 | inline T getElevation(int index){ 261 | return _lineBuffer[index + _numberOfSources*2]; 262 | } 263 | 264 | inline void process(){ 265 | _line.process(_lineBuffer); 266 | } 267 | 268 | }; 269 | } 270 | 271 | 272 | #endif 273 | 274 | 275 | -------------------------------------------------------------------------------- /libs/ofxHoaClasses/ofxHoaOscillator.h: -------------------------------------------------------------------------------- 1 | // 2 | // ofxHoaOscillator.h 3 | // For information on usage and redistribution, and for a DISCLAIMER OF ALL 4 | // WARRANTIES, see the file, "LICENSE.txt," in this distribution. 5 | // Created by Claudio Cabral on 21/03/15. 6 | // 7 | 8 | 9 | #ifndef __OFX_HOA_OSCILLATOR__ 10 | #define __OFX_HOA_OSCILLATOR__ 11 | 12 | #define OSC_BUFFER_SIZE 4096 13 | 14 | #include "../HoaLibrary-light/Sources/Hoa.hpp" 15 | 16 | 17 | namespace hoa { 18 | 19 | enum oscType { OF_SINE_WAVE = 0, 20 | OF_TRIANGLE_WAVE = 1, 21 | OF_SAWTOOTH_WAVE = 2, 22 | OF_SQUARE_WAVE = 3, 23 | OF_PHASOR_WAVE = 4 }; 24 | 25 | template class ofxHoaOscillator { 26 | 27 | private: 28 | 29 | T _freq; 30 | 31 | T _phase; 32 | 33 | T _step; 34 | 35 | int _index; 36 | 37 | T _buffer[OSC_BUFFER_SIZE]; 38 | 39 | void normalize(); 40 | 41 | public: 42 | 43 | ofxHoaOscillator(); 44 | ~ofxHoaOscillator(); 45 | 46 | void setup(int sampleRate, oscType waveform, bool normalize = true); 47 | inline void setFrequency(T frequency); 48 | inline void setPhase(T phase); 49 | 50 | inline T tick(); 51 | 52 | }; 53 | } 54 | 55 | using namespace hoa; 56 | 57 | template 58 | ofxHoaOscillator::ofxHoaOscillator(){ 59 | 60 | _phase = 0; 61 | _index = 0; 62 | _freq = 440; 63 | memset(_buffer, 0, sizeof(T)*OSC_BUFFER_SIZE); 64 | _step = OSC_BUFFER_SIZE/44100.0; 65 | 66 | 67 | } 68 | template 69 | ofxHoaOscillator::~ofxHoaOscillator(){ 70 | 71 | } 72 | //SETUP 73 | template 74 | void ofxHoaOscillator::setup(int sampleRate, oscType waveform, bool normalize) 75 | { 76 | 77 | _step = sampleRate; 78 | _step = OSC_BUFFER_SIZE/_step; 79 | 80 | for (int i = 0; i::normalize(); 130 | } 131 | 132 | template 133 | T ofxHoaOscillator::tick() { 134 | 135 | _phase += _step * _freq; 136 | 137 | if (_phase>=OSC_BUFFER_SIZE) _phase-=OSC_BUFFER_SIZE; 138 | 139 | if (_phase<0) _phase+=OSC_BUFFER_SIZE; 140 | 141 | _index = floor(_phase); 142 | 143 | if (_index < OSC_BUFFER_SIZE-1) { 144 | return _buffer[_index] * (1.0 - (_phase - _index)) + _buffer[_index+1] * (_phase - _index); 145 | } 146 | else if (_index == OSC_BUFFER_SIZE-1) { 147 | return _buffer[_index] * (1.0 - (_phase - _index)) + _buffer[0] * (_phase - _index); 148 | } 149 | 150 | else { return 0;} 151 | } 152 | 153 | template 154 | void ofxHoaOscillator::setFrequency(T frequency) { 155 | 156 | _freq = frequency; 157 | } 158 | 159 | template 160 | void ofxHoaOscillator::setPhase(T phase) { 161 | 162 | _phase = phase * OSC_BUFFER_SIZE; 163 | } 164 | 165 | template 166 | void ofxHoaOscillator::normalize(){ 167 | float factor = 1.0; 168 | 169 | for (int i = 0; ifactor) factor = abs(_buffer[i]); 171 | } 172 | for (int i = 0; iGNU Public License. If you'd like to avoid the restrictions of the GPL and use Hoa Library for a closed-source product, you contact the CICM. 2 | 3 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /ofxaddons_thumbnail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CICM/ofxHoa/930fbbd20e5db3622951549edd4d743a118528a5/ofxaddons_thumbnail.png -------------------------------------------------------------------------------- /src/ofxHoa.h: -------------------------------------------------------------------------------- 1 | /* 2 | // Copyright (c) 2012-2015 Eliott Paris, Julien Colafrancesco, Pierre Guillot & Claudio Cabral, CICM, Universite Paris 8. 3 | // For information on usage and redistribution, and for a DISCLAIMER OF ALL 4 | // WARRANTIES, see the file, "LICENSE.txt," in this distribution. 5 | */ 6 | #ifndef DEF_OFXHOA_LIBRARY_LIGHT 7 | #define DEF_OFXHOA_LIBRARY_LIGHT 8 | 9 | #include "../libs/HoaLibrary-Light/Sources/Hoa.hpp" 10 | 11 | //FILES EXCLUVE TO THE oF RELEASE 12 | #include "../libs/ofxHoaClasses/ofxHoaOscillator.h" 13 | #include "../libs/ofxHoaClasses/ofxHoaCoord.h" 14 | 15 | #endif 16 | 17 | 18 | --------------------------------------------------------------------------------