aboutsummaryrefslogtreecommitdiffstats
path: root/ofxMaxim/ofxMaximiPhone0062Example
diff options
context:
space:
mode:
authormick grierson <mickgrierson@gmail.com>2015-06-29 16:01:29 +0100
committermick grierson <mickgrierson@gmail.com>2015-06-29 16:01:29 +0100
commitbc8d2ebccb48531c7d32d63c608561e495cbd7a3 (patch)
tree19c21a5cd23427126c7639697c705dada452a308 /ofxMaxim/ofxMaximiPhone0062Example
parentb86dfa8f6f99713ee4605c30ebb1a58309aaeb8a (diff)
updating examples
Diffstat (limited to 'ofxMaxim/ofxMaximiPhone0062Example')
-rw-r--r--ofxMaxim/ofxMaximiPhone0062Example/bin/data/Default.pngbin5518 -> 0 bytes
-rw-r--r--ofxMaxim/ofxMaximiPhone0062Example/bin/data/Icon.pngbin1040 -> 0 bytes
-rw-r--r--ofxMaxim/ofxMaximiPhone0062Example/bin/data/beat2.wavbin211140 -> 0 bytes
-rw-r--r--ofxMaxim/ofxMaximiPhone0062Example/bin/data/remoteatmos.wavbin2798636 -> 0 bytes
-rwxr-xr-xofxMaxim/ofxMaximiPhone0062Example/iPhoneEmptyExample.xcodeproj/project.pbxproj909
-rw-r--r--ofxMaxim/ofxMaximiPhone0062Example/iPhone_Prefix.pch8
-rw-r--r--ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/install.xml35
-rw-r--r--ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/libs/fft.cpp608
-rw-r--r--ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/libs/fft.h80
-rw-r--r--ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/libs/maxiFFT.cpp290
-rw-r--r--ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/libs/maxiFFT.h128
-rw-r--r--ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/libs/maxiGrains.cpp6
-rw-r--r--ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/libs/maxiGrains.h443
-rw-r--r--ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/libs/maxiMFCC.cpp78
-rw-r--r--ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/libs/maxiMFCC.h204
-rw-r--r--ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/libs/maximilian.cpp1028
-rwxr-xr-xofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/libs/maximilian.h366
-rw-r--r--ofxMaxim/ofxMaximiPhone0062Example/ofxMaxim/src/ofxMaxim.h55
-rw-r--r--ofxMaxim/ofxMaximiPhone0062Example/ofxiphone-Info.plist36
-rw-r--r--ofxMaxim/ofxMaximiPhone0062Example/src/main.mm8
-rwxr-xr-xofxMaxim/ofxMaximiPhone0062Example/src/testApp.h42
-rwxr-xr-xofxMaxim/ofxMaximiPhone0062Example/src/testApp.mm116
22 files changed, 0 insertions, 4440 deletions
diff --git a/ofxMaxim/ofxMaximiPhone0062Example/bin/data/Default.png b/ofxMaxim/ofxMaximiPhone0062Example/bin/data/Default.png
deleted file mode 100644
index e782497..0000000
--- a/ofxMaxim/ofxMaximiPhone0062Example/bin/data/Default.png
+++ /dev/null
Binary files differ
diff --git a/ofxMaxim/ofxMaximiPhone0062Example/bin/data/Icon.png b/ofxMaxim/ofxMaximiPhone0062Example/bin/data/Icon.png
deleted file mode 100644
index 2d926c8..0000000
--- a/ofxMaxim/ofxMaximiPhone0062Example/bin/data/Icon.png
+++ /dev/null
Binary files differ
diff --git a/ofxMaxim/ofxMaximiPhone0062Example/bin/data/beat2.wav b/ofxMaxim/ofxMaximiPhone0062Example/bin/data/beat2.wav
deleted file mode 100644
index c71cee6..0000000
--- a/ofxMaxim/ofxMaximiPhone0062Example/bin/data/beat2.wav
+++ /dev/null
Binary files differ
diff --git a/ofxMaxim/ofxMaximiPhone0062Example/bin/data/remoteatmos.wav b/ofxMaxim/ofxMaximiPhone0062Example/bin/data/remoteatmos.wav
deleted file mode 100644
index 87e3cdf..0000000
--- a/ofxMaxim/ofxMaximiPhone0062Example/bin/data/remoteatmos.wav
+++ /dev/null
Binary files differ
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){
-
-}
-