diff options
Diffstat (limited to 'ofxMaxim/ofxMaximiPhone0062Example')
22 files changed, 0 insertions, 4440 deletions
diff --git a/ofxMaxim/ofxMaximiPhone0062Example/bin/data/Default.png b/ofxMaxim/ofxMaximiPhone0062Example/bin/data/Default.png Binary files differdeleted file mode 100644 index e782497..0000000 --- a/ofxMaxim/ofxMaximiPhone0062Example/bin/data/Default.png +++ /dev/null diff --git a/ofxMaxim/ofxMaximiPhone0062Example/bin/data/Icon.png b/ofxMaxim/ofxMaximiPhone0062Example/bin/data/Icon.png Binary files differdeleted file mode 100644 index 2d926c8..0000000 --- a/ofxMaxim/ofxMaximiPhone0062Example/bin/data/Icon.png +++ /dev/null diff --git a/ofxMaxim/ofxMaximiPhone0062Example/bin/data/beat2.wav b/ofxMaxim/ofxMaximiPhone0062Example/bin/data/beat2.wav Binary files differdeleted file mode 100644 index c71cee6..0000000 --- a/ofxMaxim/ofxMaximiPhone0062Example/bin/data/beat2.wav +++ /dev/null diff --git a/ofxMaxim/ofxMaximiPhone0062Example/bin/data/remoteatmos.wav b/ofxMaxim/ofxMaximiPhone0062Example/bin/data/remoteatmos.wav Binary files differdeleted file mode 100644 index 87e3cdf..0000000 --- a/ofxMaxim/ofxMaximiPhone0062Example/bin/data/remoteatmos.wav +++ /dev/null diff --git a/ofxMaxim/ofxMaximiPhone0062Example/iPhoneEmptyExample.xcodeproj/project.pbxproj b/ofxMaxim/ofxMaximiPhone0062Example/iPhoneEmptyExample.xcodeproj/project.pbxproj deleted file mode 100755 index dd49a5e..0000000 --- a/ofxMaxim/ofxMaximiPhone0062Example/iPhoneEmptyExample.xcodeproj/project.pbxproj +++ /dev/null @@ -1,909 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 45; - objects = { - -/* Begin PBXBuildFile section */ - 00EF442D12BAD6C000FF6AA4 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00EF442C12BAD6C000FF6AA4 /* Accelerate.framework */; }; - 00FA16C112B98DFC000A9A42 /* install.xml in Resources */ = {isa = PBXBuildFile; fileRef = 00FA16B712B98DFC000A9A42 /* install.xml */; }; - 00FA16C412B98DFC000A9A42 /* maximilian.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00FA16BD12B98DFC000A9A42 /* maximilian.cpp */; }; - 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; - 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; - 288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* CoreGraphics.framework */; }; - 5326AEA810A23A0500278DE6 /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5326AEA710A23A0500278DE6 /* CoreLocation.framework */; }; - 53F323EB10A20EDB00E0DAE4 /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 53F323EA10A20EDB00E0DAE4 /* OpenAL.framework */; }; - 5E25689710ED26CC00A9501C /* CppUnit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E25687010ED26CC00A9501C /* CppUnit.a */; }; - 5E25689810ED26CC00A9501C /* PocoFoundation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E25687110ED26CC00A9501C /* PocoFoundation.a */; }; - 5E25689910ED26CC00A9501C /* PocoNet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E25687210ED26CC00A9501C /* PocoNet.a */; }; - 5E25689A10ED26CC00A9501C /* PocoUtil.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E25687310ED26CC00A9501C /* PocoUtil.a */; }; - 5E25689B10ED26CC00A9501C /* PocoXML.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E25687410ED26CC00A9501C /* PocoXML.a */; }; - 5E2568A410ED26CD00A9501C /* CppUnit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E25688010ED26CC00A9501C /* CppUnit.a */; }; - 5E2568A510ED26CD00A9501C /* PocoFoundation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E25688110ED26CC00A9501C /* PocoFoundation.a */; }; - 5E2568A610ED26CD00A9501C /* PocoNet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E25688210ED26CC00A9501C /* PocoNet.a */; }; - 5E2568A710ED26CD00A9501C /* PocoUtil.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E25688310ED26CC00A9501C /* PocoUtil.a */; }; - 5E2568A810ED26CD00A9501C /* PocoXML.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E25688410ED26CC00A9501C /* PocoXML.a */; }; - BB16EBD20F2B2A9500518274 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BB16EBD10F2B2A9500518274 /* OpenGLES.framework */; }; - BB16EBD90F2B2AB500518274 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BB16EBD80F2B2AB500518274 /* QuartzCore.framework */; }; - BB24DD8F10DA77E000E9C588 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = BB24DD8C10DA77E000E9C588 /* Default.png */; }; - BB24DD9010DA77E000E9C588 /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = BB24DD8D10DA77E000E9C588 /* Icon.png */; }; - BB24DDCA10DA781C00E9C588 /* ofxiphone-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = BB24DDC910DA781C00E9C588 /* ofxiphone-Info.plist */; }; - BBE5EAB80F49AD8400F28951 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BBE5EAB70F49AD8400F28951 /* AudioToolbox.framework */; }; - E434BF6512477ED500452519 /* freeimage-iphone.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E434BF6412477ED500452519 /* freeimage-iphone.a */; }; - E434BF6812477EDE00452519 /* freeimage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E434BF6712477EDE00452519 /* freeimage.a */; }; - E434BF7312477FBA00452519 /* freetype-iphone.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E434BF7212477FBA00452519 /* freetype-iphone.a */; }; - E496D5B11252C8210098A2B3 /* glu-iphone.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E496D5AF1252C8210098A2B3 /* glu-iphone.a */; }; - E496D5B21252C8210098A2B3 /* glu.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E496D5B01252C8210098A2B3 /* glu.a */; }; - E49BCC7A12554CD6009F19D0 /* libofxiPhone_macosx_Debug.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E49BCC5012554B6A009F19D0 /* libofxiPhone_macosx_Debug.a */; }; - E4A8229F12560AFE002F86A2 /* freetype.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E4A8229E12560AFE002F86A2 /* freetype.a */; }; - E4A823A412561BE3002F86A2 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4A823A312561BE3002F86A2 /* CoreGraphics.framework */; }; - E4D8936E11527B74007E1F53 /* main.mm in Sources */ = {isa = PBXBuildFile; fileRef = E4D8936B11527B74007E1F53 /* main.mm */; }; - E4D8936F11527B74007E1F53 /* testApp.mm in Sources */ = {isa = PBXBuildFile; fileRef = E4D8936D11527B74007E1F53 /* testApp.mm */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - E49BCC4F12554B6A009F19D0 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = E49BCC4812554B69009F19D0 /* iPhone+OF Lib.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = BB24DED610DA7A3F00E9C588; - remoteInfo = "iPhone+OF Static Library"; - }; - E49BCC6D12554C6C009F19D0 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = E49BCC4812554B69009F19D0 /* iPhone+OF Lib.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = BB24DE5C10DA7A3F00E9C588; - remoteInfo = "iPhone+OF Static Library"; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 00EF442C12BAD6C000FF6AA4 /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = /System/Library/Frameworks/Accelerate.framework; sourceTree = "<absolute>"; }; - 00FA16B712B98DFC000A9A42 /* install.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = install.xml; sourceTree = "<group>"; }; - 00FA16BD12B98DFC000A9A42 /* maximilian.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = maximilian.cpp; sourceTree = "<group>"; }; - 00FA16BE12B98DFC000A9A42 /* maximilian.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = maximilian.h; sourceTree = "<group>"; }; - 00FA16C012B98DFC000A9A42 /* ofxMaxim.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxMaxim.h; sourceTree = "<group>"; }; - 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - 1D6058910D05DD3D006BFB54 /* emptyExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = emptyExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; - 288765FC0DF74451002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; - 32CA4F630368D1EE00C91783 /* iPhone_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iPhone_Prefix.pch; sourceTree = "<group>"; }; - 5326AEA710A23A0500278DE6 /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = System/Library/Frameworks/CoreLocation.framework; sourceTree = SDKROOT; }; - 53F323EA10A20EDB00E0DAE4 /* OpenAL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenAL.framework; path = System/Library/Frameworks/OpenAL.framework; sourceTree = SDKROOT; }; - 5E25687010ED26CC00A9501C /* CppUnit.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = CppUnit.a; path = ../../../libs/poco/lib/iphone/CppUnit.a; sourceTree = SOURCE_ROOT; }; - 5E25687110ED26CC00A9501C /* PocoFoundation.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = PocoFoundation.a; path = ../../../libs/poco/lib/iphone/PocoFoundation.a; sourceTree = SOURCE_ROOT; }; - 5E25687210ED26CC00A9501C /* PocoNet.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = PocoNet.a; path = ../../../libs/poco/lib/iphone/PocoNet.a; sourceTree = SOURCE_ROOT; }; - 5E25687310ED26CC00A9501C /* PocoUtil.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = PocoUtil.a; path = ../../../libs/poco/lib/iphone/PocoUtil.a; sourceTree = SOURCE_ROOT; }; - 5E25687410ED26CC00A9501C /* PocoXML.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = PocoXML.a; path = ../../../libs/poco/lib/iphone/PocoXML.a; sourceTree = SOURCE_ROOT; }; - 5E25688010ED26CC00A9501C /* CppUnit.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = CppUnit.a; path = ../../../libs/poco/lib/osx/CppUnit.a; sourceTree = SOURCE_ROOT; }; - 5E25688110ED26CC00A9501C /* PocoFoundation.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = PocoFoundation.a; path = ../../../libs/poco/lib/osx/PocoFoundation.a; sourceTree = SOURCE_ROOT; }; - 5E25688210ED26CC00A9501C /* PocoNet.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = PocoNet.a; path = ../../../libs/poco/lib/osx/PocoNet.a; sourceTree = SOURCE_ROOT; }; - 5E25688310ED26CC00A9501C /* PocoUtil.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = PocoUtil.a; path = ../../../libs/poco/lib/osx/PocoUtil.a; sourceTree = SOURCE_ROOT; }; - 5E25688410ED26CC00A9501C /* PocoXML.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = PocoXML.a; path = ../../../libs/poco/lib/osx/PocoXML.a; sourceTree = SOURCE_ROOT; }; - BB16EBD10F2B2A9500518274 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; - BB16EBD80F2B2AB500518274 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; - BB24DD8C10DA77E000E9C588 /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = "<group>"; }; - BB24DD8D10DA77E000E9C588 /* Icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Icon.png; sourceTree = "<group>"; }; - BB24DDC910DA781C00E9C588 /* ofxiphone-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "ofxiphone-Info.plist"; sourceTree = "<group>"; }; - BB24DDCF10DA784F00E9C588 /* FreeImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FreeImage.h; sourceTree = "<group>"; }; - BB24DDE210DA785000E9C588 /* ftconfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ftconfig.h; sourceTree = "<group>"; }; - BB24DDE310DA785000E9C588 /* ftheader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ftheader.h; sourceTree = "<group>"; }; - BB24DDE410DA785000E9C588 /* ftmodule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ftmodule.h; sourceTree = "<group>"; }; - BB24DDE510DA785000E9C588 /* ftoption.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ftoption.h; sourceTree = "<group>"; }; - BB24DDE610DA785000E9C588 /* ftstdlib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ftstdlib.h; sourceTree = "<group>"; }; - BB24DDE710DA785000E9C588 /* freetype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = freetype.h; sourceTree = "<group>"; }; - BB24DDE810DA785000E9C588 /* ftbbox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ftbbox.h; sourceTree = "<group>"; }; - BB24DDE910DA785000E9C588 /* ftbdf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ftbdf.h; sourceTree = "<group>"; }; - BB24DDEA10DA785000E9C588 /* ftbitmap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ftbitmap.h; sourceTree = "<group>"; }; - BB24DDEB10DA785000E9C588 /* ftcache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ftcache.h; sourceTree = "<group>"; }; - BB24DDEC10DA785000E9C588 /* ftchapters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ftchapters.h; sourceTree = "<group>"; }; - BB24DDED10DA785000E9C588 /* fterrdef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fterrdef.h; sourceTree = "<group>"; }; - BB24DDEE10DA785000E9C588 /* fterrors.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fterrors.h; sourceTree = "<group>"; }; - BB24DDEF10DA785000E9C588 /* ftgasp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ftgasp.h; sourceTree = "<group>"; }; - BB24DDF010DA785000E9C588 /* ftglyph.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ftglyph.h; sourceTree = "<group>"; }; - BB24DDF110DA785000E9C588 /* ftgxval.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ftgxval.h; sourceTree = "<group>"; }; - BB24DDF210DA785000E9C588 /* ftgzip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ftgzip.h; sourceTree = "<group>"; }; - BB24DDF310DA785000E9C588 /* ftimage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ftimage.h; sourceTree = "<group>"; }; - BB24DDF410DA785000E9C588 /* ftincrem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ftincrem.h; sourceTree = "<group>"; }; - BB24DDF510DA785000E9C588 /* ftlcdfil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ftlcdfil.h; sourceTree = "<group>"; }; - BB24DDF610DA785000E9C588 /* ftlist.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ftlist.h; sourceTree = "<group>"; }; - BB24DDF710DA785000E9C588 /* ftlzw.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ftlzw.h; sourceTree = "<group>"; }; - BB24DDF810DA785000E9C588 /* ftmac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ftmac.h; sourceTree = "<group>"; }; - BB24DDF910DA785000E9C588 /* ftmm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ftmm.h; sourceTree = "<group>"; }; - BB24DDFA10DA785000E9C588 /* ftmodapi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ftmodapi.h; sourceTree = "<group>"; }; - BB24DDFB10DA785000E9C588 /* ftmoderr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ftmoderr.h; sourceTree = "<group>"; }; - BB24DDFC10DA785000E9C588 /* ftotval.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ftotval.h; sourceTree = "<group>"; }; - BB24DDFD10DA785000E9C588 /* ftoutln.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ftoutln.h; sourceTree = "<group>"; }; - BB24DDFE10DA785000E9C588 /* ftpfr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ftpfr.h; sourceTree = "<group>"; }; - BB24DDFF10DA785000E9C588 /* ftrender.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ftrender.h; sourceTree = "<group>"; }; - BB24DE0010DA785000E9C588 /* ftsizes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ftsizes.h; sourceTree = "<group>"; }; - BB24DE0110DA785000E9C588 /* ftsnames.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ftsnames.h; sourceTree = "<group>"; }; - BB24DE0210DA785000E9C588 /* ftstroke.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ftstroke.h; sourceTree = "<group>"; }; - BB24DE0310DA785000E9C588 /* ftsynth.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ftsynth.h; sourceTree = "<group>"; }; - BB24DE0410DA785000E9C588 /* ftsystem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ftsystem.h; sourceTree = "<group>"; }; - BB24DE0510DA785000E9C588 /* fttrigon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fttrigon.h; sourceTree = "<group>"; }; - BB24DE0610DA785000E9C588 /* fttypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fttypes.h; sourceTree = "<group>"; }; - BB24DE0710DA785000E9C588 /* ftwinfnt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ftwinfnt.h; sourceTree = "<group>"; }; - BB24DE0810DA785000E9C588 /* ftxf86.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ftxf86.h; sourceTree = "<group>"; }; - BB24DE0910DA785000E9C588 /* t1tables.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = t1tables.h; sourceTree = "<group>"; }; - BB24DE0A10DA785000E9C588 /* ttnameid.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ttnameid.h; sourceTree = "<group>"; }; - BB24DE0B10DA785000E9C588 /* tttables.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tttables.h; sourceTree = "<group>"; }; - BB24DE0C10DA785000E9C588 /* tttags.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tttags.h; sourceTree = "<group>"; }; - BB24DE0D10DA785000E9C588 /* ttunpat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ttunpat.h; sourceTree = "<group>"; }; - BB24DE0E10DA785000E9C588 /* ft2build.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ft2build.h; sourceTree = "<group>"; }; - BBE5EAB70F49AD8400F28951 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; - DA7851271105C039007EFC90 /* glu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glu.h; sourceTree = "<group>"; }; - DA7851281105C039007EFC90 /* gluos.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gluos.h; sourceTree = "<group>"; }; - E434BF6412477ED500452519 /* freeimage-iphone.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "freeimage-iphone.a"; path = "../../../libs/FreeImage/lib/iphone/freeimage-iphone.a"; sourceTree = SOURCE_ROOT; }; - E434BF6712477EDE00452519 /* freeimage.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = freeimage.a; path = ../../../libs/FreeImage/lib/osx/freeimage.a; sourceTree = SOURCE_ROOT; }; - E434BF7212477FBA00452519 /* freetype-iphone.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "freetype-iphone.a"; path = "../../../libs/freetype/lib/iphone/freetype-iphone.a"; sourceTree = SOURCE_ROOT; }; - E496D5AF1252C8210098A2B3 /* glu-iphone.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "glu-iphone.a"; path = "../../../libs/glu/lib/iphone/glu-iphone.a"; sourceTree = SOURCE_ROOT; }; - E496D5B01252C8210098A2B3 /* glu.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = glu.a; path = ../../../libs/glu/lib/iphone/glu.a; sourceTree = SOURCE_ROOT; }; - E49BCC4812554B69009F19D0 /* iPhone+OF Lib.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "iPhone+OF Lib.xcodeproj"; path = "../../../libs/openFrameworksCompiled/project/iphone/iPhone+OF Lib.xcodeproj"; sourceTree = SOURCE_ROOT; }; - E4A8229E12560AFE002F86A2 /* freetype.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = freetype.a; path = ../../../libs/freetype/lib/osx/freetype.a; sourceTree = SOURCE_ROOT; }; - E4A823A312561BE3002F86A2 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; - E4D8936B11527B74007E1F53 /* main.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = main.mm; path = src/main.mm; sourceTree = SOURCE_ROOT; }; - E4D8936C11527B74007E1F53 /* testApp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = testApp.h; path = src/testApp.h; sourceTree = SOURCE_ROOT; }; - E4D8936D11527B74007E1F53 /* testApp.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = testApp.mm; path = src/testApp.mm; sourceTree = SOURCE_ROOT; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 1D60588F0D05DD3D006BFB54 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - E49BCC7A12554CD6009F19D0 /* libofxiPhone_macosx_Debug.a in Frameworks */, - 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */, - 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */, - 288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */, - BB16EBD20F2B2A9500518274 /* OpenGLES.framework in Frameworks */, - BB16EBD90F2B2AB500518274 /* QuartzCore.framework in Frameworks */, - BBE5EAB80F49AD8400F28951 /* AudioToolbox.framework in Frameworks */, - 53F323EB10A20EDB00E0DAE4 /* OpenAL.framework in Frameworks */, - 5326AEA810A23A0500278DE6 /* CoreLocation.framework in Frameworks */, - 5E25689710ED26CC00A9501C /* CppUnit.a in Frameworks */, - 5E25689810ED26CC00A9501C /* PocoFoundation.a in Frameworks */, - 5E25689910ED26CC00A9501C /* PocoNet.a in Frameworks */, - 5E25689A10ED26CC00A9501C /* PocoUtil.a in Frameworks */, - 5E25689B10ED26CC00A9501C /* PocoXML.a in Frameworks */, - 5E2568A410ED26CD00A9501C /* CppUnit.a in Frameworks */, - 5E2568A510ED26CD00A9501C /* PocoFoundation.a in Frameworks */, - 5E2568A610ED26CD00A9501C /* PocoNet.a in Frameworks */, - 5E2568A710ED26CD00A9501C /* PocoUtil.a in Frameworks */, - 5E2568A810ED26CD00A9501C /* PocoXML.a in Frameworks */, - E434BF6512477ED500452519 /* freeimage-iphone.a in Frameworks */, - E434BF6812477EDE00452519 /* freeimage.a in Frameworks */, - E434BF7312477FBA00452519 /* freetype-iphone.a in Frameworks */, - E496D5B11252C8210098A2B3 /* glu-iphone.a in Frameworks */, - E496D5B21252C8210098A2B3 /* glu.a in Frameworks */, - E4A8229F12560AFE002F86A2 /* freetype.a in Frameworks */, - E4A823A412561BE3002F86A2 /* CoreGraphics.framework in Frameworks */, - 00EF442D12BAD6C000FF6AA4 /* Accelerate.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 00FA16B612B98DFC000A9A42 /* ofxMaxim */ = { - isa = PBXGroup; - children = ( - 00FA16B712B98DFC000A9A42 /* install.xml */, - 00FA16B812B98DFC000A9A42 /* libs */, - 00FA16BF12B98DFC000A9A42 /* src */, - ); - path = ofxMaxim; - sourceTree = "<group>"; - }; - 00FA16B812B98DFC000A9A42 /* libs */ = { - isa = PBXGroup; - children = ( - 00FA16BD12B98DFC000A9A42 /* maximilian.cpp */, - 00FA16BE12B98DFC000A9A42 /* maximilian.h */, - ); - path = libs; - sourceTree = "<group>"; - }; - 00FA16BF12B98DFC000A9A42 /* src */ = { - isa = PBXGroup; - children = ( - 00FA16C012B98DFC000A9A42 /* ofxMaxim.h */, - ); - path = src; - sourceTree = "<group>"; - }; - 19C28FACFE9D520D11CA2CBB /* Products */ = { - isa = PBXGroup; - children = ( - 1D6058910D05DD3D006BFB54 /* emptyExample.app */, - ); - name = Products; - sourceTree = "<group>"; - }; - 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = { - isa = PBXGroup; - children = ( - BB24DDC910DA781C00E9C588 /* ofxiphone-Info.plist */, - E4D8936A11527B74007E1F53 /* src */, - BB24DD8B10DA77E000E9C588 /* data */, - BB24E1F710DAA51900E9C588 /* openFrameworks */, - BB16F26B0F2B646B00518274 /* addons */, - BB16E9930F2B1E5900518274 /* libs */, - 19C28FACFE9D520D11CA2CBB /* Products */, - ); - name = CustomTemplate; - sourceTree = "<group>"; - }; - 29B97315FDCFA39411CA2CEA /* Other Sources */ = { - isa = PBXGroup; - children = ( - 32CA4F630368D1EE00C91783 /* iPhone_Prefix.pch */, - ); - name = "Other Sources"; - sourceTree = "<group>"; - }; - 29B97323FDCFA39411CA2CEA /* core frameworks */ = { - isa = PBXGroup; - children = ( - 53F323EA10A20EDB00E0DAE4 /* OpenAL.framework */, - E4A823A312561BE3002F86A2 /* CoreGraphics.framework */, - BBE5EAB70F49AD8400F28951 /* AudioToolbox.framework */, - BB16EBD80F2B2AB500518274 /* QuartzCore.framework */, - BB16EBD10F2B2A9500518274 /* OpenGLES.framework */, - 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */, - 1D30AB110D05D00D00671497 /* Foundation.framework */, - 288765FC0DF74451002DB57D /* CoreGraphics.framework */, - 5326AEA710A23A0500278DE6 /* CoreLocation.framework */, - 00EF442C12BAD6C000FF6AA4 /* Accelerate.framework */, - ); - name = "core frameworks"; - sourceTree = "<group>"; - }; - 5E25686A10ED26BE00A9501C /* poco */ = { - isa = PBXGroup; - children = ( - 5E25686E10ED26CC00A9501C /* lib */, - ); - name = poco; - sourceTree = "<group>"; - }; - 5E25686E10ED26CC00A9501C /* lib */ = { - isa = PBXGroup; - children = ( - 5E25686F10ED26CC00A9501C /* iphone */, - 5E25687F10ED26CC00A9501C /* osx */, - ); - name = lib; - path = ../../../libs/poco/lib; - sourceTree = SOURCE_ROOT; - }; - 5E25686F10ED26CC00A9501C /* iphone */ = { - isa = PBXGroup; - children = ( - 5E25687010ED26CC00A9501C /* CppUnit.a */, - 5E25687110ED26CC00A9501C /* PocoFoundation.a */, - 5E25687210ED26CC00A9501C /* PocoNet.a */, - 5E25687310ED26CC00A9501C /* PocoUtil.a */, - 5E25687410ED26CC00A9501C /* PocoXML.a */, - ); - name = iphone; - path = ../../../libs/poco/lib/iphone; - sourceTree = SOURCE_ROOT; - }; - 5E25687F10ED26CC00A9501C /* osx */ = { - isa = PBXGroup; - children = ( - 5E25688010ED26CC00A9501C /* CppUnit.a */, - 5E25688110ED26CC00A9501C /* PocoFoundation.a */, - 5E25688210ED26CC00A9501C /* PocoNet.a */, - 5E25688310ED26CC00A9501C /* PocoUtil.a */, - 5E25688410ED26CC00A9501C /* PocoXML.a */, - ); - name = osx; - path = ../../../libs/poco/lib/osx; - sourceTree = SOURCE_ROOT; - }; - BB16E9930F2B1E5900518274 /* libs */ = { - isa = PBXGroup; - children = ( - BBE5E94E0F497BD800F28951 /* core */, - ); - name = libs; - sourceTree = "<group>"; - }; - BB16F26B0F2B646B00518274 /* addons */ = { - isa = PBXGroup; - children = ( - 00FA16B612B98DFC000A9A42 /* ofxMaxim */, - ); - name = addons; - sourceTree = "<group>"; - }; - BB24DD8B10DA77E000E9C588 /* data */ = { - isa = PBXGroup; - children = ( - BB24DD8C10DA77E000E9C588 /* Default.png */, - BB24DD8D10DA77E000E9C588 /* Icon.png */, - ); - name = data; - path = bin/data; - sourceTree = "<group>"; - }; - BB24DDCD10DA784F00E9C588 /* FreeImage */ = { - isa = PBXGroup; - children = ( - BB24DDCE10DA784F00E9C588 /* include */, - BB24DDD010DA784F00E9C588 /* lib */, - ); - name = FreeImage; - path = ../../../libs/FreeImage; - sourceTree = SOURCE_ROOT; - }; - BB24DDCE10DA784F00E9C588 /* include */ = { - isa = PBXGroup; - children = ( - BB24DDCF10DA784F00E9C588 /* FreeImage.h */, - ); - path = include; - sourceTree = "<group>"; - }; - BB24DDD010DA784F00E9C588 /* lib */ = { - isa = PBXGroup; - children = ( - E434BF6612477EDE00452519 /* osx */, - BB24DDD110DA784F00E9C588 /* iphone */, - ); - path = lib; - sourceTree = "<group>"; - }; - BB24DDD110DA784F00E9C588 /* iphone */ = { - isa = PBXGroup; - children = ( - E434BF6412477ED500452519 /* freeimage-iphone.a */, - ); - path = iphone; - sourceTree = "<group>"; - }; - BB24DDDD10DA785000E9C588 /* freetype */ = { - isa = PBXGroup; - children = ( - BB24DDDE10DA785000E9C588 /* include */, - BB24DE1110DA785000E9C588 /* lib */, - ); - name = freetype; - path = ../../../libs/freetype; - sourceTree = SOURCE_ROOT; - }; - BB24DDDE10DA785000E9C588 /* include */ = { - isa = PBXGroup; - children = ( - BB24DDDF10DA785000E9C588 /* freetype2 */, - BB24DE0E10DA785000E9C588 /* ft2build.h */, - ); - path = include; - sourceTree = "<group>"; - }; - BB24DDDF10DA785000E9C588 /* freetype2 */ = { - isa = PBXGroup; - children = ( - BB24DDE010DA785000E9C588 /* freetype */, - ); - path = freetype2; - sourceTree = "<group>"; - }; - BB24DDE010DA785000E9C588 /* freetype */ = { - isa = PBXGroup; - children = ( - BB24DDE110DA785000E9C588 /* config */, - BB24DDE710DA785000E9C588 /* freetype.h */, - BB24DDE810DA785000E9C588 /* ftbbox.h */, - BB24DDE910DA785000E9C588 /* ftbdf.h */, - BB24DDEA10DA785000E9C588 /* ftbitmap.h */, - BB24DDEB10DA785000E9C588 /* ftcache.h */, - BB24DDEC10DA785000E9C588 /* ftchapters.h */, - BB24DDED10DA785000E9C588 /* fterrdef.h */, - BB24DDEE10DA785000E9C588 /* fterrors.h */, - BB24DDEF10DA785000E9C588 /* ftgasp.h */, - BB24DDF010DA785000E9C588 /* ftglyph.h */, - BB24DDF110DA785000E9C588 /* ftgxval.h */, - BB24DDF210DA785000E9C588 /* ftgzip.h */, - BB24DDF310DA785000E9C588 /* ftimage.h */, - BB24DDF410DA785000E9C588 /* ftincrem.h */, - BB24DDF510DA785000E9C588 /* ftlcdfil.h */, - BB24DDF610DA785000E9C588 /* ftlist.h */, - BB24DDF710DA785000E9C588 /* ftlzw.h */, - BB24DDF810DA785000E9C588 /* ftmac.h */, - BB24DDF910DA785000E9C588 /* ftmm.h */, - BB24DDFA10DA785000E9C588 /* ftmodapi.h */, - BB24DDFB10DA785000E9C588 /* ftmoderr.h */, - BB24DDFC10DA785000E9C588 /* ftotval.h */, - BB24DDFD10DA785000E9C588 /* ftoutln.h */, - BB24DDFE10DA785000E9C588 /* ftpfr.h */, - BB24DDFF10DA785000E9C588 /* ftrender.h */, - BB24DE0010DA785000E9C588 /* ftsizes.h */, - BB24DE0110DA785000E9C588 /* ftsnames.h */, - BB24DE0210DA785000E9C588 /* ftstroke.h */, - BB24DE0310DA785000E9C588 /* ftsynth.h */, - BB24DE0410DA785000E9C588 /* ftsystem.h */, - BB24DE0510DA785000E9C588 /* fttrigon.h */, - BB24DE0610DA785000E9C588 /* fttypes.h */, - BB24DE0710DA785000E9C588 /* ftwinfnt.h */, - BB24DE0810DA785000E9C588 /* ftxf86.h */, - BB24DE0910DA785000E9C588 /* t1tables.h */, - BB24DE0A10DA785000E9C588 /* ttnameid.h */, - BB24DE0B10DA785000E9C588 /* tttables.h */, - BB24DE0C10DA785000E9C588 /* tttags.h */, - BB24DE0D10DA785000E9C588 /* ttunpat.h */, - ); - path = freetype; - sourceTree = "<group>"; - }; - BB24DDE110DA785000E9C588 /* config */ = { - isa = PBXGroup; - children = ( - BB24DDE210DA785000E9C588 /* ftconfig.h */, - BB24DDE310DA785000E9C588 /* ftheader.h */, - BB24DDE410DA785000E9C588 /* ftmodule.h */, - BB24DDE510DA785000E9C588 /* ftoption.h */, - BB24DDE610DA785000E9C588 /* ftstdlib.h */, - ); - path = config; - sourceTree = "<group>"; - }; - BB24DE1110DA785000E9C588 /* lib */ = { - isa = PBXGroup; - children = ( - E4A8229D12560AFE002F86A2 /* osx */, - BB24DE1210DA785000E9C588 /* iphone */, - ); - path = lib; - sourceTree = "<group>"; - }; - BB24DE1210DA785000E9C588 /* iphone */ = { - isa = PBXGroup; - children = ( - E434BF7212477FBA00452519 /* freetype-iphone.a */, - ); - path = iphone; - sourceTree = "<group>"; - }; - BB24DE1F10DA785000E9C588 /* glu */ = { - isa = PBXGroup; - children = ( - DA7851261105C039007EFC90 /* include_iphone */, - BB24DE2510DA785000E9C588 /* lib */, - ); - name = glu; - path = ../../../libs/glu; - sourceTree = SOURCE_ROOT; - }; - BB24DE2510DA785000E9C588 /* lib */ = { - isa = PBXGroup; - children = ( - BB24DE2610DA785000E9C588 /* iphone */, - ); - path = lib; - sourceTree = "<group>"; - }; - BB24DE2610DA785000E9C588 /* iphone */ = { - isa = PBXGroup; - children = ( - E496D5AF1252C8210098A2B3 /* glu-iphone.a */, - E496D5B01252C8210098A2B3 /* glu.a */, - ); - path = iphone; - sourceTree = "<group>"; - }; - BB24E1F710DAA51900E9C588 /* openFrameworks */ = { - isa = PBXGroup; - children = ( - E49BCC4812554B69009F19D0 /* iPhone+OF Lib.xcodeproj */, - ); - name = openFrameworks; - sourceTree = "<group>"; - }; - BB3F144E0F4C6BF200A33527 /* core libraries */ = { - isa = PBXGroup; - children = ( - 5E25686A10ED26BE00A9501C /* poco */, - BB24DDCD10DA784F00E9C588 /* FreeImage */, - BB24DDDD10DA785000E9C588 /* freetype */, - BB24DE1F10DA785000E9C588 /* glu */, - 29B97315FDCFA39411CA2CEA /* Other Sources */, - ); - name = "core libraries"; - sourceTree = "<group>"; - }; - BBE5E94E0F497BD800F28951 /* core */ = { - isa = PBXGroup; - children = ( - BB3F144E0F4C6BF200A33527 /* core libraries */, - 29B97323FDCFA39411CA2CEA /* core frameworks */, - ); - name = core; - sourceTree = "<group>"; - }; - DA7851261105C039007EFC90 /* include_iphone */ = { - isa = PBXGroup; - children = ( - DA7851271105C039007EFC90 /* glu.h */, - DA7851281105C039007EFC90 /* gluos.h */, - ); - path = include_iphone; - sourceTree = "<group>"; - }; - E434BF6612477EDE00452519 /* osx */ = { - isa = PBXGroup; - children = ( - E434BF6712477EDE00452519 /* freeimage.a */, - ); - name = osx; - path = ../../../libs/FreeImage/lib/osx; - sourceTree = SOURCE_ROOT; - }; - E49BCC4912554B69009F19D0 /* Products */ = { - isa = PBXGroup; - children = ( - E49BCC5012554B6A009F19D0 /* libofxiPhone_macosx_Debug.a */, - ); - name = Products; - sourceTree = "<group>"; - }; - E4A8229D12560AFE002F86A2 /* osx */ = { - isa = PBXGroup; - children = ( - E4A8229E12560AFE002F86A2 /* freetype.a */, - ); - name = osx; - path = ../../../libs/freetype/lib/osx; - sourceTree = SOURCE_ROOT; - }; - E4D8936A11527B74007E1F53 /* src */ = { - isa = PBXGroup; - children = ( - E4D8936B11527B74007E1F53 /* main.mm */, - E4D8936D11527B74007E1F53 /* testApp.mm */, - E4D8936C11527B74007E1F53 /* testApp.h */, - ); - path = src; - sourceTree = SOURCE_ROOT; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 1D6058900D05DD3D006BFB54 /* emptyExample */ = { - isa = PBXNativeTarget; - buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "emptyExample" */; - buildPhases = ( - 1D60588D0D05DD3D006BFB54 /* Resources */, - 1D60588E0D05DD3D006BFB54 /* Sources */, - 1D60588F0D05DD3D006BFB54 /* Frameworks */, - 9255DD331112741900D6945E /* ShellScript */, - ); - buildRules = ( - ); - dependencies = ( - E49BCC6E12554C6C009F19D0 /* PBXTargetDependency */, - ); - name = emptyExample; - productName = iPhone; - productReference = 1D6058910D05DD3D006BFB54 /* emptyExample.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 29B97313FDCFA39411CA2CEA /* Project object */ = { - isa = PBXProject; - buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "iPhoneEmptyExample" */; - compatibilityVersion = "Xcode 3.1"; - developmentRegion = English; - hasScannedForEncodings = 1; - knownRegions = ( - English, - Japanese, - French, - German, - ); - mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */; - projectDirPath = ""; - projectReferences = ( - { - ProductGroup = E49BCC4912554B69009F19D0 /* Products */; - ProjectRef = E49BCC4812554B69009F19D0 /* iPhone+OF Lib.xcodeproj */; - }, - ); - projectRoot = ""; - targets = ( - 1D6058900D05DD3D006BFB54 /* emptyExample */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXReferenceProxy section */ - E49BCC5012554B6A009F19D0 /* libofxiPhone_macosx_Debug.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libofxiPhone_macosx_Debug.a; - remoteRef = E49BCC4F12554B6A009F19D0 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; -/* End PBXReferenceProxy section */ - -/* Begin PBXResourcesBuildPhase section */ - 1D60588D0D05DD3D006BFB54 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - BB24DD8F10DA77E000E9C588 /* Default.png in Resources */, - BB24DD9010DA77E000E9C588 /* Icon.png in Resources */, - BB24DDCA10DA781C00E9C588 /* ofxiphone-Info.plist in Resources */, - 00FA16C112B98DFC000A9A42 /* install.xml in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 9255DD331112741900D6945E /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "cp -rf bin/data/ \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app\"\n"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 1D60588E0D05DD3D006BFB54 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - E4D8936E11527B74007E1F53 /* main.mm in Sources */, - E4D8936F11527B74007E1F53 /* testApp.mm in Sources */, - 00FA16C412B98DFC000A9A42 /* maximilian.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - E49BCC6E12554C6C009F19D0 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "iPhone+OF Static Library"; - targetProxy = E49BCC6D12554C6C009F19D0 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 1D6058940D05DD3E006BFB54 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = iPhone_Prefix.pch; - GCC_THUMB_SUPPORT = NO; - INFOPLIST_FILE = "ofxiphone-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 4.2; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/../../../libs/freetype/lib/osx\"", - ); - ONLY_ACTIVE_ARCH = YES; - PRODUCT_NAME = "${TARGET_NAME}"; - SDKROOT = iphoneos; - }; - name = Debug; - }; - 1D6058950D05DD3E006BFB54 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = iPhone_Prefix.pch; - GCC_THUMB_SUPPORT = NO; - INFOPLIST_FILE = "ofxiphone-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 4.2; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/../../../libs/freetype/lib/osx\"", - ); - ONLY_ACTIVE_ARCH = YES; - PRODUCT_NAME = "${TARGET_NAME}"; - SDKROOT = iphoneos; - }; - name = Release; - }; - C01FCF4F08A954540054247B /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COMPRESS_PNG_FILES = NO; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_THUMB_SUPPORT = NO; - GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO; - GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = NO; - GCC_WARN_ABOUT_POINTER_SIGNEDNESS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = NO; - GCC_WARN_PROTOTYPE_CONVERSION = NO; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ( - ../../../libs/poco/include, - "../../../addons/ofxAccelerometer/**", - "../../../addons/ofxMultitouch/**", - "../../../addons/ofxiPhone/**", - "../../../libs/openFrameworks/**", - "../../../libs/freetype/**", - ); - IPHONEOS_DEPLOYMENT_TARGET = 4.2; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/../../../libs/freetype/lib\"", - "\"$(SRCROOT)/../../../libs/freeimage/lib\"", - "\"$(SRCROOT)/../../../libs/FreeImage/lib/iphone\"", - "\"$(SRCROOT)/../../../libs/FreeImage/lib/osx\"", - "\"$(SRCROOT)/../../../libs/freetype/lib/iphone\"", - "\"$(SRCROOT)/../../../libs/freetype/lib/osx\"", - "\"$(SRCROOT)/../../../libs/glu/lib/iphone\"", - "\"$(SRCROOT)/../../../libs/poco/lib/osx\"", - "\"$(SRCROOT)/../../../libs/poco/lib/iphone\"", - ); - MACOSX_DEPLOYMENT_TARGET = 10.5; - ONLY_ACTIVE_ARCH = NO; - OTHER_LDFLAGS = "-ObjC"; - PREBINDING = NO; - "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; - SDKROOT = iphoneos4.2; - TARGETED_DEVICE_FAMILY = 1; - WARNING_LDFLAGS = ""; - }; - name = Debug; - }; - C01FCF5008A954540054247B /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COMPRESS_PNG_FILES = NO; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_DYNAMIC_NO_PIC = YES; - GCC_GENERATE_DEBUGGING_SYMBOLS = NO; - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_THUMB_SUPPORT = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ( - ../../../libs/poco/include, - "../../../addons/ofxAccelerometer/**", - "../../../addons/ofxMultitouch/**", - "../../../addons/ofxiPhone/**", - "../../../libs/openFrameworks/**", - "../../../libs/freetype/**", - ); - IPHONEOS_DEPLOYMENT_TARGET = 4.2; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/../../../libs/freetype/lib\"", - "\"$(SRCROOT)/../../../libs/freeimage/lib\"", - "\"$(SRCROOT)/../../../libs/FreeImage/lib/iphone\"", - "\"$(SRCROOT)/../../../libs/FreeImage/lib/osx\"", - "\"$(SRCROOT)/../../../libs/freetype/lib/iphone\"", - "\"$(SRCROOT)/../../../libs/freetype/lib/osx\"", - "\"$(SRCROOT)/../../../libs/glu/lib/iphone\"", - "\"$(SRCROOT)/../../../libs/poco/lib/osx\"", - "\"$(SRCROOT)/../../../libs/poco/lib/iphone\"", - ); - MACOSX_DEPLOYMENT_TARGET = 10.5; - ONLY_ACTIVE_ARCH = NO; - OTHER_LDFLAGS = "-ObjC"; - PREBINDING = NO; - "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; - SDKROOT = iphoneos4.2; - TARGETED_DEVICE_FAMILY = 1; - }; - name = Release; - }; - E49BCC2F12554938009F19D0 /* ReleaseArmv7 */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COMPRESS_PNG_FILES = NO; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_DYNAMIC_NO_PIC = YES; - GCC_GENERATE_DEBUGGING_SYMBOLS = NO; - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_THUMB_SUPPORT = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ( - ../../../libs/poco/include, - "../../../addons/ofxAccelerometer/**", - "../../../addons/ofxMultitouch/**", - "../../../addons/ofxiPhone/**", - "../../../libs/openFrameworks/**", - "../../../libs/freetype/**", - ); - IPHONEOS_DEPLOYMENT_TARGET = 4.2; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/../../../libs/freetype/lib\"", - "\"$(SRCROOT)/../../../libs/freeimage/lib\"", - "\"$(SRCROOT)/../../../libs/FreeImage/lib/iphone\"", - "\"$(SRCROOT)/../../../libs/FreeImage/lib/osx\"", - "\"$(SRCROOT)/../../../libs/freetype/lib/iphone\"", - "\"$(SRCROOT)/../../../libs/freetype/lib/osx\"", - "\"$(SRCROOT)/../../../libs/glu/lib/iphone\"", - "\"$(SRCROOT)/../../../libs/poco/lib/osx\"", - "\"$(SRCROOT)/../../../libs/poco/lib/iphone\"", - ); - MACOSX_DEPLOYMENT_TARGET = 10.5; - ONLY_ACTIVE_ARCH = NO; - OTHER_LDFLAGS = "-ObjC"; - PREBINDING = NO; - "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; - SDKROOT = iphoneos4.2; - TARGETED_DEVICE_FAMILY = 1; - }; - name = ReleaseArmv7; - }; - E49BCC3012554938009F19D0 /* ReleaseArmv7 */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = iPhone_Prefix.pch; - GCC_THUMB_SUPPORT = NO; - INFOPLIST_FILE = "ofxiphone-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 4.2; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/../../../libs/freetype/lib/osx\"", - ); - ONLY_ACTIVE_ARCH = YES; - PRODUCT_NAME = "${TARGET_NAME}"; - SDKROOT = iphoneos; - }; - name = ReleaseArmv7; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "emptyExample" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 1D6058940D05DD3E006BFB54 /* Debug */, - 1D6058950D05DD3E006BFB54 /* Release */, - E49BCC3012554938009F19D0 /* ReleaseArmv7 */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - C01FCF4E08A954540054247B /* Build configuration list for PBXProject "iPhoneEmptyExample" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - C01FCF4F08A954540054247B /* Debug */, - C01FCF5008A954540054247B /* Release */, - E49BCC2F12554938009F19D0 /* ReleaseArmv7 */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; -} diff --git a/ofxMaxim/ofxMaximiPhone0062Example/iPhone_Prefix.pch b/ofxMaxim/ofxMaximiPhone0062Example/iPhone_Prefix.pch deleted file mode 100644 index fd3401c..0000000 --- a/ofxMaxim/ofxMaximiPhone0062Example/iPhone_Prefix.pch +++ /dev/null @@ -1,8 +0,0 @@ -// -// Prefix header for all source files of the 'iPhone' target in the 'iPhone' project -// - -#ifdef __OBJC__ - #import <Foundation/Foundation.h> - #import <UIKit/UIKit.h> -#endif diff --git a/ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/install.xml b/ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/install.xml deleted file mode 100644 index 58923be..0000000 --- a/ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/install.xml +++ /dev/null @@ -1,35 +0,0 @@ -<install> - <version>0.1</version> - <author>Goldsmiths Creative Computing</author> - <url>http://www.maximilian.strangeloop.co.uk/</url> - <requires></requires> - - - <add> - <!-- ===================================================================== --> - <!-- ========================== add per project using this addon ========= --> - <!-- ===================================================================== --> - - <src> - - <folder name="addons/ofxMaxim/src"> - <file>../../../addons/ofxMaxim/src/ofxMaxim.h</file> - </folder> - - <folder name="addons/ofxMaxim/libs"> - <file>../../../addons/ofxMaxim/libs/fft.h</file> - <file>../../../addons/ofxMaxim/libs/fft.cpp</file> - <file>../../../addons/ofxMaxim/libs/fftOctaveAnalyzer.h</file> - <file>../../../addons/ofxMaxim/libs/fftOctaveAnalyzer.cpp</file> - <file>../../../addons/ofxMaxim/libs/maximilian.h</file> - <file>../../../addons/ofxMaxim/libs/maximilian.cpp</file> - </folder> - - </src> - - <include> - <path>../../../addons/ofxMaxim/src</path> - <path>../../../addons/ofxMaxim/libs</path> - </include> - </add> -</install>
\ No newline at end of file diff --git a/ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/libs/fft.cpp b/ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/libs/fft.cpp deleted file mode 100644 index 3f13bd2..0000000 --- a/ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/libs/fft.cpp +++ /dev/null @@ -1,608 +0,0 @@ -/* - * maximilian - * platform independent synthesis library using portaudio or rtaudio - * - * Created by Mick Grierson on 29/12/2009. - * Copyright 2009 Mick Grierson & Strangeloop Limited. All rights reserved. - * Thanks to the Goldsmiths Creative Computing Team. - * Special thanks to Arturo Castro for the PortAudio implementation. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * 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. - * - */ -/* - - fft.cpp - - Based on K+R Numerical recipes in C and some other stuff hacked about. - - */ - -#include "fft.h" -#include <stdlib.h> -#include <stdio.h> -#include <math.h> -#include <string.h> - -int **gFFTBitTable = NULL; -const int MaxFastBits = 16; - -int IsPowerOfTwo(int x) -{ - if (x < 2) - return false; - - if (x & (x - 1)) - return false; - - return true; -} - -int NumberOfBitsNeeded(int PowerOfTwo) -{ - int i; - - if (PowerOfTwo < 2) { - fprintf(stderr, "Error: FFT called with size %d\n", PowerOfTwo); - exit(1); - } - - for (i = 0;; i++) - if (PowerOfTwo & (1 << i)) - return i; -} - -int ReverseBits(int index, int NumBits) -{ - int i, rev; - - for (i = rev = 0; i < NumBits; i++) { - rev = (rev << 1) | (index & 1); - index >>= 1; - } - - return rev; -} - -void InitFFT() -{ -// gFFTBitTable = new int *[MaxFastBits]; - //use malloc for 16 byte alignment - gFFTBitTable = (int**) malloc(MaxFastBits * sizeof(int*)); - - int len = 2; - for (int b = 1; b <= MaxFastBits; b++) { - -// gFFTBitTable[b - 1] = new int[len]; - gFFTBitTable[b - 1] = (int*) malloc(len * sizeof(int)); - - for (int i = 0; i < len; i++) - gFFTBitTable[b - 1][i] = ReverseBits(i, b); - - len <<= 1; - } -} - -inline int FastReverseBits(int i, int NumBits) -{ - if (NumBits <= MaxFastBits) - return gFFTBitTable[NumBits - 1][i]; - else - return ReverseBits(i, NumBits); -} - -/* - * Complex Fast Fourier Transform - */ - -void FFT(int NumSamples, - bool InverseTransform, - float *RealIn, float *ImagIn, float *RealOut, float *ImagOut) -{ - int NumBits; /* Number of bits needed to store indices */ - int i, j, k, n; - int BlockSize, BlockEnd; - - double angle_numerator = 2.0 * M_PI; - float tr, ti; /* temp real, temp imaginary */ - - if (!IsPowerOfTwo(NumSamples)) { - fprintf(stderr, "%d is not a power of two\n", NumSamples); - exit(1); - } - - if (!gFFTBitTable) - InitFFT(); - - if (InverseTransform) - angle_numerator = -angle_numerator; - - NumBits = NumberOfBitsNeeded(NumSamples); - - /* - ** Do simultaneous data copy and bit-reversal ordering into outputs... - */ - - for (i = 0; i < NumSamples; i++) { - j = FastReverseBits(i, NumBits); - RealOut[j] = RealIn[i]; - ImagOut[j] = (ImagIn == NULL) ? 0.0 : ImagIn[i]; - } - - /* - ** Do the FFT itself... - */ - - BlockEnd = 1; - for (BlockSize = 2; BlockSize <= NumSamples; BlockSize <<= 1) { - - double delta_angle = angle_numerator / (double) BlockSize; - - float sm2 = sin(-2 * delta_angle); - float sm1 = sin(-delta_angle); - float cm2 = cos(-2 * delta_angle); - float cm1 = cos(-delta_angle); - float w = 2 * cm1; - float ar0, ar1, ar2, ai0, ai1, ai2; - - for (i = 0; i < NumSamples; i += BlockSize) { - ar2 = cm2; - ar1 = cm1; - - ai2 = sm2; - ai1 = sm1; - - for (j = i, n = 0; n < BlockEnd; j++, n++) { - ar0 = w * ar1 - ar2; - ar2 = ar1; - ar1 = ar0; - - ai0 = w * ai1 - ai2; - ai2 = ai1; - ai1 = ai0; - - k = j + BlockEnd; - tr = ar0 * RealOut[k] - ai0 * ImagOut[k]; - ti = ar0 * ImagOut[k] + ai0 * RealOut[k]; - - RealOut[k] = RealOut[j] - tr; - ImagOut[k] = ImagOut[j] - ti; - - RealOut[j] += tr; - ImagOut[j] += ti; - } - } - - BlockEnd = BlockSize; - } - - /* - ** Need to normalize if inverse transform... - */ - - if (InverseTransform) { - float denom = (float) NumSamples; - - for (i = 0; i < NumSamples; i++) { - RealOut[i] /= denom; - ImagOut[i] /= denom; - } - } -} - -/* - * Real Fast Fourier Transform - * - * This function was based on the code in Numerical Recipes in C. - * In Num. Rec., the inner loop is based on a single 1-based array - * of interleaved real and imaginary numbers. Because we have two - * separate zero-based arrays, our indices are quite different. - * Here is the correspondence between Num. Rec. indices and our indices: - * - * i1 <-> real[i] - * i2 <-> imag[i] - * i3 <-> real[n/2-i] - * i4 <-> imag[n/2-i] - */ - -void RealFFT(int NumSamples, float *RealIn, float *RealOut, float *ImagOut) -{ - int Half = NumSamples / 2; - int i; - - float theta = M_PI / Half; - - float *tmpReal = (float*) malloc(Half * sizeof(float)); - float *tmpImag = (float*) malloc(Half * sizeof(float)); - - for (i = 0; i < Half; i++) { - tmpReal[i] = RealIn[2 * i]; - tmpImag[i] = RealIn[2 * i + 1]; - } - - FFT(Half, 0, tmpReal, tmpImag, RealOut, ImagOut); - - float wtemp = float (sin(0.5 * theta)); - - float wpr = -2.0 * wtemp * wtemp; - float wpi = float (sin(theta)); - float wr = 1.0 + wpr; - float wi = wpi; - - int i3; - - float h1r, h1i, h2r, h2i; - - for (i = 1; i < Half / 2; i++) { - - i3 = Half - i; - - h1r = 0.5 * (RealOut[i] + RealOut[i3]); - h1i = 0.5 * (ImagOut[i] - ImagOut[i3]); - h2r = 0.5 * (ImagOut[i] + ImagOut[i3]); - h2i = -0.5 * (RealOut[i] - RealOut[i3]); - - RealOut[i] = h1r + wr * h2r - wi * h2i; - ImagOut[i] = h1i + wr * h2i + wi * h2r; - RealOut[i3] = h1r - wr * h2r + wi * h2i; - ImagOut[i3] = -h1i + wr * h2i + wi * h2r; - - wr = (wtemp = wr) * wpr - wi * wpi + wr; - wi = wi * wpr + wtemp * wpi + wi; - } - - RealOut[0] = (h1r = RealOut[0]) + ImagOut[0]; - ImagOut[0] = h1r - ImagOut[0]; - - delete[]tmpReal; - delete[]tmpImag; -} - -/* - * PowerSpectrum - * - * This function computes the same as RealFFT, above, but - * adds the squares of the real and imaginary part of each - * coefficient, extracting the power and throwing away the - * phase. - * - * For speed, it does not call RealFFT, but duplicates some - * of its code. - */ - -void PowerSpectrum(int NumSamples, float *In, float *Out) -{ - int Half = NumSamples / 2; - int i; - - float theta = M_PI / Half; - - float *tmpReal = new float[Half]; - float *tmpImag = new float[Half]; - float *RealOut = new float[Half]; - float *ImagOut = new float[Half]; - - for (i = 0; i < Half; i++) { - tmpReal[i] = In[2 * i]; - tmpImag[i] = In[2 * i + 1]; - } - - FFT(Half, 0, tmpReal, tmpImag, RealOut, ImagOut); - - float wtemp = float (sin(0.5 * theta)); - - float wpr = -2.0 * wtemp * wtemp; - float wpi = float (sin(theta)); - float wr = 1.0 + wpr; - float wi = wpi; - - int i3; - - float h1r, h1i, h2r, h2i, rt, it; - //float total=0; - - for (i = 1; i < Half / 2; i++) { - - i3 = Half - i; - - h1r = 0.5 * (RealOut[i] + RealOut[i3]); - h1i = 0.5 * (ImagOut[i] - ImagOut[i3]); - h2r = 0.5 * (ImagOut[i] + ImagOut[i3]); - h2i = -0.5 * (RealOut[i] - RealOut[i3]); - - rt = h1r + wr * h2r - wi * h2i; //printf("Realout%i = %f",i,rt);total+=fabs(rt); - it = h1i + wr * h2i + wi * h2r; // printf(" Imageout%i = %f\n",i,it); - - Out[i] = rt * rt + it * it; - - rt = h1r - wr * h2r + wi * h2i; - it = -h1i + wr * h2i + wi * h2r; - - Out[i3] = rt * rt + it * it; - - wr = (wtemp = wr) * wpr - wi * wpi + wr; - wi = wi * wpr + wtemp * wpi + wi; - } - //printf("total = %f\n",total); - rt = (h1r = RealOut[0]) + ImagOut[0]; - it = h1r - ImagOut[0]; - Out[0] = rt * rt + it * it; - - rt = RealOut[Half / 2]; - it = ImagOut[Half / 2]; - Out[Half / 2] = rt * rt + it * it; - - delete[]tmpReal; - delete[]tmpImag; - delete[]RealOut; - delete[]ImagOut; -} - -/* - * Windowing Functions - */ - -int NumWindowFuncs() -{ - return 4; -} - -char *WindowFuncName(int whichFunction) -{ - switch (whichFunction) { - default: - case 0: - return "Rectangular"; - case 1: - return "Bartlett"; - case 2: - return "Hamming"; - case 3: - return "Hanning"; - } -} - -void WindowFunc(int whichFunction, int NumSamples, float *in) -{ - int i; - - if (whichFunction == 1) { - // Bartlett (triangular) window - for (i = 0; i < NumSamples / 2; i++) { - in[i] *= (i / (float) (NumSamples / 2)); - in[i + (NumSamples / 2)] *= - (1.0 - (i / (float) (NumSamples / 2))); - } - } - - if (whichFunction == 2) { - // Hamming - for (i = 0; i < NumSamples; i++) - in[i] *= 0.54 - 0.46 * cos(2 * M_PI * i / (NumSamples - 1)); - } - - if (whichFunction == 3) { - // Hanning - for (i = 0; i < NumSamples; i++) - in[i] *= 0.50 - 0.50 * cos(2 * M_PI * i / (NumSamples - 1)); - } -} - -void fft::genWindow(int whichFunction, int NumSamples, float *window) -{ - int i; - - if (whichFunction == 1) { - // Bartlett (triangular) window - for (i = 0; i < NumSamples / 2; i++) { - window[i] = (i / (float) (NumSamples / 2)); - window[i + (NumSamples / 2)] = - (1.0 - (i / (float) (NumSamples / 2))); - } - } - - if (whichFunction == 2) { - // Hamming - for (i = 0; i < NumSamples; i++) - window[i] = 0.54 - 0.46 * cos(2 * M_PI * i / (NumSamples - 1)); - } - - if (whichFunction == 3) { - // Hanning - for (i = 0; i < NumSamples; i++) - window[i] = 0.50 - 0.50 * cos(2 * M_PI * i / (NumSamples - 1)); - } -} - -/* constructor */ -fft::fft(int fftSize) { - n = fftSize; - half = fftSize / 2; - //use malloc for 16 byte alignment - in_real = (float *) malloc(n * sizeof(float)); - in_img = (float *) malloc(n * sizeof(float)); - out_real = (float *) malloc(n * sizeof(float)); - out_img = (float *) malloc(n * sizeof(float)); - -#ifdef __APPLE_CC__ - log2n = log2(n); - A.realp = (float *) malloc(half * sizeof(float)); - A.imagp = (float *) malloc(half * sizeof(float)); - setupReal = vDSP_create_fftsetup(log2n, FFT_RADIX2); - if (setupReal == NULL) { - printf("\nFFT_Setup failed to allocate enough memory for" - "the real FFT.\n"); - } - polar = (float *) malloc(n * sizeof(float)); -#endif -} - -/* destructor */ -fft::~fft() { - delete[] in_real, out_real, in_img, out_img; -#ifdef __APPLE_CC__ - vDSP_destroy_fftsetup(setupReal); - delete[] A.realp; - delete[] A.imagp; - delete[] polar; -#endif - -} - -/* Calculate the power spectrum */ -void fft::powerSpectrum(int start, float *data, float *window, float *magnitude,float *phase) { - int i; - - //windowing - for (i = 0; i < n; i++) { - in_real[i] = data[start + i] * window[i]; - } - - - RealFFT(n, in_real, out_real, out_img); - - for (i = 0; i < half; i++) { - /* compute power */ - float power = out_real[i]*out_real[i] + out_img[i]*out_img[i]; - /* compute magnitude and phase */ - magnitude[i] = sqrt(power); - phase[i] = atan2(out_img[i],out_real[i]); - -// if (magnitude[i] < 0.000001){ // less than 0.1 nV -// magnitude[i] = 0; // out of range -// } else { -// magnitude[i] = 20.0*log10(magnitude[i] + 1); // get to to db scale -// } - } - -} - -void fft::convToDB(float *in, float *out) { - for (int i = 0; i < half; i++) { - if (in[i] < 0.000001){ // less than 0.1 nV - out[i] = 0; // out of range - } else { - out[i] = 20.0*log10(in[i] + 1); // get to to db scale - } - } -} - - -#ifdef __APPLE_CC__ - -/* Calculate the power spectrum */ -void fft::powerSpectrum_vdsp(int start, float *data, float *window, float *magnitude,float *phase) { - - uint32_t i; - - //multiply by window - vDSP_vmul(data, 1, window, 1, in_real, 1, n); - - //convert to split complex format - evens and odds - vDSP_ctoz((COMPLEX *) in_real, 2, &A, 1, half); - - - //calc fft - vDSP_fft_zrip(setupReal, &A, 1, log2n, FFT_FORWARD); - - //scale by 2 (see vDSP docs) - static float scale=0.5 ; - vDSP_vsmul(A.realp, 1, &scale, A.realp, 1, half); - vDSP_vsmul(A.imagp, 1, &scale, A.imagp, 1, half); - - //back to split complex format - vDSP_ztoc(&A, 1, (COMPLEX*) out_real, 2, half); - - //convert to polar - vDSP_polar(out_real, 2, polar, 2, half); - - for (i = 0; i < half; i++) { - magnitude[i]=polar[2*i]+1.0; - phase[i]=polar[2*i + 1]; - } - - - -} - -void fft::convToDB_vdsp(float *in, float *out) { - float ref = 1.0; - vDSP_vdbcon(in, 1, &ref, out, 1, half, 1); - //get rid of any -infs - float vmin=0.0; - float vmax=9999999.0; - vDSP_vclip(out, 1, &vmin, &vmax, out, 1, half); -} - -#endif - -void fft::inversePowerSpectrum(int start, float *finalOut, float *window, float *magnitude,float *phase) { - int i; - - /* get real and imag part */ - for (i = 0; i < half; i++) { -// float mag = pow(10.0, magnitude[i] / 20.0) - 1.0; -// in_real[i] = mag *cos(phase[i]); -// in_img[i] = mag *sin(phase[i]); - in_real[i] = magnitude[i] *cos(phase[i]); - in_img[i] = magnitude[i] *sin(phase[i]); - } - - /* zero negative frequencies */ - memset(in_real+half, half, 0.0); - memset(in_img+half, half, 0.0); - - FFT(n, 1, in_real, in_img, out_real, out_img); // second parameter indicates inverse transform - - for (i = 0; i < n; i++) { - finalOut[start + i] += out_real[i] * window[i] - ; - } - -} - - -#ifdef __APPLE_CC__ -void fft::inversePowerSpectrum_vdsp(int start, float *finalOut, float *window, float *magnitude,float *phase) { - uint32_t i; - - for (i = 0; i < half; i++) { -// polar[2*i] = pow(10.0, magnitude[i] / 20.0) - 1.0; - polar[2*i] = magnitude[i] - 1.0; - polar[2*i + 1] = phase[i]; - } - - vDSP_rect(polar, 2, in_real, 2, half); - - vDSP_ctoz((COMPLEX*) in_real, 2, &A, 1, half); - vDSP_fft_zrip(setupReal, &A, 1, log2n, FFT_INVERSE); - vDSP_ztoc(&A, 1, (COMPLEX*) out_real, 2, half); - - static float scale = 1./n; - vDSP_vsmul(out_real, 1, &scale, out_real, 1, n); - - //multiply by window - vDSP_vmul(out_real, 1, window, 1, finalOut, 1, n); - -} - -#endif diff --git a/ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/libs/fft.h b/ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/libs/fft.h deleted file mode 100644 index f7e1947..0000000 --- a/ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/libs/fft.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * maximilian - * platform independent synthesis library using portaudio or rtaudio - * - * Created by Mick Grierson on 29/12/2009. - * Copyright 2009 Mick Grierson & Strangeloop Limited. All rights reserved. - * Thanks to the Goldsmiths Creative Computing Team. - * Special thanks to Arturo Castro for the PortAudio implementation. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * 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. - * - */ - -#ifndef _FFT -#define _FFT - -#ifndef M_PI -#define M_PI 3.14159265358979323846 /* pi */ -#endif - -#ifdef __APPLE_CC__ - #include <Accelerate/Accelerate.h> - #warning Please link against the Accelerate framework -#endif - - - -class fft { - -public: - - fft(int fftSize); - ~fft(); - - int n; //fftSize - int half; //halfFFTSize - - float *in_real, *out_real, *in_img, *out_img; - -#ifdef __APPLE_CC__ - int log2n; //log2(n); - FFTSetup setupReal; - COMPLEX_SPLIT A; - float *polar; - void powerSpectrum_vdsp(int start, float *data, float *window, float *magnitude,float *phase); - void inversePowerSpectrum_vdsp(int start, float *finalOut, float *window, float *magnitude,float *phase); - void convToDB_vdsp(float *in, float *out); -#endif; - - /* Calculate the power spectrum */ - void powerSpectrum(int start, float *data, float *window, float *magnitude, float *phase); - /* ... the inverse */ - void inversePowerSpectrum(int start, float *finalOut, float *window, float *magnitude,float *phase); - void convToDB(float *in, float *out); - - static void genWindow(int whichFunction, int NumSamples, float *window); - -}; - - -#endif diff --git a/ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/libs/maxiFFT.cpp b/ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/libs/maxiFFT.cpp deleted file mode 100644 index 36034b2..0000000 --- a/ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/libs/maxiFFT.cpp +++ /dev/null @@ -1,290 +0,0 @@ -/* - * maximilian - * platform independent synthesis library using portaudio or rtaudio - * - * Created by Mick Grierson on 29/12/2009. - * Copyright 2009 Mick Grierson & Strangeloop Limited. All rights reserved. - * Thanks to the Goldsmiths Creative Computing Team. - * Special thanks to Arturo Castro for the PortAudio implementation. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * 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. - * - */ - -#include "maxiFFT.h" -#include "maximilian.h" -#include <iostream> -#include "math.h" - -using namespace std; - - -////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -//F F T -////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -void maxiFFT::setup(int _fftSize, int _windowSize, int _hopSize) { - _fft = new fft(_fftSize); - fftSize = _fftSize; - windowSize = _windowSize; - bins = fftSize / 2; - hopSize = _hopSize; - buffer = (float *) malloc(fftSize * sizeof(float)); - magnitudes = (float *) malloc(bins * sizeof(float)); - magnitudesDB = (float *) malloc(bins * sizeof(float)); - phases = (float *) malloc(bins * sizeof(float)); - avgPower = new float; - memset(buffer, 0, fftSize * sizeof(float)); - memset(magnitudes, 0, bins * sizeof(float)); - memset(magnitudesDB, 0, bins * sizeof(float)); - memset(phases, 0, bins * sizeof(float)); - *avgPower = 0; - pos =windowSize - hopSize; - newFFT = 0; - window = (float*) malloc(fftSize * sizeof(float)); - memset(window, 0, fftSize * sizeof(float)); - fft::genWindow(3, windowSize, window); -} - -bool maxiFFT::process(float value) { - //add value to buffer at current pos - buffer[pos++] = value; - //if buffer full, run fft - newFFT = pos == windowSize; - if (newFFT) { -#if defined(__APPLE_CC__) && !defined(_NO_VDSP) - _fft->powerSpectrum_vdsp(0, buffer, window, magnitudes, phases); -#else - _fft->powerSpectrum(0, buffer, window, magnitudes, phases); -#endif - //shift buffer back by one hop size - memcpy(buffer, buffer + hopSize, (windowSize - hopSize) * sizeof(float)); - //set the new data to zero (is this necessary?, it will get overwritten) - memset(buffer + windowSize - hopSize, 0, hopSize * sizeof(float)); - //reset pos to start of hop - pos= windowSize - hopSize; - } - return newFFT; -} - -float* maxiFFT::magsToDB() { -#if defined(__APPLE_CC__) && !defined(_NO_VDSP) - _fft->convToDB_vdsp(magnitudes, magnitudesDB); -#else - _fft->convToDB(magnitudes, magnitudesDB); -#endif - return magnitudesDB; -} - -float maxiFFT::spectralFlatness() { - float geometricMean=0, arithmaticMean=0; - for(int i=0; i < bins; i++) { - if (magnitudes[i] != 0) - geometricMean += log(magnitudes[i]); - arithmaticMean += magnitudes[i]; - } - geometricMean = exp(geometricMean / (float)bins); - arithmaticMean /= (float)bins; - return arithmaticMean !=0 ? geometricMean / arithmaticMean : 0; -} - -float maxiFFT::spectralCentroid() { - float x=0, y=0; - for(int i=0; i < bins; i++) { - x += fabs(magnitudes[i]) * (i+1); - y += fabs(magnitudes[i]); - } - return y != 0 ? x / y * ((float) maxiSettings::sampleRate / fftSize) : 0; -} - - - -maxiFFT::~maxiFFT() { - delete _fft; - if (buffer) - delete[] buffer,magnitudes,phases,window, avgPower; -} - - - - -////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -//I N V E R S E F F T -////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -void maxiIFFT::setup(int _fftSize, int _windowSize, int _hopSize) { - _fft = new fft(_fftSize); - fftSize = _fftSize; - windowSize = _windowSize; - bins = fftSize / 2; - hopSize = _hopSize; - buffer = (float *) malloc(fftSize * sizeof(float)); - ifftOut = (float *) malloc(fftSize * sizeof(float)); - memset(buffer, 0, windowSize * sizeof(float)); - pos =0; - window = (float*) malloc(fftSize * sizeof(float)); - memset(window, 0, fftSize * sizeof(float)); - fft::genWindow(3, windowSize, window); -} - -float maxiIFFT::process(float *magnitudes, float *phases) { - if (0==pos) { - //do ifft - memset(ifftOut, 0, fftSize * sizeof(float)); -#if defined(__APPLE_CC__) && !defined(_NO_VDSP) - _fft->inversePowerSpectrum_vdsp(0, ifftOut, window, magnitudes, phases); -#else - _fft->inversePowerSpectrum(0, ifftOut, window, magnitudes, phases); -#endif - //add to output - //shift back by one hop - memcpy(buffer, buffer+hopSize, (fftSize - hopSize) * sizeof(float)); - //clear the end chunk - memset(buffer + (fftSize - hopSize), 0, hopSize * sizeof(float)); - //merge new output - for(int i=0; i < fftSize; i++) { - buffer[i] += ifftOut[i]; - } - } - - nextValue = buffer[pos]; - //limit the values, this alg seems to spike occasionally (and break the audio drivers) - if (nextValue > 0.99999f) nextValue = 0.99999f; - if (nextValue < -0.99999f) nextValue = -0.99999f; - if (hopSize == ++pos ) { - pos=0; - } - - return nextValue; -} - -maxiIFFT::~maxiIFFT() { - delete _fft; - delete[] ifftOut, buffer, window; -}; - - - - - - - -////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -//O C T A V E A N A L Y S E R -////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -void maxiFFTOctaveAnalyzer::setup(float samplingRate, int nBandsInTheFFT, int nAveragesPerOctave){ - - samplingRate = samplingRate; - nSpectrum = nBandsInTheFFT; - spectrumFrequencySpan = (samplingRate / 2.0f) / (float)(nSpectrum); - nAverages = nBandsInTheFFT; - // fe: 2f for octave bands, sqrt(2) for half-octave bands, cuberoot(2) for third-octave bands, etc - if (nAveragesPerOctave==0) // um, wtf? - nAveragesPerOctave = 1; - nAveragesPerOctave = nAveragesPerOctave; - averageFrequencyIncrement = pow(2.0f, 1.0f/(float)(nAveragesPerOctave)); - // this isn't currently configurable (used once here then no effect), but here's some reasoning: - // 43 is a good value if you want to approximate "computer" octaves: 44100/2/2/2/2/2/2/2/2/2/2 - // 55 is a good value if you'd rather approximate A-440 octaves: 440/2/2/2 - // 65 is a good value if you'd rather approximate "middle-C" octaves: ~262/2/2 - // you could easily double it if you felt the lowest band was just rumble noise (as it probably is) - // but don't go much smaller unless you have a huge fft window size (see below for more why) - // keep in mind, if you change it, that the number of actual bands may change +/-1, and - // for some values, the last averaging band may not be very useful (may extend above nyquist) - firstOctaveFrequency = 55.0f; - // for each spectrum[] bin, calculate the mapping into the appropriate average[] bin. - // this gives us roughly log-sized averaging bins, subject to how "fine" the spectrum bins are. - // with more spectrum bins, you can better map into the averaging bins (especially at low - // frequencies) or use more averaging bins per octave. with an fft window size of 2048, - // sampling rate of 44100, and first octave around 55, that's about enough to do half-octave - // analysis. if you don't have enough spectrum bins to map adequately into averaging bins - // at the requested number per octave then you'll end up with "empty" averaging bins, where - // there is no spectrum available to map into it. (so... if you have "nonreactive" averages, - // either increase fft buffer size, or decrease number of averages per octave, etc) - spe2avg = new int[nSpectrum]; - int avgidx = 0; - float averageFreq = firstOctaveFrequency; // the "top" of the first averaging bin - // we're looking for the "top" of the first spectrum bin, and i'm just sort of - // guessing that this is where it is (or possibly spectrumFrequencySpan/2?) - // ... either way it's probably close enough for these purposes - float spectrumFreq = spectrumFrequencySpan; - for (int speidx=0; speidx < nSpectrum; speidx++) { - while (spectrumFreq > averageFreq) { - avgidx++; - averageFreq *= averageFrequencyIncrement; - } - spe2avg[speidx] = avgidx; - spectrumFreq += spectrumFrequencySpan; - } - nAverages = avgidx; - averages = new float[nAverages]; - peaks = new float[nAverages]; - peakHoldTimes = new int[nAverages]; - peakHoldTime = 0; // arbitrary - peakDecayRate = 0.9f; // arbitrary - linearEQIntercept = 1.0f; // unity -- no eq by default - linearEQSlope = 0.0f; // unity -- no eq by default -} - -void maxiFFTOctaveAnalyzer::calculate(float * fftData){ - - int last_avgidx = 0; // tracks when we've crossed into a new averaging bin, so store current average - float sum = 0.0f; // running total of spectrum data - int count = 0; // count of spectrums accumulated (for averaging) - for (int speidx=0; speidx < nSpectrum; speidx++) { - count++; - sum += fftData[speidx] * (linearEQIntercept + (float)(speidx) * linearEQSlope); - int avgidx = spe2avg[speidx]; - if (avgidx != last_avgidx) { - - for (int j = last_avgidx; j < avgidx; j++){ - averages[j] = sum / (float)(count); - } - count = 0; - sum = 0.0f; - } - last_avgidx = avgidx; - } - // the last average was probably not calculated... - if ((count > 0) && (last_avgidx < nAverages)){ - averages[last_avgidx] = sum / (float)(count); - } - - // update the peaks separately - for (int i=0; i < nAverages; i++) { - if (averages[i] >= peaks[i]) { - // save new peak level, also reset the hold timer - peaks[i] = averages[i]; - peakHoldTimes[i] = peakHoldTime; - } else { - // current average does not exceed peak, so hold or decay the peak - if (peakHoldTimes[i] > 0) { - peakHoldTimes[i]--; - } else { - peaks[i] *= peakDecayRate; - } - } - } -} diff --git a/ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/libs/maxiFFT.h b/ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/libs/maxiFFT.h deleted file mode 100644 index d099e84..0000000 --- a/ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/libs/maxiFFT.h +++ /dev/null @@ -1,128 +0,0 @@ -/* - * maximilian - * platform independent synthesis library using portaudio or rtaudio - * - * Created by Mick Grierson on 29/12/2009. - * Copyright 2009 Mick Grierson & Strangeloop Limited. All rights reserved. - * Thanks to the Goldsmiths Creative Computing Team. - * Special thanks to Arturo Castro for the PortAudio implementation. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * 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. - * - */ - -#ifndef _MAXI_FFT -#define _MAXI_FFT - -//#define _NO_VDSP //set this if you don't want to use apple's vDSP fft functions - - -#include "fft.h" -#include "stddef.h" - -class maxiFFT { - -public: - maxiFFT(){ - _fft = NULL; - buffer = magnitudes = phases = window = avgPower = NULL; - }; - ~maxiFFT(); - void setup(int fftSize, int windowSize, int hopSize); - bool process(float value); - float* magsToDB(); - float *magnitudes, *phases, *magnitudesDB; - float *avgPower; - int windowSize; - int hopSize; - int bins; - - //features - float spectralFlatness(); - float spectralCentroid(); - -private: - float *buffer, *window; - int pos; - float nextValue; - int fftSize; - fft *_fft; - bool newFFT; - -}; - -class maxiIFFT { - -public: - maxiIFFT(){ - _fft=0; - }; - ~maxiIFFT(); - void setup(int fftSize, int windowSize, int hopSize); - float process(float *magnitudes, float *phases); - -private: - float *ifftOut, *buffer, *window; - int windowSize; - int bins; - int hopSize; - int pos; - float nextValue; - int fftSize; - fft *_fft; -}; - - -class maxiFFTOctaveAnalyzer { -/*based on code by David Bollinger, http://www.davebollinger.com/ - */ -public: - - float samplingRate; // sampling rate in Hz (needed to calculate frequency spans) - int nSpectrum; // number of spectrum bins in the fft - int nAverages; // number of averaging bins here - int nAveragesPerOctave; // number of averages per octave as requested by user - float spectrumFrequencySpan; // the "width" of an fft spectrum bin in Hz - float firstOctaveFrequency; // the "top" of the first averaging bin here in Hz - float averageFrequencyIncrement; // the root-of-two multiplier between averaging bin frequencies - float * averages; // the actual averages - float * peaks; // peaks of the averages, aka "maxAverages" in other implementations - int * peakHoldTimes; // how long to hold THIS peak meter? decay if == 0 - int peakHoldTime; // how long do we hold peaks? (in fft frames) - float peakDecayRate; // how quickly the peaks decay: 0f=instantly .. 1f=not at all - int * spe2avg; // the mapping between spectrum[] indices and averages[] indices - // the fft's log equalizer() is no longer of any use (it would be nonsense to log scale - // the spectrum values into log-sized average bins) so here's a quick-and-dirty linear - // equalizer instead: - float linearEQSlope; // the rate of linear eq - float linearEQIntercept; // the base linear scaling used at the first averaging bin - // the formula is: spectrum[i] * (linearEQIntercept + i * linearEQSlope) - // so.. note that clever use of it can also provide a "gain" control of sorts - // (fe: set intercept to 2f and slope to 0f to double gain) - - void setup(float samplingRate, int nBandsInTheFFT, int nAveragesPerOctave); - - void calculate(float * fftData); - -}; - -#endif
\ No newline at end of file diff --git a/ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/libs/maxiGrains.cpp b/ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/libs/maxiGrains.cpp deleted file mode 100644 index 951f3b5..0000000 --- a/ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/libs/maxiGrains.cpp +++ /dev/null @@ -1,6 +0,0 @@ -#include "maxiGrains.h" - - - - - diff --git a/ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/libs/maxiGrains.h b/ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/libs/maxiGrains.h deleted file mode 100644 index d17ffc9..0000000 --- a/ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/libs/maxiGrains.h +++ /dev/null @@ -1,443 +0,0 @@ - - -#ifndef _MAXI_GRAINS_H -#define _MAXI_GRAINS_H -#include "maximilian.h" - -#if defined(__APPLE_CC__) -#include "accelerate/accelerate.h"; -//Mac users can uncommment the line below to use Apple's accelerate framework for calculating grains. This gives ~300% speed improvement and better sound quality, but doesn't work well on all machines. -//#define MAXIGRAINFAST -#endif - -#define PI 3.1415926535897932384626433832795028841968 - -#include <list> - -typedef unsigned long ulong; - -//window functions from http://en.wikipedia.org/wiki/Window_function#High-_and_moderate-resolution_windows - -struct hannWinFunctor { - inline double operator()(ulong windowLength, ulong windowPos) { - return 0.5 * (1.0 - cos((2.0 * PI * windowPos) / (windowLength - 1))); - } -}; - -//this window can produce clicks -struct hammingWinFunctor { - inline double operator()(ulong windowLength, ulong windowPos) { - return 0.54 - (0.46 * cos((2.0 * PI * windowPos) / (windowLength - 1))); - } -}; - - -struct cosineWinFunctor { - inline double operator()(ulong windowLength, ulong windowPos) { - return sin((PI * windowPos) / (windowLength - 1)); - } -}; - -struct rectWinFunctor { - inline double operator()(ulong windowLength, ulong windowPos) { - return 1; - } -}; - -struct triangleWinFunctor { - inline double operator()(ulong windowLength, ulong windowPos) { - return (2.0 / (windowLength-1.0)) * (((windowLength-1.0)/2.0) - fabs(windowPos - ((windowLength-1.0)/2.0))); - } -}; - -struct triangleNZWinFunctor { - //non zero end points - inline double operator()(ulong windowLength, ulong windowPos) { - return (2.0 / windowLength) * ((windowLength/2.0) - fabs(windowPos - ((windowLength-1.0)/2.0))); - } -}; - -struct blackmanHarrisWinFunctor { - inline double operator()(ulong windowLength, ulong windowPos) { - return 0.35875 - - (0.48829 * cos((2 * PI * windowPos) / (windowLength-1))) + - (0.14128 * cos((4 * PI * windowPos) / (windowLength-1))) + - (0.01168 * cos((6 * PI * windowPos) / (windowLength-1))); - } -}; - -struct blackmanNutallWinFunctor { - inline double operator()(ulong windowLength, ulong windowPos) { - return 0.3635819 - - (0.4891775 * cos((2 * PI * windowPos) / (windowLength-1))) + - (0.1365995 * cos((4 * PI * windowPos) / (windowLength-1))) + - (0.0106411 * cos((6 * PI * windowPos) / (windowLength-1))); - } -}; - -template<typename F> -class maxiGrainWindowCache { -public: - unsigned int cacheSize; - - maxiGrainWindowCache() { - cacheSize = maxiSettings::sampleRate / 2.0; //allocate mem for up to 500ms grains - cache = (double**)malloc(cacheSize * sizeof(double*)); - for(int i=0; i < cacheSize; i++) { - cache[i] = NULL; - } - } - - ~maxiGrainWindowCache() { - for(int i=0; i < cacheSize; i++) { - if(NULL != cache[i]) { - delete[] cache[i]; - } - } - } - - double* getWindow(const unsigned int length) { - if (NULL == cache[length]) { - cache[length] = (double*)malloc(length * sizeof(double)); - for(int i=0; i < length; i++) { - cache[length][i] = F()(length, i); - } - } - return cache[length]; - } - -private: - double** cache; - -}; - -class maxiGrainBase { -public: - virtual double play() = 0; - bool finished; -}; - -template<typename F> -class maxiGrain : public maxiGrainBase { -public: - maxiSample *sample; - double pos; - double dur; - ulong sampleStartPos; - ulong sampleIdx; - ulong sampleDur; - ulong sampleEndPos; - double freq; - double speed; - // F winFunc; - double inc; - double frequency; - double* window; -#if defined(__APPLE_CC__) && defined(MAXIGRAINFAST) - double* grainSamples; -#endif - /* - position between 0.0 and 1.0 - duration in seconds - */ - maxiGrain(maxiSample *sample, const double position, const double duration, const double speed, maxiGrainWindowCache<F> *windowCache) :sample(sample), pos(position), dur(duration), speed(speed) - { - sampleStartPos = sample->length * pos; - sampleDur = dur * (double)sample->mySampleRate; - sampleDurMinusOne = sampleDur - 1; - sampleIdx = 0; - finished = 0; - freq = 1.0 / dur; - sampleEndPos = sampleStartPos + sampleDur; - frequency = freq * speed; - if (frequency > 0) { - pos = sampleStartPos; - }else{ - pos = sampleEndPos; - } - inc = sampleDur/(maxiSettings::sampleRate/frequency); - window = windowCache->getWindow(sampleDur); - -#if defined(__APPLE_CC__) && defined(MAXIGRAINFAST) - //premake the grain using fast vector functions, and quadratic interpolation - double *sourceData = (double*)malloc(sampleDur * sizeof(double)); - short* buffer = (short *)sample->myData; - //convert sample to double data - vDSP_vflt16D(buffer + sampleStartPos, 1, sourceData, 1, min(sampleDur, sample->length - sampleStartPos)); - //todo: wraping code - - grainSamples = (double*)malloc(sampleDur * sizeof(double)); - //make list of interpolation indexes - double* interpIndexes = (double*)malloc(sampleDur * sizeof(double)); - double interpPos = sampleStartPos; - for(int i=0; i < sampleDur; i++) { - interpIndexes[i] = interpPos - sampleStartPos; - interpPos += fabs(inc); - } - vDSP_vqintD(sourceData, interpIndexes, 1, grainSamples, 1, sampleDur, sampleDur); - if (frequency < 0) { - vDSP_vrvrsD(grainSamples,1, sampleDur); - } - static double divFactor = 32767.0; - vDSP_vsdivD(grainSamples, 1, &divFactor, grainSamples, 1, sampleDur); - vDSP_vmulD(grainSamples, 1, window, 1, grainSamples, 1, sampleDur); - delete sourceData, interpIndexes; -#endif - } - - ~maxiGrain() { -#if defined(__APPLE_CC__) && defined(MAXIGRAINFAST) - delete[] grainSamples; -#endif - } - - double play() { - double output = 0.0; - if (!finished) { -#if defined(__APPLE_CC__) && defined(MAXIGRAINFAST) - output = grainSamples[sampleIdx]; -#else - envValue = window[sampleIdx]; - double remainder; - long a,b; - short* buffer = (short *)sample->myData; - if (frequency >0.) { - pos += inc; - long posl = static_cast<long>(pos); - remainder = pos - posl; - a=posl++; - if (a>=sample->length) { - a=posl-1; - } - b = posl+2; - if (b>=sample->length) { - b=sample->length-1; - } - output = (double) ((1-remainder) * buffer[a] + - remainder * buffer[b])/32767;//linear interpolation - } else { - frequency=frequency-(frequency+frequency); - pos += inc; - long posl = static_cast<long>(pos); - remainder = pos - posl; - if (posl-1>=0) { - a=posl-1; - } - else { - a=0; - } - if (posl-2>=0) { - b=posl-2; - } - else { - b=0; - } - output = (double) ((-1-remainder) * buffer[a] + - remainder * buffer[b])/32767;//linear interpolation - } - output *= envValue; -#endif - } - sampleIdx++; - if (sampleIdx >= sampleDur) finished = 1; - return output; - } - -private: - maxiGrain(); - double envValue; - ulong sampleDurMinusOne; -}; - - -typedef list<maxiGrainBase*> grainList; - -class maxiGrainPlayer { -public: - grainList grains; - maxiSample *sample; - - maxiGrainPlayer(maxiSample *sample) : sample(sample) { - } - - void addGrain(maxiGrainBase *g) { - grains.push_back(g); - } - - double play() { - double total = 0.0; - for(grainList::iterator it = grains.begin(); it != grains.end(); ++it) { - total += (*it)->play(); - if ((*it)->finished) { - delete(*it); - grains.erase(it); - } - } - return total; - } -}; - -template<typename F> -class maxiTimestretch { -public: - double position; - long cycles; - maxiSample *sample; - maxiGrainPlayer *grainPlayer; - maxiGrainWindowCache<F> windowCache; - double randomOffset; - - maxiTimestretch(maxiSample *sample) : sample(sample) { - position=0; - cycles=0; - grainPlayer = new maxiGrainPlayer(sample); - randomOffset=0; - } - - ~maxiTimestretch() { - delete grainPlayer; - } - - double play(double speed, double grainLength, int overlaps, double posMod=0.0) { - position = position + (1 * speed); - cycles++; - if (position > sample->length) position=0; - if (position < 0) position = sample->length; - double cycleLength = grainLength * maxiSettings::sampleRate / overlaps; - double cycleMod = fmod(cycles, cycleLength + randomOffset); - if (0 == floor(cycleMod)) { - // cout << cycleMod << endl; - speed = (speed > 0 ? 1 : -1); - // speed = speed - ((cycleMod / cycleLength) * 0.1); - maxiGrain<F> *g = new maxiGrain<F>(sample, max(min(1.0,(position / sample->length) + posMod),0.0), grainLength, speed, &windowCache); - grainPlayer->addGrain(g); - // cout << grainPlayer->grains.size() << endl; - // randomOffset = rand() % 10; - // randomOffset = rand() % 10; - } - return grainPlayer->play(); - } - - double play2(double pos, double grainLength, int overlaps) { - cycles++; - pos *= sample->length; - if (0 == floor(fmod(cycles, grainLength * maxiSettings::sampleRate / overlaps))) { - maxiGrain<F> *g = new maxiGrain<F>(sample, max(min(1.0,(pos / sample->length)),0.0), grainLength, 1, &windowCache); - grainPlayer->addGrain(g); - } - return grainPlayer->play(); - } -}; - -//in maxiTimeStretch, the speed is either 1 or -1, and the actual speed value only affects the grain position -//in maxiPitchShift, speed is uncoupled from position and allowed to set it's value incrementally, resulting in pitchshift. -//with both high speed values and negative speed values there are some terrific artefacts! - -template<typename F> -class maxiPitchShift { -public: - double position; - long cycles; - maxiSample *sample; - maxiGrainPlayer *grainPlayer; - maxiGrainWindowCache<F> windowCache; - double randomOffset; - - maxiPitchShift(maxiSample *sample) : sample(sample) { - position=0; - cycles=0; - grainPlayer = new maxiGrainPlayer(sample); - randomOffset=0; - } - - ~maxiPitchShift() { - delete grainPlayer; - } - - double play(double speed, double grainLength, int overlaps, double posMod=0.0) { - position = position + 1; - cycles++; - if (position > sample->length) position=0; - if (position < 0) position = sample->length; - double cycleLength = grainLength * maxiSettings::sampleRate / overlaps; - double cycleMod = fmod(cycles, cycleLength + randomOffset); - if (0 == floor(cycleMod)) { - // cout << cycleMod << endl; - //speed = (speed > 0 ? 1 : -1); - speed = speed - ((cycleMod / cycleLength) * 0.1); - maxiGrain<F> *g = new maxiGrain<F>(sample, max(min(1.0,(position / sample->length) + posMod),0.0), grainLength, speed, &windowCache); - grainPlayer->addGrain(g); - // cout << grainPlayer->grains.size() << endl; - // randomOffset = rand() % 10; - // randomOffset = rand() % 10; - } - return grainPlayer->play(); - } - - double play2(double pos, double grainLength, int overlaps) { - cycles++; - pos *= sample->length; - if (0 == floor(fmod(cycles, grainLength * maxiSettings::sampleRate / overlaps))) { - maxiGrain<F> *g = new maxiGrain<F>(sample, max(min(1.0,(pos / sample->length)),0.0), grainLength, 1, &windowCache); - grainPlayer->addGrain(g); - } - return grainPlayer->play(); - } -}; - -//and here's maxiPitchStretch. Args to the play function are basically speed for 'pitch' and rate for playback rate. -//the rest is the same. - -template<typename F> -class maxiPitchStretch { -public: - double position; - long cycles; - maxiSample *sample; - maxiGrainPlayer *grainPlayer; - maxiGrainWindowCache<F> windowCache; - double randomOffset; - - maxiPitchStretch(maxiSample *sample) : sample(sample) { - position=0; - cycles=0; - grainPlayer = new maxiGrainPlayer(sample); - randomOffset=0; - } - - ~maxiPitchStretch() { - delete grainPlayer; - } - - double play(double speed, double rate, double grainLength, int overlaps, double posMod=0.0) { - position = position + (1 * rate); - cycles++; - if (position > sample->length) position=0; - if (position < 0) position = sample->length; - double cycleLength = grainLength * maxiSettings::sampleRate / overlaps; - double cycleMod = fmod(cycles, cycleLength + randomOffset); - if (0 == floor(cycleMod)) { - // cout << cycleMod << endl; - //speed = (speed > 0 ? 1 : -1); - speed = speed - ((cycleMod / cycleLength) * 0.1); - maxiGrain<F> *g = new maxiGrain<F>(sample, max(min(1.0,(position / sample->length) + posMod),0.0), grainLength, speed, &windowCache); - grainPlayer->addGrain(g); - // cout << grainPlayer->grains.size() << endl; - // randomOffset = rand() % 10; - // randomOffset = rand() % 10; - } - return grainPlayer->play(); - } - - double play2(double pos, double grainLength, int overlaps) { - cycles++; - pos *= sample->length; - if (0 == floor(fmod(cycles, grainLength * maxiSettings::sampleRate / overlaps))) { - maxiGrain<F> *g = new maxiGrain<F>(sample, max(min(1.0,(pos / sample->length)),0.0), grainLength, 1, &windowCache); - grainPlayer->addGrain(g); - } - return grainPlayer->play(); - } -}; - -#endif
\ No newline at end of file diff --git a/ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/libs/maxiMFCC.cpp b/ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/libs/maxiMFCC.cpp deleted file mode 100644 index e72fd75..0000000 --- a/ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/libs/maxiMFCC.cpp +++ /dev/null @@ -1,78 +0,0 @@ -/* - * maxiMFCC.cpp - * mfccs - * - * Created by Chris on 08/03/2011. - * Copyright 2011 Goldsmiths Creative Computing. All rights reserved. - * - */ - -#include "maxiMFCC.h" - - - -template <> -void maxiMFCCAnalyser<double>::dct(double *mfccs) { - vDSP_mmulD(melBands, 1, dctMatrix, 1, mfccs, 1, 1, numCoeffs, numFilters); - double n = (double) numCoeffs; - vDSP_vsdivD(mfccs, 1, &n, mfccs, 1, numCoeffs); -} - -template <> -void maxiMFCCAnalyser<float>::dct(float *mfccs) { - vDSP_mmul(melBands, 1, dctMatrix, 1, mfccs, 1, 1, numCoeffs, numFilters); - float n = (float) numCoeffs; - vDSP_vsdiv(mfccs, 1, &n, mfccs, 1, numCoeffs); -} - -template <> -void maxiMFCCAnalyser<double>::melFilterAndLogSquare(float* powerSpectrum) { -#ifdef __APPLE_CC__ - //conv to double - vDSP_vspdp(powerSpectrum, 1, doubleSpec, 1, numBins); - // vDSP_mmulD(doubleSpec, 1, melFilters, 1, melBands, 1, 1, 42, 512); - vDSP_mmulD(doubleSpec, 1, melFilters, 1, melBands, 1, 1, numFilters, numBins); -#endif - melFilterAndLogSq_Part2(); -} - - -template <> -void maxiMFCCAnalyser<float>::melFilterAndLogSquare(float* powerSpectrum) { -#ifdef __APPLE_CC__ - vDSP_mmul(powerSpectrum, 1, melFilters, 1, melBands, 1, 1, numFilters, numBins); -#endif - melFilterAndLogSq_Part2(); -} - -template <class T> -void maxiMFCCAnalyser<T>::melFilterAndLogSq_Part2() { -#ifdef __APPLE_CC__ -#else - for (int filter = 0;filter < numFilters;filter++) { - melBands[filter] = 0.0; - for (int bin=0;bin<numBins;bin++) { - // int idx = (numBins * filter) + bin; - int idx = filter + (bin * numFilters); - // melBands[filter] += (melFilters[filter][bin] * powerSpectrum[bin]); - melBands[filter] += (melFilters[idx] * powerSpectrum[bin]); - } - } -#endif - for(int filter=0; filter < numFilters; filter++) { - // log the square - melBands[filter] = melBands[filter] > 0.000001 ? log(melBands[filter] * melBands[filter]) : 0.0; - } -} - - - - - - - - - - - - diff --git a/ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/libs/maxiMFCC.h b/ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/libs/maxiMFCC.h deleted file mode 100644 index 60bfe04..0000000 --- a/ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/libs/maxiMFCC.h +++ /dev/null @@ -1,204 +0,0 @@ -/* - * maxiMFCC.h - * mfccs - * - * Created by Chris on 08/03/2011. - * Copyright 2011 Goldsmiths Creative Computing. All rights reserved. - * - - Based on Matthew Yee-King's MFCCMYK java class - */ - -#pragma once -#pragma pack(16) - -#include "maxiFFT.h" -#include <math.h> -#include <iostream> -#ifdef __APPLE_CC__ -#include <Accelerate/Accelerate.h> -#endif - -using namespace std; - - -// implements this formula: -// mel = 2595 log10(Hz/700 + 1) -inline double hzToMel(double hz){ - return 2595.0 * (log10(hz/700.0 + 1.0)); -} - -// implements this formula -// Hz = 700 (10^(mel/2595) - 1) -inline double melToHz(double mel){ - return 700.0 * (pow(10, mel/2595.0) - 1.0); -} - -template <class T> -class maxiMFCCAnalyser { -public: - T *melBands; - maxiMFCCAnalyser():melFilters(NULL),dctMatrix(NULL), melBands(NULL){}; - ~maxiMFCCAnalyser() { - if (melFilters) { - delete[] melFilters; - delete[] melBands; - delete[] dctMatrix; -#ifdef __APPLE_CC__ - delete doubleSpec; -#endif - } - } - - void setup(unsigned int numBins, unsigned int numFilters, unsigned int numCoeffs, double minFreq, double maxFreq, unsigned int sampleRate) - { - this->numFilters = numFilters; - this->numCoeffs = numCoeffs; - this->minFreq = minFreq; - this->maxFreq = maxFreq; - this->sampleRate = sampleRate; - this->numBins = numBins; - melFilters = NULL; - melBands = (T*) malloc(sizeof(T) * numFilters); -#ifdef __APPLE_CC__ - doubleSpec = (T*)malloc(sizeof(T) * numBins); -#endif - //create new matrix - dctMatrix = (T*)malloc(sizeof(T) * numCoeffs * numFilters); - calcMelFilterBank(sampleRate, numBins); - createDCTCoeffs(); - } - void mfcc(float* powerSpectrum, T *mfccs) { - melFilterAndLogSquare(powerSpectrum); - dct(mfccs); - } - -private: - unsigned int numFilters, numCoeffs; - double minFreq, maxFreq; - unsigned int sampleRate; - T *melFilters; - unsigned int numBins; - T *dctMatrix; -#ifdef __APPLE_CC__ - T *doubleSpec; -#endif - -#ifdef __APPLE_CC__ - void dct(T *mfccs); //define later -#else - void dct(T *mfccs) { - for(int i=0; i < numCoeffs; i++) { - mfccs[i] = 0.0; - } - for(int i=0; i < numCoeffs; i++ ) { - for(int j=0; j < numFilters; j++) { - int idx = i + (j * numCoeffs); - mfccs[i] += (dctMatrix[idx] * melBands[j]); - } - } - for(int i=0; i < numCoeffs; i++) { - mfccs[i] /= numCoeffs; - } - } -#endif - - void melFilterAndLogSquare(float* powerSpectrum); - void melFilterAndLogSq_Part2(); - - - void calcMelFilterBank(double sampleRate, int numBins) { - - double mel, dMel, maxMel, minMel, nyquist, binFreq, start, end, thisF, nextF, prevF; - int numValidBins; - - // ignore bins over nyquist - numValidBins = numBins; - - nyquist = sampleRate/2; - if (maxFreq > nyquist) { - maxFreq = nyquist; - } - - maxMel = hzToMel(maxFreq); - minMel = hzToMel(minFreq); - - dMel = (maxMel - minMel) / (numFilters + 2 - 1); - - T *filtPos = (T*) malloc(sizeof(double) * (numFilters + 2)); - - // first generate an array of start and end freqs for each triangle - mel = minMel; - for (int i=0;i<numFilters + 2;i++) { - // start of the triangle - filtPos[i] = melToHz(mel); - // std::cout << "[" << i << "] MFCC: centre is at " <<filtPos[i]<<"hz "<<mel<<" mels" << endl; - mel += dMel; - } - // now generate the coefficients for the mag spectrum - melFilters = (T*) malloc(sizeof(T) * numFilters * numValidBins); - - for (int filter = 1; filter < numFilters; filter++) { - for (int bin=0;bin<numValidBins;bin++) { - // frequency this bin represents - binFreq = (T) sampleRate / (T) numValidBins * (T) bin; - thisF = filtPos[filter]; - nextF = filtPos[filter+1]; - prevF = filtPos[filter-1]; - int idx = filter + (bin * numFilters); - if (binFreq > nextF || binFreq < prevF) { - // outside this filter - melFilters[idx] = 0; - //cout << "MFCCMYK: filter at " <<thisF << " bin at " <<binFreq <<" coeff " <<melFilters[filter][bin] << endl; - } - else { - T height = 2.0 / (nextF - prevF); - - if (binFreq < thisF) { - // up - start = prevF; - end = thisF; - melFilters[idx] = (binFreq - start) * (height / (thisF - start)); - } - else { - // down - start = thisF; - end = nextF; - melFilters[idx] = height + ((binFreq - thisF) * (-height /(nextF - thisF))); - } - // cout << "MFCCMYK: filter at " <<thisF << " bin at " <<binFreq <<" coeff " <<melFilters[filter][bin] << endl; - //cout << "MFCCMYK: filter at " <<thisF << " bin at " <<binFreq <<" coeff " <<melFilters[idx] << endl; - } - } - } - } - void createDCTCoeffs() { - T k = 3.14159265358979323846/numFilters; - T w1 = 1.0/(sqrt(numFilters)); - T w2 = sqrt(2.0/numFilters); - - - //generate dct matrix - for(int i = 0; i < numCoeffs; i++) - { - for(int j = 0; j < numFilters; j++) - { - int idx = i + (j * numCoeffs); - if(i == 0) - dctMatrix[idx]= w1 * cos(k * (i+1) * (j + 0.5)); - else - dctMatrix[idx] = w2 * cos(k * (i+1) * (j + 0.5)); - } - } - - - } - - - -}; - - - -typedef maxiMFCCAnalyser<double> maxiMFCC; -//typedef maxiMFCCAnalyser<float> maxiFloatMFCC; diff --git a/ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/libs/maximilian.cpp b/ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/libs/maximilian.cpp deleted file mode 100644 index 63b9a34..0000000 --- a/ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/libs/maximilian.cpp +++ /dev/null @@ -1,1028 +0,0 @@ - -/* - * maximilian.cpp - * platform independent synthesis library using portaudio or rtaudio - * - * Created by Mick Grierson on 29/12/2009. - * Copyright 2009 Mick Grierson & Strangeloop Limited. All rights reserved. - * Thanks to the Goldsmiths Creative Computing Team. - * Special thanks to Arturo Castro for the PortAudio implementation. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * 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. - * - */ - -#include "maximilian.h" -#include "math.h" - - -//int channels=2; -//int samplerate=44100; -//int buffersize=1024; -float chandiv= 1; - -int maxiSettings::sampleRate = 44100; -int maxiSettings::channels = 2; -int maxiSettings::bufferSize = 1024; - -double sineBuffer[514]={0,0.012268,0.024536,0.036804,0.049042,0.06131,0.073547,0.085785,0.097992,0.1102,0.12241,0.13455,0.1467,0.15884,0.17093,0.18301,0.19507,0.20709,0.21909,0.23105,0.24295,0.25485,0.26669,0.2785,0.29025,0.30197,0.31366,0.32529,0.33685,0.34839,0.35986,0.37128,0.38266,0.39395,0.40521,0.41641,0.42752,0.4386,0.44958,0.46051,0.47137,0.48215,0.49286,0.50351,0.51407,0.52457,0.53497,0.54529,0.55554,0.5657,0.57578,0.58575,0.59567,0.60547,0.6152,0.62482,0.63437,0.6438,0.65314,0.66238,0.67151,0.68057,0.68951,0.69833,0.70706,0.7157,0.72421,0.7326,0.74091,0.74908,0.75717,0.76514,0.77298,0.7807,0.7883,0.79581,0.80316,0.81042,0.81754,0.82455,0.83142,0.8382,0.84482,0.85132,0.8577,0.86392,0.87006,0.87604,0.88187,0.8876,0.89319,0.89862,0.90396,0.90912,0.91415,0.91907,0.92383,0.92847,0.93295,0.93729,0.9415,0.94556,0.94949,0.95325,0.95691,0.96039,0.96375,0.96692,0.97,0.9729,0.97565,0.97827,0.98074,0.98306,0.98523,0.98724,0.98914,0.99084,0.99243,0.99387,0.99515,0.99628,0.99725,0.99808,0.99875,0.99927,0.99966,0.99988,0.99997,0.99988,0.99966,0.99927,0.99875,0.99808,0.99725,0.99628,0.99515,0.99387,0.99243,0.99084,0.98914,0.98724,0.98523,0.98306,0.98074,0.97827,0.97565,0.9729,0.97,0.96692,0.96375,0.96039,0.95691,0.95325,0.94949,0.94556,0.9415,0.93729,0.93295,0.92847,0.92383,0.91907,0.91415,0.90912,0.90396,0.89862,0.89319,0.8876,0.88187,0.87604,0.87006,0.86392,0.8577,0.85132,0.84482,0.8382,0.83142,0.82455,0.81754,0.81042,0.80316,0.79581,0.7883,0.7807,0.77298,0.76514,0.75717,0.74908,0.74091,0.7326,0.72421,0.7157,0.70706,0.69833,0.68951,0.68057,0.67151,0.66238,0.65314,0.6438,0.63437,0.62482,0.6152,0.60547,0.59567,0.58575,0.57578,0.5657,0.55554,0.54529,0.53497,0.52457,0.51407,0.50351,0.49286,0.48215,0.47137,0.46051,0.44958,0.4386,0.42752,0.41641,0.40521,0.39395,0.38266,0.37128,0.35986,0.34839,0.33685,0.32529,0.31366,0.30197,0.29025,0.2785,0.26669,0.25485,0.24295,0.23105,0.21909,0.20709,0.19507,0.18301,0.17093,0.15884,0.1467,0.13455,0.12241,0.1102,0.097992,0.085785,0.073547,0.06131,0.049042,0.036804,0.024536,0.012268,0,-0.012268,-0.024536,-0.036804,-0.049042,-0.06131,-0.073547,-0.085785,-0.097992,-0.1102,-0.12241,-0.13455,-0.1467,-0.15884,-0.17093,-0.18301,-0.19507,-0.20709,-0.21909,-0.23105,-0.24295,-0.25485,-0.26669,-0.2785,-0.29025,-0.30197,-0.31366,-0.32529,-0.33685,-0.34839,-0.35986,-0.37128,-0.38266,-0.39395,-0.40521,-0.41641,-0.42752,-0.4386,-0.44958,-0.46051,-0.47137,-0.48215,-0.49286,-0.50351,-0.51407,-0.52457,-0.53497,-0.54529,-0.55554,-0.5657,-0.57578,-0.58575,-0.59567,-0.60547,-0.6152,-0.62482,-0.63437,-0.6438,-0.65314,-0.66238,-0.67151,-0.68057,-0.68951,-0.69833,-0.70706,-0.7157,-0.72421,-0.7326,-0.74091,-0.74908,-0.75717,-0.76514,-0.77298,-0.7807,-0.7883,-0.79581,-0.80316,-0.81042,-0.81754,-0.82455,-0.83142,-0.8382,-0.84482,-0.85132,-0.8577,-0.86392,-0.87006,-0.87604,-0.88187,-0.8876,-0.89319,-0.89862,-0.90396,-0.90912,-0.91415,-0.91907,-0.92383,-0.92847,-0.93295,-0.93729,-0.9415,-0.94556,-0.94949,-0.95325,-0.95691,-0.96039,-0.96375,-0.96692,-0.97,-0.9729,-0.97565,-0.97827,-0.98074,-0.98306,-0.98523,-0.98724,-0.98914,-0.99084,-0.99243,-0.99387,-0.99515,-0.99628,-0.99725,-0.99808,-0.99875,-0.99927,-0.99966,-0.99988,-0.99997,-0.99988,-0.99966,-0.99927,-0.99875,-0.99808,-0.99725,-0.99628,-0.99515,-0.99387,-0.99243,-0.99084,-0.98914,-0.98724,-0.98523,-0.98306,-0.98074,-0.97827,-0.97565,-0.9729,-0.97,-0.96692,-0.96375,-0.96039,-0.95691,-0.95325,-0.94949,-0.94556,-0.9415,-0.93729,-0.93295,-0.92847,-0.92383,-0.91907,-0.91415,-0.90912,-0.90396,-0.89862,-0.89319,-0.8876,-0.88187,-0.87604,-0.87006,-0.86392,-0.8577,-0.85132,-0.84482,-0.8382,-0.83142,-0.82455,-0.81754,-0.81042,-0.80316,-0.79581,-0.7883,-0.7807,-0.77298,-0.76514,-0.75717,-0.74908,-0.74091,-0.7326,-0.72421,-0.7157,-0.70706,-0.69833,-0.68951,-0.68057,-0.67151,-0.66238,-0.65314,-0.6438,-0.63437,-0.62482,-0.6152,-0.60547,-0.59567,-0.58575,-0.57578,-0.5657,-0.55554,-0.54529,-0.53497,-0.52457,-0.51407,-0.50351,-0.49286,-0.48215,-0.47137,-0.46051,-0.44958,-0.4386,-0.42752,-0.41641,-0.40521,-0.39395,-0.38266,-0.37128,-0.35986,-0.34839,-0.33685,-0.32529,-0.31366,-0.30197,-0.29025,-0.2785,-0.26669,-0.25485,-0.24295,-0.23105,-0.21909,-0.20709,-0.19507,-0.18301,-0.17093,-0.15884,-0.1467,-0.13455,-0.12241,-0.1102,-0.097992,-0.085785,-0.073547,-0.06131,-0.049042,-0.036804,-0.024536,-0.012268,0,0.012268 -}; - -double mtofarray[129]={0, 8.661957, 9.177024, 9.722718, 10.3, 10.913383, 11.562325, 12.25, 12.978271, 13.75, 14.567617, 15.433853, 16.351599, 17.323914, 18.354048, 19.445436, 20.601723, 21.826765, 23.124651, 24.5, 25.956543, 27.5, 29.135235, 30.867706, 32.703197, 34.647827, 36.708096, 38.890873, 41.203445, 43.65353, 46.249302, 49., 51.913086, 55., 58.27047, 61.735413, 65.406395, 69.295654, 73.416191, 77.781746, 82.406891, 87.30706, 92.498604, 97.998856, 103.826172, 110., 116.540939, 123.470825, 130.81279, 138.591309, 146.832382, 155.563492, 164.813782, 174.61412, 184.997208, 195.997711, 207.652344, 220., 233.081879, 246.94165, 261.62558, 277.182617,293.664764, 311.126984, 329.627563, 349.228241, 369.994415, 391.995422, 415.304688, 440., 466.163757, 493.883301, 523.25116, 554.365234, 587.329529, 622.253967, 659.255127, 698.456482, 739.988831, 783.990845, 830.609375, 880., 932.327515, 987.766602, 1046.502319, 1108.730469, 1174.659058, 1244.507935, 1318.510254, 1396.912964, 1479.977661, 1567.981689, 1661.21875, 1760., 1864.655029, 1975.533203, 2093.004639, 2217.460938, 2349.318115, 2489.015869, 2637.020508, 2793.825928, 2959.955322, 3135.963379, 3322.4375, 3520., 3729.31, 3951.066406, 4186.009277, 4434.921875, 4698.63623, 4978.031738, 5274.041016, 5587.651855, 5919.910645, 6271.926758, 6644.875, 7040., 7458.620117, 7902.132812, 8372.018555, 8869.84375, 9397.272461, 9956.063477, 10548.082031, 11175.303711, 11839.821289, 12543.853516, 13289.75}; - -void setup();//use this to do any initialisation if you want. - -void play(double *channels);//run dac! - -maxiOsc::maxiOsc(){ - phase = 0.0; - // memset(phases,0,500); - // memset(freqs,0,500); -} - -double maxiOsc::noise() { - //always the same unless you seed it. - float r = rand()/(float)RAND_MAX; - output=r*2-1; - return(output); -} - -void maxiOsc::phaseReset(double phaseIn) { - phase=phaseIn; - -} - -double maxiOsc::sinewave(double frequency) { - output=sin (phase*(TWOPI)); - if ( phase >= 1.0 ) phase -= 1.0; - phase += (1./(maxiSettings::sampleRate/(frequency))); - return(output); - -} - -double maxiOsc::sinebuf4(double frequency) { - double remainder; - double a,b,c,d,a1,a2,a3; - phase += 512./(maxiSettings::sampleRate/(frequency)); - if ( phase >= 511 ) phase -=512; - remainder = phase - floor(phase); - - if (phase==0) { - a=sineBuffer[(long) 512]; - b=sineBuffer[(long) phase]; - c=sineBuffer[(long) phase+1]; - d=sineBuffer[(long) phase+2]; - - } else { - a=sineBuffer[(long) phase-1]; - b=sineBuffer[(long) phase]; - c=sineBuffer[(long) phase+1]; - d=sineBuffer[(long) phase+2]; - - } - - a1 = 0.5f * (c - a); - a2 = a - 2.5 * b + 2.f * c - 0.5f * d; - a3 = 0.5f * (d - a) + 1.5f * (b - c); - output = double (((a3 * remainder + a2) * remainder + a1) * remainder + b); - return(output); -} - -double maxiOsc::sinebuf(double frequency) { - double remainder; - phase += 512./(maxiSettings::sampleRate/(frequency*chandiv)); - if ( phase >= 511 ) phase -=512; - remainder = phase - floor(phase); - output = (double) ((1-remainder) * sineBuffer[1+ (long) phase] + remainder * sineBuffer[2+(long) phase]); - return(output); -} - -double maxiOsc::coswave(double frequency) { - output=cos (phase*(TWOPI)); - if ( phase >= 1.0 ) phase -= 1.0; - phase += (1./(maxiSettings::sampleRate/(frequency))); - return(output); - -} - -double maxiOsc::phasor(double frequency) { - output=phase; - if ( phase >= 1.0 ) phase -= 1.0; - phase += (1./(maxiSettings::sampleRate/(frequency))); - return(output); -} - -double maxiOsc::square(double frequency) { - if (phase<0.5) output=-1; - if (phase>0.5) output=1; - if ( phase >= 1.0 ) phase -= 1.0; - phase += (1./(maxiSettings::sampleRate/(frequency))); - return(output); -} - -double maxiOsc::pulse(double frequency, double duty) { - if (duty<0.) duty=0; - if (duty>1.) duty=1; - if ( phase >= 1.0 ) phase -= 1.0; - phase += (1./(maxiSettings::sampleRate/(frequency))); - if (phase<duty) output=-1.; - if (phase>duty) output=1.; - return(output); -} - -double maxiOsc::phasor(double frequency, double startphase, double endphase) { - output=phase; - if (phase<startphase) { - phase=startphase; - } - if ( phase >= endphase ) phase = startphase; - phase += ((endphase-startphase)/(maxiSettings::sampleRate/(frequency))); - return(output); -} - - -double maxiOsc::saw(double frequency) { - - output=phase; - if ( phase >= 1.0 ) phase -= 2.0; - phase += (1./(maxiSettings::sampleRate/(frequency))); - return(output); - -} - -double maxiOsc::triangle(double frequency) { - if ( phase >= 1.0 ) phase -= 1.0; - phase += (1./(maxiSettings::sampleRate/(frequency))); - if (phase <= 0.5 ) { - output =((phase)*4)-1; - } else { - output =((0.5-phase)*4)-1; - } - return(output); - -} - -//I like this. -double maxiEnvelope::line(int numberofsegments,double segments[1000]) { - if (isPlaying==1) {//only make a sound once you've been triggered - - period=2./(segments[valindex+1]*0.004); - nextval=segments[valindex+2]; - currentval=segments[valindex]; - if (currentval-amplitude > 0.0000001 && valindex < numberofsegments) { - amplitude += ((currentval-startval)/(maxiSettings::sampleRate/period)); - } else if (currentval-amplitude < -0.0000001 && valindex < numberofsegments) { - amplitude -= (((currentval-startval)*(-1))/(maxiSettings::sampleRate/period)); - } else if (valindex >numberofsegments-1) { - valindex=numberofsegments-2; - } else { - valindex=valindex+2; - startval=currentval; - } - output=amplitude; - - } - else { - output=0; - - } - return(output); -} - -//and this -void maxiEnvelope::trigger(int index, double amp) { - isPlaying=1;//ok the envelope is being used now. - valindex=index; - amplitude=amp; - -} - -//and this - -maxiDelayline::maxiDelayline() { - memset( memory, 0, 88200*sizeof (double) ); - -} - - -double maxiDelayline::dl(double input, int size, double feedback) { - if ( phase >=size ) { - phase = 0; - } - output=memory[phase]; - memory[phase]=(memory[phase]*feedback)+(input*feedback)*0.5; - phase+=1; - return(output); - -} - -double maxiDelayline::dl(double input, int size, double feedback, int position) { - if ( phase >=size ) phase = 0; - if ( position >=size ) position = 0; - output=memory[position]; - memory[phase]=(memory[phase]*feedback)+(input*feedback)*chandiv; - phase+=1; - return(output); - -} - - -//I particularly like these. cutoff between 0 and 1 -double maxiFilter::lopass(double input, double cutoff) { - output=outputs[0] + cutoff*(input-outputs[0]); - outputs[0]=output; - return(output); -} -//as above -double maxiFilter::hipass(double input, double cutoff) { - output=input-(outputs[0] + cutoff*(input-outputs[0])); - outputs[0]=output; - return(output); -} -//awesome. cuttof is freq in hz. res is between 1 and whatever. Watch out! -double maxiFilter::lores(double input,double cutoff1, double resonance) { - cutoff=cutoff1*0.5; - if (cutoff<10) cutoff=10; - if (cutoff>(maxiSettings::sampleRate*0.5)) cutoff=(maxiSettings::sampleRate*0.5); - if (resonance<1.) resonance = 1.; - z=cos(TWOPI*cutoff/maxiSettings::sampleRate); - c=2-2*z; - double r=(sqrt(2.0)*sqrt(-pow((z-1.0),3.0))+resonance*(z-1))/(resonance*(z-1)); - x=x+(input-y)*c; - y=y+x; - x=x*r; - output=y; - return(output); -} - -//working hires filter -double maxiFilter::hires(double input,double cutoff1, double resonance) { - cutoff=cutoff1*0.5; - if (cutoff<10) cutoff=10; - if (cutoff>(maxiSettings::sampleRate*0.5)) cutoff=(maxiSettings::sampleRate*0.5); - if (resonance<1.) resonance = 1.; - z=cos(TWOPI*cutoff/maxiSettings::sampleRate); - c=2-2*z; - double r=(sqrt(2.0)*sqrt(-pow((z-1.0),3.0))+resonance*(z-1))/(resonance*(z-1)); - x=x+(input-y)*c; - y=y+x; - x=x*r; - output=input-y; - return(output); -} - -//This works a bit. Needs attention. -double maxiFilter::bandpass(double input,double cutoff1, double resonance) { - cutoff=cutoff1; - if (cutoff>(maxiSettings::sampleRate*0.5)) cutoff=(maxiSettings::sampleRate*0.5); - if (resonance>=1.) resonance=0.999999; - z=cos(TWOPI*cutoff/maxiSettings::sampleRate); - inputs[0] = (1-resonance)*(sqrt(resonance*(resonance-4.0*pow(z,2.0)+2.0)+1)); - inputs[1] = 2*z*resonance; - inputs[2] = pow((resonance*-1),2); - - output=inputs[0]*input+inputs[1]*outputs[1]+inputs[2]*outputs[2]; - outputs[2]=outputs[1]; - outputs[1]=output; - return(output); -} - -//stereo bus -double *maxiMix::stereo(double input,double two[2],double x) { - if (x>1) x=1; - if (x<0) x=0; - two[0]=input*sqrt(1.0-x); - two[1]=input*sqrt(x); - return(two); -} - -//quad bus -double *maxiMix::quad(double input,double four[4],double x,double y) { - if (x>1) x=1; - if (x<0) x=0; - if (y>1) y=1; - if (y<0) y=0; - four[0]=input*sqrt((1.0-x)*y); - four[1]=input*sqrt((1.0-x)*(1.0-y)); - four[2]=input*sqrt(x*y); - four[3]=input*sqrt(x*(1.0-y)); - return(four); -} - -//ambisonic bus -double *maxiMix::ambisonic(double input,double eight[8],double x,double y,double z) { - if (x>1) x=1; - if (x<0) x=0; - if (y>1) y=1; - if (y<0) y=0; - if (z>1) y=1; - if (z<0) y=0; - eight[0]=input*(sqrt((1.0-x)*y)*1.0-z); - eight[1]=input*(sqrt((1.0-x)*(1.0-y))*1.0-z); - eight[2]=input*(sqrt(x*y)*1.0-z); - eight[3]=input*(sqrt(x*(1.0-y))*1.0-z); - eight[4]=input*(sqrt((1.0-x)*y)*z); - eight[5]=input*(sqrt((1.0-x)*(1.0-y))*z); - eight[6]=input*sqrt((x*y)*z); - eight[7]=input*sqrt((x*(1.0-y))*z); - return(eight); -} - - -bool maxiSample::load(string fileName, int channel) { - myPath = fileName; - readChannel=channel; - return read(); -} - -void maxiSample::trigger() { - position = 0; -} - -bool maxiSample::read() -{ - bool result; - ifstream inFile( myPath.c_str(), ios::in | ios::binary); - result = inFile; - if (inFile) { - bool datafound = false; - inFile.seekg(4, ios::beg); - inFile.read( (char*) &myChunkSize, 4 ); // read the ChunkSize - - inFile.seekg(16, ios::beg); - inFile.read( (char*) &mySubChunk1Size, 4 ); // read the SubChunk1Size - - //inFile.seekg(20, ios::beg); - inFile.read( (char*) &myFormat, sizeof(short) ); // read the file format. This should be 1 for PCM - - //inFile.seekg(22, ios::beg); - inFile.read( (char*) &myChannels, sizeof(short) ); // read the # of channels (1 or 2) - - //inFile.seekg(24, ios::beg); - inFile.read( (char*) &mySampleRate, sizeof(int) ); // read the samplerate - - //inFile.seekg(28, ios::beg); - inFile.read( (char*) &myByteRate, sizeof(int) ); // read the byterate - - //inFile.seekg(32, ios::beg); - inFile.read( (char*) &myBlockAlign, sizeof(short) ); // read the blockalign - - //inFile.seekg(34, ios::beg); - inFile.read( (char*) &myBitsPerSample, sizeof(short) ); // read the bitspersample - - //ignore any extra chunks - char chunkID[5]=""; - chunkID[4] = 0; - int filePos = 36; - while(!datafound && !inFile.eof()) { - inFile.seekg(filePos, ios::beg); - inFile.read((char*) &chunkID, sizeof(char) * 4); - inFile.seekg(filePos + 4, ios::beg); - inFile.read( (char*) &myDataSize, sizeof(int) ); // read the size of the data - filePos += 8; - if (strcmp(chunkID,"data") == 0) { - datafound = true; - }else{ - filePos += myDataSize; - } - } - - // read the data chunk - myData = (char*) malloc(myDataSize * sizeof(char)); - inFile.seekg(filePos, ios::beg); - inFile.read(myData, myDataSize); - length=myDataSize*(0.5/myChannels); - inFile.close(); // close the input file - - if (myChannels>1) { - int position=0; - int channel=readChannel*2; - for (int i=channel;i<myDataSize+6;i+=(myChannels*2)) { - myData[position]=myData[i]; - myData[position+1]=myData[i+1]; - position+=2; - } - } - - }else { - cout << "ERROR: Could not load sample: " <<myPath << endl; - } - - - return result; // this should probably be something more descriptive -} - - -double maxiSample::play() { - // long length=myDataSize*(1./myChannels); - double remainder; - short* buffer = (short *)myData; - position=(position+1); - remainder = position - (long) position; - if ((long) position>length) position=0; - output = - (double) ((1-remainder) * buffer[1+ (long) position] + remainder * buffer[2+(long) position])/32767;//linear interpolation - return(output); -} - -double maxiSample::playOnce() { - // long length=myDataSize*(0.5/myChannels); - double remainder; - short* buffer = (short *)myData; - position=(position+1); - remainder = position - (long) position; - if ((long) position<length) - output = (double) ((1-remainder) * buffer[1+ (long) position] + remainder * buffer[2+(long) position])/32767;//linear interpolation - else - output=0; - - return(output); -} - -double maxiSample::playOnce(double speed) { - double remainder; - //long a,b; - // long length=myDataSize*0.5; - short* buffer = (short *)myData; - position=position+((speed*chandiv*myChannels)/(maxiSettings::sampleRate/mySampleRate)); - if ((long) position<length) - output = (double) ((1-remainder) * buffer[1+ (long) position] + remainder * buffer[2+(long) position])/32767;//linear interpolation - else - output=0; - return(output); -} - -double maxiSample::play(double speed) { - double remainder; - long a,b; - // long length=myDataSize*0.5; - short* buffer = (short *)myData; - position=position+((speed*chandiv*myChannels)/(maxiSettings::sampleRate/mySampleRate)); - if (speed >=0) { - - if ((long) position>=length-1) position=1; - remainder = position - floor(position); - if (position+1<length) { - a=position+1; - - } - else { - a=length-1; - } - if (position+2<length) - { - b=position+2; - } - else { - b=length-1; - } - - output = (double) ((1-remainder) * buffer[a] + remainder * buffer[b])/32767;//linear interpolation - } else { - if ((long) position<0) position=length; - remainder = position - floor(position); - if (position-1>=0) { - a=position-1; - - } - else { - a=0; - } - if (position-2>=0) { - b=position-2; - } - else { - b=0; - } - output = (double) ((-1-remainder) * buffer[a] + remainder * buffer[b])/32767;//linear interpolation - } - return(output); -} - -double maxiSample::play(double frequency, double start, double end) { - return play(frequency, start, end, position); -} - -double maxiSample::play(double frequency, double start, double end, double &pos) { - double remainder; - // long length=myDataSize; - - if (end>=length) end=length-1; - long a,b; - short* buffer = (short *)myData; - if (frequency >0.) { - if (pos<start) { - pos=start; - } - - if ( pos >= end ) pos = start; - pos += ((end-start)/(maxiSettings::sampleRate/(frequency*chandiv))); - remainder = pos - floor(pos); - long posl = floor(pos); - if (posl+1<length) { - a=posl+1; - - } - else { - a=posl-1; - } - if (posl+2<length) { - b=posl+2; - } - else { - b=length-1; - } - - output = (double) ((1-remainder) * buffer[a] + - remainder * buffer[b])/32767;//linear interpolation - } else { - frequency=frequency-(frequency+frequency); - if ( pos <= start ) pos = end; - pos -= ((end-start)/(maxiSettings::sampleRate/(frequency*chandiv))); - remainder = pos - floor(pos); - long posl = floor(pos); - if (posl-1>=0) { - a=posl-1; - } - else { - a=0; - } - if (posl-2>=0) { - b=posl-2; - } - else { - b=0; - } - output = (double) ((-1-remainder) * buffer[a] + - remainder * buffer[b])/32767;//linear interpolation - - } - - return(output); -} - - -//better cubic inerpolation. Cobbled together from various (pd externals, yehar, other places). -double maxiSample::play4(double frequency, double start, double end) { - double remainder; - double a,b,c,d,a1,a2,a3; - short* buffer = (short*)myData; - if (frequency >0.) { - if (position<start) { - position=start; - } - if ( position >= end ) position = start; - position += ((end-start)/(maxiSettings::sampleRate/(frequency*chandiv))); - remainder = position - floor(position); - if (position>0) { - a=buffer[(int)(floor(position))-1]; - - } else { - a=buffer[0]; - - } - - b=buffer[(long) position]; - if (position<end-2) { - c=buffer[(long) position+1]; - - } else { - c=buffer[0]; - - } - if (position<end-3) { - d=buffer[(long) position+2]; - - } else { - d=buffer[0]; - } - a1 = 0.5f * (c - a); - a2 = a - 2.5 * b + 2.f * c - 0.5f * d; - a3 = 0.5f * (d - a) + 1.5f * (b - c); - output = (double) (((a3 * remainder + a2) * remainder + a1) * remainder + b) / 32767; - - } else { - frequency=frequency-(frequency+frequency); - if ( position <= start ) position = end; - position -= ((end-start)/(maxiSettings::sampleRate/(frequency*chandiv))); - remainder = position - floor(position); - if (position>start && position < end-1) { - a=buffer[(long) position+1]; - - } else { - a=buffer[0]; - - } - - b=buffer[(long) position]; - if (position>start) { - c=buffer[(long) position-1]; - - } else { - c=buffer[0]; - - } - if (position>start+1) { - d=buffer[(long) position-2]; - - } else { - d=buffer[0]; - } - a1 = 0.5f * (c - a); - a2 = a - 2.5 * b + 2.f * c - 0.5f * d; - a3 = 0.5f * (d - a) + 1.5f * (b - c); - output = (double) (((a3 * remainder + a2) * -remainder + a1) * -remainder + b) / 32767; - - } - - return(output); -} - -double maxiSample::bufferPlay(unsigned char &bufferin,long length) { - double remainder; - short* buffer = (short *)&bufferin; - position=(position+1); - remainder = position - (long) position; - if ((long) position>length) position=0; - output = (double) ((1-remainder) * buffer[1+ (long) position] + remainder * buffer[2+(long) position])/32767;//linear interpolation - return(output); -} - -double maxiSample::bufferPlay(unsigned char &bufferin,double speed,long length) { - double remainder; - long a,b; - short* buffer = (short *)&bufferin; - position=position+((speed*chandiv*myChannels)/(maxiSettings::sampleRate/mySampleRate)); - if (speed >=0) { - - if ((long) position>=length-1) position=1; - remainder = position - floor(position); - if (position+1<length) { - a=position+1; - - } - else { - a=length-1; - } - if (position+2<length) - { - b=position+2; - } - else { - b=length-1; - } - - output = (double) ((1-remainder) * buffer[a] + remainder * buffer[b])/32767;//linear interpolation - } else { - if ((long) position<0) position=length; - remainder = position - floor(position); - if (position-1>=0) { - a=position-1; - - } - else { - a=0; - } - if (position-2>=0) { - b=position-2; - } - else { - b=0; - } - output = (double) ((-1-remainder) * buffer[a] + remainder * buffer[b])/32767;//linear interpolation - } - return(output); -} - -double maxiSample::bufferPlay(unsigned char &bufferin,double frequency, double start, double end) { - double remainder; - length=end; - long a,b; - short* buffer = (short *)&bufferin; - if (frequency >0.) { - if (position<start) { - position=start; - } - - if ( position >= end ) position = start; - position += ((end-start)/(maxiSettings::sampleRate/(frequency*chandiv))); - remainder = position - floor(position); - long pos = floor(position); - if (pos+1<length) { - a=pos+1; - - } - else { - a=pos-1; - } - if (pos+2<length) { - b=pos+2; - } - else { - b=length-1; - } - - output = (double) ((1-remainder) * buffer[a] + - remainder * buffer[b])/32767;//linear interpolation - } else { - frequency=frequency-(frequency+frequency); - if ( position <= start ) position = end; - position -= ((end-start)/(maxiSettings::sampleRate/(frequency*chandiv))); - remainder = position - floor(position); - long pos = floor(position); - if (pos-1>=0) { - a=pos-1; - } - else { - a=0; - } - if (pos-2>=0) { - b=pos-2; - } - else { - b=0; - } - output = (double) ((-1-remainder) * buffer[a] + - remainder * buffer[b])/32767;//linear interpolation - - } - - return(output); -} - -//better cubic inerpolation. Cobbled together from various (pd externals, yehar, other places). -double maxiSample::bufferPlay4(unsigned char &bufferin,double frequency, double start, double end) { - double remainder; - double a,b,c,d,a1,a2,a3; - short* buffer = (short*)&bufferin; - if (frequency >0.) { - if (position<start) { - position=start; - } - if ( position >= end ) position = start; - position += ((end-start)/(maxiSettings::sampleRate/(frequency*chandiv))); - remainder = position - floor(position); - if (position>0) { - a=buffer[(int)(floor(position))-1]; - - } else { - a=buffer[0]; - - } - - b=buffer[(long) position]; - if (position<end-2) { - c=buffer[(long) position+1]; - - } else { - c=buffer[0]; - - } - if (position<end-3) { - d=buffer[(long) position+2]; - - } else { - d=buffer[0]; - } - a1 = 0.5f * (c - a); - a2 = a - 2.5 * b + 2.f * c - 0.5f * d; - a3 = 0.5f * (d - a) + 1.5f * (b - c); - output = (double) (((a3 * remainder + a2) * remainder + a1) * remainder + b) / 32767; - - } else { - frequency=frequency-(frequency+frequency); - if ( position <= start ) position = end; - position -= ((end-start)/(maxiSettings::sampleRate/(frequency*chandiv))); - remainder = position - floor(position); - if (position>start && position < end-1) { - a=buffer[(long) position+1]; - - } else { - a=buffer[0]; - - } - - b=buffer[(long) position]; - if (position>start) { - c=buffer[(long) position-1]; - - } else { - c=buffer[0]; - - } - if (position>start+1) { - d=buffer[(long) position-2]; - - } else { - d=buffer[0]; - } - a1 = 0.5f * (c - a); - a2 = a - 2.5 * b + 2.f * c - 0.5f * d; - a3 = 0.5f * (d - a) + 1.5f * (b - c); - output = (double) (((a3 * remainder + a2) * -remainder + a1) * -remainder + b) / 32767; - - } - - return(output); -} - - -void maxiSample::getLength() { - length=myDataSize*0.5; -} - - -/* OK this compressor and gate are now ready to use. The envelopes, like all the envelopes in this recent update, use stupid algorithms for - incrementing - consequently a long attack is something like 0.0001 and a long release is like 0.9999. - Annoyingly, a short attack is 0.1, and a short release is 0.99. I'll sort this out laters */ - -double maxiDyn::gate(double input, double threshold, long holdtime, double attack, double release) { - - if (fabs(input)>threshold && attackphase!=1){ - holdcount=0; - releasephase=0; - attackphase=1; - if(amplitude==0) amplitude=0.01; - } - - if (attackphase==1 && amplitude<1) { - amplitude*=(1+attack); - output=input*amplitude; - } - - if (amplitude>=1) { - attackphase=0; - holdphase=1; - } - - if (holdcount<holdtime && holdphase==1) { - output=input; - holdcount++; - } - - if (holdcount==holdtime) { - holdphase=0; - releasephase=1; - } - - if (releasephase==1 && amplitude>0.) { - output=input*(amplitude*=release); - - } - - return output; -} - - -double maxiDyn::compressor(double input, double ratio, double threshold, double attack, double release) { - - if (fabs(input)>threshold && attackphase!=1){ - holdcount=0; - releasephase=0; - attackphase=1; - if(currentRatio==0) currentRatio=ratio; - } - - if (attackphase==1 && currentRatio<ratio-1) { - currentRatio*=(1+attack); - } - - if (currentRatio>=ratio-1) { - attackphase=0; - releasephase=1; - } - - if (releasephase==1 && currentRatio>0.) { - currentRatio*=release; - } - - if (input>0.) { - output = input/(1.+currentRatio); - } else { - output = input/(1.+currentRatio); - } - - return output*(1+log(ratio)); -} - - -/* Lots of people struggle with the envelope generators so here's a new easy one. - It takes mental numbers for attack and release tho. Basically, they're exponentials. - I'll map them out later so that it's a bit more intuitive */ -double maxiEnv::ar(double input, double attack, double release, long holdtime, int trigger) { - - if (trigger==1 && attackphase!=1 && holdphase!=1){ - holdcount=0; - releasephase=0; - attackphase=1; - } - - if (attackphase==1) { - amplitude+=(1*attack); - output=input*amplitude; - } - - if (amplitude>=1) { - amplitude=1; - attackphase=0; - holdphase=1; - } - - if (holdcount<holdtime && holdphase==1) { - output=input; - holdcount++; - } - - if (holdcount==holdtime && trigger==1) { - output=input; - } - - if (holdcount==holdtime && trigger!=1) { - holdphase=0; - releasephase=1; - } - - if (releasephase==1 && amplitude>0.) { - output=input*(amplitude*=release); - - } - - return output; -} - -/* and here's a new adsr. It's not bad, very simple to use*/ - -double maxiEnv::adsr(double input, double attack, double decay, double sustain, double release, long holdtime, int trigger) { - - if (trigger==1 && attackphase!=1 && holdphase!=1 && decayphase!=1){ - holdcount=0; - decayphase=0; - sustainphase=0; - releasephase=0; - attackphase=1; - } - - if (attackphase==1) { - amplitude+=(1*attack); - output=input*amplitude; - } - - if (amplitude>=1) { - amplitude=1; - attackphase=0; - decayphase=1; - } - - if (decayphase==1) { - output=input*(amplitude*=decay); - if (amplitude<=sustain) { - decayphase=0; - holdphase=1; - } - } - - if (holdcount<holdtime && holdphase==1) { - output=input*amplitude; - holdcount++; - } - - if (holdcount==holdtime && trigger==1) { - output=input*amplitude; - } - - if (holdcount==holdtime && trigger!=1) { - holdphase=0; - releasephase=1; - } - - if (releasephase==1 && amplitude>0.) { - output=input*(amplitude*=release); - - } - - return output; -} - -double convert::mtof(int midinote) { - - return mtofarray[midinote]; -}
\ No newline at end of file diff --git a/ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/libs/maximilian.h b/ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/libs/maximilian.h deleted file mode 100755 index 102d552..0000000 --- a/ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/libs/maximilian.h +++ /dev/null @@ -1,366 +0,0 @@ -/* - * maximilian.h - * platform independent synthesis library using portaudio or rtaudio - * - * Created by Mick Grierson on 29/12/2009. - * Copyright 2009 Mick Grierson & Strangeloop Limited. All rights reserved. - * Thanks to the Goldsmiths Creative Computing Team. - * Special thanks to Arturo Castro for the PortAudio implementation. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * 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. - * - */ - -#ifndef MAXIMILIAN_H -#define MAXIMILIAN_H - -//#define MAXIMILIAN_PORTAUDIO -#define MAXIMILIAN_RT_AUDIO - -//#include "ofMain.h" -//#include "ofUtils.h" - - -#include <iostream> -#include <fstream> -#include <string> -#include <cstdlib> -#include "math.h" - -using namespace std; -#define TWOPI (3.14159*2) - -class maxiSettings { -public: - static int sampleRate; - static int channels; - static int bufferSize; - static void setup(int initSampleRate, int initChannels, int initBufferSize) { - maxiSettings::sampleRate = initSampleRate; - maxiSettings::channels = initChannels; - maxiSettings::bufferSize = initBufferSize; - } -}; - - -class maxiOsc { - - double frequency; - double phase; - double startphase; - double endphase; - double output; - double tri; - - -public: - maxiOsc(); - double sinewave(double frequency); - double coswave(double frequency); - double phasor(double frequency); - double phasor(double frequency, double startphase, double endphase); - double saw(double frequency); - double triangle(double frequency); - double square(double frequency); - double pulse(double frequency, double duty); - double noise(); - double sinebuf(double frequency); - double sinebuf4(double frequency); - void phaseReset(double phaseIn); - -}; - - -class maxiEnvelope { - - double period; - double output; - double startval; - double currentval; - double nextval; - int isPlaying; - -public: - double line(int numberofsegments,double segments[100]); - void trigger(int index,double amp); - int valindex; - double amplitude; - -}; - - -class maxiDelayline { - double frequency; - int phase; - double startphase; - double endphase; - double output; - double memory[88200]; - -public: - maxiDelayline(); - double dl(double input, int size, double feedback); - double dl(double input, int size, double feedback, int position); - - -}; - - -class maxiFilter { - double gain; - double input; - double output; - double inputs[10]; - double outputs[10]; - double cutoff1; - double x;//speed - double y;//pos - double z;//pole - double c;//filter coefficient -public: - maxiFilter():x(0.0), y(0.0), z(0.0), c(0.0){}; - double cutoff; - double resonance; - double lores(double input,double cutoff1, double resonance); - double hires(double input,double cutoff1, double resonance); - double bandpass(double input,double cutoff1, double resonance); - double lopass(double input,double cutoff); - double hipass(double input,double cutoff); - -}; - -class maxiMix { - double input; - double two[2]; - double four[4]; - double eight[8]; -public: - double x; - double y; - double z; - double *stereo(double input,double two[2],double x); - double *quad(double input,double four[4], double x,double y); - double *ambisonic(double input,double eight[8],double x,double y, double z); - -}; - -class maxiSample { - -private: - string myPath; - int myChunkSize; - int mySubChunk1Size; - int readChannel; - short myFormat; - int myByteRate; - short myBlockAlign; - short myBitsPerSample; - double position; - double speed; - double output; - -public: - int myDataSize; - short myChannels; - int mySampleRate; - long length; - void getLength(); - - - char* myData; - - // get/set for the Path property - - ~maxiSample() - { - if (myData) delete[] myData; - myChunkSize = NULL; - mySubChunk1Size = NULL; - myFormat = NULL; - myChannels = NULL; - mySampleRate = NULL; - myByteRate = NULL; - myBlockAlign = NULL; - myBitsPerSample = NULL; - myDataSize = NULL; - } - - maxiSample():myData(NULL){}; - - bool load(string fileName, int channel=0); - - void trigger(); - - // read a wav file into this class - bool read(); - - double play(); - - double playOnce(); - - double playOnce(double speed); - - double play(double speed); - - double play(double frequency, double start, double end, double &pos); - - double play(double frequency, double start, double end); - - double play4(double frequency, double start, double end); - - double bufferPlay(unsigned char &bufferin,long length); - - double bufferPlay(unsigned char &bufferin,double speed,long length); - - double bufferPlay(unsigned char &bufferin,double frequency, double start, double end); - - double bufferPlay4(unsigned char &bufferin,double frequency, double start, double end); - - //int open(char *filename) { - // // open the wav file - // char *path = new char[50]; - // strcpy(path, filename); - // sample *myWav = new sample(path); - // return 0; - // } - // // print a summary of the wav file - // int info() { - // char *summary = myWav->getSummary(); - // printf("Summary:\n%s", summary); - // return 0; - // } - // int savefile() { - // // write the summary back out - // strcpy(path, "testout.wav"); - // myWav->setPath(path); - // myWav->save(); - // return 0: - // } - // int close() { - // // collect the garbage - // delete summary; - // delete path; - // delete myWav; - // - // return 0; - // } - // write out the wav file - bool save() - { - fstream myFile (myPath.c_str(), ios::out | ios::binary); - - // write the wav file per the wav file format - myFile.seekp (0, ios::beg); - myFile.write ("RIFF", 4); - myFile.write ((char*) &myChunkSize, 4); - myFile.write ("WAVE", 4); - myFile.write ("fmt ", 4); - myFile.write ((char*) &mySubChunk1Size, 4); - myFile.write ((char*) &myFormat, 2); - myFile.write ((char*) &myChannels, 2); - myFile.write ((char*) &mySampleRate, 4); - myFile.write ((char*) &myByteRate, 4); - myFile.write ((char*) &myBlockAlign, 2); - myFile.write ((char*) &myBitsPerSample, 2); - myFile.write ("data", 4); - myFile.write ((char*) &myDataSize, 4); - myFile.write (myData, myDataSize); - - return true; - } - - // return a printable summary of the wav file - char *getSummary() - { - char *summary = new char[250]; - sprintf(summary, " Format: %d\n Channels: %d\n SampleRate: %d\n ByteRate: %d\n BlockAlign: %d\n BitsPerSample: %d\n DataSize: %d\n", myFormat, myChannels, mySampleRate, myByteRate, myBlockAlign, myBitsPerSample, myDataSize); - std::cout << myDataSize; - return summary; - } -}; - - -class maxiMap { -public: - static double inline linlin(double val, double inMin, double inMax, double outMin, double outMax) { - return ((val - inMin) / (inMax - inMin) * (outMax - outMin)) + outMin; - } - - static double inline linexp(double val, double inMin, double inMax, double outMin, double outMax) { - //clipping - val = max(min(val, inMax), inMin); - return pow((outMax / outMin), (val - inMin) / (inMax - inMin)) * outMin; - } - - static double inline explin(double val, double inMin, double inMax, double outMin, double outMax) { - //clipping - val = max(min(val, inMax), inMin); - return (log(val/inMin) / log(inMax/inMin) * (outMax - outMin)) + outMin; - } - -}; - - -class maxiDyn { - - -public: - double gate(double input, double threshold=0.9, long holdtime=1, double attack=1, double release=0.9995); - double compressor(double input, double ratio, double threshold=0.9, double attack=1, double release=0.9995); - double input; - double ratio; - double currentRatio; - double threshold; - double output; - double attack; - double release; - double amplitude; - long holdtime; - long holdcount; - int attackphase,holdphase,releasephase; -}; - -class maxiEnv { - - -public: - double ar(double input, double attack=1, double release=0.9, long holdtime=1, int trigger=0); - double adsr(double input, double attack=1, double decay=0.99, double sustain=0.125, double release=0.9, long holdtime=1, int trigger=0); - double input; - double output; - double attack; - double decay; - double sustain; - double release; - double amplitude; - int trigger; - long holdtime; - long holdcount; - int attackphase,decayphase,sustainphase,holdphase,releasephase; -}; - -class convert { -public: - double mtof(int midinote); -}; - -#endif diff --git a/ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/src/ofxMaxim.h b/ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/src/ofxMaxim.h deleted file mode 100644 index ec8c539..0000000 --- a/ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/src/ofxMaxim.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * maximilian - * platform independent synthesis library using portaudio or rtaudio - * - * Created by Mick Grierson on 29/12/2009. - * Copyright 2009 Mick Grierson & Strangeloop Limited. All rights reserved. - * Thanks to the Goldsmiths Creative Computing Team. - * Special thanks to Arturo Castro for the PortAudio implementation. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * 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. - * - */ - -#ifndef _OFMAXIM_H -#define _OFMAXIM_H - -#include "maximilian.h" -#include "maxiFFT.h" -#include "maxiGrains.h" -#include "maxiMFCC.h" - - -typedef maxiMix ofxMaxiMix; -typedef maxiOsc ofxMaxiOsc; -typedef maxiEnvelope ofxMaxiEnvelope; -typedef maxiDelayline ofxMaxiDelayline; -typedef maxiFilter ofxMaxiFilter; -typedef maxiSample ofxMaxiSample; -typedef maxiFFT ofxMaxiFFT; -typedef maxiIFFT ofxMaxiIFFT; -typedef maxiFFTOctaveAnalyzer ofxMaxiFFTOctaveAnalyzer; -typedef maxiSettings ofxMaxiSettings; -typedef maxiMFCC ofxMaxiMFCC; - - -#endif diff --git a/ofxMaxim/ofxMaximiPhone0062Example/ofxiphone-Info.plist b/ofxMaxim/ofxMaximiPhone0062Example/ofxiphone-Info.plist deleted file mode 100644 index 43db2fa..0000000 --- a/ofxMaxim/ofxMaximiPhone0062Example/ofxiphone-Info.plist +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>CFBundleVersion</key> - <string>1.0</string> - <key>CFBundleShortVersionString</key> - <string>1.0</string> - <key>CFBundleIdentifier</key> - <string>${PRODUCT_NAME:identifier}</string> - <key>UIStatusBarHidden</key> - <true/> - <key>CFBundleDevelopmentRegion</key> - <string>English</string> - <key>CFBundleDisplayName</key> - <string>${PRODUCT_NAME}</string> - <key>CFBundleExecutable</key> - <string>${EXECUTABLE_NAME}</string> - <key>CFBundleIconFile</key> - <string></string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundleName</key> - <string>${PRODUCT_NAME}</string> - <key>CFBundlePackageType</key> - <string>APPL</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>LSRequiresIPhoneOS</key> - <true/> - <key>UIApplicationExitsOnSuspend</key> - <true/> - <key>UIInterfaceOrientation</key> - <string>UIInterfaceOrientationPortrait</string> -</dict> -</plist> diff --git a/ofxMaxim/ofxMaximiPhone0062Example/src/main.mm b/ofxMaxim/ofxMaximiPhone0062Example/src/main.mm deleted file mode 100644 index a0b6b4c..0000000 --- a/ofxMaxim/ofxMaximiPhone0062Example/src/main.mm +++ /dev/null @@ -1,8 +0,0 @@ -#include "ofMain.h" -#include "testApp.h" - -int main(){ - ofSetupOpenGL(1024,768, OF_FULLSCREEN); // <-------- setup the GL context - - ofRunApp(new testApp); -} diff --git a/ofxMaxim/ofxMaximiPhone0062Example/src/testApp.h b/ofxMaxim/ofxMaximiPhone0062Example/src/testApp.h deleted file mode 100755 index ac944e5..0000000 --- a/ofxMaxim/ofxMaximiPhone0062Example/src/testApp.h +++ /dev/null @@ -1,42 +0,0 @@ -#pragma once - -#include "ofMain.h" -#include "ofxiPhone.h" -#include "ofxiPhoneExtras.h" -#include "ofxMaxim.h" - - -class testApp : public ofxiPhoneApp { - -public: - ~testApp(); - void setup(); - void update(); - void draw(); - void exit(); - - void touchDown(ofTouchEventArgs &touch); - void touchMoved(ofTouchEventArgs &touch); - void touchUp(ofTouchEventArgs &touch); - void touchDoubleTap(ofTouchEventArgs &touch); - - void lostFocus(); - void gotFocus(); - void gotMemoryWarning(); - void deviceOrientationChanged(int newOrientation); - - void audioReceived( float * input, int bufferSize, int nChannels ); - void audioRequested( float * output, int bufferSize, int nChannels ); - - int initialBufferSize; - int sampleRate; - - - ofxMaxiOsc myOsc1; - ofxMaxiSample sample1; - double patch1,sample,outputs1[2]; - ofxMaxiMix channel1; - -}; - - diff --git a/ofxMaxim/ofxMaximiPhone0062Example/src/testApp.mm b/ofxMaxim/ofxMaximiPhone0062Example/src/testApp.mm deleted file mode 100755 index 8dc9e95..0000000 --- a/ofxMaxim/ofxMaximiPhone0062Example/src/testApp.mm +++ /dev/null @@ -1,116 +0,0 @@ -#include "testApp.h" -#include "ofxMaxim.h" - -testApp::~testApp() { - - delete sample1.myData; - -} - - -//-------------------------------------------------------------- -void testApp::setup(){ - ofEnableAlphaBlending(); - // register touch events - ofRegisterTouchEvents(this); - - // initialize the accelerometer - ofxAccelerometer.setup(); - - //iPhoneAlerts will be sent to this. - ofxiPhoneAlerts.addListener(this); - - sampleRate = 44100; - initialBufferSize = 512; - - sample1.load(ofToDataPath("beat2.wav")); - - ofSoundStreamSetup(2,0,this, sampleRate, initialBufferSize, 4); - - //If you want a landscape oreintation - //iPhoneSetOrientation(OFXIPHONE_ORIENTATION_LANDSCAPE_RIGHT); - - ofBackground(255,255,255); -} - -//-------------------------------------------------------------- -void testApp::update(){ - -} - -//-------------------------------------------------------------- -void testApp::draw(){ - -} - -//-------------------------------------------------------------- -void testApp::exit(){ - -} - - -//-------------------------------------------------------------- -void testApp::audioRequested(float * output, int bufferSize, int nChannels){ - - if( initialBufferSize != bufferSize ){ - ofLog(OF_LOG_ERROR, "your buffer size was set to %i - but the stream needs a buffer size of %i", initialBufferSize, bufferSize); - return; - } - - for (int i = 0; i < bufferSize; i++){ - - sample=sample1.play(1.); - channel1.stereo(sample,outputs1,0.5); - - output[i*nChannels ] = outputs1[0]; - output[i*nChannels + 1] = outputs1[1]; - - } - -} - -//-------------------------------------------------------------- -void testApp::audioReceived(float * input, int bufferSize, int nChannels){ - -} - -//-------------------------------------------------------------- -void testApp::touchDown(ofTouchEventArgs &touch){ - -} - -//-------------------------------------------------------------- -void testApp::touchMoved(ofTouchEventArgs &touch){ - -} - -//-------------------------------------------------------------- -void testApp::touchUp(ofTouchEventArgs &touch){ - -} - -//-------------------------------------------------------------- -void testApp::touchDoubleTap(ofTouchEventArgs &touch){ - -} - -//-------------------------------------------------------------- -void testApp::lostFocus(){ - -} - -//-------------------------------------------------------------- -void testApp::gotFocus(){ - -} - -//-------------------------------------------------------------- -void testApp::gotMemoryWarning(){ - -} - -//-------------------------------------------------------------- -void testApp::deviceOrientationChanged(int newOrientation){ - -} - |
