Compare commits

...

152 Commits

Author SHA1 Message Date
Syed Haris Ali b3c6a8611f Update README.md 2022-03-22 14:06:28 -05:00
Syed Haris Ali 9ee64a8f3d Fixed another formatting issue 2017-04-09 17:17:17 -05:00
Syed Haris Ali c8ecd0c67b Cleaned up formatting issues in README 2017-04-09 17:16:26 -05:00
Syed Haris Ali 59c1540fa4 Restoring README w/ deprecated note at bottom
Restoring README back to what it was for people still forking and moved deprecated note to bottom.
2016-11-29 14:08:38 -06:00
Syed Haris Ali 984ea1928b Update README.md 2016-11-18 16:15:46 -06:00
Syed Haris Ali 983ae27301 Merge pull request #327 from syedhali/ha-deprecated
Added deprecated message to README
2016-06-13 09:35:29 -07:00
Syed Haris Ali c9e26fd58d Update README.md 2016-06-13 11:31:23 -05:00
Syed Haris Ali 2fafb7b181 Update README.md 2016-06-12 20:08:05 -07:00
Syed Haris Ali c8fb1432fd Added Tunerval to apps using EZAudio 2016-03-11 15:02:01 -06:00
Syed Haris Ali fb94503ac5 More updates to fix broken links and example names 2016-02-17 09:26:49 -06:00
Syed Haris Ali b37c24c16b Fixed broken links with new examples 2016-02-17 09:21:13 -06:00
Syed Haris Ali 1ce36b9c62 Merge pull request #278 from JanX2/master
Changing paths for “simple-drum-beat.wav” to be relative.
2016-02-14 10:56:35 -08:00
Jan Weiß caaad3ef67 Changing paths for “simple-drum-beat.wav” to be relative. 2016-02-14 11:39:38 +01:00
Syed Haris Ali 1ef90f0ce9 Merge pull request #275 from streeter/updated-initialization
Initialize struct values to 0 based on docs
2016-02-04 13:49:05 -06:00
Chris Streeter 664f788719 Initialize struct values to 0 based on docs
The docs for AudioComponentDescription say that componentFlags and
componentFlagsMask must be set to 0 unless specific values are
requested.

Different platforms (32 vs 64 bit) initialize data to different starting
values. Ensure the AudioComponentDescription is initialized to prevent
unwanted side effects.
2016-02-04 11:39:02 -08:00
Syed Haris Ali 5ff1d0454a Added Aure's Analog Synth X app to featured apps 2016-02-02 18:47:21 -06:00
Syed Haris Ali 5095bad10b bumped version to 1.1.5 2016-01-29 01:30:34 -08:00
Syed Haris Ali e2a1921954 Added carthage header files to exclude files in cocoapods 2016-01-29 01:30:02 -08:00
Syed Haris Ali 4ec22d1f29 Fixed TPCircularBuffer dependency 2016-01-24 03:27:14 -06:00
Syed Haris Ali 00479834b6 bumping version to 1.1.4 2016-01-24 03:18:13 -06:00
Syed Haris Ali 79ae7d4d76 switching TPCircularBuffer back to 1.2 2016-01-24 03:11:11 -06:00
Syed Haris Ali 3b02bb0e72 Updated podspec for TPCircularBuffer 2016-01-24 02:55:46 -06:00
Syed Haris Ali c5c19c3a84 bumping version to 1.1.3 2016-01-24 02:50:47 -06:00
Syed Haris Ali 6c39476b01 Added fix to make sure iOS record example plays back to the speaker 2016-01-24 02:38:00 -06:00
Syed Haris Ali bba89fee5c Merge pull request #265 from syedhali/ha-updated_examples_and_bug_fixes
Fixed bugs and updated examples for Xcode 7.2 + iOS 9
2016-01-24 02:33:24 -06:00
Syed Haris Ali 2750e91fef Cleanup 2016-01-24 02:33:00 -06:00
Syed Haris Ali 660107b1bc Updated license info 2016-01-24 02:29:31 -06:00
Syed Haris Ali 8c382994d8 Added bug fix for properly setting the EZMicrophone's bufferByteSize 2016-01-24 02:17:30 -06:00
Syed Haris Ali a4ea920b78 Clean up, switched back to sync write 2016-01-24 02:16:41 -06:00
Syed Haris Ali 58bead9770 Removed old FFT example 2016-01-24 02:02:19 -06:00
Syed Haris Ali 16412c12da attempting to fix recorder using async write 2016-01-24 01:25:56 -06:00
Syed Haris Ali aff42b0b1a Changed iOS deployment target to 8.0 2016-01-24 01:06:07 -06:00
Syed Haris Ali ea4536f4fe Added fix for invalid input buffer size error 2016-01-24 01:05:24 -06:00
Syed Haris Ali f4ee040119 Updated OSX app icons 2016-01-23 22:25:57 -06:00
Syed Haris Ali be92f132f6 renamed iOS examples workspace 2016-01-23 22:18:30 -06:00
Syed Haris Ali 66b7006e92 Updated iOS assets 2016-01-23 22:17:09 -06:00
Syed Haris Ali b68a2b9425 Added new PassThrough example for iOS 2016-01-23 22:06:26 -06:00
Syed Haris Ali 18a8962ef5 Removing old PassThrough example 2016-01-23 22:05:04 -06:00
Syed Haris Ali 88d88620d4 Added appicon set 2016-01-23 21:51:46 -06:00
Syed Haris Ali a34823a2a7 Added new WaveformFromFile example for iOS 2016-01-23 21:47:47 -06:00
Syed Haris Ali 2866f4021a Removing old WaveformFromFile example 2016-01-23 21:47:11 -06:00
Syed Haris Ali 6b61f97c99 Added cleanup 2016-01-23 21:36:57 -06:00
Syed Haris Ali 058562f809 deleted files 2016-01-23 21:30:13 -06:00
Syed Haris Ali ab378c5278 Added new RecordFile example for iOS 2016-01-23 21:29:10 -06:00
Syed Haris Ali 6ec5a2266c Removing old RecordFile example 2016-01-23 21:28:52 -06:00
Syed Haris Ali cb6550cc44 Added new RecordFile example for iOS 2016-01-23 21:27:48 -06:00
Syed Haris Ali 3cd3672692 Some minor cleanup 2016-01-23 21:13:10 -06:00
Syed Haris Ali 4bdd5bfd67 Some minor cleanup 2016-01-23 21:12:51 -06:00
Syed Haris Ali e788d77f0e Cleaned up comments 2016-01-23 21:10:14 -06:00
Syed Haris Ali 81d47c9eaa Removing old PlayFile example 2016-01-23 21:08:41 -06:00
Syed Haris Ali 94eac1f209 Added new PlayFile example for iOS 2016-01-23 21:06:32 -06:00
Syed Haris Ali 39f070e1b7 Added new OpenGLWaveform example for iOS 2016-01-23 20:50:20 -06:00
Syed Haris Ali 497214c893 Removing old OpenGLWaveform example 2016-01-23 20:45:44 -06:00
Syed Haris Ali aa855ba5f0 Removing old CoreGraphics example 2016-01-23 20:34:44 -06:00
Syed Haris Ali c783620404 Added new CoreGraphics example for iOS 2016-01-23 20:34:24 -06:00
Syed Haris Ali 7938ccfd3e Added proper license to top 2016-01-23 18:43:58 -06:00
Syed Haris Ali 0337197cef fixed warning 2016-01-23 18:41:29 -06:00
Syed Haris Ali 2aa9b43c1b Added EZAudio as embedded project to make each example standalone 2016-01-23 18:35:14 -06:00
Syed Haris Ali 761ca0d0df Changed deployment target of all examples to 10.8 2016-01-23 18:30:36 -06:00
Syed Haris Ali 91ef98df80 Finished up PassThrough mac example 2016-01-23 18:28:02 -06:00
Syed Haris Ali 6c316284fb Finished up FFT mac example 2016-01-23 18:16:36 -06:00
Syed Haris Ali 08c7795abf Removed OpenGL embedded project 2016-01-23 18:06:18 -06:00
Syed Haris Ali 1c85669b14 Finished up WaveformFromFile mac example 2016-01-23 18:04:56 -06:00
Syed Haris Ali a6836807b7 Finished up RecordFile mac example 2016-01-23 17:32:09 -06:00
Syed Haris Ali 1e4a0eb7e7 Cleaned header 2016-01-23 17:12:54 -06:00
Syed Haris Ali 950061a623 Replaced PlayFile with clean example 2016-01-23 17:12:23 -06:00
Syed Haris Ali 4154aff80a Updated OpenGLWaveform Mac example 2016-01-23 15:48:42 -06:00
Syed Haris Ali ba1f045e40 Clean up 2016-01-23 15:35:18 -06:00
Syed Haris Ali 7ba8ef1342 Fixed top license section 2016-01-23 15:31:14 -06:00
Syed Haris Ali b00946c63d Set OSX deployment target to 10.8 2016-01-23 15:21:01 -06:00
Syed Haris Ali ba04f637a1 Updated TPCircularBuffer (warnings) and updated CoreGraphics waveform exampl 2016-01-23 15:20:16 -06:00
Syed Haris Ali 5a1d0960ab Merge branch 'master' of https://github.com/syedhali/EZAudio 2015-12-25 22:42:32 -05:00
Syed Haris Ali f27e299258 Merge pull request #211 from AndrewSB/master
Add support for Carthage (iOS)
2015-10-27 11:55:30 -05:00
Syed Haris Ali 358084fdf6 Merge branch 'master' of https://github.com/AndrewSB/EZAudio 2015-10-27 02:08:18 -05:00
Tommaso Piazza 470d3cdd8b Changing import path to respect module map 2015-10-26 12:49:17 -07:00
Tommaso Piazza b47a663b95 Adding Umbrella headers 2015-10-26 12:49:16 -07:00
Tommaso Piazza 1fed713ea3 Adding OSX target 2015-10-26 12:49:16 -07:00
Andrew Breckenridge 7f0716d497 expose EZAudioDisplayLinkDelegate in the public header file 2015-10-26 12:49:16 -07:00
Ian Ownbey 797f21cd76 Made header files public 2015-10-26 12:49:16 -07:00
Andrew Breckenridge 8e8f8a22d0 create xcodeproj and shared scheme 2015-10-26 12:49:16 -07:00
Syed Haris Ali 26057a3332 Adding jumpshare to apps using EZAudio 2015-10-21 14:28:02 -07:00
Syed Haris Ali e32636a688 Merge pull request #197 from ppaulojr/ppaulojr-patch-1
Fix static analyzer errors
2015-09-14 22:59:47 -07:00
Syed Haris Ali f0b5013bb6 Merge pull request #219 from aure/master
Update EZAudio.h
2015-09-14 22:48:41 -07:00
Aurelius Prochazka 34ab1ce782 Update EZAudioUtilities.h
Same changes as EZAudio.h
2015-08-23 15:05:34 -07:00
Aurelius Prochazka 1622452bdc Update EZAudio.h
This may be a deprecated method, but the stars in front of the @params were causing warnings in documentation generation
2015-08-23 15:02:47 -07:00
Aurelius Prochazka b18783ae7e Update EZAudio.h
Just a typo which was warning on documentation generation
2015-08-23 14:58:38 -07:00
Syed Haris Ali ff92fe1d7f Merge branch 'master' of https://github.com/syedhali/EZAudio 2015-08-14 16:56:23 -07:00
Syed Haris Ali 8209c9d263 added app icons to all iOS examples 2015-08-14 16:56:06 -07:00
Syed Haris Ali 78a867bd39 Update README.md 2015-08-14 15:39:05 -07:00
Syed Haris Ali b999ac1184 Added new EZAudio logo 2015-08-14 14:15:00 -07:00
Pedro Paulo Jr 5a3ad39fac Update EZAudio.podspec
Proper handling of `fabs` vs `labs` in the dependency
2015-07-20 17:29:38 -03:00
Pedro Paulo Jr c773cdc05a prevent division by zero
prevent division by zero - identified by static analyzer
2015-07-20 17:19:15 -03:00
Syed Haris Ali b4bb38c8d6 Updated to 1.1.2 with avaudiosession fix on FFT example 2015-07-14 10:09:31 -07:00
Syed Haris Ali 7ae6c39e30 Merge pull request #192 from syedhali/session_fix_fft_example
Added play/record session to FFT iOS example
2015-07-14 10:07:38 -07:00
Syed Haris Ali b51786cb55 added play/record session 2015-07-14 10:06:46 -07:00
Syed Haris Ali 4900649287 added david's audioBufferList fix 2015-07-13 17:15:07 -07:00
Syed Haris Ali b99af54f31 style tweak 2015-07-13 17:08:54 -07:00
Syed Haris Ali b99f4b5366 Merge pull request #190 from dedjw/djw-audio-buffer-fix
Fix for audioBufferListWithNumberOfFrames: to match CoreAudio expectations
2015-07-13 17:07:41 -07:00
David Williams 78ea296cb2 Fix for audioBufferListWithNumberOfFrames:... to match CoreAudio expectations.
CoreAudio was giving a kAudioConverterErr_InvalidInputSize error when trying to
use bufferLists created by audioBufferListWithNumberOfFrames. The
mNumberBuffers, mNumberChannels, mDataByteSize needs to be self consistent.
Hopefully, this change fixes that.
Also, replaced the malloc/memset pair with calloc. memset was zeroing
only number of frames bytes, rather than the buffer size. Switching
to calloc ensures the buffer is zeroed out.
2015-07-13 16:46:22 -07:00
Syed Haris Ali 10b00754a9 removed debug line 2015-07-13 15:15:28 -07:00
Syed Haris Ali a35bb9a763 bumped version to 1.1.0 2015-07-13 15:14:27 -07:00
Syed Haris Ali 67199afe0b Update README.md 2015-07-13 15:11:58 -07:00
Syed Haris Ali 05cbfc8aa7 Merge pull request #189 from syedhali/ezfft_addition
Added EZAudioFFT, EZAudioFFTRolling, and fixed bug with appendBuffer: history funct
2015-07-13 13:22:01 -07:00
Syed Haris Ali 8732437e4a added music note utility method and updated examples 2015-07-13 13:19:07 -07:00
Syed Haris Ali 4b94107876 updated examples 2015-07-11 18:49:12 -07:00
Syed Haris Ali 65ee73736f added accelerate to list of dependencies 2015-07-11 17:40:11 -07:00
Syed Haris Ali 0cef3d22c9 added accelerate to list of dependencies 2015-07-11 17:39:22 -07:00
Syed Haris Ali f93e083af4 renamed to EZAudioFFT and added documentation 2015-07-11 17:34:36 -07:00
Syed Haris Ali 5404546901 adding EZFFT and fixed bug with appendBuffer utility function 2015-07-11 15:42:03 -07:00
Syed Haris Ali d08d7d6bfd Merge pull request #187 from syedhali/better_rolling_history_methods
Added more explicit methods for rolling history data structure
2015-07-11 12:36:42 -07:00
Syed Haris Ali e996ba60f8 added more explicit methods for rolling history data structure 2015-07-11 12:28:05 -07:00
Syed Haris Ali c148139fdd bumped version to 1.0.1 2015-07-09 13:46:38 -07:00
Syed Haris Ali 7a91b9b456 Merge pull request #180 from antonm76/master
EXC_BAD_ACCESS is fixed
2015-07-09 13:44:20 -07:00
Syed Haris Ali 2bd4993b31 Update EZAudioDevice.m 2015-07-06 19:25:47 -07:00
Syed Haris Ali d287995165 Update EZAudioDevice.h 2015-07-06 19:25:36 -07:00
Syed Haris Ali 7281f6cfcc updated podspec to 1.0.0 2015-07-06 19:20:07 -07:00
Syed Haris Ali 7ce2e67e91 Updated for 1.0.0 2015-07-06 19:17:32 -07:00
Syed Haris Ali 0279ce4fcc Added welcome message and projects request 2015-07-06 19:14:23 -07:00
Syed Haris Ali 3fc8fbd421 Added missing links 2015-07-06 18:57:26 -07:00
Syed Haris Ali 2736de1a8b Added description for EZAudioPlayer 2015-07-06 18:55:30 -07:00
Syed Haris Ali dd0139ed38 Added EZAudioPlayer 2015-07-06 18:34:44 -07:00
Syed Haris Ali 1b82915277 Update README.md 2015-07-06 18:15:33 -07:00
Syed Haris Ali 8d91213255 Add EZOutput effect chain explanation 2015-07-06 18:15:06 -07:00
Syed Haris Ali d2cc488dfb Update README.md 2015-07-06 17:56:22 -07:00
Syed Haris Ali 9a499a7c09 Update README.md 2015-07-06 17:36:48 -07:00
Syed Haris Ali 0c389efb0f Update README.md 2015-07-06 17:31:53 -07:00
Syed Haris Ali 89c8c808d3 Update README.md 2015-07-06 17:29:05 -07:00
Syed Haris Ali a6d3a02a91 Update README.md 2015-07-06 17:26:07 -07:00
Syed Haris Ali b52c819d02 Update README.md 2015-07-06 17:21:19 -07:00
Syed Haris Ali caf9062275 Added extended description of EZAudioDevice usage 2015-07-06 17:15:34 -07:00
Syed Haris Ali e77116aa1b Added EZAudioDevice + EZOutput device selection 2015-07-06 16:57:35 -07:00
Syed Haris Ali 67c9e3b1cb Updated FFT gif 2015-07-06 16:06:24 -07:00
Syed Haris Ali 4cc46687aa Update README.md 2015-07-06 15:57:03 -07:00
Syed Haris Ali 71337ca4bd Updated EZRecorder description and snippets 2015-07-06 15:53:49 -07:00
Syed Haris Ali 1e6cb271ed Finished up EZOutput description 2015-07-06 15:10:00 -07:00
Syed Haris Ali 5c8de38ad0 Updated EZOutputDataSource sine implementation
Added code snippet and description
2015-07-06 15:07:41 -07:00
Syed Haris Ali d3767afc76 Update README.md 2015-07-06 15:02:14 -07:00
Syed Haris Ali 2bdfe29e09 Updated EZAudioPlotGL description 2015-07-06 14:04:40 -07:00
Syed Haris Ali 0da69ab293 Updated interface builder instructions with gifs 2015-07-06 13:55:04 -07:00
Syed Haris Ali 834b1d9254 Updated EZAudioPlot and EZAudioPlotGL
Updated code snippets and descriptions
2015-07-06 12:23:22 -07:00
Syed Haris Ali e651d09f3d fixed stuff, removed circular buffer part of output 2015-07-06 00:30:31 -07:00
Syed Haris Ali 1adeea40b9 Merge pull request #184 from syedhali/new_readme
Updated EZAudioFile & EZMicrophone README
2015-07-06 00:27:45 -07:00
Syed Haris Ali 880a6c54e4 updated EZMicrophone code snippets 2015-07-06 00:26:40 -07:00
Syed Haris Ali 1ff2bc4ae9 updated more EZAudioFile code snippets 2015-07-06 00:20:02 -07:00
Syed Haris Ali 8636bc4cae updated EZAudioFile documentation and code snippets 2015-07-06 00:09:28 -07:00
Syed Haris Ali 021ae59035 updated audio file section 2015-07-05 23:52:09 -07:00
Syed Haris Ali cce54d802e updated example descriptions and component count 2015-07-05 23:43:47 -07:00
Syed Haris Ali 44f724b4ab changed title position 2015-07-05 23:33:57 -07:00
Syed Haris Ali 6631a15f66 added gifs to example projects 2015-07-05 23:29:22 -07:00
Syed Haris Ali b6e00fd8eb updated to 0.9.1 2015-07-05 21:51:18 -07:00
Syed Haris Ali 445e2fa530 Merge pull request #183 from syedhali/update_examples
Updated examples
2015-07-05 21:48:16 -07:00
Anton Myshkovsky 5baeec30ce EXC_BAD_ACCESS is fixed
Occuring in initWithMicrophoneDelegate:withAudioStreamBasicDescription: during initial creation of EZMicrophone.
2015-07-02 15:30:14 +03:00
541 changed files with 17905 additions and 19884 deletions
+7 -9
View File
@@ -1,27 +1,25 @@
Pod::Spec.new do |s|
s.name = "EZAudio"
s.version = "0.9.0"
s.version = "1.1.5"
s.summary = "A simple, intuitive audio framework for iOS and OSX useful for anyone doing audio processing and/or audio-based visualizations."
s.homepage = "https://github.com/syedhali/EZAudio"
s.screenshots = "https://s3-us-west-1.amazonaws.com/ezaudio-media/EZAudioSummary.png"
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { "Syed Haris Ali" => "syedhali07@gmail.com" }
s.ios.deployment_target = '6.0'
s.ios.deployment_target = '8.0'
s.osx.deployment_target = '10.8'
s.source = { :git => "https://github.com/syedhali/EZAudio.git", :tag => s.version }
s.exclude_files = [ 'EZAudio/VERSION', 'EZAudio/TPCircularBuffer.{h,c}' ]
s.ios.frameworks = 'AudioToolbox','AVFoundation','GLKit'
s.osx.frameworks = 'AudioToolbox','AudioUnit','CoreAudio','QuartzCore','OpenGL','GLKit'
s.exclude_files = [ 'EZAudio/TPCircularBuffer.{h,c}', 'EZAudio/EZAudioiOS.h', 'EZAudio/EZAudioOSX.h' ]
s.ios.frameworks = 'AudioToolbox','AVFoundation','GLKit', 'Accelerate'
s.osx.frameworks = 'AudioToolbox','AudioUnit','CoreAudio','QuartzCore','OpenGL','GLKit', 'Accelerate'
s.requires_arc = true;
s.default_subspec = 'Full'
s.subspec 'Core' do |core|
core.source_files = 'EZAudio/*.{h,m,c}'
end
s.subspec 'Full' do |full|
full.dependency 'TPCircularBuffer', '~> 0.0'
full.dependency 'TPCircularBuffer', '1.1'
full.dependency 'EZAudio/Core'
end
end
+587
View File
@@ -0,0 +1,587 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
469F4D1E1B749FEC00666A46 /* EZAudio.h in Headers */ = {isa = PBXBuildFile; fileRef = 469F4CFE1B749FEC00666A46 /* EZAudio.h */; settings = {ATTRIBUTES = (Public, ); }; };
469F4D1F1B749FEC00666A46 /* EZAudio.m in Sources */ = {isa = PBXBuildFile; fileRef = 469F4CFF1B749FEC00666A46 /* EZAudio.m */; };
469F4D201B749FEC00666A46 /* EZAudioDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = 469F4D001B749FEC00666A46 /* EZAudioDevice.h */; settings = {ATTRIBUTES = (Public, ); }; };
469F4D211B749FEC00666A46 /* EZAudioDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = 469F4D011B749FEC00666A46 /* EZAudioDevice.m */; };
469F4D221B749FEC00666A46 /* EZAudioDisplayLink.h in Headers */ = {isa = PBXBuildFile; fileRef = 469F4D021B749FEC00666A46 /* EZAudioDisplayLink.h */; settings = {ATTRIBUTES = (Public, ); }; };
469F4D231B749FEC00666A46 /* EZAudioDisplayLink.m in Sources */ = {isa = PBXBuildFile; fileRef = 469F4D031B749FEC00666A46 /* EZAudioDisplayLink.m */; };
469F4D241B749FEC00666A46 /* EZAudioFFT.h in Headers */ = {isa = PBXBuildFile; fileRef = 469F4D041B749FEC00666A46 /* EZAudioFFT.h */; settings = {ATTRIBUTES = (Public, ); }; };
469F4D251B749FEC00666A46 /* EZAudioFFT.m in Sources */ = {isa = PBXBuildFile; fileRef = 469F4D051B749FEC00666A46 /* EZAudioFFT.m */; };
469F4D261B749FEC00666A46 /* EZAudioFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 469F4D061B749FEC00666A46 /* EZAudioFile.h */; settings = {ATTRIBUTES = (Public, ); }; };
469F4D271B749FEC00666A46 /* EZAudioFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 469F4D071B749FEC00666A46 /* EZAudioFile.m */; };
469F4D281B749FEC00666A46 /* EZAudioFloatConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = 469F4D081B749FEC00666A46 /* EZAudioFloatConverter.h */; settings = {ATTRIBUTES = (Public, ); }; };
469F4D291B749FEC00666A46 /* EZAudioFloatConverter.m in Sources */ = {isa = PBXBuildFile; fileRef = 469F4D091B749FEC00666A46 /* EZAudioFloatConverter.m */; };
469F4D2A1B749FEC00666A46 /* EZAudioFloatData.h in Headers */ = {isa = PBXBuildFile; fileRef = 469F4D0A1B749FEC00666A46 /* EZAudioFloatData.h */; settings = {ATTRIBUTES = (Public, ); }; };
469F4D2B1B749FEC00666A46 /* EZAudioFloatData.m in Sources */ = {isa = PBXBuildFile; fileRef = 469F4D0B1B749FEC00666A46 /* EZAudioFloatData.m */; };
469F4D2C1B749FEC00666A46 /* EZAudioPlayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 469F4D0C1B749FEC00666A46 /* EZAudioPlayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
469F4D2D1B749FEC00666A46 /* EZAudioPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 469F4D0D1B749FEC00666A46 /* EZAudioPlayer.m */; };
469F4D2E1B749FEC00666A46 /* EZAudioPlot.h in Headers */ = {isa = PBXBuildFile; fileRef = 469F4D0E1B749FEC00666A46 /* EZAudioPlot.h */; settings = {ATTRIBUTES = (Public, ); }; };
469F4D2F1B749FEC00666A46 /* EZAudioPlot.m in Sources */ = {isa = PBXBuildFile; fileRef = 469F4D0F1B749FEC00666A46 /* EZAudioPlot.m */; };
469F4D301B749FEC00666A46 /* EZAudioPlotGL.h in Headers */ = {isa = PBXBuildFile; fileRef = 469F4D101B749FEC00666A46 /* EZAudioPlotGL.h */; settings = {ATTRIBUTES = (Public, ); }; };
469F4D311B749FEC00666A46 /* EZAudioPlotGL.m in Sources */ = {isa = PBXBuildFile; fileRef = 469F4D111B749FEC00666A46 /* EZAudioPlotGL.m */; };
469F4D321B749FEC00666A46 /* EZAudioUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 469F4D121B749FEC00666A46 /* EZAudioUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
469F4D331B749FEC00666A46 /* EZAudioUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 469F4D131B749FEC00666A46 /* EZAudioUtilities.m */; };
469F4D341B749FEC00666A46 /* EZMicrophone.h in Headers */ = {isa = PBXBuildFile; fileRef = 469F4D141B749FEC00666A46 /* EZMicrophone.h */; settings = {ATTRIBUTES = (Public, ); }; };
469F4D351B749FEC00666A46 /* EZMicrophone.m in Sources */ = {isa = PBXBuildFile; fileRef = 469F4D151B749FEC00666A46 /* EZMicrophone.m */; };
469F4D361B749FEC00666A46 /* EZOutput.h in Headers */ = {isa = PBXBuildFile; fileRef = 469F4D161B749FEC00666A46 /* EZOutput.h */; settings = {ATTRIBUTES = (Public, ); }; };
469F4D371B749FEC00666A46 /* EZOutput.m in Sources */ = {isa = PBXBuildFile; fileRef = 469F4D171B749FEC00666A46 /* EZOutput.m */; };
469F4D381B749FEC00666A46 /* EZPlot.h in Headers */ = {isa = PBXBuildFile; fileRef = 469F4D181B749FEC00666A46 /* EZPlot.h */; settings = {ATTRIBUTES = (Public, ); }; };
469F4D391B749FEC00666A46 /* EZPlot.m in Sources */ = {isa = PBXBuildFile; fileRef = 469F4D191B749FEC00666A46 /* EZPlot.m */; };
469F4D3A1B749FEC00666A46 /* EZRecorder.h in Headers */ = {isa = PBXBuildFile; fileRef = 469F4D1A1B749FEC00666A46 /* EZRecorder.h */; settings = {ATTRIBUTES = (Public, ); }; };
469F4D3B1B749FEC00666A46 /* EZRecorder.m in Sources */ = {isa = PBXBuildFile; fileRef = 469F4D1B1B749FEC00666A46 /* EZRecorder.m */; };
469F4D3C1B749FEC00666A46 /* TPCircularBuffer.c in Sources */ = {isa = PBXBuildFile; fileRef = 469F4D1C1B749FEC00666A46 /* TPCircularBuffer.c */; };
469F4D3D1B749FEC00666A46 /* TPCircularBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 469F4D1D1B749FEC00666A46 /* TPCircularBuffer.h */; settings = {ATTRIBUTES = (Public, ); }; };
8A5A4BB31BBBDD6D00A8A048 /* EZAudio.h in Headers */ = {isa = PBXBuildFile; fileRef = 469F4CFE1B749FEC00666A46 /* EZAudio.h */; settings = {ATTRIBUTES = (Public, ); }; };
8A5A4BB41BBBDD6D00A8A048 /* EZAudioDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = 469F4D001B749FEC00666A46 /* EZAudioDevice.h */; settings = {ATTRIBUTES = (Public, ); }; };
8A5A4BB51BBBDD6D00A8A048 /* EZAudioDisplayLink.h in Headers */ = {isa = PBXBuildFile; fileRef = 469F4D021B749FEC00666A46 /* EZAudioDisplayLink.h */; settings = {ATTRIBUTES = (Public, ); }; };
8A5A4BB61BBBDD6D00A8A048 /* EZAudioFFT.h in Headers */ = {isa = PBXBuildFile; fileRef = 469F4D041B749FEC00666A46 /* EZAudioFFT.h */; settings = {ATTRIBUTES = (Public, ); }; };
8A5A4BB71BBBDD6D00A8A048 /* EZAudioFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 469F4D061B749FEC00666A46 /* EZAudioFile.h */; settings = {ATTRIBUTES = (Public, ); }; };
8A5A4BB81BBBDD6D00A8A048 /* EZAudioFloatConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = 469F4D081B749FEC00666A46 /* EZAudioFloatConverter.h */; settings = {ATTRIBUTES = (Public, ); }; };
8A5A4BB91BBBDD6D00A8A048 /* EZAudioFloatData.h in Headers */ = {isa = PBXBuildFile; fileRef = 469F4D0A1B749FEC00666A46 /* EZAudioFloatData.h */; settings = {ATTRIBUTES = (Public, ); }; };
8A5A4BBA1BBBDD6D00A8A048 /* EZAudioPlayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 469F4D0C1B749FEC00666A46 /* EZAudioPlayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
8A5A4BBB1BBBDD6D00A8A048 /* EZAudioPlot.h in Headers */ = {isa = PBXBuildFile; fileRef = 469F4D0E1B749FEC00666A46 /* EZAudioPlot.h */; settings = {ATTRIBUTES = (Public, ); }; };
8A5A4BBC1BBBDD6D00A8A048 /* EZAudioPlotGL.h in Headers */ = {isa = PBXBuildFile; fileRef = 469F4D101B749FEC00666A46 /* EZAudioPlotGL.h */; settings = {ATTRIBUTES = (Public, ); }; };
8A5A4BBD1BBBDD6D00A8A048 /* EZAudioUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 469F4D121B749FEC00666A46 /* EZAudioUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
8A5A4BBE1BBBDD6D00A8A048 /* EZMicrophone.h in Headers */ = {isa = PBXBuildFile; fileRef = 469F4D141B749FEC00666A46 /* EZMicrophone.h */; settings = {ATTRIBUTES = (Public, ); }; };
8A5A4BBF1BBBDD6D00A8A048 /* EZOutput.h in Headers */ = {isa = PBXBuildFile; fileRef = 469F4D161B749FEC00666A46 /* EZOutput.h */; settings = {ATTRIBUTES = (Public, ); }; };
8A5A4BC01BBBDD6D00A8A048 /* EZPlot.h in Headers */ = {isa = PBXBuildFile; fileRef = 469F4D181B749FEC00666A46 /* EZPlot.h */; settings = {ATTRIBUTES = (Public, ); }; };
8A5A4BC11BBBDD6D00A8A048 /* EZRecorder.h in Headers */ = {isa = PBXBuildFile; fileRef = 469F4D1A1B749FEC00666A46 /* EZRecorder.h */; settings = {ATTRIBUTES = (Public, ); }; };
8A5A4BC21BBBDD6E00A8A048 /* TPCircularBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 469F4D1D1B749FEC00666A46 /* TPCircularBuffer.h */; settings = {ATTRIBUTES = (Public, ); }; };
8A5A4BC31BBBDD7E00A8A048 /* EZAudio.m in Sources */ = {isa = PBXBuildFile; fileRef = 469F4CFF1B749FEC00666A46 /* EZAudio.m */; };
8A5A4BC41BBBDD7E00A8A048 /* EZAudioDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = 469F4D011B749FEC00666A46 /* EZAudioDevice.m */; };
8A5A4BC51BBBDD7E00A8A048 /* EZAudioDisplayLink.m in Sources */ = {isa = PBXBuildFile; fileRef = 469F4D031B749FEC00666A46 /* EZAudioDisplayLink.m */; };
8A5A4BC61BBBDD7E00A8A048 /* EZAudioFFT.m in Sources */ = {isa = PBXBuildFile; fileRef = 469F4D051B749FEC00666A46 /* EZAudioFFT.m */; };
8A5A4BC71BBBDD7E00A8A048 /* EZAudioFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 469F4D071B749FEC00666A46 /* EZAudioFile.m */; };
8A5A4BC81BBBDD7E00A8A048 /* EZAudioFloatConverter.m in Sources */ = {isa = PBXBuildFile; fileRef = 469F4D091B749FEC00666A46 /* EZAudioFloatConverter.m */; };
8A5A4BC91BBBDD7E00A8A048 /* EZAudioFloatData.m in Sources */ = {isa = PBXBuildFile; fileRef = 469F4D0B1B749FEC00666A46 /* EZAudioFloatData.m */; };
8A5A4BCA1BBBDD7E00A8A048 /* EZAudioPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 469F4D0D1B749FEC00666A46 /* EZAudioPlayer.m */; };
8A5A4BCB1BBBDD7E00A8A048 /* EZAudioPlot.m in Sources */ = {isa = PBXBuildFile; fileRef = 469F4D0F1B749FEC00666A46 /* EZAudioPlot.m */; };
8A5A4BCC1BBBDD7E00A8A048 /* EZAudioPlotGL.m in Sources */ = {isa = PBXBuildFile; fileRef = 469F4D111B749FEC00666A46 /* EZAudioPlotGL.m */; };
8A5A4BCD1BBBDD7E00A8A048 /* EZAudioUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 469F4D131B749FEC00666A46 /* EZAudioUtilities.m */; };
8A5A4BCE1BBBDD7E00A8A048 /* EZMicrophone.m in Sources */ = {isa = PBXBuildFile; fileRef = 469F4D151B749FEC00666A46 /* EZMicrophone.m */; };
8A5A4BCF1BBBDD7E00A8A048 /* EZOutput.m in Sources */ = {isa = PBXBuildFile; fileRef = 469F4D171B749FEC00666A46 /* EZOutput.m */; };
8A5A4BD01BBBDD7E00A8A048 /* EZPlot.m in Sources */ = {isa = PBXBuildFile; fileRef = 469F4D191B749FEC00666A46 /* EZPlot.m */; };
8A5A4BD11BBBDD7E00A8A048 /* EZRecorder.m in Sources */ = {isa = PBXBuildFile; fileRef = 469F4D1B1B749FEC00666A46 /* EZRecorder.m */; };
8A5A4BD21BBBDE2800A8A048 /* TPCircularBuffer.c in Sources */ = {isa = PBXBuildFile; fileRef = 469F4D1C1B749FEC00666A46 /* TPCircularBuffer.c */; };
8A5A4BF31BBBFFA000A8A048 /* EZAudioOSX.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A5A4BF11BBBFF5600A8A048 /* EZAudioOSX.h */; settings = {ATTRIBUTES = (Public, ); }; };
8A5A4BF41BBC025600A8A048 /* EZAudioiOS.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A5A4BEF1BBBFF0A00A8A048 /* EZAudioiOS.h */; settings = {ATTRIBUTES = (Public, ); }; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
469F4CF31B749F7800666A46 /* EZAudioiOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = EZAudioiOS.framework; sourceTree = BUILT_PRODUCTS_DIR; };
469F4CF81B749F7800666A46 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
469F4CFE1B749FEC00666A46 /* EZAudio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudio.h; sourceTree = "<group>"; };
469F4CFF1B749FEC00666A46 /* EZAudio.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudio.m; sourceTree = "<group>"; };
469F4D001B749FEC00666A46 /* EZAudioDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioDevice.h; sourceTree = "<group>"; };
469F4D011B749FEC00666A46 /* EZAudioDevice.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioDevice.m; sourceTree = "<group>"; };
469F4D021B749FEC00666A46 /* EZAudioDisplayLink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioDisplayLink.h; sourceTree = "<group>"; };
469F4D031B749FEC00666A46 /* EZAudioDisplayLink.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioDisplayLink.m; sourceTree = "<group>"; };
469F4D041B749FEC00666A46 /* EZAudioFFT.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioFFT.h; sourceTree = "<group>"; };
469F4D051B749FEC00666A46 /* EZAudioFFT.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioFFT.m; sourceTree = "<group>"; };
469F4D061B749FEC00666A46 /* EZAudioFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioFile.h; sourceTree = "<group>"; };
469F4D071B749FEC00666A46 /* EZAudioFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioFile.m; sourceTree = "<group>"; };
469F4D081B749FEC00666A46 /* EZAudioFloatConverter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioFloatConverter.h; sourceTree = "<group>"; };
469F4D091B749FEC00666A46 /* EZAudioFloatConverter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioFloatConverter.m; sourceTree = "<group>"; };
469F4D0A1B749FEC00666A46 /* EZAudioFloatData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioFloatData.h; sourceTree = "<group>"; };
469F4D0B1B749FEC00666A46 /* EZAudioFloatData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioFloatData.m; sourceTree = "<group>"; };
469F4D0C1B749FEC00666A46 /* EZAudioPlayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioPlayer.h; sourceTree = "<group>"; };
469F4D0D1B749FEC00666A46 /* EZAudioPlayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioPlayer.m; sourceTree = "<group>"; };
469F4D0E1B749FEC00666A46 /* EZAudioPlot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioPlot.h; sourceTree = "<group>"; };
469F4D0F1B749FEC00666A46 /* EZAudioPlot.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioPlot.m; sourceTree = "<group>"; };
469F4D101B749FEC00666A46 /* EZAudioPlotGL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioPlotGL.h; sourceTree = "<group>"; };
469F4D111B749FEC00666A46 /* EZAudioPlotGL.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioPlotGL.m; sourceTree = "<group>"; };
469F4D121B749FEC00666A46 /* EZAudioUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioUtilities.h; sourceTree = "<group>"; };
469F4D131B749FEC00666A46 /* EZAudioUtilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioUtilities.m; sourceTree = "<group>"; };
469F4D141B749FEC00666A46 /* EZMicrophone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZMicrophone.h; sourceTree = "<group>"; };
469F4D151B749FEC00666A46 /* EZMicrophone.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZMicrophone.m; sourceTree = "<group>"; };
469F4D161B749FEC00666A46 /* EZOutput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZOutput.h; sourceTree = "<group>"; };
469F4D171B749FEC00666A46 /* EZOutput.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZOutput.m; sourceTree = "<group>"; };
469F4D181B749FEC00666A46 /* EZPlot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZPlot.h; sourceTree = "<group>"; };
469F4D191B749FEC00666A46 /* EZPlot.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZPlot.m; sourceTree = "<group>"; };
469F4D1A1B749FEC00666A46 /* EZRecorder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZRecorder.h; sourceTree = "<group>"; };
469F4D1B1B749FEC00666A46 /* EZRecorder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZRecorder.m; sourceTree = "<group>"; };
469F4D1C1B749FEC00666A46 /* TPCircularBuffer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = TPCircularBuffer.c; sourceTree = "<group>"; };
469F4D1D1B749FEC00666A46 /* TPCircularBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TPCircularBuffer.h; sourceTree = "<group>"; };
8A5A4B9C1BBBDCB200A8A048 /* EZAudioOSX.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = EZAudioOSX.framework; sourceTree = BUILT_PRODUCTS_DIR; };
8A5A4BEF1BBBFF0A00A8A048 /* EZAudioiOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioiOS.h; sourceTree = "<group>"; };
8A5A4BF11BBBFF5600A8A048 /* EZAudioOSX.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioOSX.h; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
469F4CEF1B749F7800666A46 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
8A5A4B981BBBDCB200A8A048 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
469F4CE91B749F7800666A46 = {
isa = PBXGroup;
children = (
469F4CF51B749F7800666A46 /* EZAudio */,
469F4CF41B749F7800666A46 /* Products */,
);
sourceTree = "<group>";
};
469F4CF41B749F7800666A46 /* Products */ = {
isa = PBXGroup;
children = (
469F4CF31B749F7800666A46 /* EZAudioiOS.framework */,
8A5A4B9C1BBBDCB200A8A048 /* EZAudioOSX.framework */,
);
name = Products;
sourceTree = "<group>";
};
469F4CF51B749F7800666A46 /* EZAudio */ = {
isa = PBXGroup;
children = (
469F4CFE1B749FEC00666A46 /* EZAudio.h */,
469F4CFF1B749FEC00666A46 /* EZAudio.m */,
469F4D001B749FEC00666A46 /* EZAudioDevice.h */,
469F4D011B749FEC00666A46 /* EZAudioDevice.m */,
469F4D021B749FEC00666A46 /* EZAudioDisplayLink.h */,
469F4D031B749FEC00666A46 /* EZAudioDisplayLink.m */,
469F4D041B749FEC00666A46 /* EZAudioFFT.h */,
469F4D051B749FEC00666A46 /* EZAudioFFT.m */,
469F4D061B749FEC00666A46 /* EZAudioFile.h */,
469F4D071B749FEC00666A46 /* EZAudioFile.m */,
469F4D081B749FEC00666A46 /* EZAudioFloatConverter.h */,
469F4D091B749FEC00666A46 /* EZAudioFloatConverter.m */,
469F4D0A1B749FEC00666A46 /* EZAudioFloatData.h */,
469F4D0B1B749FEC00666A46 /* EZAudioFloatData.m */,
469F4D0C1B749FEC00666A46 /* EZAudioPlayer.h */,
469F4D0D1B749FEC00666A46 /* EZAudioPlayer.m */,
469F4D0E1B749FEC00666A46 /* EZAudioPlot.h */,
469F4D0F1B749FEC00666A46 /* EZAudioPlot.m */,
469F4D101B749FEC00666A46 /* EZAudioPlotGL.h */,
469F4D111B749FEC00666A46 /* EZAudioPlotGL.m */,
469F4D121B749FEC00666A46 /* EZAudioUtilities.h */,
469F4D131B749FEC00666A46 /* EZAudioUtilities.m */,
469F4D141B749FEC00666A46 /* EZMicrophone.h */,
469F4D151B749FEC00666A46 /* EZMicrophone.m */,
469F4D161B749FEC00666A46 /* EZOutput.h */,
469F4D171B749FEC00666A46 /* EZOutput.m */,
469F4D181B749FEC00666A46 /* EZPlot.h */,
469F4D191B749FEC00666A46 /* EZPlot.m */,
469F4D1A1B749FEC00666A46 /* EZRecorder.h */,
469F4D1B1B749FEC00666A46 /* EZRecorder.m */,
469F4D1C1B749FEC00666A46 /* TPCircularBuffer.c */,
469F4D1D1B749FEC00666A46 /* TPCircularBuffer.h */,
8A5A4BEF1BBBFF0A00A8A048 /* EZAudioiOS.h */,
8A5A4BF11BBBFF5600A8A048 /* EZAudioOSX.h */,
469F4D3E1B749FF000666A46 /* Supporting Files */,
);
path = EZAudio;
sourceTree = "<group>";
};
469F4D3E1B749FF000666A46 /* Supporting Files */ = {
isa = PBXGroup;
children = (
469F4CF81B749F7800666A46 /* Info.plist */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
469F4CF01B749F7800666A46 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
8A5A4BF41BBC025600A8A048 /* EZAudioiOS.h in Headers */,
469F4D301B749FEC00666A46 /* EZAudioPlotGL.h in Headers */,
469F4D2A1B749FEC00666A46 /* EZAudioFloatData.h in Headers */,
469F4D221B749FEC00666A46 /* EZAudioDisplayLink.h in Headers */,
469F4D201B749FEC00666A46 /* EZAudioDevice.h in Headers */,
469F4D2E1B749FEC00666A46 /* EZAudioPlot.h in Headers */,
469F4D2C1B749FEC00666A46 /* EZAudioPlayer.h in Headers */,
469F4D381B749FEC00666A46 /* EZPlot.h in Headers */,
469F4D261B749FEC00666A46 /* EZAudioFile.h in Headers */,
469F4D341B749FEC00666A46 /* EZMicrophone.h in Headers */,
469F4D361B749FEC00666A46 /* EZOutput.h in Headers */,
469F4D1E1B749FEC00666A46 /* EZAudio.h in Headers */,
469F4D3D1B749FEC00666A46 /* TPCircularBuffer.h in Headers */,
469F4D3A1B749FEC00666A46 /* EZRecorder.h in Headers */,
469F4D321B749FEC00666A46 /* EZAudioUtilities.h in Headers */,
469F4D281B749FEC00666A46 /* EZAudioFloatConverter.h in Headers */,
469F4D241B749FEC00666A46 /* EZAudioFFT.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
8A5A4B991BBBDCB200A8A048 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
8A5A4BF31BBBFFA000A8A048 /* EZAudioOSX.h in Headers */,
8A5A4BB31BBBDD6D00A8A048 /* EZAudio.h in Headers */,
8A5A4BB41BBBDD6D00A8A048 /* EZAudioDevice.h in Headers */,
8A5A4BB51BBBDD6D00A8A048 /* EZAudioDisplayLink.h in Headers */,
8A5A4BB61BBBDD6D00A8A048 /* EZAudioFFT.h in Headers */,
8A5A4BB71BBBDD6D00A8A048 /* EZAudioFile.h in Headers */,
8A5A4BB81BBBDD6D00A8A048 /* EZAudioFloatConverter.h in Headers */,
8A5A4BB91BBBDD6D00A8A048 /* EZAudioFloatData.h in Headers */,
8A5A4BBA1BBBDD6D00A8A048 /* EZAudioPlayer.h in Headers */,
8A5A4BBB1BBBDD6D00A8A048 /* EZAudioPlot.h in Headers */,
8A5A4BBC1BBBDD6D00A8A048 /* EZAudioPlotGL.h in Headers */,
8A5A4BBD1BBBDD6D00A8A048 /* EZAudioUtilities.h in Headers */,
8A5A4BBE1BBBDD6D00A8A048 /* EZMicrophone.h in Headers */,
8A5A4BBF1BBBDD6D00A8A048 /* EZOutput.h in Headers */,
8A5A4BC01BBBDD6D00A8A048 /* EZPlot.h in Headers */,
8A5A4BC11BBBDD6D00A8A048 /* EZRecorder.h in Headers */,
8A5A4BC21BBBDD6E00A8A048 /* TPCircularBuffer.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
469F4CF21B749F7800666A46 /* EZAudioiOS */ = {
isa = PBXNativeTarget;
buildConfigurationList = 469F4CFB1B749F7800666A46 /* Build configuration list for PBXNativeTarget "EZAudioiOS" */;
buildPhases = (
469F4CEE1B749F7800666A46 /* Sources */,
469F4CEF1B749F7800666A46 /* Frameworks */,
469F4CF01B749F7800666A46 /* Headers */,
469F4CF11B749F7800666A46 /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = EZAudioiOS;
productName = EZAudio;
productReference = 469F4CF31B749F7800666A46 /* EZAudioiOS.framework */;
productType = "com.apple.product-type.framework";
};
8A5A4B9B1BBBDCB200A8A048 /* EZAudioOSX */ = {
isa = PBXNativeTarget;
buildConfigurationList = 8A5A4BAD1BBBDCB200A8A048 /* Build configuration list for PBXNativeTarget "EZAudioOSX" */;
buildPhases = (
8A5A4B971BBBDCB200A8A048 /* Sources */,
8A5A4B981BBBDCB200A8A048 /* Frameworks */,
8A5A4B991BBBDCB200A8A048 /* Headers */,
8A5A4B9A1BBBDCB200A8A048 /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = EZAudioOSX;
productName = EZAudioOSX;
productReference = 8A5A4B9C1BBBDCB200A8A048 /* EZAudioOSX.framework */;
productType = "com.apple.product-type.framework";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
469F4CEA1B749F7800666A46 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0700;
ORGANIZATIONNAME = "Andrew Breckenridge";
TargetAttributes = {
469F4CF21B749F7800666A46 = {
CreatedOnToolsVersion = 7.0;
};
8A5A4B9B1BBBDCB200A8A048 = {
CreatedOnToolsVersion = 7.0;
};
};
};
buildConfigurationList = 469F4CED1B749F7800666A46 /* Build configuration list for PBXProject "EZAudio" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
en,
);
mainGroup = 469F4CE91B749F7800666A46;
productRefGroup = 469F4CF41B749F7800666A46 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
469F4CF21B749F7800666A46 /* EZAudioiOS */,
8A5A4B9B1BBBDCB200A8A048 /* EZAudioOSX */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
469F4CF11B749F7800666A46 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
8A5A4B9A1BBBDCB200A8A048 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
469F4CEE1B749F7800666A46 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
469F4D2F1B749FEC00666A46 /* EZAudioPlot.m in Sources */,
469F4D2D1B749FEC00666A46 /* EZAudioPlayer.m in Sources */,
469F4D251B749FEC00666A46 /* EZAudioFFT.m in Sources */,
469F4D391B749FEC00666A46 /* EZPlot.m in Sources */,
469F4D291B749FEC00666A46 /* EZAudioFloatConverter.m in Sources */,
469F4D1F1B749FEC00666A46 /* EZAudio.m in Sources */,
469F4D3C1B749FEC00666A46 /* TPCircularBuffer.c in Sources */,
469F4D3B1B749FEC00666A46 /* EZRecorder.m in Sources */,
469F4D311B749FEC00666A46 /* EZAudioPlotGL.m in Sources */,
469F4D331B749FEC00666A46 /* EZAudioUtilities.m in Sources */,
469F4D2B1B749FEC00666A46 /* EZAudioFloatData.m in Sources */,
469F4D351B749FEC00666A46 /* EZMicrophone.m in Sources */,
469F4D271B749FEC00666A46 /* EZAudioFile.m in Sources */,
469F4D231B749FEC00666A46 /* EZAudioDisplayLink.m in Sources */,
469F4D371B749FEC00666A46 /* EZOutput.m in Sources */,
469F4D211B749FEC00666A46 /* EZAudioDevice.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
8A5A4B971BBBDCB200A8A048 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
8A5A4BD21BBBDE2800A8A048 /* TPCircularBuffer.c in Sources */,
8A5A4BC31BBBDD7E00A8A048 /* EZAudio.m in Sources */,
8A5A4BC41BBBDD7E00A8A048 /* EZAudioDevice.m in Sources */,
8A5A4BC51BBBDD7E00A8A048 /* EZAudioDisplayLink.m in Sources */,
8A5A4BC61BBBDD7E00A8A048 /* EZAudioFFT.m in Sources */,
8A5A4BC71BBBDD7E00A8A048 /* EZAudioFile.m in Sources */,
8A5A4BC81BBBDD7E00A8A048 /* EZAudioFloatConverter.m in Sources */,
8A5A4BC91BBBDD7E00A8A048 /* EZAudioFloatData.m in Sources */,
8A5A4BCA1BBBDD7E00A8A048 /* EZAudioPlayer.m in Sources */,
8A5A4BCB1BBBDD7E00A8A048 /* EZAudioPlot.m in Sources */,
8A5A4BCC1BBBDD7E00A8A048 /* EZAudioPlotGL.m in Sources */,
8A5A4BCD1BBBDD7E00A8A048 /* EZAudioUtilities.m in Sources */,
8A5A4BCE1BBBDD7E00A8A048 /* EZMicrophone.m in Sources */,
8A5A4BCF1BBBDD7E00A8A048 /* EZOutput.m in Sources */,
8A5A4BD01BBBDD7E00A8A048 /* EZPlot.m in Sources */,
8A5A4BD11BBBDD7E00A8A048 /* EZRecorder.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin XCBuildConfiguration section */
469F4CF91B749F7800666A46 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Debug;
};
469F4CFA1B749F7800666A46 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Release;
};
469F4CFC1B749F7800666A46 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = EZAudio/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = ezaudio.EZAudioiOS;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
};
name = Debug;
};
469F4CFD1B749F7800666A46 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = EZAudio/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = ezaudio.EZAudioiOS;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
};
name = Release;
};
8A5A4BAE1BBBDCB200A8A048 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
COMBINE_HIDPI_IMAGES = YES;
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
FRAMEWORK_VERSION = A;
INFOPLIST_FILE = "$(SRCROOT)/EZAudio/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.8;
PRODUCT_BUNDLE_IDENTIFIER = ezaudio.EZAudioOSX;
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = macosx;
SKIP_INSTALL = YES;
};
name = Debug;
};
8A5A4BAF1BBBDCB200A8A048 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
COMBINE_HIDPI_IMAGES = YES;
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
FRAMEWORK_VERSION = A;
INFOPLIST_FILE = "$(SRCROOT)/EZAudio/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.8;
PRODUCT_BUNDLE_IDENTIFIER = ezaudio.EZAudioOSX;
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = macosx;
SKIP_INSTALL = YES;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
469F4CED1B749F7800666A46 /* Build configuration list for PBXProject "EZAudio" */ = {
isa = XCConfigurationList;
buildConfigurations = (
469F4CF91B749F7800666A46 /* Debug */,
469F4CFA1B749F7800666A46 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
469F4CFB1B749F7800666A46 /* Build configuration list for PBXNativeTarget "EZAudioiOS" */ = {
isa = XCConfigurationList;
buildConfigurations = (
469F4CFC1B749F7800666A46 /* Debug */,
469F4CFD1B749F7800666A46 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
8A5A4BAD1BBBDCB200A8A048 /* Build configuration list for PBXNativeTarget "EZAudioOSX" */ = {
isa = XCConfigurationList;
buildConfigurations = (
8A5A4BAE1BBBDCB200A8A048 /* Debug */,
8A5A4BAF1BBBDCB200A8A048 /* Release */,
);
defaultConfigurationIsVisible = 0;
};
/* End XCConfigurationList section */
};
rootObject = 469F4CEA1B749F7800666A46 /* Project object */;
}
@@ -2,6 +2,6 @@
<Workspace
version = "1.0">
<FileRef
location = "self:EZAudioRecordExample.xcodeproj">
location = "self:EZAudio.xcodeproj">
</FileRef>
</Workspace>
@@ -0,0 +1,99 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0700"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8A5A4B9B1BBBDCB200A8A048"
BuildableName = "EZAudioOSX.framework"
BlueprintName = "EZAudioOSX"
ReferencedContainer = "container:EZAudio.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8A5A4BA41BBBDCB200A8A048"
BuildableName = "EZAudioOSXTests.xctest"
BlueprintName = "EZAudioOSXTests"
ReferencedContainer = "container:EZAudio.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8A5A4B9B1BBBDCB200A8A048"
BuildableName = "EZAudioOSX.framework"
BlueprintName = "EZAudioOSX"
ReferencedContainer = "container:EZAudio.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8A5A4B9B1BBBDCB200A8A048"
BuildableName = "EZAudioOSX.framework"
BlueprintName = "EZAudioOSX"
ReferencedContainer = "container:EZAudio.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8A5A4B9B1BBBDCB200A8A048"
BuildableName = "EZAudioOSX.framework"
BlueprintName = "EZAudioOSX"
ReferencedContainer = "container:EZAudio.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
@@ -0,0 +1,80 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0700"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "469F4CF21B749F7800666A46"
BuildableName = "EZAudioiOS.framework"
BlueprintName = "EZAudioiOS"
ReferencedContainer = "container:EZAudio.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "469F4CF21B749F7800666A46"
BuildableName = "EZAudioiOS.framework"
BlueprintName = "EZAudioiOS"
ReferencedContainer = "container:EZAudio.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "469F4CF21B749F7800666A46"
BuildableName = "EZAudioiOS.framework"
BlueprintName = "EZAudioiOS"
ReferencedContainer = "container:EZAudio.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
+11 -4
View File
@@ -25,6 +25,12 @@
#import <Foundation/Foundation.h>
//! Project version number for teat.
FOUNDATION_EXPORT double EZAudioVersionNumber;
//! Project version string for teat.
FOUNDATION_EXPORT const unsigned char EZAudioVersionString[];
//------------------------------------------------------------------------------
#pragma mark - Core Components
//------------------------------------------------------------------------------
@@ -49,6 +55,7 @@
#pragma mark - Utility Components
//------------------------------------------------------------------------------
#import "EZAudioFFT.h"
#import "EZAudioFloatConverter.h"
#import "EZAudioFloatData.h"
#import "EZAudioUtilities.h"
@@ -254,7 +261,7 @@
@note Please use same method in EZAudioUtilities class instead.
@return A new AudioStreamBasicDescription with the specified format.
*/
+ (AudioStreamBasicDescription)stereoFloatNonInterleavedFormatWithSampleRate:(float)sameRate __attribute__((deprecated));
+ (AudioStreamBasicDescription)stereoFloatNonInterleavedFormatWithSampleRate:(float)sampleRate __attribute__((deprecated));
//------------------------------------------------------------------------------
// @name AudioStreamBasicDescription Helper Functions
@@ -498,8 +505,8 @@
/**
Initializes the circular buffer (just a wrapper around the C method)
* @param circularBuffer Pointer to an instance of the TPCircularBuffer
* @param size The length of the TPCircularBuffer (usually 1024)
@param circularBuffer Pointer to an instance of the TPCircularBuffer
@param size The length of the TPCircularBuffer (usually 1024)
@deprecated This method is deprecated starting in version 0.1.0.
@note Please use same method in EZAudioUtilities class instead.
*/
@@ -518,4 +525,4 @@
//------------------------------------------------------------------------------
@end
@end
+20 -3
View File
@@ -1,10 +1,27 @@
//
// EZAudioDevice.h
// MicrophoneTest
// EZAudio
//
// Created by Syed Haris Ali on 4/3/15.
// Created by Syed Haris Ali on 6/25/15.
// Copyright (c) 2015 Syed Haris Ali. All rights reserved.
//
// 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.
#import <Foundation/Foundation.h>
#import <AudioToolbox/AudioToolbox.h>
@@ -167,4 +184,4 @@
#endif
@end
@end
+19 -2
View File
@@ -1,10 +1,27 @@
//
// EZAudioDevice.m
// MicrophoneTest
// EZAudio
//
// Created by Syed Haris Ali on 4/3/15.
// Created by Syed Haris Ali on 6/25/15.
// Copyright (c) 2015 Syed Haris Ali. All rights reserved.
//
// 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.
#import "EZAudioDevice.h"
#import "EZAudioUtilities.h"
+392
View File
@@ -0,0 +1,392 @@
//
// EZAudioFFT.h
// EZAudio
//
// Created by Syed Haris Ali on 7/10/15.
// Copyright (c) 2015 Syed Haris Ali. All rights reserved.
//
// 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.
#import <Foundation/Foundation.h>
#import <Accelerate/Accelerate.h>
@class EZAudioFFT;
//------------------------------------------------------------------------------
#pragma mark - EZAudioFFTDelegate
//------------------------------------------------------------------------------
/**
The EZAudioFFTDelegate provides event callbacks for the EZAudioFFT (and subclasses such as the EZAudioFFTRolling) whenvever the FFT is computed.
*/
@protocol EZAudioFFTDelegate <NSObject>
@optional
///-----------------------------------------------------------
/// @name Getting FFT Output Data
///-----------------------------------------------------------
/**
Triggered when the EZAudioFFT computes an FFT from a buffer of input data. Provides an array of float data representing the computed FFT.
@param fft The EZAudioFFT instance that triggered the event.
@param fftData A float pointer representing the float array of FFT data.
@param bufferSize A vDSP_Length (unsigned long) representing the length of the float array.
*/
- (void) fft:(EZAudioFFT *)fft
updatedWithFFTData:(float *)fftData
bufferSize:(vDSP_Length)bufferSize;
@end
//------------------------------------------------------------------------------
#pragma mark - EZAudioFFT
//------------------------------------------------------------------------------
/**
The EZAudioFFT provides a base class to quickly calculate the FFT of incoming audio data using the Accelerate framework. In addition, the EZAudioFFT contains an EZAudioFFTDelegate to receive an event anytime an FFT is computed.
*/
@interface EZAudioFFT : NSObject
//------------------------------------------------------------------------------
#pragma mark - Initializers
//------------------------------------------------------------------------------
///-----------------------------------------------------------
/// @name Initializers
///-----------------------------------------------------------
/**
Initializes an EZAudioFFT (or subclass) instance with a maximum buffer size and sample rate. The sample rate is used specifically to calculate the `maxFrequency` property. If you don't care about the `maxFrequency` property then you can set the sample rate to 0.
@param maximumBufferSize A vDSP_Length (unsigned long) representing the maximum length of the incoming audio data.
@param sampleRate A float representing the sample rate of the incoming audio data.
@return A newly created EZAudioFFT (or subclass) instance.
*/
- (instancetype)initWithMaximumBufferSize:(vDSP_Length)maximumBufferSize
sampleRate:(float)sampleRate;
//------------------------------------------------------------------------------
/**
Initializes an EZAudioFFT (or subclass) instance with a maximum buffer size, sample rate, and EZAudioFFTDelegate. The sample rate is used specifically to calculate the `maxFrequency` property. If you don't care about the `maxFrequency` property then you can set the sample rate to 0. The EZAudioFFTDelegate will act as a receive to get an event whenever the FFT is calculated.
@param maximumBufferSize A vDSP_Length (unsigned long) representing the maximum length of the incoming audio data.
@param sampleRate A float representing the sample rate of the incoming audio data.
@param delegate An EZAudioFFTDelegate to receive an event whenever the FFT is calculated.
@return A newly created EZAudioFFT (or subclass) instance.
*/
- (instancetype)initWithMaximumBufferSize:(vDSP_Length)maximumBufferSize
sampleRate:(float)sampleRate
delegate:(id<EZAudioFFTDelegate>)delegate;
//------------------------------------------------------------------------------
#pragma mark - Class Initializers
//------------------------------------------------------------------------------
///-----------------------------------------------------------
/// @name Class Initializers
///-----------------------------------------------------------
/**
Class method to initialize an EZAudioFFT (or subclass) instance with a maximum buffer size and sample rate. The sample rate is used specifically to calculate the `maxFrequency` property. If you don't care about the `maxFrequency` property then you can set the sample rate to 0.
@param maximumBufferSize A vDSP_Length (unsigned long) representing the maximum length of the incoming audio data.
@param sampleRate A float representing the sample rate of the incoming audio data.
@return A newly created EZAudioFFT (or subclass) instance.
*/
+ (instancetype)fftWithMaximumBufferSize:(vDSP_Length)maximumBufferSize
sampleRate:(float)sampleRate;
//------------------------------------------------------------------------------
/**
Class method to initialize an EZAudioFFT (or subclass) instance with a maximum buffer size, sample rate, and EZAudioFFTDelegate. The sample rate is used specifically to calculate the `maxFrequency` property. If you don't care about the `maxFrequency` property then you can set the sample rate to 0. The EZAudioFFTDelegate will act as a receive to get an event whenever the FFT is calculated.
@param maximumBufferSize A vDSP_Length (unsigned long) representing the maximum length of the incoming audio data.
@param sampleRate A float representing the sample rate of the incoming audio data.
@param delegate An EZAudioFFTDelegate to receive an event whenever the FFT is calculated.
@return A newly created EZAudioFFT (or subclass) instance.
*/
+ (instancetype)fftWithMaximumBufferSize:(vDSP_Length)maximumBufferSize
sampleRate:(float)sampleRate
delegate:(id<EZAudioFFTDelegate>)delegate;
//------------------------------------------------------------------------------
#pragma mark - Properties
//------------------------------------------------------------------------------
///-----------------------------------------------------------
/// @name Properties
///-----------------------------------------------------------
/**
An EZAudioFFTDelegate to receive an event whenever the FFT is calculated.
*/
@property (weak, nonatomic) id<EZAudioFFTDelegate> delegate;
//------------------------------------------------------------------------------
/**
A COMPLEX_SPLIT data structure used to hold the FFT's imaginary and real components.
*/
@property (readonly, nonatomic) COMPLEX_SPLIT complexSplit;
//------------------------------------------------------------------------------
/**
A float array containing the last calculated FFT data.
*/
@property (readonly, nonatomic) float *fftData;
//------------------------------------------------------------------------------
/**
An FFTSetup data structure used to internally calculate the FFT using Accelerate.
*/
@property (readonly, nonatomic) FFTSetup fftSetup;
//------------------------------------------------------------------------------
/**
A float array containing the last calculated inverse FFT data (the time domain signal).
*/
@property (readonly, nonatomic) float *inversedFFTData;
//------------------------------------------------------------------------------
/**
A float representing the frequency with the highest energy is the last FFT calculation.
*/
@property (readonly, nonatomic) float maxFrequency;
//------------------------------------------------------------------------------
/**
A vDSP_Length (unsigned long) representing the index of the frequency with the highest energy is the last FFT calculation.
*/
@property (readonly, nonatomic) vDSP_Length maxFrequencyIndex;
//------------------------------------------------------------------------------
/**
A float representing the magnitude of the frequency with the highest energy is the last FFT calculation.
*/
@property (readonly, nonatomic) float maxFrequencyMagnitude;
//------------------------------------------------------------------------------
/**
A vDSP_Length (unsigned long) representing the maximum buffer size. This is the maximum length the incoming audio data in the `computeFFTWithBuffer:withBufferSize` method can be.
*/
@property (readonly, nonatomic) vDSP_Length maximumBufferSize;
//------------------------------------------------------------------------------
/**
A float representing the sample rate of the incoming audio data.
*/
@property (readwrite, nonatomic) float sampleRate;
//------------------------------------------------------------------------------
#pragma mark - Actions
//------------------------------------------------------------------------------
///-----------------------------------------------------------
/// @name Computing The FFT
///-----------------------------------------------------------
/**
Computes the FFT for a float array representing an incoming audio signal. This will trigger the EZAudioFFTDelegate method `fft:updatedWithFFTData:bufferSize:`.
@param buffer A float array representing the audio data.
@param bufferSize The length of the float array of audio data.
@return A float array containing the computed FFT data. The length of the output will be half the incoming buffer (half the `bufferSize` argument).
*/
- (float *)computeFFTWithBuffer:(float *)buffer withBufferSize:(UInt32)bufferSize;
//------------------------------------------------------------------------------
/**
Provides the frequency corresponding to an index in the last computed FFT data.
@param index A vDSP_Length (unsigned integer) representing the index of the frequency bin value you'd like to get
@return A float representing the frequency value at that index.
*/
- (float)frequencyAtIndex:(vDSP_Length)index;
//------------------------------------------------------------------------------
/**
Provides the magnitude of the frequenecy corresponding to an index in the last computed FFT data.
@param index A vDSP_Length (unsigned integer) representing the index of the frequency bin value you'd like to get
@return A float representing the frequency magnitude value at that index.
*/
- (float)frequencyMagnitudeAtIndex:(vDSP_Length)index;
@end
//------------------------------------------------------------------------------
#pragma mark - EZAudioFFTRolling
//------------------------------------------------------------------------------
/**
The EZAudioFFTRolling, a subclass of EZAudioFFT, provides a class to calculate an FFT for an incoming audio signal while maintaining a history of audio data to allow much higher resolution FFTs. For instance, the EZMicrophone typically provides 512 frames at a time, but you would probably want to provide 2048 or 4096 frames for a decent looking FFT if you're trying to extract precise frequency components. You will typically be using this class for variable length FFTs instead of the EZAudioFFT base class.
*/
@interface EZAudioFFTRolling : EZAudioFFT
//------------------------------------------------------------------------------
#pragma mark - Initializers
//------------------------------------------------------------------------------
///-----------------------------------------------------------
/// @name Initializers
///-----------------------------------------------------------
/**
Initializes an EZAudioFFTRolling instance with a window size and a sample rate. The EZAudioFFTRolling has an internal EZPlotHistoryInfo data structure that writes audio data to a circular buffer and manages sliding windows of audio data to support efficient, large FFT calculations. Here you provide a window size that represents how many audio sample will be used to calculate the FFT and a float representing the sample rate of the incoming audio (can be 0 if you don't care about the `maxFrequency` property). The history buffer size in this case is the `windowSize` * 8, which is pretty good for most cases.
@param windowSize A vDSP_Length (unsigned long) representing the size of the window (i.e. the resolution) of data that should be used to calculate the FFT. A typical value for this would be something like 1024 - 4096 (or higher for an even higher resolution FFT).
@param sampleRate A float representing the sample rate of the incoming audio signal.
@return A newly created EZAudioFFTRolling instance.
*/
- (instancetype)initWithWindowSize:(vDSP_Length)windowSize
sampleRate:(float)sampleRate;
//------------------------------------------------------------------------------
/**
Initializes an EZAudioFFTRolling instance with a window size, a sample rate, and an EZAudioFFTDelegate. The EZAudioFFTRolling has an internal EZPlotHistoryInfo data structure that writes audio data to a circular buffer and manages sliding windows of audio data to support efficient, large FFT calculations. Here you provide a window size that represents how many audio sample will be used to calculate the FFT, a float representing the sample rate of the incoming audio (can be 0 if you don't care about the `maxFrequency` property), and an EZAudioFFTDelegate to receive a callback anytime the FFT is calculated. The history buffer size in this case is the `windowSize` * 8, which is pretty good for most cases.
@param windowSize A vDSP_Length (unsigned long) representing the size of the window (i.e. the resolution) of data that should be used to calculate the FFT. A typical value for this would be something like 1024 - 4096 (or higher for an even higher resolution FFT).
@param sampleRate A float representing the sample rate of the incoming audio signal.
@param delegate An EZAudioFFTDelegate to receive an event whenever the FFT is calculated.
@return A newly created EZAudioFFTRolling instance.
*/
- (instancetype)initWithWindowSize:(vDSP_Length)windowSize
sampleRate:(float)sampleRate
delegate:(id<EZAudioFFTDelegate>)delegate;
//------------------------------------------------------------------------------
/**
Initializes an EZAudioFFTRolling instance with a window size, a history buffer size, and a sample rate. The EZAudioFFTRolling has an internal EZPlotHistoryInfo data structure that writes audio data to a circular buffer and manages sliding windows of audio data to support efficient, large FFT calculations. Here you provide a window size that represents how many audio sample will be used to calculate the FFT, a history buffer size representing the maximum length of the sliding window's underlying circular buffer, and a float representing the sample rate of the incoming audio (can be 0 if you don't care about the `maxFrequency` property).
@param windowSize A vDSP_Length (unsigned long) representing the size of the window (i.e. the resolution) of data that should be used to calculate the FFT. A typical value for this would be something like 1024 - 4096 (or higher for an even higher resolution FFT).
@param historyBufferSize A vDSP_Length (unsigned long) representing the length of the history buffer. This should be AT LEAST the size of the window. A recommended value for this would be at least 8x greater than the `windowSize` argument.
@param sampleRate A float representing the sample rate of the incoming audio signal.
@return A newly created EZAudioFFTRolling instance.
*/
- (instancetype)initWithWindowSize:(vDSP_Length)windowSize
historyBufferSize:(vDSP_Length)historyBufferSize
sampleRate:(float)sampleRate;
//------------------------------------------------------------------------------
/**
Initializes an EZAudioFFTRolling instance with a window size, a history buffer size, a sample rate, and an EZAudioFFTDelegate. The EZAudioFFTRolling has an internal EZPlotHistoryInfo data structure that writes audio data to a circular buffer and manages sliding windows of audio data to support efficient, large FFT calculations. Here you provide a window size that represents how many audio sample will be used to calculate the FFT, a history buffer size representing the maximum length of the sliding window's underlying circular buffer, a float representing the sample rate of the incoming audio (can be 0 if you don't care about the `maxFrequency` property), and an EZAudioFFTDelegate to receive a callback anytime the FFT is calculated.
@param windowSize A vDSP_Length (unsigned long) representing the size of the window (i.e. the resolution) of data that should be used to calculate the FFT. A typical value for this would be something like 1024 - 4096 (or higher for an even higher resolution FFT).
@param historyBufferSize A vDSP_Length (unsigned long) representing the length of the history buffer. This should be AT LEAST the size of the window. A recommended value for this would be at least 8x greater than the `windowSize` argument.
@param sampleRate A float representing the sample rate of the incoming audio signal.
@param delegate An EZAudioFFTDelegate to receive an event whenever the FFT is calculated.
@return A newly created EZAudioFFTRolling instance.
*/
- (instancetype)initWithWindowSize:(vDSP_Length)windowSize
historyBufferSize:(vDSP_Length)historyBufferSize
sampleRate:(float)sampleRate
delegate:(id<EZAudioFFTDelegate>)delegate;
//------------------------------------------------------------------------------
#pragma mark - Class Initializers
//------------------------------------------------------------------------------
///-----------------------------------------------------------
/// @name Class Initializers
///-----------------------------------------------------------
/**
Class method to initialize an EZAudioFFTRolling instance with a window size and a sample rate. The EZAudioFFTRolling has an internal EZPlotHistoryInfo data structure that writes audio data to a circular buffer and manages sliding windows of audio data to support efficient, large FFT calculations. Here you provide a window size that represents how many audio sample will be used to calculate the FFT and a float representing the sample rate of the incoming audio (can be 0 if you don't care about the `maxFrequency` property). The history buffer size in this case is the `windowSize` * 8, which is pretty good for most cases.
@param windowSize A vDSP_Length (unsigned long) representing the size of the window (i.e. the resolution) of data that should be used to calculate the FFT. A typical value for this would be something like 1024 - 4096 (or higher for an even higher resolution FFT).
@param sampleRate A float representing the sample rate of the incoming audio signal.
@return A newly created EZAudioFFTRolling instance.
*/
+ (instancetype)fftWithWindowSize:(vDSP_Length)windowSize
sampleRate:(float)sampleRate;
//------------------------------------------------------------------------------
/**
Class method to initialize an EZAudioFFTRolling instance with a window size, a sample rate, and an EZAudioFFTDelegate. The EZAudioFFTRolling has an internal EZPlotHistoryInfo data structure that writes audio data to a circular buffer and manages sliding windows of audio data to support efficient, large FFT calculations. Here you provide a window size that represents how many audio sample will be used to calculate the FFT, a float representing the sample rate of the incoming audio (can be 0 if you don't care about the `maxFrequency` property), and an EZAudioFFTDelegate to receive a callback anytime the FFT is calculated. The history buffer size in this case is the `windowSize` * 8, which is pretty good for most cases.
@param windowSize A vDSP_Length (unsigned long) representing the size of the window (i.e. the resolution) of data that should be used to calculate the FFT. A typical value for this would be something like 1024 - 4096 (or higher for an even higher resolution FFT).
@param sampleRate A float representing the sample rate of the incoming audio signal.
@param delegate An EZAudioFFTDelegate to receive an event whenever the FFT is calculated.
@return A newly created EZAudioFFTRolling instance.
*/
+ (instancetype)fftWithWindowSize:(vDSP_Length)windowSize
sampleRate:(float)sampleRate
delegate:(id<EZAudioFFTDelegate>)delegate;
//------------------------------------------------------------------------------
/**
Class method to initialize an EZAudioFFTRolling instance with a window size, a history buffer size, and a sample rate. The EZAudioFFTRolling has an internal EZPlotHistoryInfo data structure that writes audio data to a circular buffer and manages sliding windows of audio data to support efficient, large FFT calculations. Here you provide a window size that represents how many audio sample will be used to calculate the FFT, a history buffer size representing the maximum length of the sliding window's underlying circular buffer, and a float representing the sample rate of the incoming audio (can be 0 if you don't care about the `maxFrequency` property).
@param windowSize A vDSP_Length (unsigned long) representing the size of the window (i.e. the resolution) of data that should be used to calculate the FFT. A typical value for this would be something like 1024 - 4096 (or higher for an even higher resolution FFT).
@param historyBufferSize A vDSP_Length (unsigned long) representing the length of the history buffer. This should be AT LEAST the size of the window. A recommended value for this would be at least 8x greater than the `windowSize` argument.
@param sampleRate A float representing the sample rate of the incoming audio signal.
@return A newly created EZAudioFFTRolling instance.
*/
+ (instancetype)fftWithWindowSize:(vDSP_Length)windowSize
historyBufferSize:(vDSP_Length)historyBufferSize
sampleRate:(float)sampleRate;
//------------------------------------------------------------------------------
/**
Class method to initialize an EZAudioFFTRolling instance with a window size, a history buffer size, a sample rate, and an EZAudioFFTDelegate. The EZAudioFFTRolling has an internal EZPlotHistoryInfo data structure that writes audio data to a circular buffer and manages sliding windows of audio data to support efficient, large FFT calculations. Here you provide a window size that represents how many audio sample will be used to calculate the FFT, a history buffer size representing the maximum length of the sliding window's underlying circular buffer, a float representing the sample rate of the incoming audio (can be 0 if you don't care about the `maxFrequency` property), and an EZAudioFFTDelegate to receive a callback anytime the FFT is calculated.
@param windowSize A vDSP_Length (unsigned long) representing the size of the window (i.e. the resolution) of data that should be used to calculate the FFT. A typical value for this would be something like 1024 - 4096 (or higher for an even higher resolution FFT).
@param historyBufferSize A vDSP_Length (unsigned long) representing the length of the history buffer. This should be AT LEAST the size of the window. A recommended value for this would be at least 8x greater than the `windowSize` argument.
@param sampleRate A float representing the sample rate of the incoming audio signal.
@param delegate An EZAudioFFTDelegate to receive an event whenever the FFT is calculated.
@return A newly created EZAudioFFTRolling instance.
*/
+ (instancetype)fftWithWindowSize:(vDSP_Length)windowSize
historyBufferSize:(vDSP_Length)historyBufferSize
sampleRate:(float)sampleRate
delegate:(id<EZAudioFFTDelegate>)delegate;
//------------------------------------------------------------------------------
#pragma mark - Properties
//------------------------------------------------------------------------------
///-----------------------------------------------------------
/// @name Properties
///-----------------------------------------------------------
/**
A vDSP_Length (unsigned long) representing the length of the FFT window.
*/
@property (readonly, nonatomic) vDSP_Length windowSize;
//------------------------------------------------------------------------------
/**
A float array representing the audio data in the internal circular buffer used to perform the FFT. This will increase as more data is appended to the internal circular buffer via the `computeFFTWithBuffer:withBufferSize:` method. The length of this array is the `timeDomainBufferSize` property.
*/
@property (readonly, nonatomic) float *timeDomainData;
//------------------------------------------------------------------------------
/**
A UInt32 representing the length of the audio data used to perform the FFT.
*/
@property (readonly, nonatomic) UInt32 timeDomainBufferSize;
@end
+444
View File
@@ -0,0 +1,444 @@
//
// EZAudioFFT.m
// EZAudio
//
// Created by Syed Haris Ali on 7/10/15.
// Copyright (c) 2015 Syed Haris Ali. All rights reserved.
//
// 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.
#import "EZAudioFFT.h"
#import "EZAudioUtilities.h"
//------------------------------------------------------------------------------
#pragma mark - Data Structures
//------------------------------------------------------------------------------
typedef struct EZAudioFFTInfo
{
FFTSetup fftSetup;
COMPLEX_SPLIT complexA;
float *outFFTData;
vDSP_Length outFFTDataLength;
float *inversedFFTData;
vDSP_Length maxFrequencyIndex;
float maxFrequencyMangitude;
float maxFrequency;
} EZAudioFFTInfo;
//------------------------------------------------------------------------------
#pragma mark - EZAudioFFT (Interface Extension)
//------------------------------------------------------------------------------
@interface EZAudioFFT ()
@property (assign, nonatomic) EZAudioFFTInfo *info;
@property (readwrite, nonatomic) vDSP_Length maximumBufferSize;
@end
//------------------------------------------------------------------------------
#pragma mark - EZAudioFFT (Implementation)
//------------------------------------------------------------------------------
@implementation EZAudioFFT
//------------------------------------------------------------------------------
#pragma mark - Dealloc
//------------------------------------------------------------------------------
- (void)dealloc
{
vDSP_destroy_fftsetup(self.info->fftSetup);
free(self.info->complexA.realp);
free(self.info->complexA.imagp);
free(self.info->outFFTData);
free(self.info->inversedFFTData);
}
//------------------------------------------------------------------------------
#pragma mark - Initializers
//------------------------------------------------------------------------------
- (instancetype)initWithMaximumBufferSize:(vDSP_Length)maximumBufferSize
sampleRate:(float)sampleRate
{
return [self initWithMaximumBufferSize:maximumBufferSize
sampleRate:sampleRate
delegate:nil];
}
//------------------------------------------------------------------------------
- (instancetype)initWithMaximumBufferSize:(vDSP_Length)maximumBufferSize
sampleRate:(float)sampleRate
delegate:(id<EZAudioFFTDelegate>)delegate
{
self = [super init];
if (self)
{
self.maximumBufferSize = (vDSP_Length)maximumBufferSize;
self.sampleRate = sampleRate;
self.delegate = delegate;
[self setup];
}
return self;
}
//------------------------------------------------------------------------------
#pragma mark - Class Initializers
//------------------------------------------------------------------------------
+ (instancetype)fftWithMaximumBufferSize:(vDSP_Length)maximumBufferSize
sampleRate:(float)sampleRate
{
return [[self alloc] initWithMaximumBufferSize:maximumBufferSize
sampleRate:sampleRate];
}
//------------------------------------------------------------------------------
+ (instancetype)fftWithMaximumBufferSize:(vDSP_Length)maximumBufferSize
sampleRate:(float)sampleRate
delegate:(id<EZAudioFFTDelegate>)delegate
{
return [[self alloc] initWithMaximumBufferSize:maximumBufferSize
sampleRate:sampleRate
delegate:delegate];
}
//------------------------------------------------------------------------------
#pragma mark - Setup
//------------------------------------------------------------------------------
- (void)setup
{
NSAssert(self.maximumBufferSize > 0, @"Expected FFT buffer size to be greater than 0!");
//
// Initialize FFT
//
float maximumBufferSizeBytes = self.maximumBufferSize * sizeof(float);
self.info = (EZAudioFFTInfo *)calloc(1, sizeof(EZAudioFFTInfo));
vDSP_Length log2n = log2f(self.maximumBufferSize);
self.info->fftSetup = vDSP_create_fftsetup(log2n, FFT_RADIX2);
long nOver2 = maximumBufferSizeBytes / 2;
size_t maximumSizePerComponentBytes = nOver2 * sizeof(float);
self.info->complexA.realp = (float *)malloc(maximumSizePerComponentBytes);
self.info->complexA.imagp = (float *)malloc(maximumSizePerComponentBytes);
self.info->outFFTData = (float *)malloc(maximumSizePerComponentBytes);
memset(self.info->outFFTData, 0, maximumSizePerComponentBytes);
self.info->inversedFFTData = (float *)malloc(maximumSizePerComponentBytes);
}
//------------------------------------------------------------------------------
#pragma mark - Actions
//------------------------------------------------------------------------------
- (float *)computeFFTWithBuffer:(float *)buffer withBufferSize:(UInt32)bufferSize
{
if (buffer == NULL)
{
return NULL;
}
//
// Calculate real + imaginary components and normalize
//
vDSP_Length log2n = log2f(bufferSize);
long nOver2 = bufferSize / 2;
float mFFTNormFactor = 10.0 / (2 * bufferSize);
vDSP_ctoz((COMPLEX*)buffer, 2, &(self.info->complexA), 1, nOver2);
vDSP_fft_zrip(self.info->fftSetup, &(self.info->complexA), 1, log2n, FFT_FORWARD);
vDSP_vsmul(self.info->complexA.realp, 1, &mFFTNormFactor, self.info->complexA.realp, 1, nOver2);
vDSP_vsmul(self.info->complexA.imagp, 1, &mFFTNormFactor, self.info->complexA.imagp, 1, nOver2);
vDSP_zvmags(&(self.info->complexA), 1, self.info->outFFTData, 1, nOver2);
vDSP_fft_zrip(self.info->fftSetup, &(self.info->complexA), 1, log2n, FFT_INVERSE);
vDSP_ztoc(&(self.info->complexA), 1, (COMPLEX *) self.info->inversedFFTData , 2, nOver2);
self.info->outFFTDataLength = nOver2;
//
// Calculate max freq
//
if (self.sampleRate > 0.0f)
{
vDSP_maxvi(self.info->outFFTData, 1, &self.info->maxFrequencyMangitude, &self.info->maxFrequencyIndex, nOver2);
self.info->maxFrequency = [self frequencyAtIndex:self.info->maxFrequencyIndex];
}
//
// Notify delegate
//
if ([self.delegate respondsToSelector:@selector(fft:updatedWithFFTData:bufferSize:)])
{
[self.delegate fft:self
updatedWithFFTData:self.info->outFFTData
bufferSize:nOver2];
}
//
// Return the FFT
//
return self.info->outFFTData;
}
//------------------------------------------------------------------------------
- (float)frequencyAtIndex:(vDSP_Length)index
{
if (!(self.info->outFFTData == NULL || self.sampleRate == 0.0f))
{
float nyquistMaxFreq = self.sampleRate / 2.0;
return ((float)index / (float)self.info->outFFTDataLength) * nyquistMaxFreq;
}
return NSNotFound;
}
//------------------------------------------------------------------------------
- (float)frequencyMagnitudeAtIndex:(vDSP_Length)index
{
if (self.info->outFFTData != NULL)
{
return self.info->outFFTData[index];
}
return NSNotFound;
}
//------------------------------------------------------------------------------
#pragma mark - Getters
//------------------------------------------------------------------------------
- (COMPLEX_SPLIT)complexSplit
{
return self.info->complexA;
}
//------------------------------------------------------------------------------
- (float *)fftData
{
return self.info->outFFTData;
}
//------------------------------------------------------------------------------
- (FFTSetup)fftSetup
{
return self.info->fftSetup;
}
//------------------------------------------------------------------------------
- (float *)inversedFFTData
{
return self.info->inversedFFTData;
}
//------------------------------------------------------------------------------
- (vDSP_Length)maxFrequencyIndex
{
return self.info->maxFrequencyIndex;
}
//------------------------------------------------------------------------------
- (float)maxFrequencyMagnitude
{
return self.info->maxFrequencyMangitude;
}
//------------------------------------------------------------------------------
- (float)maxFrequency
{
return self.info->maxFrequency;
}
@end
//------------------------------------------------------------------------------
#pragma mark - EZAudioFFTRolling
//------------------------------------------------------------------------------
@interface EZAudioFFTRolling ()
@property (assign, nonatomic) EZPlotHistoryInfo *historyInfo;
@property (readwrite, nonatomic) vDSP_Length windowSize;
@end
@implementation EZAudioFFTRolling
//------------------------------------------------------------------------------
#pragma mark - Dealloc
//------------------------------------------------------------------------------
- (void)dealloc
{
[EZAudioUtilities freeHistoryInfo:self.historyInfo];
}
//------------------------------------------------------------------------------
#pragma mark - Initialization
//------------------------------------------------------------------------------
- (instancetype)initWithWindowSize:(vDSP_Length)windowSize
sampleRate:(float)sampleRate
{
return [self initWithWindowSize:windowSize
historyBufferSize:windowSize * 8
sampleRate:sampleRate
delegate:nil];
}
//------------------------------------------------------------------------------
- (instancetype)initWithWindowSize:(vDSP_Length)windowSize
sampleRate:(float)sampleRate
delegate:(id<EZAudioFFTDelegate>)delegate
{
return [self initWithWindowSize:windowSize
historyBufferSize:windowSize * 8
sampleRate:sampleRate
delegate:delegate];
}
//------------------------------------------------------------------------------
- (instancetype)initWithWindowSize:(vDSP_Length)windowSize
historyBufferSize:(vDSP_Length)historyBufferSize
sampleRate:(float)sampleRate
{
return [self initWithWindowSize:windowSize
historyBufferSize:historyBufferSize
sampleRate:sampleRate
delegate:nil];
}
//------------------------------------------------------------------------------
- (instancetype)initWithWindowSize:(vDSP_Length)windowSize
historyBufferSize:(vDSP_Length)historyBufferSize
sampleRate:(float)sampleRate
delegate:(id<EZAudioFFTDelegate>)delegate
{
self = [super initWithMaximumBufferSize:historyBufferSize
sampleRate:sampleRate];
if (self)
{
self.delegate = delegate;
self.windowSize = windowSize;
//
// Allocate an appropriately sized history buffer in bytes
//
self.historyInfo = [EZAudioUtilities historyInfoWithDefaultLength:(UInt32)windowSize
maximumLength:(UInt32)historyBufferSize];
}
return self;
}
//------------------------------------------------------------------------------
#pragma mark - Class Initializers
//------------------------------------------------------------------------------
+ (instancetype)fftWithWindowSize:(vDSP_Length)windowSize
sampleRate:(float)sampleRate
{
return [[self alloc] initWithWindowSize:windowSize
sampleRate:sampleRate];
}
//------------------------------------------------------------------------------
+ (instancetype)fftWithWindowSize:(vDSP_Length)windowSize
sampleRate:(float)sampleRate
delegate:(id<EZAudioFFTDelegate>)delegate
{
return [[self alloc] initWithWindowSize:windowSize
sampleRate:sampleRate
delegate:delegate];
}
//------------------------------------------------------------------------------
+ (instancetype)fftWithWindowSize:(vDSP_Length)windowSize
historyBufferSize:(vDSP_Length)historyBufferSize
sampleRate:(float)sampleRate
{
return [[self alloc] initWithWindowSize:windowSize
historyBufferSize:historyBufferSize
sampleRate:sampleRate];
}
//------------------------------------------------------------------------------
+ (instancetype)fftWithWindowSize:(vDSP_Length)windowSize
historyBufferSize:(vDSP_Length)historyBufferSize
sampleRate:(float)sampleRate
delegate:(id<EZAudioFFTDelegate>)delegate
{
return [[self alloc] initWithWindowSize:windowSize
historyBufferSize:historyBufferSize
sampleRate:sampleRate
delegate:delegate];
}
//------------------------------------------------------------------------------
#pragma mark - Actions
//------------------------------------------------------------------------------
- (float *)computeFFTWithBuffer:(float *)buffer
withBufferSize:(UInt32)bufferSize
{
if (buffer == NULL)
{
return NULL;
}
//
// Append buffer to history window
//
[EZAudioUtilities appendBuffer:buffer
withBufferSize:bufferSize
toHistoryInfo:self.historyInfo];
//
// Call super to calculate the FFT of the window
//
return [super computeFFTWithBuffer:self.historyInfo->buffer
withBufferSize:self.historyInfo->bufferSize];
}
//------------------------------------------------------------------------------
#pragma mark - Getters
//------------------------------------------------------------------------------
- (UInt32)timeDomainBufferSize
{
return self.historyInfo->bufferSize;
}
//------------------------------------------------------------------------------
- (float *)timeDomainData
{
return self.historyInfo->buffer;
}
@end
+6
View File
@@ -412,6 +412,12 @@ typedef struct
SInt64 currentFrame = self.frameIndex;
BOOL interleaved = [EZAudioUtilities isInterleaved:self.clientFormat];
UInt32 channels = self.clientFormat.mChannelsPerFrame;
if (channels == 0)
{
// prevent division by zero
pthread_mutex_unlock(&_lock);
return nil;
}
float **data = (float **)malloc( sizeof(float*) * channels );
for (int i = 0; i < channels; i++)
{
+19 -4
View File
@@ -58,9 +58,12 @@ OSStatus EZAudioFloatConverterCallback(AudioConverterRef inAudioConv
void *inUserData)
{
AudioBufferList *sourceBuffer = (AudioBufferList *)inUserData;
memcpy(ioData,
sourceBuffer,
sizeof(AudioBufferList) + (sourceBuffer->mNumberBuffers - 1) * sizeof(AudioBuffer));
sourceBuffer = NULL;
return noErr;
}
@@ -197,12 +200,19 @@ OSStatus EZAudioFloatConverterCallback(AudioConverterRef inAudioConv
toFloatBuffers:(float **)buffers
packetDescriptions:(AudioStreamPacketDescription *)packetDescriptions
{
if (frames == 0)
if (frames != 0)
{
//
// Make sure the data size coming in is consistent with the number
// of frames we're actually getting
//
for (int i = 0; i < audioBufferList->mNumberBuffers; i++) {
audioBufferList->mBuffers[i].mDataByteSize = frames * self.info->inputFormat.mBytesPerFrame;
}
}
else
{
//
// Fill out the audio converter with the source buffer
//
[EZAudioUtilities checkResult:AudioConverterFillComplexBuffer(self.info->converterRef,
EZAudioFloatConverterCallback,
audioBufferList,
@@ -210,6 +220,11 @@ OSStatus EZAudioFloatConverterCallback(AudioConverterRef inAudioConv
self.info->floatAudioBufferList,
packetDescriptions ? packetDescriptions : self.info->packetDescriptions)
operation:"Failed to fill complex buffer in float converter"];
//
// Copy the converted buffers into the float buffer array stored
// in memory
//
for (int i = 0; i < self.info->floatAudioBufferList->mNumberBuffers; i++)
{
memcpy(buffers[i],
@@ -1,9 +1,9 @@
//
// main.m
// EZAudioWaveformFromFileExample
// EZAudioOSX.m
// EZAudio
//
// Created by Syed Haris Ali on 12/1/13.
// Copyright (c) 2013 Syed Haris Ali. All rights reserved.
// Created by Tommaso Piazza on 30/09/15.
// Copyright © 2015 Andrew Breckenridge. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
@@ -23,9 +23,4 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
#import <Cocoa/Cocoa.h>
int main(int argc, const char * argv[])
{
return NSApplicationMain(argc, argv);
}
#import <EZAudioOSX/EZAudio.h>
+21
View File
@@ -30,6 +30,20 @@
@class EZAudioPlayer;
//------------------------------------------------------------------------------
#pragma mark - Data Structures
//------------------------------------------------------------------------------
typedef NS_ENUM(NSUInteger, EZAudioPlayerState)
{
EZAudioPlayerStateEndOfFile,
EZAudioPlayerStatePaused,
EZAudioPlayerStatePlaying,
EZAudioPlayerStateReadyToPlay,
EZAudioPlayerStateSeeking,
EZAudioPlayerStateUnknown,
};
//------------------------------------------------------------------------------
#pragma mark - Notifications
//------------------------------------------------------------------------------
@@ -151,6 +165,13 @@ reachedEndOfAudioFile:(EZAudioFile *)audioFile;
*/
@property (nonatomic, assign) BOOL shouldLoop;
//------------------------------------------------------------------------------
/**
An EZAudioPlayerState value representing the current internal playback and file state of the EZAudioPlayer instance.
*/
@property (nonatomic, assign, readonly) EZAudioPlayerState state;
//------------------------------------------------------------------------------
#pragma mark - Initializers
//------------------------------------------------------------------------------
+14
View File
@@ -38,6 +38,14 @@ NSString * const EZAudioPlayerDidChangeVolumeNotification = @"EZAudioPlayerDidCh
NSString * const EZAudioPlayerDidReachEndOfFileNotification = @"EZAudioPlayerDidReachEndOfFileNotification";
NSString * const EZAudioPlayerDidSeekNotification = @"EZAudioPlayerDidSeekNotification";
//------------------------------------------------------------------------------
#pragma mark - EZAudioPlayer (Interface Extension)
//------------------------------------------------------------------------------
@interface EZAudioPlayer ()
@property (nonatomic, assign, readwrite) EZAudioPlayerState state;
@end
//------------------------------------------------------------------------------
#pragma mark - EZAudioPlayer (Implementation)
//------------------------------------------------------------------------------
@@ -179,6 +187,7 @@ NSString * const EZAudioPlayerDidSeekNotification = @"EZAudioPlayerDidSeekNotifi
- (void)setup
{
self.output = [EZOutput output];
self.state = EZAudioPlayerStateReadyToPlay;
}
//------------------------------------------------------------------------------
@@ -317,6 +326,7 @@ NSString * const EZAudioPlayerDidSeekNotification = @"EZAudioPlayerDidSeekNotifi
- (void)play
{
[self.output startPlayback];
self.state = EZAudioPlayerStatePlaying;
}
//------------------------------------------------------------------------------
@@ -344,13 +354,16 @@ NSString * const EZAudioPlayerDidSeekNotification = @"EZAudioPlayerDidSeekNotifi
- (void)pause
{
[self.output stopPlayback];
self.state = EZAudioPlayerStatePaused;
}
//------------------------------------------------------------------------------
- (void)seekToFrame:(SInt64)frame
{
self.state = EZAudioPlayerStateSeeking;
[self.audioFile seekToFrame:frame];
self.state = self.isPlaying ? EZAudioPlayerStatePlaying : EZAudioPlayerStatePaused;
[[NSNotificationCenter defaultCenter] postNotificationName:EZAudioPlayerDidSeekNotification
object:self];
}
@@ -384,6 +397,7 @@ NSString * const EZAudioPlayerDidSeekNotification = @"EZAudioPlayerDidSeekNotifi
{
[self pause];
[self seekToFrame:0];
self.state = EZAudioPlayerStateEndOfFile;
[[NSNotificationCenter defaultCenter] postNotificationName:EZAudioPlayerDidReachEndOfFileNotification
object:self];
}
+8
View File
@@ -25,6 +25,7 @@
#import <QuartzCore/QuartzCore.h>
#import "EZPlot.h"
#import "EZAudioDisplayLink.h"
@class EZAudio;
@@ -196,4 +197,11 @@ FOUNDATION_EXPORT UInt32 const EZAudioPlotDefaultMaxHistoryBufferLength;
//------------------------------------------------------------------------------
@end
@interface EZAudioPlot () <EZAudioDisplayLinkDelegate>
@property (nonatomic, strong) EZAudioDisplayLink *displayLink;
@property (nonatomic, assign) EZPlotHistoryInfo *historyInfo;
@property (nonatomic, assign) CGPoint *points;
@property (nonatomic, assign) UInt32 pointCount;
@end
+3 -15
View File
@@ -24,7 +24,6 @@
// THE SOFTWARE.
#import "EZAudioPlot.h"
#import "EZAudioDisplayLink.h"
//------------------------------------------------------------------------------
#pragma mark - Constants
@@ -35,17 +34,6 @@ UInt32 const kEZAudioPlotDefaultHistoryBufferLength = 512;
UInt32 const EZAudioPlotDefaultHistoryBufferLength = 512;
UInt32 const EZAudioPlotDefaultMaxHistoryBufferLength = 8192;
//------------------------------------------------------------------------------
#pragma mark - EZAudioPlot (Interface Extension)
//------------------------------------------------------------------------------
@interface EZAudioPlot () <EZAudioDisplayLinkDelegate>
@property (nonatomic, strong) EZAudioDisplayLink *displayLink;
@property (nonatomic, assign) EZPlotHistoryInfo *historyInfo;
@property (nonatomic, assign) CGPoint *points;
@property (nonatomic, assign) UInt32 pointCount;
@end
//------------------------------------------------------------------------------
#pragma mark - EZAudioPlot (Implementation)
//------------------------------------------------------------------------------
@@ -328,9 +316,9 @@ UInt32 const EZAudioPlotDefaultMaxHistoryBufferLength = 8192;
- (void)updateBuffer:(float *)buffer withBufferSize:(UInt32)bufferSize
{
// append the buffer to the history
[EZAudioUtilities appendBuffer:buffer
withBufferSize:bufferSize
toHistoryInfo:self.historyInfo];
[EZAudioUtilities appendBufferRMS:buffer
withBufferSize:bufferSize
toHistoryInfo:self.historyInfo];
// copy samples
switch (self.plotType)
+3 -3
View File
@@ -273,9 +273,9 @@ typedef struct
//
// Update history
//
[EZAudioUtilities appendBuffer:buffer
withBufferSize:bufferSize
toHistoryInfo:self.info->historyInfo];
[EZAudioUtilities appendBufferRMS:buffer
withBufferSize:bufferSize
toHistoryInfo:self.info->historyInfo];
//
// Convert this data to point data
+23 -4
View File
@@ -236,7 +236,7 @@ typedef NSRect EZRect;
@param sampleRate A float representing the sample rate.
@return A new AudioStreamBasicDescription with the specified format.
*/
+ (AudioStreamBasicDescription)stereoFloatNonInterleavedFormatWithSampleRate:(float)sameRate;
+ (AudioStreamBasicDescription)stereoFloatNonInterleavedFormatWithSampleRate:(float)sampleRate;
//------------------------------------------------------------------------------
// @name AudioStreamBasicDescription Helper Functions
@@ -380,6 +380,13 @@ typedef NSRect EZRect;
*/
+ (float)SGN:(float)value;
//------------------------------------------------------------------------------
#pragma mark - Music Utilities
//------------------------------------------------------------------------------
+ (NSString *)noteNameStringForFrequency:(float)frequency
includeOctave:(BOOL)includeOctave;
//------------------------------------------------------------------------------
#pragma mark - OSStatus Utility
//------------------------------------------------------------------------------
@@ -470,8 +477,8 @@ typedef NSRect EZRect;
/**
Initializes the circular buffer (just a wrapper around the C method)
* @param circularBuffer Pointer to an instance of the TPCircularBuffer
* @param size The length of the TPCircularBuffer (usually 1024)
@param circularBuffer Pointer to an instance of the TPCircularBuffer
@param size The length of the TPCircularBuffer (usually 1024)
*/
+ (void)circularBuffer:(TPCircularBuffer*)circularBuffer
withSize:(int)size;
@@ -494,6 +501,18 @@ typedef NSRect EZRect;
@param bufferSize A UInt32 representing the length of the incoming audio buffer
@param historyInfo A pointer to a EZPlotHistoryInfo structure to use for managing the history buffers
*/
+ (void)appendBufferRMS:(float *)buffer
withBufferSize:(UInt32)bufferSize
toHistoryInfo:(EZPlotHistoryInfo *)historyInfo;
//------------------------------------------------------------------------------
/**
Appends a buffer of audio data to the tail of a EZPlotHistoryInfo data structure. Thread-safe.
@param buffer A float array containing the incoming audio buffer to append to the history buffer
@param bufferSize A UInt32 representing the length of the incoming audio buffer
@param historyInfo A pointer to a EZPlotHistoryInfo structure to use for managing the history buffers
*/
+ (void)appendBuffer:(float *)buffer
withBufferSize:(UInt32)bufferSize
toHistoryInfo:(EZPlotHistoryInfo *)historyInfo;
@@ -527,4 +546,4 @@ typedef NSRect EZRect;
//------------------------------------------------------------------------------
@end
@end
+98 -21
View File
@@ -25,6 +25,22 @@
#import "EZAudioUtilities.h"
static float const EZAudioUtilitiesFixedNoteA = 440.0f;
static int const EZAudioUtilitiesFixedNoteAIndex = 9;
static int const EZAudioUtilitiesFixedNoteAOctave = 4;
static float const EZAudioUtilitiesEQFrequencyRatio = 1.059463094359f;
static int const EZAudioUtilitiesNotesLength = 12;
static NSString * const EZAudioUtilitiesNotes[EZAudioUtilitiesNotesLength] =
{
@"C", @"C#",
@"D", @"D#",
@"E",
@"F", @"F#",
@"G", @"G#",
@"A", @"A#",
@"B"
};
BOOL __shouldExitOnCheckResultFail = YES;
@implementation EZAudioUtilities
@@ -53,15 +69,29 @@ BOOL __shouldExitOnCheckResultFail = YES;
numberOfChannels:(UInt32)channels
interleaved:(BOOL)interleaved
{
AudioBufferList *audioBufferList = (AudioBufferList*)malloc(sizeof(AudioBufferList) + sizeof(AudioBuffer) * (channels-1));
UInt32 outputBufferSize = 32 * frames; // 32 KB
audioBufferList->mNumberBuffers = interleaved ? 1 : channels;
for(int i = 0; i < audioBufferList->mNumberBuffers; i++)
unsigned nBuffers;
unsigned bufferSize;
unsigned channelsPerBuffer;
if (interleaved)
{
audioBufferList->mBuffers[i].mNumberChannels = channels;
audioBufferList->mBuffers[i].mDataByteSize = channels * outputBufferSize;
audioBufferList->mBuffers[i].mData = (float *)malloc(channels * sizeof(float) *outputBufferSize);
memset(audioBufferList->mBuffers[i].mData, 0, frames);
nBuffers = 1;
bufferSize = sizeof(float) * frames * channels;
channelsPerBuffer = channels;
}
else
{
nBuffers = channels;
bufferSize = sizeof(float) * frames;
channelsPerBuffer = 1;
}
AudioBufferList *audioBufferList = (AudioBufferList *)malloc(sizeof(AudioBufferList) + sizeof(AudioBuffer) * (channels-1));
audioBufferList->mNumberBuffers = nBuffers;
for(unsigned i = 0; i < nBuffers; i++)
{
audioBufferList->mBuffers[i].mNumberChannels = channelsPerBuffer;
audioBufferList->mBuffers[i].mDataByteSize = bufferSize;
audioBufferList->mBuffers[i].mData = calloc(bufferSize, 1);
}
return audioBufferList;
}
@@ -106,6 +136,11 @@ BOOL __shouldExitOnCheckResultFail = YES;
+ (void)freeFloatBuffers:(float **)buffers numberOfChannels:(UInt32)channels
{
if (!buffers || !*buffers)
{
return;
}
for (int i = 0; i < channels; i++)
{
free(buffers[i]);
@@ -424,11 +459,11 @@ BOOL __shouldExitOnCheckResultFail = YES;
//------------------------------------------------------------------------------
+(float)MAP:(float)value
leftMin:(float)leftMin
leftMax:(float)leftMax
rightMin:(float)rightMin
rightMax:(float)rightMax
+ (float)MAP:(float)value
leftMin:(float)leftMin
leftMax:(float)leftMax
rightMin:(float)rightMin
rightMax:(float)rightMax
{
float leftSpan = leftMax - leftMin;
float rightSpan = rightMax - rightMin;
@@ -438,8 +473,7 @@ BOOL __shouldExitOnCheckResultFail = YES;
//------------------------------------------------------------------------------
+(float)RMS:(float *)buffer
length:(int)bufferSize
+ (float)RMS:(float *)buffer length:(int)bufferSize
{
float sum = 0.0;
for(int i = 0; i < bufferSize; i++)
@@ -449,11 +483,42 @@ BOOL __shouldExitOnCheckResultFail = YES;
//------------------------------------------------------------------------------
+(float)SGN:(float)value
+ (float)SGN:(float)value
{
return value < 0 ? -1.0f : ( value > 0 ? 1.0f : 0.0f);
}
//------------------------------------------------------------------------------
#pragma mark - Music Utilities
//------------------------------------------------------------------------------
+ (NSString *)noteNameStringForFrequency:(float)frequency
includeOctave:(BOOL)includeOctave
{
NSMutableString *noteName = [NSMutableString string];
int halfStepsFromFixedNote = roundf(log(frequency / EZAudioUtilitiesFixedNoteA) / log(EZAudioUtilitiesEQFrequencyRatio));
int halfStepsModOctaves = halfStepsFromFixedNote % EZAudioUtilitiesNotesLength;
int indexOfNote = EZAudioUtilitiesFixedNoteAIndex + halfStepsModOctaves;
float octaves = halfStepsFromFixedNote / EZAudioUtilitiesNotesLength;
if (indexOfNote >= EZAudioUtilitiesNotesLength)
{
indexOfNote -= EZAudioUtilitiesNotesLength;
octaves += 1;
}
else if (indexOfNote < 0)
{
indexOfNote += EZAudioUtilitiesNotesLength;
octaves = -1;
}
[noteName appendString:EZAudioUtilitiesNotes[indexOfNote]];
if (includeOctave)
{
int noteOctave = EZAudioUtilitiesFixedNoteAOctave + octaves;
[noteName appendFormat:@"%i", noteOctave];
}
return noteName;
}
//------------------------------------------------------------------------------
#pragma mark - OSStatus Utility
//------------------------------------------------------------------------------
@@ -590,6 +655,21 @@ BOOL __shouldExitOnCheckResultFail = YES;
#pragma mark - EZPlotHistoryInfo Utility
//------------------------------------------------------------------------------
+ (void)appendBufferRMS:(float *)buffer
withBufferSize:(UInt32)bufferSize
toHistoryInfo:(EZPlotHistoryInfo *)historyInfo
{
//
// Calculate RMS and append to buffer
//
float rms = [EZAudioUtilities RMS:buffer length:bufferSize];
float src[1];
src[0] = isnan(rms) ? 0.0 : rms;
[self appendBuffer:src withBufferSize:1 toHistoryInfo:historyInfo];
}
//------------------------------------------------------------------------------
+ (void)appendBuffer:(float *)buffer
withBufferSize:(UInt32)bufferSize
toHistoryInfo:(EZPlotHistoryInfo *)historyInfo
@@ -605,10 +685,7 @@ BOOL __shouldExitOnCheckResultFail = YES;
//
// Update the scroll history datasource
//
float rms = [EZAudioUtilities RMS:buffer length:bufferSize];
float src[1];
src[0] = isnan(rms) ? 0.0 : rms;
TPCircularBufferProduceBytes(&historyInfo->circularBuffer, src, sizeof(src));
TPCircularBufferProduceBytes(&historyInfo->circularBuffer, buffer, bufferSize * sizeof(float));
int32_t targetBytes = historyInfo->bufferSize * sizeof(float);
int32_t availableBytes = 0;
float *historyBuffer = TPCircularBufferTail(&historyInfo->circularBuffer, &availableBytes);
@@ -664,4 +741,4 @@ BOOL __shouldExitOnCheckResultFail = YES;
//------------------------------------------------------------------------------
@end
@end
+26
View File
@@ -0,0 +1,26 @@
//
// EZAudioiOS.m
// EZAudio
//
// Created by Tommaso Piazza on 30/09/15.
// Copyright © 2015 Andrew Breckenridge. All rights reserved.
//
// 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.
#import <EZAudioiOS/EZAudio.h>
+40 -12
View File
@@ -217,6 +217,9 @@ static OSStatus EZAudioMicrophoneCallback(void *inRefCon,
#elif TARGET_OS_MAC
inputComponentDescription.componentSubType = kAudioUnitSubType_HALOutput;
#endif
// The following must be set to zero unless a specific value is requested.
inputComponentDescription.componentFlags = 0;
inputComponentDescription.componentFlagsMask = 0;
// get the first matching component
AudioComponent inputComponent = AudioComponentFindNext( NULL , &inputComponentDescription);
@@ -430,7 +433,9 @@ static OSStatus EZAudioMicrophoneCallback(void *inRefCon,
numberOfChannels:self.info->streamFormat.mChannelsPerFrame];
}
// set new stream format
//
// Set new stream format
//
self.info->streamFormat = asbd;
[EZAudioUtilities checkResult:AudioUnitSetProperty(self.info->audioUnit,
kAudioUnitProperty_StreamFormat,
@@ -447,7 +452,9 @@ static OSStatus EZAudioMicrophoneCallback(void *inRefCon,
sizeof(asbd))
operation:"Failed to set stream format on output scope"];
// allocate float buffers
//
// Allocate scratch buffers
//
UInt32 maximumBufferSize = [self maximumBufferSize];
BOOL isInterleaved = [EZAudioUtilities isInterleaved:asbd];
UInt32 channels = asbd.mChannelsPerFrame;
@@ -455,10 +462,11 @@ static OSStatus EZAudioMicrophoneCallback(void *inRefCon,
self.info->floatData = [EZAudioUtilities floatBuffersWithNumberOfFrames:maximumBufferSize
numberOfChannels:channels];
self.info->audioBufferList = [EZAudioUtilities audioBufferListWithNumberOfFrames:maximumBufferSize
numberOfChannels:channels
interleaved:isInterleaved];
// notify delegate
numberOfChannels:channels
interleaved:isInterleaved];
//
// Notify delegate
//
if ([self.delegate respondsToSelector:@selector(microphone:hasAudioStreamBasicDescription:)])
{
[self.delegate microphone:self hasAudioStreamBasicDescription:asbd];
@@ -528,10 +536,14 @@ static OSStatus EZAudioMicrophoneCallback(void *inRefCon,
operation:"Couldn't set default device on I/O unit"];
#endif
// store device
//
// Store device
//
_device = device;
// notify delegate
//
// Notify delegate
//
if ([self.delegate respondsToSelector:@selector(microphone:changedDevice:)])
{
[self.delegate microphone:self changedDevice:device];
@@ -603,7 +615,17 @@ static OSStatus EZAudioMicrophoneCallback(void *inRefCon,
EZMicrophone *microphone = (__bridge EZMicrophone *)inRefCon;
EZMicrophoneInfo *info = (EZMicrophoneInfo *)microphone.info;
// render audio into buffer
//
// Make sure the size of each buffer in the stored buffer array
// is properly set using the actual number of frames coming in!
//
for (int i = 0; i < info->audioBufferList->mNumberBuffers; i++) {
info->audioBufferList->mBuffers[i].mDataByteSize = inNumberFrames * info->streamFormat.mBytesPerFrame;
}
//
// Render audio into buffer
//
OSStatus result = AudioUnitRender(info->audioUnit,
ioActionFlags,
inTimeStamp,
@@ -611,7 +633,9 @@ static OSStatus EZAudioMicrophoneCallback(void *inRefCon,
inNumberFrames,
info->audioBufferList);
// notify delegate of new buffer list to process
//
// Notify delegate of new buffer list to process
//
if ([microphone.delegate respondsToSelector:@selector(microphone:hasBufferList:withBufferSize:withNumberOfChannels:)])
{
[microphone.delegate microphone:microphone
@@ -620,10 +644,14 @@ static OSStatus EZAudioMicrophoneCallback(void *inRefCon,
withNumberOfChannels:info->streamFormat.mChannelsPerFrame];
}
// notify delegate of new float data processed
//
// Notify delegate of new float data processed
//
if ([microphone.delegate respondsToSelector:@selector(microphone:hasAudioReceived:withBufferSize:withNumberOfChannels:)])
{
// convert to float
//
// Convert to float
//
[microphone.floatConverter convertDataFromAudioBufferList:info->audioBufferList
withNumberOfFrames:inNumberFrames
toFloatBuffers:info->floatData];
+4 -4
View File
@@ -314,11 +314,11 @@ typedef struct
//
// Perform the write
//
//
[EZAudioUtilities checkResult:ExtAudioFileWrite(self.info->extAudioFileRef,
bufferSize,
bufferList)
operation:"Failed to write audio data to recorded audio file"];
bufferSize,
bufferList)
operation:"Failed to write audio data to recorded audio file"];
//
// Notify delegate
@@ -5,18 +5,22 @@
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>com.sha.${PRODUCT_NAME:rfc1034identifier}</string>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>NSPrincipalClass</key>
<string></string>
</dict>
</plist>
+26 -13
View File
@@ -30,21 +30,29 @@
#include "TPCircularBuffer.h"
#include <mach/mach.h>
#include <stdio.h>
#include <stdlib.h>
#define reportResult(result,operation) (_reportResult((result),(operation),strrchr(__FILE__, '/')+1,__LINE__))
static inline bool _reportResult(kern_return_t result, const char *operation, const char* file, int line) {
if (result != ERR_SUCCESS) {
if ( result != ERR_SUCCESS ) {
printf("%s:%d: %s: %s\n", file, line, operation, mach_error_string(result));
return false;
}
return true;
}
bool TPCircularBufferInit(TPCircularBuffer *buffer, int length) {
bool _TPCircularBufferInit(TPCircularBuffer *buffer, int32_t length, size_t structSize) {
assert(length > 0);
if ( structSize != sizeof(TPCircularBuffer) ) {
fprintf(stderr, "TPCircularBuffer: Header version mismatch. Check for old versions of TPCircularBuffer in your project\n");
abort();
}
// Keep trying until we get our buffer, needed to handle race conditions
int retries = 3;
while ( true) {
while ( true ) {
buffer->length = (int32_t)round_page(length); // We need whole page sizes
@@ -55,8 +63,8 @@ bool TPCircularBufferInit(TPCircularBuffer *buffer, int length) {
&bufferAddress,
buffer->length * 2,
VM_FLAGS_ANYWHERE); // allocate anywhere it'll fit
if (result != ERR_SUCCESS) {
if (retries-- == 0) {
if ( result != ERR_SUCCESS ) {
if ( retries-- == 0 ) {
reportResult(result, "Buffer allocation");
return false;
}
@@ -68,8 +76,8 @@ bool TPCircularBufferInit(TPCircularBuffer *buffer, int length) {
result = vm_deallocate(mach_task_self(),
bufferAddress + buffer->length,
buffer->length);
if (result != ERR_SUCCESS) {
if (retries-- == 0) {
if ( result != ERR_SUCCESS ) {
if ( retries-- == 0 ) {
reportResult(result, "Buffer deallocation");
return false;
}
@@ -92,8 +100,8 @@ bool TPCircularBufferInit(TPCircularBuffer *buffer, int length) {
&cur_prot, // unused protection struct
&max_prot, // unused protection struct
VM_INHERIT_DEFAULT);
if (result != ERR_SUCCESS) {
if (retries-- == 0) {
if ( result != ERR_SUCCESS ) {
if ( retries-- == 0 ) {
reportResult(result, "Remap buffer memory");
return false;
}
@@ -102,9 +110,9 @@ bool TPCircularBufferInit(TPCircularBuffer *buffer, int length) {
continue;
}
if (virtualAddress != bufferAddress+buffer->length) {
if ( virtualAddress != bufferAddress+buffer->length ) {
// If the memory is not contiguous, clean up both allocated buffers and try again
if (retries-- == 0) {
if ( retries-- == 0 ) {
printf("Couldn't map buffer memory to end of buffer\n");
return false;
}
@@ -117,6 +125,7 @@ bool TPCircularBufferInit(TPCircularBuffer *buffer, int length) {
buffer->buffer = (void*)bufferAddress;
buffer->fillCount = 0;
buffer->head = buffer->tail = 0;
buffer->atomic = true;
return true;
}
@@ -130,7 +139,11 @@ void TPCircularBufferCleanup(TPCircularBuffer *buffer) {
void TPCircularBufferClear(TPCircularBuffer *buffer) {
int32_t fillCount;
if (TPCircularBufferTail(buffer, &fillCount)) {
if ( TPCircularBufferTail(buffer, &fillCount) ) {
TPCircularBufferConsume(buffer, fillCount);
}
}
void TPCircularBufferSetAtomic(TPCircularBuffer *buffer, bool atomic) {
buffer->atomic = atomic;
}
+55 -26
View File
@@ -56,6 +56,7 @@ typedef struct {
int32_t tail;
int32_t head;
volatile int32_t fillCount;
bool atomic;
} TPCircularBuffer;
/*!
@@ -68,7 +69,9 @@ typedef struct {
* @param buffer Circular buffer
* @param length Length of buffer
*/
bool TPCircularBufferInit(TPCircularBuffer *buffer, int32_t length);
#define TPCircularBufferInit(buffer, length) \
_TPCircularBufferInit(buffer, length, sizeof(*buffer))
bool _TPCircularBufferInit(TPCircularBuffer *buffer, int32_t length, size_t structSize);
/*!
* Cleanup buffer
@@ -86,6 +89,22 @@ void TPCircularBufferCleanup(TPCircularBuffer *buffer);
* buffer.
*/
void TPCircularBufferClear(TPCircularBuffer *buffer);
/*!
* Set the atomicity
*
* If you set the atomiticy to false using this method, the buffer will
* not use atomic operations. This can be used to give the compiler a little
* more optimisation opportunities when the buffer is only used on one thread.
*
* Important note: Only set this to false if you know what you're doing!
*
* The default value is true (the buffer will use atomic operations)
*
* @param buffer Circular buffer
* @param atomic Whether the buffer is atomic (default true)
*/
void TPCircularBufferSetAtomic(TPCircularBuffer *buffer, bool atomic);
// Reading (consuming)
@@ -101,7 +120,7 @@ void TPCircularBufferClear(TPCircularBuffer *buffer);
*/
static __inline__ __attribute__((always_inline)) void* TPCircularBufferTail(TPCircularBuffer *buffer, int32_t* availableBytes) {
*availableBytes = buffer->fillCount;
if (*availableBytes == 0) return NULL;
if ( *availableBytes == 0 ) return NULL;
return (void*)((char*)buffer->buffer + buffer->tail);
}
@@ -115,16 +134,11 @@ static __inline__ __attribute__((always_inline)) void* TPCircularBufferTail(TPCi
*/
static __inline__ __attribute__((always_inline)) void TPCircularBufferConsume(TPCircularBuffer *buffer, int32_t amount) {
buffer->tail = (buffer->tail + amount) % buffer->length;
OSAtomicAdd32Barrier(-amount, &buffer->fillCount);
assert(buffer->fillCount >= 0);
}
/*!
* Version of TPCircularBufferConsume without the memory barrier, for more optimal use in single-threaded contexts
*/
static __inline__ __attribute__((always_inline)) void TPCircularBufferConsumeNoBarrier(TPCircularBuffer *buffer, int32_t amount) {
buffer->tail = (buffer->tail + amount) % buffer->length;
buffer->fillCount -= amount;
if ( buffer->atomic ) {
OSAtomicAdd32Barrier(-amount, &buffer->fillCount);
} else {
buffer->fillCount -= amount;
}
assert(buffer->fillCount >= 0);
}
@@ -140,7 +154,7 @@ static __inline__ __attribute__((always_inline)) void TPCircularBufferConsumeNoB
*/
static __inline__ __attribute__((always_inline)) void* TPCircularBufferHead(TPCircularBuffer *buffer, int32_t* availableBytes) {
*availableBytes = (buffer->length - buffer->fillCount);
if (*availableBytes == 0) return NULL;
if ( *availableBytes == 0 ) return NULL;
return (void*)((char*)buffer->buffer + buffer->head);
}
@@ -154,25 +168,20 @@ static __inline__ __attribute__((always_inline)) void* TPCircularBufferHead(TPCi
* @param buffer Circular buffer
* @param amount Number of bytes to produce
*/
static __inline__ __attribute__((always_inline)) void TPCircularBufferProduce(TPCircularBuffer *buffer, int amount) {
static __inline__ __attribute__((always_inline)) void TPCircularBufferProduce(TPCircularBuffer *buffer, int32_t amount) {
buffer->head = (buffer->head + amount) % buffer->length;
OSAtomicAdd32Barrier(amount, &buffer->fillCount);
assert(buffer->fillCount <= buffer->length);
}
/*!
* Version of TPCircularBufferProduce without the memory barrier, for more optimal use in single-threaded contexts
*/
static __inline__ __attribute__((always_inline)) void TPCircularBufferProduceNoBarrier(TPCircularBuffer *buffer, int amount) {
buffer->head = (buffer->head + amount) % buffer->length;
buffer->fillCount += amount;
if ( buffer->atomic ) {
OSAtomicAdd32Barrier(amount, &buffer->fillCount);
} else {
buffer->fillCount += amount;
}
assert(buffer->fillCount <= buffer->length);
}
/*!
* Helper routine to copy bytes to buffer
*
* This copies the given bytes to the buffer, and marks them ready for writing.
* This copies the given bytes to the buffer, and marks them ready for reading.
*
* @param buffer Circular buffer
* @param src Source buffer
@@ -182,12 +191,32 @@ static __inline__ __attribute__((always_inline)) void TPCircularBufferProduceNoB
static __inline__ __attribute__((always_inline)) bool TPCircularBufferProduceBytes(TPCircularBuffer *buffer, const void* src, int32_t len) {
int32_t space;
void *ptr = TPCircularBufferHead(buffer, &space);
if (space < len) return false;
if ( space < len ) return false;
memcpy(ptr, src, len);
TPCircularBufferProduce(buffer, len);
return true;
}
/*!
* Deprecated method
*/
static __inline__ __attribute__((always_inline)) __deprecated_msg("use TPCircularBufferSetAtomic(false) and TPCircularBufferConsume instead")
void TPCircularBufferConsumeNoBarrier(TPCircularBuffer *buffer, int32_t amount) {
buffer->tail = (buffer->tail + amount) % buffer->length;
buffer->fillCount -= amount;
assert(buffer->fillCount >= 0);
}
/*!
* Deprecated method
*/
static __inline__ __attribute__((always_inline)) __deprecated_msg("use TPCircularBufferSetAtomic(false) and TPCircularBufferProduce instead")
void TPCircularBufferProduceNoBarrier(TPCircularBuffer *buffer, int32_t amount) {
buffer->head = (buffer->head + amount) % buffer->length;
buffer->fillCount += amount;
assert(buffer->fillCount <= buffer->length);
}
#ifdef __cplusplus
}
#endif
-51
View File
@@ -1,51 +0,0 @@
EZAudio
Created by Syed Haris Ali
Copyright (c) 2013 Syed Haris Ali. All rights reserved.
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.
==========================================================================================
0.0.1
Initial release.
Components include: EZAudioFile, EZAudioPlot, EZAudioPlotGL, EZMicrophone, EZOutput, and EZRecorder.
Provided 6 example projects: CoreGraphicsWaveform, OpenGLWaveform, WaveformFromFile, PassThrough, Record, and PlayFile.
0.0.2
Fix for Cocoapod spec. Forgot to include files with .c extension.
0.0.3
Changing EZAudioPlot and EZAudioPlotGL to scroll for the EZPlotTypeRolling instead of wiping the screen clean when hitting the end
Allowed EZMicrophone EZOutput to have custom AudioStreamBasicDescription setters
Fixed bug in EZAudioFile's getWaveformData function where it was not exiting after sending back cached waveform data (rereading from the audio file)
Added stereo support for EZMicrophone, EZAudioFile, EZRecorder, and EZOutput
Added more memory cleanup for EZAudioFile
Added adjustable rolling length for EZAudioPlot and EZAudioPlotGL so those rolling graphs can now range from 128 to 8192 whereas before it was fixed at 1024
Added adjustable resolution for waveform data coming from the EZAudioFile so output from the getWaveformDataWithCompletionBlock: function can literally be of any size. Try 128 for a low resolution waveform or 8192 for a much higher resolution waveform.
Added quick fix for EZOutput to properly route stereo data coming from a circular buffer datasource. Next version (0.0.4) needs to add EZConverter to allow quick conversions between non-interleaved and interleaved formats.
0.0.4
Added closeAudioFile to EZRecorder to properly dispose of internal audio file prior to trying to reload it using the EZAudioFile.
Added new EZOutputDataSource method that provides pre-allocated AudioBufferList to fill instead of caller allocating and disposing on AudioBufferList. Much less errors.
Added EZAudioPlayer for playback and visualization of local audio files (no network streaming yet).
Merged bug fixes from community for EZAudio file.
0.0.5
Added multiple destination recording formats to the EZRecorder (EZRecorderFileType)
-26
View File
@@ -1,26 +0,0 @@
EZAudio
Created by Syed Haris Ali
Copyright (c) 2013 Syed Haris Ali. All rights reserved.
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.
==========================================================================================
0.0.5
@@ -0,0 +1,356 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
666062361C5421A400FB99FA /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 666062351C5421A400FB99FA /* AppDelegate.m */; };
666062391C5421A400FB99FA /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 666062381C5421A400FB99FA /* main.m */; };
6660623B1C5421A400FB99FA /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6660623A1C5421A400FB99FA /* Assets.xcassets */; };
6660623E1C5421A400FB99FA /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6660623C1C5421A400FB99FA /* MainMenu.xib */; };
6660624B1C54242100FB99FA /* EZAudioOSX.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6660624A1C54242100FB99FA /* EZAudioOSX.framework */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
66374DC41C54530A000B19D0 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 66374DBF1C54530A000B19D0 /* EZAudio.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 469F4CF31B749F7800666A46;
remoteInfo = EZAudioiOS;
};
66374DC61C54530A000B19D0 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 66374DBF1C54530A000B19D0 /* EZAudio.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 8A5A4B9C1BBBDCB200A8A048;
remoteInfo = EZAudioOSX;
};
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
66374DBF1C54530A000B19D0 /* EZAudio.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = EZAudio.xcodeproj; path = ../../../EZAudio.xcodeproj; sourceTree = "<group>"; };
666062311C5421A400FB99FA /* CoreGraphicsWaveform.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CoreGraphicsWaveform.app; sourceTree = BUILT_PRODUCTS_DIR; };
666062341C5421A400FB99FA /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
666062351C5421A400FB99FA /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
666062381C5421A400FB99FA /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
6660623A1C5421A400FB99FA /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
6660623D1C5421A400FB99FA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
6660623F1C5421A400FB99FA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
6660624A1C54242100FB99FA /* EZAudioOSX.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = EZAudioOSX.framework; path = ../../../build/Debug/EZAudioOSX.framework; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
6660622E1C5421A400FB99FA /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
6660624B1C54242100FB99FA /* EZAudioOSX.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
66374DC01C54530A000B19D0 /* Products */ = {
isa = PBXGroup;
children = (
66374DC51C54530A000B19D0 /* EZAudioiOS.framework */,
66374DC71C54530A000B19D0 /* EZAudioOSX.framework */,
);
name = Products;
sourceTree = "<group>";
};
666062281C5421A400FB99FA = {
isa = PBXGroup;
children = (
66374DBF1C54530A000B19D0 /* EZAudio.xcodeproj */,
666062331C5421A400FB99FA /* CoreGraphicsWaveform */,
6660624C1C54244900FB99FA /* Frameworks */,
666062321C5421A400FB99FA /* Products */,
);
sourceTree = "<group>";
};
666062321C5421A400FB99FA /* Products */ = {
isa = PBXGroup;
children = (
666062311C5421A400FB99FA /* CoreGraphicsWaveform.app */,
);
name = Products;
sourceTree = "<group>";
};
666062331C5421A400FB99FA /* CoreGraphicsWaveform */ = {
isa = PBXGroup;
children = (
666062341C5421A400FB99FA /* AppDelegate.h */,
666062351C5421A400FB99FA /* AppDelegate.m */,
6660623A1C5421A400FB99FA /* Assets.xcassets */,
6660623C1C5421A400FB99FA /* MainMenu.xib */,
6660623F1C5421A400FB99FA /* Info.plist */,
666062371C5421A400FB99FA /* Supporting Files */,
);
path = CoreGraphicsWaveform;
sourceTree = "<group>";
};
666062371C5421A400FB99FA /* Supporting Files */ = {
isa = PBXGroup;
children = (
666062381C5421A400FB99FA /* main.m */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
6660624C1C54244900FB99FA /* Frameworks */ = {
isa = PBXGroup;
children = (
6660624A1C54242100FB99FA /* EZAudioOSX.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
666062301C5421A400FB99FA /* CoreGraphicsWaveform */ = {
isa = PBXNativeTarget;
buildConfigurationList = 666062421C5421A400FB99FA /* Build configuration list for PBXNativeTarget "CoreGraphicsWaveform" */;
buildPhases = (
6660622D1C5421A400FB99FA /* Sources */,
6660622E1C5421A400FB99FA /* Frameworks */,
6660622F1C5421A400FB99FA /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = CoreGraphicsWaveform;
productName = CoreGraphicsWaveform;
productReference = 666062311C5421A400FB99FA /* CoreGraphicsWaveform.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
666062291C5421A400FB99FA /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0720;
ORGANIZATIONNAME = "Syed Haris Ali";
TargetAttributes = {
666062301C5421A400FB99FA = {
CreatedOnToolsVersion = 7.2;
};
};
};
buildConfigurationList = 6660622C1C5421A400FB99FA /* Build configuration list for PBXProject "CoreGraphicsWaveform" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = 666062281C5421A400FB99FA;
productRefGroup = 666062321C5421A400FB99FA /* Products */;
projectDirPath = "";
projectReferences = (
{
ProductGroup = 66374DC01C54530A000B19D0 /* Products */;
ProjectRef = 66374DBF1C54530A000B19D0 /* EZAudio.xcodeproj */;
},
);
projectRoot = "";
targets = (
666062301C5421A400FB99FA /* CoreGraphicsWaveform */,
);
};
/* End PBXProject section */
/* Begin PBXReferenceProxy section */
66374DC51C54530A000B19D0 /* EZAudioiOS.framework */ = {
isa = PBXReferenceProxy;
fileType = wrapper.framework;
path = EZAudioiOS.framework;
remoteRef = 66374DC41C54530A000B19D0 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
66374DC71C54530A000B19D0 /* EZAudioOSX.framework */ = {
isa = PBXReferenceProxy;
fileType = wrapper.framework;
path = EZAudioOSX.framework;
remoteRef = 66374DC61C54530A000B19D0 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
/* End PBXReferenceProxy section */
/* Begin PBXResourcesBuildPhase section */
6660622F1C5421A400FB99FA /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
6660623B1C5421A400FB99FA /* Assets.xcassets in Resources */,
6660623E1C5421A400FB99FA /* MainMenu.xib in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
6660622D1C5421A400FB99FA /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
666062391C5421A400FB99FA /* main.m in Sources */,
666062361C5421A400FB99FA /* AppDelegate.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXVariantGroup section */
6660623C1C5421A400FB99FA /* MainMenu.xib */ = {
isa = PBXVariantGroup;
children = (
6660623D1C5421A400FB99FA /* Base */,
);
name = MainMenu.xib;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
666062401C5421A400FB99FA /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "-";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.11;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = macosx;
};
name = Debug;
};
666062411C5421A400FB99FA /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "-";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.11;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = macosx;
};
name = Release;
};
666062431C5421A400FB99FA /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
COMBINE_HIDPI_IMAGES = YES;
HEADER_SEARCH_PATHS = "\"$(SRCROOT)/../../..\"";
INFOPLIST_FILE = CoreGraphicsWaveform/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.8;
PRODUCT_BUNDLE_IDENTIFIER = com.sha.CoreGraphicsWaveform;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
};
666062441C5421A400FB99FA /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
COMBINE_HIDPI_IMAGES = YES;
HEADER_SEARCH_PATHS = "\"$(SRCROOT)/../../..\"";
INFOPLIST_FILE = CoreGraphicsWaveform/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.8;
PRODUCT_BUNDLE_IDENTIFIER = com.sha.CoreGraphicsWaveform;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
6660622C1C5421A400FB99FA /* Build configuration list for PBXProject "CoreGraphicsWaveform" */ = {
isa = XCConfigurationList;
buildConfigurations = (
666062401C5421A400FB99FA /* Debug */,
666062411C5421A400FB99FA /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
666062421C5421A400FB99FA /* Build configuration list for PBXNativeTarget "CoreGraphicsWaveform" */ = {
isa = XCConfigurationList;
buildConfigurations = (
666062431C5421A400FB99FA /* Debug */,
666062441C5421A400FB99FA /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 666062291C5421A400FB99FA /* Project object */;
}
@@ -2,6 +2,6 @@
<Workspace
version = "1.0">
<FileRef
location = "self:EZAudioRecordExample.xcodeproj">
location = "self:">
</FileRef>
</Workspace>
@@ -1,8 +1,9 @@
//
// CoreGraphicsWaveformViewController.h
// EZAudioCoreGraphicsWaveformExample
// AppDelegate.h
// CoreGraphicsWaveform
//
// Created by Syed Haris Ali on 12/1/13.
// Updated by Syed Haris Ali on 1/23/16.
// Copyright (c) 2013 Syed Haris Ali. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -25,55 +26,70 @@
#import <Cocoa/Cocoa.h>
// Import EZAudio header
#import "EZAudio.h"
/**
We will allow this view controller to act as an EZMicrophoneDelegate. This is how we listen for the microphone callback.
*/
@interface CoreGraphicsWaveformViewController : NSViewController <EZMicrophoneDelegate>
//
// First import the EZAudio header
//
#include <EZAudio/EZAudio.h>
//------------------------------------------------------------------------------
#pragma mark - Components
#pragma mark - AppDelegate
//------------------------------------------------------------------------------
/**
The CoreGraphics based audio plot
*/
@interface AppDelegate : NSObject <EZMicrophoneDelegate, NSApplicationDelegate>
//------------------------------------------------------------------------------
#pragma mark - Properties
//------------------------------------------------------------------------------
@property (assign) IBOutlet NSWindow *window;
//------------------------------------------------------------------------------
#pragma mark - Properties
//------------------------------------------------------------------------------
//
// The CoreGraphics based audio plot
//
@property (nonatomic, weak) IBOutlet EZAudioPlot *audioPlot;
/**
The microphone component
*/
//
// The microphone
//
@property (nonatomic, strong) EZMicrophone *microphone;
/**
The microphone pop up button (contains the menu for choosing a microphone input)
*/
//
// The microphone pop up button (contains the menu for choosing a microphone
// input)
//
@property (nonatomic, weak) IBOutlet NSPopUpButton *microphoneInputPopUpButton;
/**
The microphone input channel pop up button (contains the menu for choosing a microphone input channel)
*/
//
// The microphone input channel pop up button (contains the menu for choosing a
// microphone input channel)
//
@property (nonatomic, weak) IBOutlet NSPopUpButton *microphoneInputChannelPopUpButton;
/**
The checkbox button used to turn the microphone off/on
*/
//
// The checkbox button used to turn the microphone off/on
//
@property (nonatomic, weak) IBOutlet NSButton *microphoneSwitch;
//------------------------------------------------------------------------------
#pragma mark - Actions
//------------------------------------------------------------------------------
/**
Switches the plot drawing type between a buffer plot (visualizes the current stream of audio data from the update function) or a rolling plot (visualizes the audio data over time, this is the classic waveform look)
*/
//
// Switches the plot drawing type between a buffer plot (visualizes the current
// stream of audio data from the update function) or a rolling plot (visualizes
// the audio data over time, this is the classic waveform look)
//
-(IBAction)changePlotType:(id)sender;
/**
Toggles the microphone on and off. When the microphone is on it will send its delegate (aka this view controller) the audio data in various ways (check out the EZMicrophoneDelegate documentation for more details);
*/
//
// Toggles the microphone on and off. When the microphone is on it will send its
// delegate (aka this view controller) the audio data in various ways (check out
// the EZMicrophoneDelegate documentation for more details)
//
-(IBAction)toggleMicrophone:(id)sender;
@end
@@ -1,8 +1,9 @@
//
// CoreGraphicsWaveformViewController.m
// EZAudioCoreGraphicsWaveformExample
// AppDelegate.m
// CoreGraphicsWaveform
//
// Created by Syed Haris Ali on 12/1/13.
// Updated by Syed Haris Ali on 1/23/16.
// Copyright (c) 2013 Syed Haris Ali. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -23,28 +24,31 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
#import "CoreGraphicsWaveformViewController.h"
#import "AppDelegate.h"
@implementation CoreGraphicsWaveformViewController
@implementation AppDelegate
//------------------------------------------------------------------------------
#pragma mark - Customize the Audio Plot
#pragma mark - Customize The Plot's Appearance
//------------------------------------------------------------------------------
- (void)awakeFromNib
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
//
// Customizing the audio plot's look
// Set plot's background color
//
// Background color
self.audioPlot.backgroundColor = [NSColor colorWithCalibratedRed: 0.984 green: 0.471 blue: 0.525 alpha: 1];
// Waveform color
//
// Set plot's waveform color
//
self.audioPlot.color = [NSColor colorWithCalibratedRed: 1.000 green: 1.000 blue: 1.000 alpha: 1];
// Plot type
//
// Plot type (buffer means real-time, rolling is over time)
//
self.audioPlot.plotType = EZPlotTypeBuffer;
//
// Create the microphone
//
@@ -183,16 +187,31 @@
#pragma mark - EZMicrophoneDelegate
#warning Thread Safety
// Note that any callback that provides streamed audio data (like streaming microphone input) happens on a separate audio thread that should not be blocked. When we feed audio data into any of the UI components we need to explicity create a GCD block on the main thread to properly get the UI to work.
//
// Note that any callback that provides streamed audio data (like streaming
// microphone input) happens on a separate audio thread that should not be
// blocked. When we feed audio data into any of the UI components we need to
// explicity create a GCD block on the main thread to properly get the UI to
// work.
//
- (void) microphone:(EZMicrophone *)microphone
hasAudioReceived:(float **)buffer
withBufferSize:(UInt32)bufferSize
withNumberOfChannels:(UInt32)numberOfChannels
{
// See the Thread Safety warning above, but in a nutshell these callbacks happen on a separate audio thread. We wrap any UI updating in a GCD block on the main thread to avoid blocking that audio flow.
//
// See the Thread Safety warning above, but in a nutshell these callbacks
// happen on a separate audio thread. We wrap any UI updating in a GCD block
// on the main thread to avoid blocking that audio flow.
//
__weak typeof(self) weakSelf = self;
dispatch_async(dispatch_get_main_queue(),^{
// All the audio plot needs is the buffer data (float*) and the size. Internally the audio plot will handle all the drawing related code, history management, and freeing its own resources. Hence, one badass line of code gets you a pretty plot :)
//
// All the audio plot needs is the buffer data (float *) and the size.
// Internally the audio plot will handle all the drawing related code,
// history management, and freeing its own resources. Hence, one badass
// line of code gets you a pretty plot :)
//
NSInteger channel = [weakSelf.microphoneInputChannelPopUpButton indexOfSelectedItem];
[weakSelf.audioPlot updateBuffer:buffer[channel] withBufferSize:bufferSize];
});
@@ -202,8 +221,13 @@
- (void)microphone:(EZMicrophone *)microphone hasAudioStreamBasicDescription:(AudioStreamBasicDescription)audioStreamBasicDescription
{
// The AudioStreamBasicDescription of the microphone stream. This is useful when configuring the EZRecorder or telling another component what audio format type to expect.
// Here's a print function to allow you to inspect it a little easier
// The AudioStreamBasicDescription of the microphone stream. This is useful
// when configuring the EZRecorder or telling another component what audio
// format type to expect.
//
// Here's a print function to allow you to inspect it a little easier.
//
[EZAudioUtilities printASBD:audioStreamBasicDescription];
}
@@ -214,7 +238,10 @@
withBufferSize:(UInt32)bufferSize
withNumberOfChannels:(UInt32)numberOfChannels
{
// Getting audio data as a buffer list that can be directly fed into the EZRecorder or EZOutput. Say whattt...
//
// Getting audio data as a buffer list that can be directly fed into
// the EZRecorder or EZOutput. Say whattt...
//
}
//------------------------------------------------------------------------------
@@ -261,4 +288,4 @@ withNumberOfChannels:(UInt32)numberOfChannels
//------------------------------------------------------------------------------
@end
@end
@@ -1,53 +1,63 @@
{
"images" : [
{
"idiom" : "mac",
"size" : "16x16",
"idiom" : "mac",
"filename" : "icon_16x16.png",
"scale" : "1x"
},
{
"idiom" : "mac",
"size" : "16x16",
"idiom" : "mac",
"filename" : "icon_16x16@2x.png",
"scale" : "2x"
},
{
"idiom" : "mac",
"size" : "32x32",
"idiom" : "mac",
"filename" : "icon_32x32.png",
"scale" : "1x"
},
{
"idiom" : "mac",
"size" : "32x32",
"idiom" : "mac",
"filename" : "icon_32x32@2x.png",
"scale" : "2x"
},
{
"idiom" : "mac",
"size" : "128x128",
"idiom" : "mac",
"filename" : "icon_128x128.png",
"scale" : "1x"
},
{
"idiom" : "mac",
"size" : "128x128",
"idiom" : "mac",
"filename" : "icon_128x128@2x.png",
"scale" : "2x"
},
{
"idiom" : "mac",
"size" : "256x256",
"idiom" : "mac",
"filename" : "icon_256x256.png",
"scale" : "1x"
},
{
"idiom" : "mac",
"size" : "256x256",
"idiom" : "mac",
"filename" : "icon_256x256@2x.png",
"scale" : "2x"
},
{
"idiom" : "mac",
"size" : "512x512",
"idiom" : "mac",
"filename" : "icon_512x512.png",
"scale" : "1x"
},
{
"idiom" : "mac",
"size" : "512x512",
"idiom" : "mac",
"filename" : "icon_512x512@2x.png",
"scale" : "2x"
}
],
@@ -0,0 +1,6 @@
{
"info" : {
"version" : 1,
"author" : "xcode"
}
}
@@ -5,15 +5,15 @@
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIconFile</key>
<string></string>
<key>CFBundleIdentifier</key>
<string>com.sha.${PRODUCT_NAME:rfc1034identifier}</string>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
@@ -23,9 +23,9 @@
<key>CFBundleVersion</key>
<string>1</string>
<key>LSMinimumSystemVersion</key>
<string>${MACOSX_DEPLOYMENT_TARGET}</string>
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
<key>NSHumanReadableCopyright</key>
<string>Copyright © 2013 Syed Haris Ali. All rights reserved.</string>
<string>Copyright © 2016 Syed Haris Ali. All rights reserved.</string>
<key>NSMainNibFile</key>
<string>MainMenu</string>
<key>NSPrincipalClass</key>
@@ -0,0 +1,13 @@
//
// main.m
// CoreGraphicsWaveform
//
// Created by Syed Haris Ali on 1/23/16.
// Copyright © 2016 Syed Haris Ali. All rights reserved.
//
#import <Cocoa/Cocoa.h>
int main(int argc, const char * argv[]) {
return NSApplicationMain(argc, argv);
}
@@ -1,684 +0,0 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXAggregateTarget section */
94F8DF4A18C84203005C4CBD /* Generate Documentation */ = {
isa = PBXAggregateTarget;
buildConfigurationList = 94F8DF4D18C84204005C4CBD /* Build configuration list for PBXAggregateTarget "Generate Documentation" */;
buildPhases = (
94F8DF4E18C8420C005C4CBD /* ShellScript */,
);
dependencies = (
);
name = "Generate Documentation";
productName = "Generate Documentation";
};
/* End PBXAggregateTarget section */
/* Begin PBXBuildFile section */
66755A311B3B790D0013E67E /* EZAudio.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A0E1B3B790D0013E67E /* EZAudio.m */; };
66755A321B3B790D0013E67E /* EZAudioDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A101B3B790D0013E67E /* EZAudioDevice.m */; };
66755A331B3B790D0013E67E /* EZAudioDisplayLink.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A121B3B790D0013E67E /* EZAudioDisplayLink.m */; };
66755A341B3B790D0013E67E /* EZAudioFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A141B3B790D0013E67E /* EZAudioFile.m */; };
66755A351B3B790D0013E67E /* EZAudioFloatConverter.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A161B3B790D0013E67E /* EZAudioFloatConverter.m */; };
66755A361B3B790D0013E67E /* EZAudioFloatData.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A181B3B790D0013E67E /* EZAudioFloatData.m */; };
66755A371B3B790D0013E67E /* EZAudioPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A1A1B3B790D0013E67E /* EZAudioPlayer.m */; };
66755A381B3B790D0013E67E /* EZAudioPlot.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A1C1B3B790D0013E67E /* EZAudioPlot.m */; };
66755A391B3B790D0013E67E /* EZAudioPlotGL.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A1E1B3B790D0013E67E /* EZAudioPlotGL.m */; };
66755A3B1B3B790D0013E67E /* EZAudioUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A221B3B790D0013E67E /* EZAudioUtilities.m */; };
66755A3C1B3B790D0013E67E /* EZMicrophone.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A241B3B790D0013E67E /* EZMicrophone.m */; };
66755A3D1B3B790D0013E67E /* EZOutput.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A261B3B790D0013E67E /* EZOutput.m */; };
66755A3E1B3B790D0013E67E /* EZPlot.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A281B3B790D0013E67E /* EZPlot.m */; };
66755A3F1B3B790D0013E67E /* EZRecorder.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A2A1B3B790D0013E67E /* EZRecorder.m */; };
66755A401B3B790D0013E67E /* TPCircularBuffer.c in Sources */ = {isa = PBXBuildFile; fileRef = 66755A2B1B3B790D0013E67E /* TPCircularBuffer.c */; };
66755A411B3B790D0013E67E /* CHANGELOG in Resources */ = {isa = PBXBuildFile; fileRef = 66755A2E1B3B790D0013E67E /* CHANGELOG */; };
66755A421B3B790D0013E67E /* VERSION in Resources */ = {isa = PBXBuildFile; fileRef = 66755A2F1B3B790D0013E67E /* VERSION */; };
94056D88185B97E300EB94BA /* CoreGraphicsWaveformViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 94056D86185B97E300EB94BA /* CoreGraphicsWaveformViewController.m */; };
94056D89185B97E300EB94BA /* CoreGraphicsWaveformViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 94056D87185B97E300EB94BA /* CoreGraphicsWaveformViewController.xib */; };
94373025185B931C00F315F0 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94373024185B931C00F315F0 /* Cocoa.framework */; };
9437302F185B931C00F315F0 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 9437302D185B931C00F315F0 /* InfoPlist.strings */; };
94373031185B931C00F315F0 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 94373030185B931C00F315F0 /* main.m */; };
94373035185B931C00F315F0 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 94373033185B931C00F315F0 /* Credits.rtf */; };
94373038185B931C00F315F0 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 94373037185B931C00F315F0 /* AppDelegate.m */; };
9437303B185B931C00F315F0 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 94373039185B931C00F315F0 /* MainMenu.xib */; };
9437303D185B931C00F315F0 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9437303C185B931C00F315F0 /* Images.xcassets */; };
94373044185B931C00F315F0 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94373043185B931C00F315F0 /* XCTest.framework */; };
94373045185B931C00F315F0 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94373024185B931C00F315F0 /* Cocoa.framework */; };
9437304D185B931C00F315F0 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 9437304B185B931C00F315F0 /* InfoPlist.strings */; };
9437304F185B931C00F315F0 /* EZAudioCoreGraphicsWaveformExampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 9437304E185B931C00F315F0 /* EZAudioCoreGraphicsWaveformExampleTests.m */; };
94373080185B934900F315F0 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9437307D185B934900F315F0 /* AudioToolbox.framework */; };
94373081185B934900F315F0 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9437307E185B934900F315F0 /* AudioUnit.framework */; };
94373082185B934900F315F0 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9437307F185B934900F315F0 /* CoreAudio.framework */; };
94373084185B936B00F315F0 /* GLKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94373083185B936B00F315F0 /* GLKit.framework */; };
94373086185B937100F315F0 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94373085185B937100F315F0 /* OpenGL.framework */; };
94373088185B937E00F315F0 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94373087185B937E00F315F0 /* QuartzCore.framework */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
94373046185B931C00F315F0 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 94373019185B931C00F315F0 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 94373020185B931C00F315F0;
remoteInfo = EZAudioCoreGraphicsWaveformExample;
};
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
66755A0D1B3B790D0013E67E /* EZAudio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudio.h; sourceTree = "<group>"; };
66755A0E1B3B790D0013E67E /* EZAudio.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudio.m; sourceTree = "<group>"; };
66755A0F1B3B790D0013E67E /* EZAudioDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioDevice.h; sourceTree = "<group>"; };
66755A101B3B790D0013E67E /* EZAudioDevice.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioDevice.m; sourceTree = "<group>"; };
66755A111B3B790D0013E67E /* EZAudioDisplayLink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioDisplayLink.h; sourceTree = "<group>"; };
66755A121B3B790D0013E67E /* EZAudioDisplayLink.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioDisplayLink.m; sourceTree = "<group>"; };
66755A131B3B790D0013E67E /* EZAudioFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioFile.h; sourceTree = "<group>"; };
66755A141B3B790D0013E67E /* EZAudioFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioFile.m; sourceTree = "<group>"; };
66755A151B3B790D0013E67E /* EZAudioFloatConverter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioFloatConverter.h; sourceTree = "<group>"; };
66755A161B3B790D0013E67E /* EZAudioFloatConverter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioFloatConverter.m; sourceTree = "<group>"; };
66755A171B3B790D0013E67E /* EZAudioFloatData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioFloatData.h; sourceTree = "<group>"; };
66755A181B3B790D0013E67E /* EZAudioFloatData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioFloatData.m; sourceTree = "<group>"; };
66755A191B3B790D0013E67E /* EZAudioPlayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioPlayer.h; sourceTree = "<group>"; };
66755A1A1B3B790D0013E67E /* EZAudioPlayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioPlayer.m; sourceTree = "<group>"; };
66755A1B1B3B790D0013E67E /* EZAudioPlot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioPlot.h; sourceTree = "<group>"; };
66755A1C1B3B790D0013E67E /* EZAudioPlot.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioPlot.m; sourceTree = "<group>"; };
66755A1D1B3B790D0013E67E /* EZAudioPlotGL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioPlotGL.h; sourceTree = "<group>"; };
66755A1E1B3B790D0013E67E /* EZAudioPlotGL.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioPlotGL.m; sourceTree = "<group>"; };
66755A211B3B790D0013E67E /* EZAudioUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioUtilities.h; sourceTree = "<group>"; };
66755A221B3B790D0013E67E /* EZAudioUtilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioUtilities.m; sourceTree = "<group>"; };
66755A231B3B790D0013E67E /* EZMicrophone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZMicrophone.h; sourceTree = "<group>"; };
66755A241B3B790D0013E67E /* EZMicrophone.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZMicrophone.m; sourceTree = "<group>"; };
66755A251B3B790D0013E67E /* EZOutput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZOutput.h; sourceTree = "<group>"; };
66755A261B3B790D0013E67E /* EZOutput.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZOutput.m; sourceTree = "<group>"; };
66755A271B3B790D0013E67E /* EZPlot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZPlot.h; sourceTree = "<group>"; };
66755A281B3B790D0013E67E /* EZPlot.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZPlot.m; sourceTree = "<group>"; };
66755A291B3B790D0013E67E /* EZRecorder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZRecorder.h; sourceTree = "<group>"; };
66755A2A1B3B790D0013E67E /* EZRecorder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZRecorder.m; sourceTree = "<group>"; };
66755A2B1B3B790D0013E67E /* TPCircularBuffer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = TPCircularBuffer.c; sourceTree = "<group>"; };
66755A2C1B3B790D0013E67E /* TPCircularBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TPCircularBuffer.h; sourceTree = "<group>"; };
66755A2E1B3B790D0013E67E /* CHANGELOG */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CHANGELOG; sourceTree = "<group>"; };
66755A2F1B3B790D0013E67E /* VERSION */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = VERSION; sourceTree = "<group>"; };
94056D85185B97E300EB94BA /* CoreGraphicsWaveformViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = CoreGraphicsWaveformViewController.h; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
94056D86185B97E300EB94BA /* CoreGraphicsWaveformViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = CoreGraphicsWaveformViewController.m; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objc; };
94056D87185B97E300EB94BA /* CoreGraphicsWaveformViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CoreGraphicsWaveformViewController.xib; sourceTree = "<group>"; };
94373021185B931C00F315F0 /* EZAudioCoreGraphicsWaveformExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = EZAudioCoreGraphicsWaveformExample.app; sourceTree = BUILT_PRODUCTS_DIR; };
94373024185B931C00F315F0 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
94373027185B931C00F315F0 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
94373028185B931C00F315F0 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; };
94373029185B931C00F315F0 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
9437302C185B931C00F315F0 /* EZAudioCoreGraphicsWaveformExample-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "EZAudioCoreGraphicsWaveformExample-Info.plist"; sourceTree = "<group>"; };
9437302E185B931C00F315F0 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
94373030185B931C00F315F0 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = main.m; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objc; };
94373032185B931C00F315F0 /* EZAudioCoreGraphicsWaveformExample-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "EZAudioCoreGraphicsWaveformExample-Prefix.pch"; sourceTree = "<group>"; };
94373034185B931C00F315F0 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = "<group>"; };
94373036185B931C00F315F0 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = AppDelegate.h; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
94373037185B931C00F315F0 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = AppDelegate.m; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objc; };
9437303A185B931C00F315F0 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
9437303C185B931C00F315F0 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
94373042185B931C00F315F0 /* EZAudioCoreGraphicsWaveformExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = EZAudioCoreGraphicsWaveformExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
94373043185B931C00F315F0 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
9437304A185B931C00F315F0 /* EZAudioCoreGraphicsWaveformExampleTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "EZAudioCoreGraphicsWaveformExampleTests-Info.plist"; sourceTree = "<group>"; };
9437304C185B931C00F315F0 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
9437304E185B931C00F315F0 /* EZAudioCoreGraphicsWaveformExampleTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = EZAudioCoreGraphicsWaveformExampleTests.m; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objc; };
9437307D185B934900F315F0 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
9437307E185B934900F315F0 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; };
9437307F185B934900F315F0 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; };
94373083185B936B00F315F0 /* GLKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLKit.framework; path = System/Library/Frameworks/GLKit.framework; sourceTree = SDKROOT; };
94373085185B937100F315F0 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; };
94373087185B937E00F315F0 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
9437301E185B931C00F315F0 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
94373088185B937E00F315F0 /* QuartzCore.framework in Frameworks */,
94373086185B937100F315F0 /* OpenGL.framework in Frameworks */,
94373084185B936B00F315F0 /* GLKit.framework in Frameworks */,
94373080185B934900F315F0 /* AudioToolbox.framework in Frameworks */,
94373081185B934900F315F0 /* AudioUnit.framework in Frameworks */,
94373082185B934900F315F0 /* CoreAudio.framework in Frameworks */,
94373025185B931C00F315F0 /* Cocoa.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
9437303F185B931C00F315F0 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
94373045185B931C00F315F0 /* Cocoa.framework in Frameworks */,
94373044185B931C00F315F0 /* XCTest.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
66755A0A1B3B790D0013E67E /* EZAudio */ = {
isa = PBXGroup;
children = (
66755A0D1B3B790D0013E67E /* EZAudio.h */,
66755A0E1B3B790D0013E67E /* EZAudio.m */,
66755A0F1B3B790D0013E67E /* EZAudioDevice.h */,
66755A101B3B790D0013E67E /* EZAudioDevice.m */,
66755A111B3B790D0013E67E /* EZAudioDisplayLink.h */,
66755A121B3B790D0013E67E /* EZAudioDisplayLink.m */,
66755A131B3B790D0013E67E /* EZAudioFile.h */,
66755A141B3B790D0013E67E /* EZAudioFile.m */,
66755A151B3B790D0013E67E /* EZAudioFloatConverter.h */,
66755A161B3B790D0013E67E /* EZAudioFloatConverter.m */,
66755A171B3B790D0013E67E /* EZAudioFloatData.h */,
66755A181B3B790D0013E67E /* EZAudioFloatData.m */,
66755A191B3B790D0013E67E /* EZAudioPlayer.h */,
66755A1A1B3B790D0013E67E /* EZAudioPlayer.m */,
66755A1B1B3B790D0013E67E /* EZAudioPlot.h */,
66755A1C1B3B790D0013E67E /* EZAudioPlot.m */,
66755A1D1B3B790D0013E67E /* EZAudioPlotGL.h */,
66755A1E1B3B790D0013E67E /* EZAudioPlotGL.m */,
66755A211B3B790D0013E67E /* EZAudioUtilities.h */,
66755A221B3B790D0013E67E /* EZAudioUtilities.m */,
66755A231B3B790D0013E67E /* EZMicrophone.h */,
66755A241B3B790D0013E67E /* EZMicrophone.m */,
66755A251B3B790D0013E67E /* EZOutput.h */,
66755A261B3B790D0013E67E /* EZOutput.m */,
66755A271B3B790D0013E67E /* EZPlot.h */,
66755A281B3B790D0013E67E /* EZPlot.m */,
66755A291B3B790D0013E67E /* EZRecorder.h */,
66755A2A1B3B790D0013E67E /* EZRecorder.m */,
66755A2B1B3B790D0013E67E /* TPCircularBuffer.c */,
66755A2C1B3B790D0013E67E /* TPCircularBuffer.h */,
66755A2D1B3B790D0013E67E /* VERSION */,
);
name = EZAudio;
path = ../../../../EZAudio;
sourceTree = "<group>";
};
66755A2D1B3B790D0013E67E /* VERSION */ = {
isa = PBXGroup;
children = (
66755A2E1B3B790D0013E67E /* CHANGELOG */,
66755A2F1B3B790D0013E67E /* VERSION */,
);
path = VERSION;
sourceTree = "<group>";
};
94373018185B931C00F315F0 = {
isa = PBXGroup;
children = (
9437302A185B931C00F315F0 /* EZAudioCoreGraphicsWaveformExample */,
94373048185B931C00F315F0 /* EZAudioCoreGraphicsWaveformExampleTests */,
94373023185B931C00F315F0 /* Frameworks */,
94373022185B931C00F315F0 /* Products */,
);
sourceTree = "<group>";
};
94373022185B931C00F315F0 /* Products */ = {
isa = PBXGroup;
children = (
94373021185B931C00F315F0 /* EZAudioCoreGraphicsWaveformExample.app */,
94373042185B931C00F315F0 /* EZAudioCoreGraphicsWaveformExampleTests.xctest */,
);
name = Products;
sourceTree = "<group>";
};
94373023185B931C00F315F0 /* Frameworks */ = {
isa = PBXGroup;
children = (
94373087185B937E00F315F0 /* QuartzCore.framework */,
94373085185B937100F315F0 /* OpenGL.framework */,
94373083185B936B00F315F0 /* GLKit.framework */,
9437307D185B934900F315F0 /* AudioToolbox.framework */,
9437307E185B934900F315F0 /* AudioUnit.framework */,
9437307F185B934900F315F0 /* CoreAudio.framework */,
94373024185B931C00F315F0 /* Cocoa.framework */,
94373043185B931C00F315F0 /* XCTest.framework */,
94373026185B931C00F315F0 /* Other Frameworks */,
);
name = Frameworks;
sourceTree = "<group>";
};
94373026185B931C00F315F0 /* Other Frameworks */ = {
isa = PBXGroup;
children = (
94373027185B931C00F315F0 /* AppKit.framework */,
94373028185B931C00F315F0 /* CoreData.framework */,
94373029185B931C00F315F0 /* Foundation.framework */,
);
name = "Other Frameworks";
sourceTree = "<group>";
};
9437302A185B931C00F315F0 /* EZAudioCoreGraphicsWaveformExample */ = {
isa = PBXGroup;
children = (
66755A0A1B3B790D0013E67E /* EZAudio */,
94373036185B931C00F315F0 /* AppDelegate.h */,
94373037185B931C00F315F0 /* AppDelegate.m */,
94056D85185B97E300EB94BA /* CoreGraphicsWaveformViewController.h */,
94056D86185B97E300EB94BA /* CoreGraphicsWaveformViewController.m */,
94056D87185B97E300EB94BA /* CoreGraphicsWaveformViewController.xib */,
94373039185B931C00F315F0 /* MainMenu.xib */,
9437303C185B931C00F315F0 /* Images.xcassets */,
9437302B185B931C00F315F0 /* Supporting Files */,
);
path = EZAudioCoreGraphicsWaveformExample;
sourceTree = "<group>";
};
9437302B185B931C00F315F0 /* Supporting Files */ = {
isa = PBXGroup;
children = (
9437302C185B931C00F315F0 /* EZAudioCoreGraphicsWaveformExample-Info.plist */,
9437302D185B931C00F315F0 /* InfoPlist.strings */,
94373030185B931C00F315F0 /* main.m */,
94373032185B931C00F315F0 /* EZAudioCoreGraphicsWaveformExample-Prefix.pch */,
94373033185B931C00F315F0 /* Credits.rtf */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
94373048185B931C00F315F0 /* EZAudioCoreGraphicsWaveformExampleTests */ = {
isa = PBXGroup;
children = (
9437304E185B931C00F315F0 /* EZAudioCoreGraphicsWaveformExampleTests.m */,
94373049185B931C00F315F0 /* Supporting Files */,
);
path = EZAudioCoreGraphicsWaveformExampleTests;
sourceTree = "<group>";
};
94373049185B931C00F315F0 /* Supporting Files */ = {
isa = PBXGroup;
children = (
9437304A185B931C00F315F0 /* EZAudioCoreGraphicsWaveformExampleTests-Info.plist */,
9437304B185B931C00F315F0 /* InfoPlist.strings */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
94373020185B931C00F315F0 /* EZAudioCoreGraphicsWaveformExample */ = {
isa = PBXNativeTarget;
buildConfigurationList = 94373052185B931D00F315F0 /* Build configuration list for PBXNativeTarget "EZAudioCoreGraphicsWaveformExample" */;
buildPhases = (
9437301D185B931C00F315F0 /* Sources */,
9437301E185B931C00F315F0 /* Frameworks */,
9437301F185B931C00F315F0 /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = EZAudioCoreGraphicsWaveformExample;
productName = EZAudioCoreGraphicsWaveformExample;
productReference = 94373021185B931C00F315F0 /* EZAudioCoreGraphicsWaveformExample.app */;
productType = "com.apple.product-type.application";
};
94373041185B931C00F315F0 /* EZAudioCoreGraphicsWaveformExampleTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 94373055185B931D00F315F0 /* Build configuration list for PBXNativeTarget "EZAudioCoreGraphicsWaveformExampleTests" */;
buildPhases = (
9437303E185B931C00F315F0 /* Sources */,
9437303F185B931C00F315F0 /* Frameworks */,
94373040185B931C00F315F0 /* Resources */,
);
buildRules = (
);
dependencies = (
94373047185B931C00F315F0 /* PBXTargetDependency */,
);
name = EZAudioCoreGraphicsWaveformExampleTests;
productName = EZAudioCoreGraphicsWaveformExampleTests;
productReference = 94373042185B931C00F315F0 /* EZAudioCoreGraphicsWaveformExampleTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
94373019185B931C00F315F0 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0500;
ORGANIZATIONNAME = "Syed Haris Ali";
TargetAttributes = {
94373041185B931C00F315F0 = {
TestTargetID = 94373020185B931C00F315F0;
};
};
};
buildConfigurationList = 9437301C185B931C00F315F0 /* Build configuration list for PBXProject "EZAudioCoreGraphicsWaveformExample" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = 94373018185B931C00F315F0;
productRefGroup = 94373022185B931C00F315F0 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
94373020185B931C00F315F0 /* EZAudioCoreGraphicsWaveformExample */,
94373041185B931C00F315F0 /* EZAudioCoreGraphicsWaveformExampleTests */,
94F8DF4A18C84203005C4CBD /* Generate Documentation */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
9437301F185B931C00F315F0 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
9437302F185B931C00F315F0 /* InfoPlist.strings in Resources */,
66755A421B3B790D0013E67E /* VERSION in Resources */,
9437303D185B931C00F315F0 /* Images.xcassets in Resources */,
94373035185B931C00F315F0 /* Credits.rtf in Resources */,
94056D89185B97E300EB94BA /* CoreGraphicsWaveformViewController.xib in Resources */,
9437303B185B931C00F315F0 /* MainMenu.xib in Resources */,
66755A411B3B790D0013E67E /* CHANGELOG in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
94373040185B931C00F315F0 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
9437304D185B931C00F315F0 /* InfoPlist.strings in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
94F8DF4E18C8420C005C4CBD /* ShellScript */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "/usr/local/bin/appledoc \\\n--project-name \"EZAudio\" \\\n--project-company \"Syed Haris Ali\" \\\n--company-id \"com.sha\" \\\n--output documentation \\\n--create-docset \\\n--install-docset \\\n--create-html \\\n--exit-threshold 2 \\\n--no-repeat-first-par \\\n/../EZAudio";
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
9437301D185B931C00F315F0 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
66755A381B3B790D0013E67E /* EZAudioPlot.m in Sources */,
66755A371B3B790D0013E67E /* EZAudioPlayer.m in Sources */,
94056D88185B97E300EB94BA /* CoreGraphicsWaveformViewController.m in Sources */,
66755A391B3B790D0013E67E /* EZAudioPlotGL.m in Sources */,
66755A341B3B790D0013E67E /* EZAudioFile.m in Sources */,
66755A3D1B3B790D0013E67E /* EZOutput.m in Sources */,
66755A3B1B3B790D0013E67E /* EZAudioUtilities.m in Sources */,
66755A3E1B3B790D0013E67E /* EZPlot.m in Sources */,
94373038185B931C00F315F0 /* AppDelegate.m in Sources */,
66755A3F1B3B790D0013E67E /* EZRecorder.m in Sources */,
66755A361B3B790D0013E67E /* EZAudioFloatData.m in Sources */,
66755A351B3B790D0013E67E /* EZAudioFloatConverter.m in Sources */,
66755A331B3B790D0013E67E /* EZAudioDisplayLink.m in Sources */,
66755A3C1B3B790D0013E67E /* EZMicrophone.m in Sources */,
66755A321B3B790D0013E67E /* EZAudioDevice.m in Sources */,
94373031185B931C00F315F0 /* main.m in Sources */,
66755A401B3B790D0013E67E /* TPCircularBuffer.c in Sources */,
66755A311B3B790D0013E67E /* EZAudio.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
9437303E185B931C00F315F0 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
9437304F185B931C00F315F0 /* EZAudioCoreGraphicsWaveformExampleTests.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
94373047185B931C00F315F0 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 94373020185B931C00F315F0 /* EZAudioCoreGraphicsWaveformExample */;
targetProxy = 94373046185B931C00F315F0 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
9437302D185B931C00F315F0 /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
9437302E185B931C00F315F0 /* en */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
};
94373033185B931C00F315F0 /* Credits.rtf */ = {
isa = PBXVariantGroup;
children = (
94373034185B931C00F315F0 /* en */,
);
name = Credits.rtf;
sourceTree = "<group>";
};
94373039185B931C00F315F0 /* MainMenu.xib */ = {
isa = PBXVariantGroup;
children = (
9437303A185B931C00F315F0 /* Base */,
);
name = MainMenu.xib;
sourceTree = "<group>";
};
9437304B185B931C00F315F0 /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
9437304C185B931C00F315F0 /* en */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
94373050185B931D00F315F0 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.9;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = macosx;
};
name = Debug;
};
94373051185B931D00F315F0 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.9;
SDKROOT = macosx;
};
name = Release;
};
94373053185B931D00F315F0 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
COMBINE_HIDPI_IMAGES = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "EZAudioCoreGraphicsWaveformExample/EZAudioCoreGraphicsWaveformExample-Prefix.pch";
INFOPLIST_FILE = "EZAudioCoreGraphicsWaveformExample/EZAudioCoreGraphicsWaveformExample-Info.plist";
PRODUCT_NAME = "$(TARGET_NAME)";
WRAPPER_EXTENSION = app;
};
name = Debug;
};
94373054185B931D00F315F0 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
COMBINE_HIDPI_IMAGES = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "EZAudioCoreGraphicsWaveformExample/EZAudioCoreGraphicsWaveformExample-Prefix.pch";
INFOPLIST_FILE = "EZAudioCoreGraphicsWaveformExample/EZAudioCoreGraphicsWaveformExample-Info.plist";
PRODUCT_NAME = "$(TARGET_NAME)";
WRAPPER_EXTENSION = app;
};
name = Release;
};
94373056185B931D00F315F0 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/EZAudioCoreGraphicsWaveformExample.app/Contents/MacOS/EZAudioCoreGraphicsWaveformExample";
COMBINE_HIDPI_IMAGES = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(DEVELOPER_FRAMEWORKS_DIR)",
"$(inherited)",
);
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "EZAudioCoreGraphicsWaveformExample/EZAudioCoreGraphicsWaveformExample-Prefix.pch";
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
INFOPLIST_FILE = "EZAudioCoreGraphicsWaveformExampleTests/EZAudioCoreGraphicsWaveformExampleTests-Info.plist";
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUNDLE_LOADER)";
WRAPPER_EXTENSION = xctest;
};
name = Debug;
};
94373057185B931D00F315F0 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/EZAudioCoreGraphicsWaveformExample.app/Contents/MacOS/EZAudioCoreGraphicsWaveformExample";
COMBINE_HIDPI_IMAGES = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(DEVELOPER_FRAMEWORKS_DIR)",
"$(inherited)",
);
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "EZAudioCoreGraphicsWaveformExample/EZAudioCoreGraphicsWaveformExample-Prefix.pch";
INFOPLIST_FILE = "EZAudioCoreGraphicsWaveformExampleTests/EZAudioCoreGraphicsWaveformExampleTests-Info.plist";
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUNDLE_LOADER)";
WRAPPER_EXTENSION = xctest;
};
name = Release;
};
94F8DF4B18C84204005C4CBD /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
};
94F8DF4C18C84204005C4CBD /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
9437301C185B931C00F315F0 /* Build configuration list for PBXProject "EZAudioCoreGraphicsWaveformExample" */ = {
isa = XCConfigurationList;
buildConfigurations = (
94373050185B931D00F315F0 /* Debug */,
94373051185B931D00F315F0 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
94373052185B931D00F315F0 /* Build configuration list for PBXNativeTarget "EZAudioCoreGraphicsWaveformExample" */ = {
isa = XCConfigurationList;
buildConfigurations = (
94373053185B931D00F315F0 /* Debug */,
94373054185B931D00F315F0 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
94373055185B931D00F315F0 /* Build configuration list for PBXNativeTarget "EZAudioCoreGraphicsWaveformExampleTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
94373056185B931D00F315F0 /* Debug */,
94373057185B931D00F315F0 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
94F8DF4D18C84204005C4CBD /* Build configuration list for PBXAggregateTarget "Generate Documentation" */ = {
isa = XCConfigurationList;
buildConfigurations = (
94F8DF4B18C84204005C4CBD /* Debug */,
94F8DF4C18C84204005C4CBD /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 94373019185B931C00F315F0 /* Project object */;
}
@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:EZAudioCoreGraphicsWaveformExample.xcodeproj">
</FileRef>
</Workspace>
@@ -1,39 +0,0 @@
//
// AppDelegate.h
// EZAudioCoreGraphicsWaveformExample
//
// Created by Syed Haris Ali on 12/1/13.
// Copyright (c) 2013 Syed Haris Ali. All rights reserved.
//
// 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.
#import <Cocoa/Cocoa.h>
#import "CoreGraphicsWaveformViewController.h"
@interface AppDelegate : NSObject <NSApplicationDelegate>
@property (assign) IBOutlet NSWindow *window;
/**
Create our CoreGraphicsWaveformViewController
*/
@property (nonatomic,strong) CoreGraphicsWaveformViewController *coreGraphicsWaveformViewController;
@end
@@ -1,43 +0,0 @@
//
// AppDelegate.m
// EZAudioCoreGraphicsWaveformExample
//
// Created by Syed Haris Ali on 12/1/13.
// Copyright (c) 2013 Syed Haris Ali. All rights reserved.
//
// 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.
#import "AppDelegate.h"
@implementation AppDelegate
@synthesize coreGraphicsWaveformViewController;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
// Swap in our view controller in the window's content view
self.coreGraphicsWaveformViewController = [[CoreGraphicsWaveformViewController alloc] initWithNibName:NSStringFromClass(CoreGraphicsWaveformViewController.class) bundle:nil];
// Resize view controller to content view's current size
self.coreGraphicsWaveformViewController.view.frame = [self.window.contentView frame];
// Add resizing flags to make the view controller resize with the window
self.coreGraphicsWaveformViewController.view.autoresizingMask = (NSViewWidthSizable|NSViewHeightSizable);
// Add in the core graphics view controller as subview
[self.window.contentView addSubview:self.coreGraphicsWaveformViewController.view];
}
@end
@@ -1,36 +0,0 @@
//
// CoreGraphicsWaveformViewController.h
// EZAudioCoreGraphicsWaveformExample
//
// Created by Syed Haris Ali on 12/13/13.
// Copyright (c) 2013 Syed Haris Ali. All rights reserved.
//
#import <Cocoa/Cocoa.h>
// Import EZAudio header
#import "EZAudio.h"
/**
We will allow this view controller to act as an EZMicrophoneDelegate. This is how we listen for the microphone callback.
*/
@interface CoreGraphicsWaveformViewController : NSViewController <EZMicrophoneDelegate>
#pragma mark - Components
/**
The CoreGraphics based audio plot
*/
@property (nonatomic,weak) IBOutlet EZAudioPlot *audioPlot;
/**
The microphone component
*/
@property (nonatomic,strong) EZMicrophone *microphone;
#pragma mark - Actions
/**
Toggles the microphone on and off. When the microphone is on it will send its delegate (aka this view controller) the audio data in various ways (check out the EZMicrophoneDelegate documentation for more details);
*/
-(IBAction)toggleMicrophone:(id)sender;
@end
@@ -1,53 +0,0 @@
//
// CoreGraphicsWaveformViewController.m
// EZAudioCoreGraphicsWaveformExample
//
// Created by Syed Haris Ali on 12/13/13.
// Copyright (c) 2013 Syed Haris Ali. All rights reserved.
//
#import "CoreGraphicsWaveformViewController.h"
@interface CoreGraphicsWaveformViewController ()
@end
@implementation CoreGraphicsWaveformViewController
#pragma mark - Initialization
-(id)init {
self = [super initWithNibName:NSStringFromClass(self.class) bundle:nibBundleOrNil];
if(self){
[self initializeViewController];
}
return self;
}
-(id)initWithCoder:(NSCoder *)aDecoder {
self = [super initWithNibName:NSStringFromClass(self.class) bundle:nibBundleOrNil];
if(self){
[self initializeViewController];
}
return self;
}
-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:NSStringFromClass(self.class) bundle:nibBundleOrNil];
if(self){
[self initializeViewController];
}
return self;
}
#pragma mark - Initialize View Controller
-(void)initializeViewController {
// Create an instance of the microphone
self.microphone = [EZMicrophone microphoneWithDelegate:self];
}
#pragma mark - Actions
#pragma mark - EZMicrophoneDelegate
@end
@@ -1,30 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="4514" systemVersion="13A603" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies>
<deployment version="1070" identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="4514"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="CoreGraphicsWaveformViewController">
<connections>
<outlet property="view" destination="1" id="2"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application"/>
<customView id="1">
<rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<subviews>
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="BYN-Cr-ONS">
<rect key="frame" x="199" y="119" width="82" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="push" title="Button" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="kX8-uO-Adi">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
</button>
</subviews>
</customView>
</objects>
</document>
@@ -1,668 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="7706" systemVersion="14E46" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies>
<deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="7706"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
<connections>
<outlet property="delegate" destination="494" id="495"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<menu title="AMainMenu" systemMenu="main" id="29">
<items>
<menuItem title="EZAudioCoreGraphicsWaveformExample" id="56">
<menu key="submenu" title="EZAudioCoreGraphicsWaveformExample" systemMenu="apple" id="57">
<items>
<menuItem title="About EZAudioCoreGraphicsWaveformExample" id="58">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="orderFrontStandardAboutPanel:" target="-2" id="142"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="236">
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
</menuItem>
<menuItem title="Preferences…" keyEquivalent="," id="129"/>
<menuItem isSeparatorItem="YES" id="143">
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
</menuItem>
<menuItem title="Services" id="131">
<menu key="submenu" title="Services" systemMenu="services" id="130"/>
</menuItem>
<menuItem isSeparatorItem="YES" id="144">
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
</menuItem>
<menuItem title="Hide EZAudioCoreGraphicsWaveformExample" keyEquivalent="h" id="134">
<connections>
<action selector="hide:" target="-1" id="367"/>
</connections>
</menuItem>
<menuItem title="Hide Others" keyEquivalent="h" id="145">
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
<connections>
<action selector="hideOtherApplications:" target="-1" id="368"/>
</connections>
</menuItem>
<menuItem title="Show All" id="150">
<connections>
<action selector="unhideAllApplications:" target="-1" id="370"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="149">
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
</menuItem>
<menuItem title="Quit EZAudioCoreGraphicsWaveformExample" keyEquivalent="q" id="136">
<connections>
<action selector="terminate:" target="-3" id="449"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="File" id="83">
<menu key="submenu" title="File" id="81">
<items>
<menuItem title="New" keyEquivalent="n" id="82">
<connections>
<action selector="newDocument:" target="-1" id="373"/>
</connections>
</menuItem>
<menuItem title="Open…" keyEquivalent="o" id="72">
<connections>
<action selector="openDocument:" target="-1" id="374"/>
</connections>
</menuItem>
<menuItem title="Open Recent" id="124">
<menu key="submenu" title="Open Recent" systemMenu="recentDocuments" id="125">
<items>
<menuItem title="Clear Menu" id="126">
<connections>
<action selector="clearRecentDocuments:" target="-1" id="127"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem isSeparatorItem="YES" id="79">
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
</menuItem>
<menuItem title="Close" keyEquivalent="w" id="73">
<connections>
<action selector="performClose:" target="-1" id="193"/>
</connections>
</menuItem>
<menuItem title="Save…" keyEquivalent="s" id="75">
<connections>
<action selector="saveDocument:" target="-1" id="362"/>
</connections>
</menuItem>
<menuItem title="Revert to Saved" id="112">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="revertDocumentToSaved:" target="-1" id="364"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="74">
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
</menuItem>
<menuItem title="Page Setup..." keyEquivalent="P" id="77">
<modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
<connections>
<action selector="runPageLayout:" target="-1" id="87"/>
</connections>
</menuItem>
<menuItem title="Print…" keyEquivalent="p" id="78">
<connections>
<action selector="print:" target="-1" id="86"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Edit" id="217">
<menu key="submenu" title="Edit" id="205">
<items>
<menuItem title="Undo" keyEquivalent="z" id="207">
<connections>
<action selector="undo:" target="-1" id="223"/>
</connections>
</menuItem>
<menuItem title="Redo" keyEquivalent="Z" id="215">
<modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
<connections>
<action selector="redo:" target="-1" id="231"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="206">
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
</menuItem>
<menuItem title="Cut" keyEquivalent="x" id="199">
<connections>
<action selector="cut:" target="-1" id="228"/>
</connections>
</menuItem>
<menuItem title="Copy" keyEquivalent="c" id="197">
<connections>
<action selector="copy:" target="-1" id="224"/>
</connections>
</menuItem>
<menuItem title="Paste" keyEquivalent="v" id="203">
<connections>
<action selector="paste:" target="-1" id="226"/>
</connections>
</menuItem>
<menuItem title="Paste and Match Style" keyEquivalent="V" id="485">
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
<connections>
<action selector="pasteAsPlainText:" target="-1" id="486"/>
</connections>
</menuItem>
<menuItem title="Delete" id="202">
<connections>
<action selector="delete:" target="-1" id="235"/>
</connections>
</menuItem>
<menuItem title="Select All" keyEquivalent="a" id="198">
<connections>
<action selector="selectAll:" target="-1" id="232"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="214">
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
</menuItem>
<menuItem title="Find" id="218">
<menu key="submenu" title="Find" id="220">
<items>
<menuItem title="Find…" tag="1" keyEquivalent="f" id="209">
<connections>
<action selector="performFindPanelAction:" target="-1" id="241"/>
</connections>
</menuItem>
<menuItem title="Find and Replace…" tag="12" keyEquivalent="f" id="534">
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
<connections>
<action selector="performFindPanelAction:" target="-1" id="535"/>
</connections>
</menuItem>
<menuItem title="Find Next" tag="2" keyEquivalent="g" id="208">
<connections>
<action selector="performFindPanelAction:" target="-1" id="487"/>
</connections>
</menuItem>
<menuItem title="Find Previous" tag="3" keyEquivalent="G" id="213">
<modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
<connections>
<action selector="performFindPanelAction:" target="-1" id="488"/>
</connections>
</menuItem>
<menuItem title="Use Selection for Find" tag="7" keyEquivalent="e" id="221">
<connections>
<action selector="performFindPanelAction:" target="-1" id="489"/>
</connections>
</menuItem>
<menuItem title="Jump to Selection" keyEquivalent="j" id="210">
<connections>
<action selector="centerSelectionInVisibleArea:" target="-1" id="245"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Spelling and Grammar" id="216">
<menu key="submenu" title="Spelling and Grammar" id="200">
<items>
<menuItem title="Show Spelling and Grammar" keyEquivalent=":" id="204">
<connections>
<action selector="showGuessPanel:" target="-1" id="230"/>
</connections>
</menuItem>
<menuItem title="Check Document Now" keyEquivalent=";" id="201">
<connections>
<action selector="checkSpelling:" target="-1" id="225"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="453"/>
<menuItem title="Check Spelling While Typing" id="219">
<connections>
<action selector="toggleContinuousSpellChecking:" target="-1" id="222"/>
</connections>
</menuItem>
<menuItem title="Check Grammar With Spelling" id="346">
<connections>
<action selector="toggleGrammarChecking:" target="-1" id="347"/>
</connections>
</menuItem>
<menuItem title="Correct Spelling Automatically" id="454">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleAutomaticSpellingCorrection:" target="-1" id="456"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Substitutions" id="348">
<menu key="submenu" title="Substitutions" id="349">
<items>
<menuItem title="Show Substitutions" id="457">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="orderFrontSubstitutionsPanel:" target="-1" id="458"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="459"/>
<menuItem title="Smart Copy/Paste" tag="1" keyEquivalent="f" id="350">
<connections>
<action selector="toggleSmartInsertDelete:" target="-1" id="355"/>
</connections>
</menuItem>
<menuItem title="Smart Quotes" tag="2" keyEquivalent="g" id="351">
<connections>
<action selector="toggleAutomaticQuoteSubstitution:" target="-1" id="356"/>
</connections>
</menuItem>
<menuItem title="Smart Dashes" id="460">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleAutomaticDashSubstitution:" target="-1" id="461"/>
</connections>
</menuItem>
<menuItem title="Smart Links" tag="3" keyEquivalent="G" id="354">
<modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
<connections>
<action selector="toggleAutomaticLinkDetection:" target="-1" id="357"/>
</connections>
</menuItem>
<menuItem title="Text Replacement" id="462">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleAutomaticTextReplacement:" target="-1" id="463"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Transformations" id="450">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Transformations" id="451">
<items>
<menuItem title="Make Upper Case" id="452">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="uppercaseWord:" target="-1" id="464"/>
</connections>
</menuItem>
<menuItem title="Make Lower Case" id="465">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="lowercaseWord:" target="-1" id="468"/>
</connections>
</menuItem>
<menuItem title="Capitalize" id="466">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="capitalizeWord:" target="-1" id="467"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Speech" id="211">
<menu key="submenu" title="Speech" id="212">
<items>
<menuItem title="Start Speaking" id="196">
<connections>
<action selector="startSpeaking:" target="-1" id="233"/>
</connections>
</menuItem>
<menuItem title="Stop Speaking" id="195">
<connections>
<action selector="stopSpeaking:" target="-1" id="227"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Format" id="375">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Format" id="376">
<items>
<menuItem title="Font" id="377">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Font" systemMenu="font" id="388">
<items>
<menuItem title="Show Fonts" keyEquivalent="t" id="389">
<connections>
<action selector="orderFrontFontPanel:" target="420" id="424"/>
</connections>
</menuItem>
<menuItem title="Bold" tag="2" keyEquivalent="b" id="390">
<connections>
<action selector="addFontTrait:" target="420" id="421"/>
</connections>
</menuItem>
<menuItem title="Italic" tag="1" keyEquivalent="i" id="391">
<connections>
<action selector="addFontTrait:" target="420" id="422"/>
</connections>
</menuItem>
<menuItem title="Underline" keyEquivalent="u" id="392">
<connections>
<action selector="underline:" target="-1" id="432"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="393"/>
<menuItem title="Bigger" tag="3" keyEquivalent="+" id="394">
<connections>
<action selector="modifyFont:" target="420" id="425"/>
</connections>
</menuItem>
<menuItem title="Smaller" tag="4" keyEquivalent="-" id="395">
<connections>
<action selector="modifyFont:" target="420" id="423"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="396"/>
<menuItem title="Kern" id="397">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Kern" id="415">
<items>
<menuItem title="Use Default" id="416">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="useStandardKerning:" target="-1" id="438"/>
</connections>
</menuItem>
<menuItem title="Use None" id="417">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="turnOffKerning:" target="-1" id="441"/>
</connections>
</menuItem>
<menuItem title="Tighten" id="418">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="tightenKerning:" target="-1" id="431"/>
</connections>
</menuItem>
<menuItem title="Loosen" id="419">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="loosenKerning:" target="-1" id="435"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Ligatures" id="398">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Ligatures" id="411">
<items>
<menuItem title="Use Default" id="412">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="useStandardLigatures:" target="-1" id="439"/>
</connections>
</menuItem>
<menuItem title="Use None" id="413">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="turnOffLigatures:" target="-1" id="440"/>
</connections>
</menuItem>
<menuItem title="Use All" id="414">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="useAllLigatures:" target="-1" id="434"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Baseline" id="399">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Baseline" id="405">
<items>
<menuItem title="Use Default" id="406">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="unscript:" target="-1" id="437"/>
</connections>
</menuItem>
<menuItem title="Superscript" id="407">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="superscript:" target="-1" id="430"/>
</connections>
</menuItem>
<menuItem title="Subscript" id="408">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="subscript:" target="-1" id="429"/>
</connections>
</menuItem>
<menuItem title="Raise" id="409">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="raiseBaseline:" target="-1" id="426"/>
</connections>
</menuItem>
<menuItem title="Lower" id="410">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="lowerBaseline:" target="-1" id="427"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem isSeparatorItem="YES" id="400"/>
<menuItem title="Show Colors" keyEquivalent="C" id="401">
<connections>
<action selector="orderFrontColorPanel:" target="-1" id="433"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="402"/>
<menuItem title="Copy Style" keyEquivalent="c" id="403">
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
<connections>
<action selector="copyFont:" target="-1" id="428"/>
</connections>
</menuItem>
<menuItem title="Paste Style" keyEquivalent="v" id="404">
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
<connections>
<action selector="pasteFont:" target="-1" id="436"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Text" id="496">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Text" id="497">
<items>
<menuItem title="Align Left" keyEquivalent="{" id="498">
<connections>
<action selector="alignLeft:" target="-1" id="524"/>
</connections>
</menuItem>
<menuItem title="Center" keyEquivalent="|" id="499">
<connections>
<action selector="alignCenter:" target="-1" id="518"/>
</connections>
</menuItem>
<menuItem title="Justify" id="500">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="alignJustified:" target="-1" id="523"/>
</connections>
</menuItem>
<menuItem title="Align Right" keyEquivalent="}" id="501">
<connections>
<action selector="alignRight:" target="-1" id="521"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="502"/>
<menuItem title="Writing Direction" id="503">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Writing Direction" id="508">
<items>
<menuItem title="Paragraph" enabled="NO" id="509">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem id="510">
<string key="title"> Default</string>
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="makeBaseWritingDirectionNatural:" target="-1" id="525"/>
</connections>
</menuItem>
<menuItem id="511">
<string key="title"> Left to Right</string>
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="makeBaseWritingDirectionLeftToRight:" target="-1" id="526"/>
</connections>
</menuItem>
<menuItem id="512">
<string key="title"> Right to Left</string>
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="makeBaseWritingDirectionRightToLeft:" target="-1" id="527"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="513"/>
<menuItem title="Selection" enabled="NO" id="514">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem id="515">
<string key="title"> Default</string>
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="makeTextWritingDirectionNatural:" target="-1" id="528"/>
</connections>
</menuItem>
<menuItem id="516">
<string key="title"> Left to Right</string>
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="makeTextWritingDirectionLeftToRight:" target="-1" id="529"/>
</connections>
</menuItem>
<menuItem id="517">
<string key="title"> Right to Left</string>
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="makeTextWritingDirectionRightToLeft:" target="-1" id="530"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem isSeparatorItem="YES" id="504"/>
<menuItem title="Show Ruler" id="505">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleRuler:" target="-1" id="520"/>
</connections>
</menuItem>
<menuItem title="Copy Ruler" keyEquivalent="c" id="506">
<modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
<connections>
<action selector="copyRuler:" target="-1" id="522"/>
</connections>
</menuItem>
<menuItem title="Paste Ruler" keyEquivalent="v" id="507">
<modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
<connections>
<action selector="pasteRuler:" target="-1" id="519"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="View" id="295">
<menu key="submenu" title="View" id="296">
<items>
<menuItem title="Show Toolbar" keyEquivalent="t" id="297">
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
<connections>
<action selector="toggleToolbarShown:" target="-1" id="366"/>
</connections>
</menuItem>
<menuItem title="Customize Toolbar…" id="298">
<connections>
<action selector="runToolbarCustomizationPalette:" target="-1" id="365"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Window" id="19">
<menu key="submenu" title="Window" systemMenu="window" id="24">
<items>
<menuItem title="Minimize" keyEquivalent="m" id="23">
<connections>
<action selector="performMiniaturize:" target="-1" id="37"/>
</connections>
</menuItem>
<menuItem title="Zoom" id="239">
<connections>
<action selector="performZoom:" target="-1" id="240"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="92">
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
</menuItem>
<menuItem title="Bring All to Front" id="5">
<connections>
<action selector="arrangeInFront:" target="-1" id="39"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Help" id="490">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Help" systemMenu="help" id="491">
<items>
<menuItem title="EZAudioCoreGraphicsWaveformExample Help" keyEquivalent="?" id="492">
<connections>
<action selector="showHelp:" target="-1" id="493"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
</items>
</menu>
<window title="EZAudioCoreGraphicsWaveformExample" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="371">
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES" fullSizeContentView="YES"/>
<windowCollectionBehavior key="collectionBehavior" fullScreenPrimary="YES"/>
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="335" y="390" width="480" height="360"/>
<rect key="screenRect" x="0.0" y="0.0" width="1440" height="877"/>
<view key="contentView" id="372">
<rect key="frame" x="0.0" y="0.0" width="480" height="360"/>
<autoresizingMask key="autoresizingMask"/>
</view>
</window>
<customObject id="494" customClass="AppDelegate">
<connections>
<outlet property="window" destination="371" id="532"/>
</connections>
</customObject>
<customObject id="420" customClass="NSFontManager"/>
</objects>
</document>
@@ -1,118 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="7706" systemVersion="14E46" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies>
<deployment version="1070" identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="7706"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="CoreGraphicsWaveformViewController">
<connections>
<outlet property="audioPlot" destination="wpL-Ou-GSb" id="OME-Hf-I27"/>
<outlet property="microphoneInputChannelPopUpButton" destination="Yi6-fS-Cob" id="pLg-4c-klV"/>
<outlet property="microphoneInputPopUpButton" destination="SjR-qx-mWV" id="NuN-SS-ESg"/>
<outlet property="microphoneSwitch" destination="kAI-gs-c31" id="ADZ-Fg-aCN"/>
<outlet property="view" destination="wpL-Ou-GSb" id="oxJ-iT-SKO"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<customView id="wpL-Ou-GSb" customClass="EZAudioPlot">
<rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<subviews>
<button translatesAutoresizingMaskIntoConstraints="NO" id="kAI-gs-c31">
<rect key="frame" x="339" y="44" width="123" height="18"/>
<constraints>
<constraint firstAttribute="width" constant="119" id="FP4-Wg-HAb"/>
</constraints>
<buttonCell key="cell" type="check" title="Microphone On" bezelStyle="regularSquare" imagePosition="right" state="on" inset="2" id="Aml-Gg-JmL">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="toggleMicrophone:" target="-2" id="sFe-vk-GLb"/>
</connections>
</button>
<segmentedControl verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="HTa-6n-EPo">
<rect key="frame" x="335" y="15" width="127" height="24"/>
<segmentedCell key="cell" borderStyle="border" alignment="left" style="rounded" trackingMode="selectOne" id="bLT-tl-mJ6">
<font key="font" metaFont="system"/>
<segments>
<segment label="Buffer" selected="YES"/>
<segment label="Rolling" tag="1"/>
</segments>
</segmentedCell>
<connections>
<action selector="changePlotType:" target="-2" id="JTN-f7-xiC"/>
</connections>
</segmentedControl>
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="SjR-qx-mWV" userLabel="microphoneInputPopUpButton">
<rect key="frame" x="18" y="14" width="180" height="26"/>
<constraints>
<constraint firstAttribute="width" constant="175" id="qhz-1c-cOR"/>
</constraints>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="4Kz-CU-9wA" id="Ifz-u8-4sz">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
<menu key="menu" id="si8-Yh-kZX">
<items>
<menuItem title="Item 1" state="on" id="4Kz-CU-9wA"/>
<menuItem title="Item 2" id="XbC-Uc-PrQ"/>
<menuItem title="Item 3" id="aao-3c-s5T"/>
</items>
</menu>
</popUpButtonCell>
</popUpButton>
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Yi6-fS-Cob" userLabel="microphoneInputChannelPopUpButton">
<rect key="frame" x="204" y="14" width="79" height="26"/>
<constraints>
<constraint firstAttribute="width" constant="74" id="w4n-SY-B3n"/>
</constraints>
<popUpButtonCell key="cell" type="push" title="1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="K3K-bf-PA5" id="mM3-bX-3dm">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
<menu key="menu" id="u3a-FE-6Wo">
<items>
<menuItem title="1" state="on" id="K3K-bf-PA5"/>
<menuItem title="Item 2" id="gAP-8p-hIp"/>
<menuItem title="Item 3" id="5ds-DC-X9S"/>
</items>
</menu>
</popUpButtonCell>
</popUpButton>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="fi6-Uh-bvr">
<rect key="frame" x="18" y="43" width="36" height="17"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Input" id="Png-Pk-fMc">
<font key="font" metaFont="system"/>
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="HVN-Im-3J1">
<rect key="frame" x="204" y="43" width="55" height="17"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Channel" id="lkh-zp-WCY">
<font key="font" metaFont="system"/>
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</subviews>
<constraints>
<constraint firstAttribute="bottom" secondItem="SjR-qx-mWV" secondAttribute="bottom" constant="17" id="1kd-d1-9WR"/>
<constraint firstAttribute="bottom" secondItem="HTa-6n-EPo" secondAttribute="bottom" constant="17" id="47V-Zg-MD0"/>
<constraint firstAttribute="bottom" secondItem="Yi6-fS-Cob" secondAttribute="bottom" constant="17" id="B2R-Tc-cz7"/>
<constraint firstItem="Yi6-fS-Cob" firstAttribute="top" secondItem="HVN-Im-3J1" secondAttribute="bottom" constant="5" id="DoN-81-ICT"/>
<constraint firstItem="HTa-6n-EPo" firstAttribute="top" secondItem="kAI-gs-c31" secondAttribute="bottom" constant="8" id="GLf-f7-seC"/>
<constraint firstItem="Yi6-fS-Cob" firstAttribute="leading" secondItem="SjR-qx-mWV" secondAttribute="trailing" constant="11" id="Pqx-7E-osx"/>
<constraint firstItem="Yi6-fS-Cob" firstAttribute="leading" secondItem="HVN-Im-3J1" secondAttribute="leading" id="Ux9-Kd-07J"/>
<constraint firstItem="SjR-qx-mWV" firstAttribute="leading" secondItem="wpL-Ou-GSb" secondAttribute="leading" constant="20" id="b29-6j-MdI"/>
<constraint firstAttribute="trailing" secondItem="kAI-gs-c31" secondAttribute="trailing" constant="20" id="bR5-ru-Lto"/>
<constraint firstItem="fi6-Uh-bvr" firstAttribute="leading" secondItem="wpL-Ou-GSb" secondAttribute="leading" constant="20" id="gqn-qW-0CY"/>
<constraint firstItem="HTa-6n-EPo" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="Yi6-fS-Cob" secondAttribute="trailing" constant="11" id="qGD-Te-9IQ"/>
<constraint firstItem="SjR-qx-mWV" firstAttribute="top" secondItem="fi6-Uh-bvr" secondAttribute="bottom" constant="5" id="qkS-wp-O0d"/>
<constraint firstAttribute="trailing" secondItem="HTa-6n-EPo" secondAttribute="trailing" constant="20" id="rGZ-5W-ZDN"/>
</constraints>
<point key="canvasLocation" x="226" y="324"/>
</customView>
</objects>
</document>
@@ -1,9 +0,0 @@
//
// Prefix header
//
// The contents of this file are implicitly included at the beginning of every source file.
//
#ifdef __OBJC__
#import <Cocoa/Cocoa.h>
#endif
@@ -1,29 +0,0 @@
{\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;}
{\colortbl;\red255\green255\blue255;}
\paperw9840\paperh8400
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
\f0\b\fs24 \cf0 Engineering:
\b0 \
Some people\
\
\b Human Interface Design:
\b0 \
Some other people\
\
\b Testing:
\b0 \
Hopefully not nobody\
\
\b Documentation:
\b0 \
Whoever\
\
\b With special thanks to:
\b0 \
Mom\
}
@@ -1,2 +0,0 @@
/* Localized versions of Info.plist keys */
@@ -1,22 +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>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIdentifier</key>
<string>com.sha.${PRODUCT_NAME:rfc1034identifier}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
</dict>
</plist>
@@ -1,51 +0,0 @@
//
// EZAudioCoreGraphicsWaveformExampleTests.m
// EZAudioCoreGraphicsWaveformExampleTests
//
// Created by Syed Haris Ali on 12/1/13.
// Copyright (c) 2013 Syed Haris Ali. All rights reserved.
//
// 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.
#import <XCTest/XCTest.h>
@interface EZAudioCoreGraphicsWaveformExampleTests : XCTestCase
@end
@implementation EZAudioCoreGraphicsWaveformExampleTests
- (void)setUp
{
[super setUp];
// Put setup code here. This method is called before the invocation of each test method in the class.
}
- (void)tearDown
{
// Put teardown code here. This method is called after the invocation of each test method in the class.
[super tearDown];
}
- (void)testExample
{
XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__);
}
@end
@@ -1,2 +0,0 @@
/* Localized versions of Info.plist keys */
@@ -1,25 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "group:EZAudioCoreGraphicsWaveformExample/EZAudioCoreGraphicsWaveformExample.xcodeproj">
</FileRef>
<FileRef
location = "group:EZAudioOpenGLWaveformExample/EZAudioOpenGLWaveformExample.xcodeproj">
</FileRef>
<FileRef
location = "group:EZAudioPlayFileExample/EZAudioPlayFileExample.xcodeproj">
</FileRef>
<FileRef
location = "group:EZAudioRecordExample/EZAudioRecordExample.xcodeproj">
</FileRef>
<FileRef
location = "group:EZAudioWaveformFromFileExample/EZAudioWaveformFromFileExample.xcodeproj">
</FileRef>
<FileRef
location = "group:EZAudioPassThroughExample/EZAudioPassThroughExample.xcodeproj">
</FileRef>
<FileRef
location = "group:EZAudioFFTExample/EZAudioFFTExample.xcodeproj">
</FileRef>
</Workspace>
@@ -1,634 +0,0 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
66755B871B3B79380013E67E /* EZAudio.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755B641B3B79380013E67E /* EZAudio.m */; };
66755B881B3B79380013E67E /* EZAudioDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755B661B3B79380013E67E /* EZAudioDevice.m */; };
66755B891B3B79380013E67E /* EZAudioDisplayLink.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755B681B3B79380013E67E /* EZAudioDisplayLink.m */; };
66755B8A1B3B79380013E67E /* EZAudioFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755B6A1B3B79380013E67E /* EZAudioFile.m */; };
66755B8B1B3B79380013E67E /* EZAudioFloatConverter.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755B6C1B3B79380013E67E /* EZAudioFloatConverter.m */; };
66755B8C1B3B79380013E67E /* EZAudioFloatData.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755B6E1B3B79380013E67E /* EZAudioFloatData.m */; };
66755B8D1B3B79380013E67E /* EZAudioPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755B701B3B79380013E67E /* EZAudioPlayer.m */; };
66755B8E1B3B79380013E67E /* EZAudioPlot.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755B721B3B79380013E67E /* EZAudioPlot.m */; };
66755B8F1B3B79380013E67E /* EZAudioPlotGL.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755B741B3B79380013E67E /* EZAudioPlotGL.m */; };
66755B911B3B79380013E67E /* EZAudioUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755B781B3B79380013E67E /* EZAudioUtilities.m */; };
66755B921B3B79380013E67E /* EZMicrophone.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755B7A1B3B79380013E67E /* EZMicrophone.m */; };
66755B931B3B79380013E67E /* EZOutput.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755B7C1B3B79380013E67E /* EZOutput.m */; };
66755B941B3B79380013E67E /* EZPlot.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755B7E1B3B79380013E67E /* EZPlot.m */; };
66755B951B3B79380013E67E /* EZRecorder.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755B801B3B79380013E67E /* EZRecorder.m */; };
66755B961B3B79380013E67E /* TPCircularBuffer.c in Sources */ = {isa = PBXBuildFile; fileRef = 66755B811B3B79380013E67E /* TPCircularBuffer.c */; };
66755B971B3B79380013E67E /* CHANGELOG in Resources */ = {isa = PBXBuildFile; fileRef = 66755B841B3B79380013E67E /* CHANGELOG */; };
66755B981B3B79380013E67E /* VERSION in Resources */ = {isa = PBXBuildFile; fileRef = 66755B851B3B79380013E67E /* VERSION */; };
9417A8F71871492000D9D37B /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9417A8F61871492000D9D37B /* Cocoa.framework */; };
9417A9011871492000D9D37B /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 9417A8FF1871492000D9D37B /* InfoPlist.strings */; };
9417A9031871492000D9D37B /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 9417A9021871492000D9D37B /* main.m */; };
9417A9071871492100D9D37B /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 9417A9051871492100D9D37B /* Credits.rtf */; };
9417A90A1871492100D9D37B /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 9417A9091871492100D9D37B /* AppDelegate.m */; };
9417A90D1871492100D9D37B /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9417A90B1871492100D9D37B /* MainMenu.xib */; };
9417A90F1871492100D9D37B /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9417A90E1871492100D9D37B /* Images.xcassets */; };
9417A9161871492100D9D37B /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9417A9151871492100D9D37B /* XCTest.framework */; };
9417A9171871492100D9D37B /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9417A8F61871492000D9D37B /* Cocoa.framework */; };
9417A91F1871492100D9D37B /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 9417A91D1871492100D9D37B /* InfoPlist.strings */; };
9417A9211871492100D9D37B /* EZAudioFFTExampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 9417A9201871492100D9D37B /* EZAudioFFTExampleTests.m */; };
9417A954187149EA00D9D37B /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9417A951187149EA00D9D37B /* AudioToolbox.framework */; };
9417A955187149EA00D9D37B /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9417A952187149EA00D9D37B /* AudioUnit.framework */; };
9417A956187149EA00D9D37B /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9417A953187149EA00D9D37B /* CoreAudio.framework */; };
9417A959187149F000D9D37B /* GLKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9417A957187149F000D9D37B /* GLKit.framework */; };
9417A95A187149F000D9D37B /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9417A958187149F000D9D37B /* OpenGL.framework */; };
9417A95C18714A1000D9D37B /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9417A95B18714A1000D9D37B /* QuartzCore.framework */; };
9417A95E18714A2A00D9D37B /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9417A95D18714A2A00D9D37B /* Accelerate.framework */; };
9417A9D61872130200D9D37B /* FFTViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9417A9D41872130200D9D37B /* FFTViewController.m */; };
9417A9D71872130200D9D37B /* FFTViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9417A9D51872130200D9D37B /* FFTViewController.xib */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
9417A9181871492100D9D37B /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 9417A8EB1871492000D9D37B /* Project object */;
proxyType = 1;
remoteGlobalIDString = 9417A8F21871492000D9D37B;
remoteInfo = EZAudioFFTExample;
};
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
66755B631B3B79380013E67E /* EZAudio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudio.h; sourceTree = "<group>"; };
66755B641B3B79380013E67E /* EZAudio.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudio.m; sourceTree = "<group>"; };
66755B651B3B79380013E67E /* EZAudioDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioDevice.h; sourceTree = "<group>"; };
66755B661B3B79380013E67E /* EZAudioDevice.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioDevice.m; sourceTree = "<group>"; };
66755B671B3B79380013E67E /* EZAudioDisplayLink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioDisplayLink.h; sourceTree = "<group>"; };
66755B681B3B79380013E67E /* EZAudioDisplayLink.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioDisplayLink.m; sourceTree = "<group>"; };
66755B691B3B79380013E67E /* EZAudioFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioFile.h; sourceTree = "<group>"; };
66755B6A1B3B79380013E67E /* EZAudioFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioFile.m; sourceTree = "<group>"; };
66755B6B1B3B79380013E67E /* EZAudioFloatConverter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioFloatConverter.h; sourceTree = "<group>"; };
66755B6C1B3B79380013E67E /* EZAudioFloatConverter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioFloatConverter.m; sourceTree = "<group>"; };
66755B6D1B3B79380013E67E /* EZAudioFloatData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioFloatData.h; sourceTree = "<group>"; };
66755B6E1B3B79380013E67E /* EZAudioFloatData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioFloatData.m; sourceTree = "<group>"; };
66755B6F1B3B79380013E67E /* EZAudioPlayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioPlayer.h; sourceTree = "<group>"; };
66755B701B3B79380013E67E /* EZAudioPlayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioPlayer.m; sourceTree = "<group>"; };
66755B711B3B79380013E67E /* EZAudioPlot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioPlot.h; sourceTree = "<group>"; };
66755B721B3B79380013E67E /* EZAudioPlot.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioPlot.m; sourceTree = "<group>"; };
66755B731B3B79380013E67E /* EZAudioPlotGL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioPlotGL.h; sourceTree = "<group>"; };
66755B741B3B79380013E67E /* EZAudioPlotGL.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioPlotGL.m; sourceTree = "<group>"; };
66755B771B3B79380013E67E /* EZAudioUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioUtilities.h; sourceTree = "<group>"; };
66755B781B3B79380013E67E /* EZAudioUtilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioUtilities.m; sourceTree = "<group>"; };
66755B791B3B79380013E67E /* EZMicrophone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZMicrophone.h; sourceTree = "<group>"; };
66755B7A1B3B79380013E67E /* EZMicrophone.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZMicrophone.m; sourceTree = "<group>"; };
66755B7B1B3B79380013E67E /* EZOutput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZOutput.h; sourceTree = "<group>"; };
66755B7C1B3B79380013E67E /* EZOutput.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZOutput.m; sourceTree = "<group>"; };
66755B7D1B3B79380013E67E /* EZPlot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZPlot.h; sourceTree = "<group>"; };
66755B7E1B3B79380013E67E /* EZPlot.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZPlot.m; sourceTree = "<group>"; };
66755B7F1B3B79380013E67E /* EZRecorder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZRecorder.h; sourceTree = "<group>"; };
66755B801B3B79380013E67E /* EZRecorder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZRecorder.m; sourceTree = "<group>"; };
66755B811B3B79380013E67E /* TPCircularBuffer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = TPCircularBuffer.c; sourceTree = "<group>"; };
66755B821B3B79380013E67E /* TPCircularBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TPCircularBuffer.h; sourceTree = "<group>"; };
66755B841B3B79380013E67E /* CHANGELOG */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CHANGELOG; sourceTree = "<group>"; };
66755B851B3B79380013E67E /* VERSION */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = VERSION; sourceTree = "<group>"; };
9417A8F31871492000D9D37B /* EZAudioFFTExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = EZAudioFFTExample.app; sourceTree = BUILT_PRODUCTS_DIR; };
9417A8F61871492000D9D37B /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
9417A8F91871492000D9D37B /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
9417A8FA1871492000D9D37B /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; };
9417A8FB1871492000D9D37B /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
9417A8FE1871492000D9D37B /* EZAudioFFTExample-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "EZAudioFFTExample-Info.plist"; sourceTree = "<group>"; };
9417A9001871492000D9D37B /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
9417A9021871492000D9D37B /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
9417A9041871492000D9D37B /* EZAudioFFTExample-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "EZAudioFFTExample-Prefix.pch"; sourceTree = "<group>"; };
9417A9061871492100D9D37B /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = "<group>"; };
9417A9081871492100D9D37B /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
9417A9091871492100D9D37B /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
9417A90C1871492100D9D37B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
9417A90E1871492100D9D37B /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
9417A9141871492100D9D37B /* EZAudioFFTExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = EZAudioFFTExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
9417A9151871492100D9D37B /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
9417A91C1871492100D9D37B /* EZAudioFFTExampleTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "EZAudioFFTExampleTests-Info.plist"; sourceTree = "<group>"; };
9417A91E1871492100D9D37B /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
9417A9201871492100D9D37B /* EZAudioFFTExampleTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = EZAudioFFTExampleTests.m; sourceTree = "<group>"; };
9417A951187149EA00D9D37B /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
9417A952187149EA00D9D37B /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; };
9417A953187149EA00D9D37B /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; };
9417A957187149F000D9D37B /* GLKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLKit.framework; path = System/Library/Frameworks/GLKit.framework; sourceTree = SDKROOT; };
9417A958187149F000D9D37B /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; };
9417A95B18714A1000D9D37B /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
9417A95D18714A2A00D9D37B /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; };
9417A9D31872130200D9D37B /* FFTViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FFTViewController.h; sourceTree = "<group>"; };
9417A9D41872130200D9D37B /* FFTViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FFTViewController.m; sourceTree = "<group>"; };
9417A9D51872130200D9D37B /* FFTViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = FFTViewController.xib; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
9417A8F01871492000D9D37B /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
9417A95E18714A2A00D9D37B /* Accelerate.framework in Frameworks */,
9417A95C18714A1000D9D37B /* QuartzCore.framework in Frameworks */,
9417A959187149F000D9D37B /* GLKit.framework in Frameworks */,
9417A95A187149F000D9D37B /* OpenGL.framework in Frameworks */,
9417A954187149EA00D9D37B /* AudioToolbox.framework in Frameworks */,
9417A955187149EA00D9D37B /* AudioUnit.framework in Frameworks */,
9417A956187149EA00D9D37B /* CoreAudio.framework in Frameworks */,
9417A8F71871492000D9D37B /* Cocoa.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
9417A9111871492100D9D37B /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
9417A9171871492100D9D37B /* Cocoa.framework in Frameworks */,
9417A9161871492100D9D37B /* XCTest.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
66755B601B3B79380013E67E /* EZAudio */ = {
isa = PBXGroup;
children = (
66755B631B3B79380013E67E /* EZAudio.h */,
66755B641B3B79380013E67E /* EZAudio.m */,
66755B651B3B79380013E67E /* EZAudioDevice.h */,
66755B661B3B79380013E67E /* EZAudioDevice.m */,
66755B671B3B79380013E67E /* EZAudioDisplayLink.h */,
66755B681B3B79380013E67E /* EZAudioDisplayLink.m */,
66755B691B3B79380013E67E /* EZAudioFile.h */,
66755B6A1B3B79380013E67E /* EZAudioFile.m */,
66755B6B1B3B79380013E67E /* EZAudioFloatConverter.h */,
66755B6C1B3B79380013E67E /* EZAudioFloatConverter.m */,
66755B6D1B3B79380013E67E /* EZAudioFloatData.h */,
66755B6E1B3B79380013E67E /* EZAudioFloatData.m */,
66755B6F1B3B79380013E67E /* EZAudioPlayer.h */,
66755B701B3B79380013E67E /* EZAudioPlayer.m */,
66755B711B3B79380013E67E /* EZAudioPlot.h */,
66755B721B3B79380013E67E /* EZAudioPlot.m */,
66755B731B3B79380013E67E /* EZAudioPlotGL.h */,
66755B741B3B79380013E67E /* EZAudioPlotGL.m */,
66755B771B3B79380013E67E /* EZAudioUtilities.h */,
66755B781B3B79380013E67E /* EZAudioUtilities.m */,
66755B791B3B79380013E67E /* EZMicrophone.h */,
66755B7A1B3B79380013E67E /* EZMicrophone.m */,
66755B7B1B3B79380013E67E /* EZOutput.h */,
66755B7C1B3B79380013E67E /* EZOutput.m */,
66755B7D1B3B79380013E67E /* EZPlot.h */,
66755B7E1B3B79380013E67E /* EZPlot.m */,
66755B7F1B3B79380013E67E /* EZRecorder.h */,
66755B801B3B79380013E67E /* EZRecorder.m */,
66755B811B3B79380013E67E /* TPCircularBuffer.c */,
66755B821B3B79380013E67E /* TPCircularBuffer.h */,
66755B831B3B79380013E67E /* VERSION */,
);
name = EZAudio;
path = ../../../../EZAudio;
sourceTree = "<group>";
};
66755B831B3B79380013E67E /* VERSION */ = {
isa = PBXGroup;
children = (
66755B841B3B79380013E67E /* CHANGELOG */,
66755B851B3B79380013E67E /* VERSION */,
);
path = VERSION;
sourceTree = "<group>";
};
9417A8EA1871492000D9D37B = {
isa = PBXGroup;
children = (
9417A8FC1871492000D9D37B /* EZAudioFFTExample */,
9417A91A1871492100D9D37B /* EZAudioFFTExampleTests */,
9417A8F51871492000D9D37B /* Frameworks */,
9417A8F41871492000D9D37B /* Products */,
);
sourceTree = "<group>";
};
9417A8F41871492000D9D37B /* Products */ = {
isa = PBXGroup;
children = (
9417A8F31871492000D9D37B /* EZAudioFFTExample.app */,
9417A9141871492100D9D37B /* EZAudioFFTExampleTests.xctest */,
);
name = Products;
sourceTree = "<group>";
};
9417A8F51871492000D9D37B /* Frameworks */ = {
isa = PBXGroup;
children = (
9417A95D18714A2A00D9D37B /* Accelerate.framework */,
9417A95B18714A1000D9D37B /* QuartzCore.framework */,
9417A957187149F000D9D37B /* GLKit.framework */,
9417A958187149F000D9D37B /* OpenGL.framework */,
9417A951187149EA00D9D37B /* AudioToolbox.framework */,
9417A952187149EA00D9D37B /* AudioUnit.framework */,
9417A953187149EA00D9D37B /* CoreAudio.framework */,
9417A8F61871492000D9D37B /* Cocoa.framework */,
9417A9151871492100D9D37B /* XCTest.framework */,
9417A8F81871492000D9D37B /* Other Frameworks */,
);
name = Frameworks;
sourceTree = "<group>";
};
9417A8F81871492000D9D37B /* Other Frameworks */ = {
isa = PBXGroup;
children = (
9417A8F91871492000D9D37B /* AppKit.framework */,
9417A8FA1871492000D9D37B /* CoreData.framework */,
9417A8FB1871492000D9D37B /* Foundation.framework */,
);
name = "Other Frameworks";
sourceTree = "<group>";
};
9417A8FC1871492000D9D37B /* EZAudioFFTExample */ = {
isa = PBXGroup;
children = (
66755B601B3B79380013E67E /* EZAudio */,
9417A9081871492100D9D37B /* AppDelegate.h */,
9417A9091871492100D9D37B /* AppDelegate.m */,
9417A9D31872130200D9D37B /* FFTViewController.h */,
9417A9D41872130200D9D37B /* FFTViewController.m */,
9417A9D51872130200D9D37B /* FFTViewController.xib */,
9417A90B1871492100D9D37B /* MainMenu.xib */,
9417A90E1871492100D9D37B /* Images.xcassets */,
9417A8FD1871492000D9D37B /* Supporting Files */,
);
path = EZAudioFFTExample;
sourceTree = "<group>";
};
9417A8FD1871492000D9D37B /* Supporting Files */ = {
isa = PBXGroup;
children = (
9417A8FE1871492000D9D37B /* EZAudioFFTExample-Info.plist */,
9417A8FF1871492000D9D37B /* InfoPlist.strings */,
9417A9021871492000D9D37B /* main.m */,
9417A9041871492000D9D37B /* EZAudioFFTExample-Prefix.pch */,
9417A9051871492100D9D37B /* Credits.rtf */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
9417A91A1871492100D9D37B /* EZAudioFFTExampleTests */ = {
isa = PBXGroup;
children = (
9417A9201871492100D9D37B /* EZAudioFFTExampleTests.m */,
9417A91B1871492100D9D37B /* Supporting Files */,
);
path = EZAudioFFTExampleTests;
sourceTree = "<group>";
};
9417A91B1871492100D9D37B /* Supporting Files */ = {
isa = PBXGroup;
children = (
9417A91C1871492100D9D37B /* EZAudioFFTExampleTests-Info.plist */,
9417A91D1871492100D9D37B /* InfoPlist.strings */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
9417A8F21871492000D9D37B /* EZAudioFFTExample */ = {
isa = PBXNativeTarget;
buildConfigurationList = 9417A9241871492100D9D37B /* Build configuration list for PBXNativeTarget "EZAudioFFTExample" */;
buildPhases = (
9417A8EF1871492000D9D37B /* Sources */,
9417A8F01871492000D9D37B /* Frameworks */,
9417A8F11871492000D9D37B /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = EZAudioFFTExample;
productName = EZAudioFFTExample;
productReference = 9417A8F31871492000D9D37B /* EZAudioFFTExample.app */;
productType = "com.apple.product-type.application";
};
9417A9131871492100D9D37B /* EZAudioFFTExampleTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 9417A9271871492100D9D37B /* Build configuration list for PBXNativeTarget "EZAudioFFTExampleTests" */;
buildPhases = (
9417A9101871492100D9D37B /* Sources */,
9417A9111871492100D9D37B /* Frameworks */,
9417A9121871492100D9D37B /* Resources */,
);
buildRules = (
);
dependencies = (
9417A9191871492100D9D37B /* PBXTargetDependency */,
);
name = EZAudioFFTExampleTests;
productName = EZAudioFFTExampleTests;
productReference = 9417A9141871492100D9D37B /* EZAudioFFTExampleTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
9417A8EB1871492000D9D37B /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0500;
ORGANIZATIONNAME = "Syed Haris Ali";
TargetAttributes = {
9417A9131871492100D9D37B = {
TestTargetID = 9417A8F21871492000D9D37B;
};
};
};
buildConfigurationList = 9417A8EE1871492000D9D37B /* Build configuration list for PBXProject "EZAudioFFTExample" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = 9417A8EA1871492000D9D37B;
productRefGroup = 9417A8F41871492000D9D37B /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
9417A8F21871492000D9D37B /* EZAudioFFTExample */,
9417A9131871492100D9D37B /* EZAudioFFTExampleTests */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
9417A8F11871492000D9D37B /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
9417A9011871492000D9D37B /* InfoPlist.strings in Resources */,
66755B981B3B79380013E67E /* VERSION in Resources */,
9417A9D71872130200D9D37B /* FFTViewController.xib in Resources */,
9417A90F1871492100D9D37B /* Images.xcassets in Resources */,
9417A9071871492100D9D37B /* Credits.rtf in Resources */,
9417A90D1871492100D9D37B /* MainMenu.xib in Resources */,
66755B971B3B79380013E67E /* CHANGELOG in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
9417A9121871492100D9D37B /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
9417A91F1871492100D9D37B /* InfoPlist.strings in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
9417A8EF1871492000D9D37B /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
66755B8E1B3B79380013E67E /* EZAudioPlot.m in Sources */,
66755B8D1B3B79380013E67E /* EZAudioPlayer.m in Sources */,
9417A9D61872130200D9D37B /* FFTViewController.m in Sources */,
66755B8F1B3B79380013E67E /* EZAudioPlotGL.m in Sources */,
66755B8A1B3B79380013E67E /* EZAudioFile.m in Sources */,
66755B931B3B79380013E67E /* EZOutput.m in Sources */,
66755B911B3B79380013E67E /* EZAudioUtilities.m in Sources */,
66755B941B3B79380013E67E /* EZPlot.m in Sources */,
9417A90A1871492100D9D37B /* AppDelegate.m in Sources */,
66755B951B3B79380013E67E /* EZRecorder.m in Sources */,
66755B8C1B3B79380013E67E /* EZAudioFloatData.m in Sources */,
66755B8B1B3B79380013E67E /* EZAudioFloatConverter.m in Sources */,
66755B891B3B79380013E67E /* EZAudioDisplayLink.m in Sources */,
66755B921B3B79380013E67E /* EZMicrophone.m in Sources */,
66755B881B3B79380013E67E /* EZAudioDevice.m in Sources */,
9417A9031871492000D9D37B /* main.m in Sources */,
66755B961B3B79380013E67E /* TPCircularBuffer.c in Sources */,
66755B871B3B79380013E67E /* EZAudio.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
9417A9101871492100D9D37B /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
9417A9211871492100D9D37B /* EZAudioFFTExampleTests.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
9417A9191871492100D9D37B /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 9417A8F21871492000D9D37B /* EZAudioFFTExample */;
targetProxy = 9417A9181871492100D9D37B /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
9417A8FF1871492000D9D37B /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
9417A9001871492000D9D37B /* en */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
};
9417A9051871492100D9D37B /* Credits.rtf */ = {
isa = PBXVariantGroup;
children = (
9417A9061871492100D9D37B /* en */,
);
name = Credits.rtf;
sourceTree = "<group>";
};
9417A90B1871492100D9D37B /* MainMenu.xib */ = {
isa = PBXVariantGroup;
children = (
9417A90C1871492100D9D37B /* Base */,
);
name = MainMenu.xib;
sourceTree = "<group>";
};
9417A91D1871492100D9D37B /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
9417A91E1871492100D9D37B /* en */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
9417A9221871492100D9D37B /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.9;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = macosx;
};
name = Debug;
};
9417A9231871492100D9D37B /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.9;
SDKROOT = macosx;
};
name = Release;
};
9417A9251871492100D9D37B /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
COMBINE_HIDPI_IMAGES = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "EZAudioFFTExample/EZAudioFFTExample-Prefix.pch";
INFOPLIST_FILE = "EZAudioFFTExample/EZAudioFFTExample-Info.plist";
PRODUCT_NAME = "$(TARGET_NAME)";
WRAPPER_EXTENSION = app;
};
name = Debug;
};
9417A9261871492100D9D37B /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
COMBINE_HIDPI_IMAGES = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "EZAudioFFTExample/EZAudioFFTExample-Prefix.pch";
INFOPLIST_FILE = "EZAudioFFTExample/EZAudioFFTExample-Info.plist";
PRODUCT_NAME = "$(TARGET_NAME)";
WRAPPER_EXTENSION = app;
};
name = Release;
};
9417A9281871492100D9D37B /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/EZAudioFFTExample.app/Contents/MacOS/EZAudioFFTExample";
COMBINE_HIDPI_IMAGES = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(DEVELOPER_FRAMEWORKS_DIR)",
"$(inherited)",
);
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "EZAudioFFTExample/EZAudioFFTExample-Prefix.pch";
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
INFOPLIST_FILE = "EZAudioFFTExampleTests/EZAudioFFTExampleTests-Info.plist";
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUNDLE_LOADER)";
WRAPPER_EXTENSION = xctest;
};
name = Debug;
};
9417A9291871492100D9D37B /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/EZAudioFFTExample.app/Contents/MacOS/EZAudioFFTExample";
COMBINE_HIDPI_IMAGES = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(DEVELOPER_FRAMEWORKS_DIR)",
"$(inherited)",
);
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "EZAudioFFTExample/EZAudioFFTExample-Prefix.pch";
INFOPLIST_FILE = "EZAudioFFTExampleTests/EZAudioFFTExampleTests-Info.plist";
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUNDLE_LOADER)";
WRAPPER_EXTENSION = xctest;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
9417A8EE1871492000D9D37B /* Build configuration list for PBXProject "EZAudioFFTExample" */ = {
isa = XCConfigurationList;
buildConfigurations = (
9417A9221871492100D9D37B /* Debug */,
9417A9231871492100D9D37B /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
9417A9241871492100D9D37B /* Build configuration list for PBXNativeTarget "EZAudioFFTExample" */ = {
isa = XCConfigurationList;
buildConfigurations = (
9417A9251871492100D9D37B /* Debug */,
9417A9261871492100D9D37B /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
9417A9271871492100D9D37B /* Build configuration list for PBXNativeTarget "EZAudioFFTExampleTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
9417A9281871492100D9D37B /* Debug */,
9417A9291871492100D9D37B /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 9417A8EB1871492000D9D37B /* Project object */;
}
@@ -1,39 +0,0 @@
//
// AppDelegate.h
// EZAudioFFTExample
//
// Created by Syed Haris Ali on 12/30/13.
// Copyright (c) 2013 Syed Haris Ali. All rights reserved.
//
// 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.
#import <Cocoa/Cocoa.h>
#import "FFTViewController.h"
@interface AppDelegate : NSObject <NSApplicationDelegate>
@property (assign) IBOutlet NSWindow *window;
/**
The FFTViewController
*/
@property (nonatomic,strong) FFTViewController *fftViewController;
@end
@@ -1,43 +0,0 @@
//
// AppDelegate.m
// EZAudioFFTExample
//
// Created by Syed Haris Ali on 12/30/13.
// Copyright (c) 2013 Syed Haris Ali. All rights reserved.
//
// 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.
#import "AppDelegate.h"
@implementation AppDelegate
@synthesize fftViewController;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
// Swap in our view controller in the window's content view
self.fftViewController = [[FFTViewController alloc] init];
// Resize view controller to content view's current size
self.fftViewController.view.frame = [self.window.contentView frame];
// Add resizing flags to make the view controller resize with the window
self.fftViewController.view.autoresizingMask = (NSViewWidthSizable|NSViewHeightSizable);
// Add in the core graphics view controller as subview
[self.window.contentView addSubview:self.fftViewController.view];
}
@end
@@ -1,9 +0,0 @@
//
// Prefix header
//
// The contents of this file are implicitly included at the beginning of every source file.
//
#ifdef __OBJC__
#import <Cocoa/Cocoa.h>
#endif
@@ -1,59 +0,0 @@
//
// FFTViewController.h
// EZAudioFFTExample
//
// Created by Syed Haris Ali on 12/30/13.
// Copyright (c) 2013 Syed Haris Ali. All rights reserved.
//
// 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.
#import <Cocoa/Cocoa.h>
/**
EZAudio
*/
#import "EZAudio.h"
/**
Accelerate
*/
#import <Accelerate/Accelerate.h>
/**
The FFTViewController demonstrates how to use the Accelerate framework to calculate the real-time FFT of audio data provided by an EZAudioMicrophone.
*/
@interface FFTViewController : NSViewController <EZMicrophoneDelegate>
#pragma mark - Components
/**
EZAudioPlot for frequency plot
*/
@property (nonatomic,weak) IBOutlet EZAudioPlot *audioPlotFreq;
/**
EZAudioPlot for time plot
*/
@property (nonatomic,weak) IBOutlet EZAudioPlot *audioPlotTime;
/**
Microphone
*/
@property (nonatomic,strong) EZMicrophone *microphone;
@end
@@ -1,205 +0,0 @@
//
// FFTViewController.m
// EZAudioFFTExample
//
// Created by Syed Haris Ali on 12/30/13.
// Copyright (c) 2013 Syed Haris Ali. All rights reserved.
//
// 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.
#import "FFTViewController.h"
@interface FFTViewController ()
@property (nonatomic, assign) COMPLEX_SPLIT *A;
@property (nonatomic, assign) FFTSetup FFTSetup;
@property (nonatomic, assign) vDSP_Length log2n;
@property (nonatomic, assign) BOOL isFFTSetup;
@end
@implementation FFTViewController
//------------------------------------------------------------------------------
#pragma mark - Dealloc
//------------------------------------------------------------------------------
- (void)dealloc
{
vDSP_destroy_fftsetup(self.FFTSetup);
free(self.A);
}
//------------------------------------------------------------------------------
#pragma mark - Customize the Audio Plot
//------------------------------------------------------------------------------
- (void)awakeFromNib
{
//
// Setup time domain audio plot
//
self.audioPlotTime.backgroundColor = [NSColor colorWithCalibratedRed: 0.569 green: 0.82 blue: 0.478 alpha: 1];
self.audioPlotTime.color = [NSColor colorWithCalibratedRed:1.0 green:1.0 blue:1.0 alpha:1.0];
self.audioPlotTime.shouldFill = YES;
self.audioPlotTime.shouldMirror = YES;
self.audioPlotTime.plotType = EZPlotTypeRolling;
//
// Setup frequency domain audio plot
//
self.audioPlotFreq.backgroundColor = [NSColor colorWithCalibratedRed: 0.984 green: 0.471 blue: 0.525 alpha: 1];
self.audioPlotFreq.color = [NSColor colorWithCalibratedRed:1.0 green:1.0 blue:1.0 alpha:1.0];
self.audioPlotFreq.shouldFill = YES;
self.audioPlotFreq.plotType = EZPlotTypeBuffer;
self.audioPlotFreq.shouldCenterYAxis = NO;
//
// Create an instance of the microphone and tell it to use this view controller instance as the delegate
//
self.microphone = [EZMicrophone microphoneWithDelegate:self
startsImmediately:YES];
}
//------------------------------------------------------------------------------
#pragma mark - FFT
//------------------------------------------------------------------------------
/**
Adapted from http://batmobile.blogs.ilrt.org/fourier-transforms-on-an-iphone/
*/
- (void)createFFTWithBufferSize:(float)bufferSize
withAudioData:(float *)data
{
//
// Setup the length
//
self.log2n = log2f(bufferSize);
//
// Calculate the weights array. This is a one-off operation.
//
_FFTSetup = vDSP_create_fftsetup(self.log2n, FFT_RADIX2);
//
// For an FFT, numSamples must be a power of 2, i.e. is always even
//
int nOver2 = bufferSize/2;
//
// Populate *window with the values for a hamming window function
//
float *window = (float *)malloc(sizeof(float) * bufferSize);
vDSP_hamm_window(window, bufferSize, 0);
//
// Window the samples
//
vDSP_vmul(data, 1, window, 1, data, 1, bufferSize);
//
// Define complex buffer
//
self.A = malloc(sizeof(COMPLEX_SPLIT));
self.A->realp = (float *) malloc(nOver2 * sizeof(float));
self.A->imagp = (float *) malloc(nOver2 * sizeof(float));
}
//------------------------------------------------------------------------------
- (void)updateFFTWithBufferSize:(float)bufferSize
withAudioData:(float*)data
{
//
// For an FFT, numSamples must be a power of 2, i.e. is always even
//
int nOver2 = bufferSize / 2;
//
// Pack samples:
// C(re) -> A[n], C(im) -> A[n+1]
//
vDSP_ctoz((COMPLEX *)data, 2, self.A, 1, nOver2);
//
// Perform a forward FFT using fftSetup and A
// Results are returned in A
//
vDSP_fft_zrip(_FFTSetup, self.A, 1, self.log2n, FFT_FORWARD);
//
// Convert COMPLEX_SPLIT A result to magnitudes
//
float amp[nOver2];
float maxMag = 0;
for(int i = 0; i < nOver2; i++)
{
// Calculate the magnitude
float mag = self.A->realp[i]*self.A->realp[i]+self.A->imagp[i]*self.A->imagp[i];
maxMag = mag > maxMag ? mag : maxMag;
}
for(int i=0; i < nOver2; i++)
{
// Calculate the magnitude
float mag = self.A->realp[i]*self.A->realp[i]+self.A->imagp[i]*self.A->imagp[i];
// Bind the value to be less than 1.0 to fit in the graph
amp[i] = [EZAudioUtilities MAP:mag leftMin:0.0 leftMax:maxMag rightMin:0.0 rightMax:1.0];
}
//
// Update the frequency domain plot
//
[self.audioPlotFreq updateBuffer:amp withBufferSize:nOver2];
}
//------------------------------------------------------------------------------
#pragma mark - EZMicrophoneDelegate
//------------------------------------------------------------------------------
-(void) microphone:(EZMicrophone *)microphone
hasAudioReceived:(float **)buffer
withBufferSize:(UInt32)bufferSize
withNumberOfChannels:(UInt32)numberOfChannels
{
__weak typeof (self) weakSelf = self;
dispatch_async(dispatch_get_main_queue(), ^{
//
// Update time domain plot
//
[weakSelf.audioPlotTime updateBuffer:buffer[0]
withBufferSize:bufferSize];
//
// Lazily perform the FFT setup
//
if (!weakSelf.isFFTSetup)
{
[weakSelf createFFTWithBufferSize:bufferSize withAudioData:buffer[0]];
weakSelf.isFFTSetup = YES;
}
//
// Perform FFT and update FFT graph
//
[weakSelf updateFFTWithBufferSize:bufferSize
withAudioData:buffer[0]];
});
}
//------------------------------------------------------------------------------
@end
@@ -1,47 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="7702" systemVersion="14C109" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies>
<deployment version="1070" identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="7702"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="FFTViewController">
<connections>
<outlet property="audioPlotFreq" destination="4V2-1I-w64" id="SkA-7R-4V8"/>
<outlet property="audioPlotTime" destination="Zcc-CT-67u" id="lE0-d7-KUs"/>
<outlet property="view" destination="1" id="2"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<customView id="1">
<rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<subviews>
<splitView dividerStyle="thin" translatesAutoresizingMaskIntoConstraints="NO" id="78b-rz-Bpl">
<rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
<subviews>
<customView fixedFrame="YES" id="Zcc-CT-67u" customClass="EZAudioPlot">
<rect key="frame" x="0.0" y="0.0" width="480" height="132"/>
<autoresizingMask key="autoresizingMask"/>
</customView>
<customView fixedFrame="YES" id="4V2-1I-w64" customClass="EZAudioPlot">
<rect key="frame" x="0.0" y="133" width="480" height="139"/>
<autoresizingMask key="autoresizingMask"/>
</customView>
</subviews>
<holdingPriorities>
<real value="250"/>
<real value="250"/>
</holdingPriorities>
</splitView>
</subviews>
<constraints>
<constraint firstAttribute="bottom" secondItem="78b-rz-Bpl" secondAttribute="bottom" id="CZL-aU-xpy"/>
<constraint firstAttribute="trailing" secondItem="78b-rz-Bpl" secondAttribute="trailing" id="eXt-EL-upz"/>
<constraint firstItem="78b-rz-Bpl" firstAttribute="top" secondItem="1" secondAttribute="top" id="lFP-vc-nHC"/>
<constraint firstItem="78b-rz-Bpl" firstAttribute="leading" secondItem="1" secondAttribute="leading" id="lWl-1T-nHB"/>
</constraints>
</customView>
</objects>
</document>
@@ -1,29 +0,0 @@
{\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;}
{\colortbl;\red255\green255\blue255;}
\paperw9840\paperh8400
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
\f0\b\fs24 \cf0 Engineering:
\b0 \
Some people\
\
\b Human Interface Design:
\b0 \
Some other people\
\
\b Testing:
\b0 \
Hopefully not nobody\
\
\b Documentation:
\b0 \
Whoever\
\
\b With special thanks to:
\b0 \
Mom\
}
@@ -1,2 +0,0 @@
/* Localized versions of Info.plist keys */
@@ -1,14 +0,0 @@
//
// main.m
// EZAudioFFTExample
//
// Created by Syed Haris Ali on 12/29/13.
// Copyright (c) 2013 Syed Haris Ali. All rights reserved.
//
#import <Cocoa/Cocoa.h>
int main(int argc, const char * argv[])
{
return NSApplicationMain(argc, argv);
}
@@ -1,22 +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>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIdentifier</key>
<string>com.sha.${PRODUCT_NAME:rfc1034identifier}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
</dict>
</plist>
@@ -1,34 +0,0 @@
//
// EZAudioFFTExampleTests.m
// EZAudioFFTExampleTests
//
// Created by Syed Haris Ali on 12/29/13.
// Copyright (c) 2013 Syed Haris Ali. All rights reserved.
//
#import <XCTest/XCTest.h>
@interface EZAudioFFTExampleTests : XCTestCase
@end
@implementation EZAudioFFTExampleTests
- (void)setUp
{
[super setUp];
// Put setup code here. This method is called before the invocation of each test method in the class.
}
- (void)tearDown
{
// Put teardown code here. This method is called after the invocation of each test method in the class.
[super tearDown];
}
- (void)testExample
{
XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__);
}
@end
@@ -1,2 +0,0 @@
/* Localized versions of Info.plist keys */
@@ -1,630 +0,0 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
66755A6A1B3B79130013E67E /* EZAudio.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A471B3B79130013E67E /* EZAudio.m */; };
66755A6B1B3B79130013E67E /* EZAudioDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A491B3B79130013E67E /* EZAudioDevice.m */; };
66755A6C1B3B79130013E67E /* EZAudioDisplayLink.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A4B1B3B79130013E67E /* EZAudioDisplayLink.m */; };
66755A6D1B3B79130013E67E /* EZAudioFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A4D1B3B79130013E67E /* EZAudioFile.m */; };
66755A6E1B3B79130013E67E /* EZAudioFloatConverter.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A4F1B3B79130013E67E /* EZAudioFloatConverter.m */; };
66755A6F1B3B79130013E67E /* EZAudioFloatData.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A511B3B79130013E67E /* EZAudioFloatData.m */; };
66755A701B3B79130013E67E /* EZAudioPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A531B3B79130013E67E /* EZAudioPlayer.m */; };
66755A711B3B79130013E67E /* EZAudioPlot.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A551B3B79130013E67E /* EZAudioPlot.m */; };
66755A721B3B79130013E67E /* EZAudioPlotGL.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A571B3B79130013E67E /* EZAudioPlotGL.m */; };
66755A741B3B79130013E67E /* EZAudioUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A5B1B3B79130013E67E /* EZAudioUtilities.m */; };
66755A751B3B79130013E67E /* EZMicrophone.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A5D1B3B79130013E67E /* EZMicrophone.m */; };
66755A761B3B79130013E67E /* EZOutput.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A5F1B3B79130013E67E /* EZOutput.m */; };
66755A771B3B79130013E67E /* EZPlot.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A611B3B79130013E67E /* EZPlot.m */; };
66755A781B3B79130013E67E /* EZRecorder.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A631B3B79130013E67E /* EZRecorder.m */; };
66755A791B3B79130013E67E /* TPCircularBuffer.c in Sources */ = {isa = PBXBuildFile; fileRef = 66755A641B3B79130013E67E /* TPCircularBuffer.c */; };
66755A7A1B3B79130013E67E /* CHANGELOG in Resources */ = {isa = PBXBuildFile; fileRef = 66755A671B3B79130013E67E /* CHANGELOG */; };
66755A7B1B3B79130013E67E /* VERSION in Resources */ = {isa = PBXBuildFile; fileRef = 66755A681B3B79130013E67E /* VERSION */; };
94056D97185BB0BC00EB94BA /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94056D96185BB0BC00EB94BA /* Cocoa.framework */; };
94056DA1185BB0BC00EB94BA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 94056D9F185BB0BC00EB94BA /* InfoPlist.strings */; };
94056DA3185BB0BC00EB94BA /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 94056DA2185BB0BC00EB94BA /* main.m */; };
94056DA7185BB0BC00EB94BA /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 94056DA5185BB0BC00EB94BA /* Credits.rtf */; };
94056DAA185BB0BC00EB94BA /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 94056DA9185BB0BC00EB94BA /* AppDelegate.m */; };
94056DAD185BB0BC00EB94BA /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 94056DAB185BB0BC00EB94BA /* MainMenu.xib */; };
94056DAF185BB0BC00EB94BA /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 94056DAE185BB0BC00EB94BA /* Images.xcassets */; };
94056DB6185BB0BC00EB94BA /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94056DB5185BB0BC00EB94BA /* XCTest.framework */; };
94056DB7185BB0BC00EB94BA /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94056D96185BB0BC00EB94BA /* Cocoa.framework */; };
94056DBF185BB0BC00EB94BA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 94056DBD185BB0BC00EB94BA /* InfoPlist.strings */; };
94056DC1185BB0BC00EB94BA /* EZAudioOpenGLWaveformExampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 94056DC0185BB0BC00EB94BA /* EZAudioOpenGLWaveformExampleTests.m */; };
94056DCD185BB0D600EB94BA /* OpenGLWaveformViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 94056DCB185BB0D600EB94BA /* OpenGLWaveformViewController.m */; };
94056DCE185BB0D600EB94BA /* OpenGLWaveformViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 94056DCC185BB0D600EB94BA /* OpenGLWaveformViewController.xib */; };
94056DD0185BB0E200EB94BA /* GLKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94056DCF185BB0E200EB94BA /* GLKit.framework */; };
94056DD2185BB0E900EB94BA /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94056DD1185BB0E900EB94BA /* OpenGL.framework */; };
94056DD4185BB0EF00EB94BA /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94056DD3185BB0EF00EB94BA /* QuartzCore.framework */; };
94056DD8185BB0F400EB94BA /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94056DD5185BB0F400EB94BA /* AudioToolbox.framework */; };
94056DD9185BB0F400EB94BA /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94056DD6185BB0F400EB94BA /* AudioUnit.framework */; };
94056DDA185BB0F400EB94BA /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94056DD7185BB0F400EB94BA /* CoreAudio.framework */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
94056DB8185BB0BC00EB94BA /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 94056D8B185BB0BC00EB94BA /* Project object */;
proxyType = 1;
remoteGlobalIDString = 94056D92185BB0BC00EB94BA;
remoteInfo = EZAudioOpenGLWaveformExample;
};
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
66755A461B3B79130013E67E /* EZAudio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudio.h; sourceTree = "<group>"; };
66755A471B3B79130013E67E /* EZAudio.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudio.m; sourceTree = "<group>"; };
66755A481B3B79130013E67E /* EZAudioDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioDevice.h; sourceTree = "<group>"; };
66755A491B3B79130013E67E /* EZAudioDevice.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioDevice.m; sourceTree = "<group>"; };
66755A4A1B3B79130013E67E /* EZAudioDisplayLink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioDisplayLink.h; sourceTree = "<group>"; };
66755A4B1B3B79130013E67E /* EZAudioDisplayLink.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioDisplayLink.m; sourceTree = "<group>"; };
66755A4C1B3B79130013E67E /* EZAudioFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioFile.h; sourceTree = "<group>"; };
66755A4D1B3B79130013E67E /* EZAudioFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioFile.m; sourceTree = "<group>"; };
66755A4E1B3B79130013E67E /* EZAudioFloatConverter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioFloatConverter.h; sourceTree = "<group>"; };
66755A4F1B3B79130013E67E /* EZAudioFloatConverter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioFloatConverter.m; sourceTree = "<group>"; };
66755A501B3B79130013E67E /* EZAudioFloatData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioFloatData.h; sourceTree = "<group>"; };
66755A511B3B79130013E67E /* EZAudioFloatData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioFloatData.m; sourceTree = "<group>"; };
66755A521B3B79130013E67E /* EZAudioPlayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioPlayer.h; sourceTree = "<group>"; };
66755A531B3B79130013E67E /* EZAudioPlayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioPlayer.m; sourceTree = "<group>"; };
66755A541B3B79130013E67E /* EZAudioPlot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioPlot.h; sourceTree = "<group>"; };
66755A551B3B79130013E67E /* EZAudioPlot.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioPlot.m; sourceTree = "<group>"; };
66755A561B3B79130013E67E /* EZAudioPlotGL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioPlotGL.h; sourceTree = "<group>"; };
66755A571B3B79130013E67E /* EZAudioPlotGL.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioPlotGL.m; sourceTree = "<group>"; };
66755A5A1B3B79130013E67E /* EZAudioUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioUtilities.h; sourceTree = "<group>"; };
66755A5B1B3B79130013E67E /* EZAudioUtilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioUtilities.m; sourceTree = "<group>"; };
66755A5C1B3B79130013E67E /* EZMicrophone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZMicrophone.h; sourceTree = "<group>"; };
66755A5D1B3B79130013E67E /* EZMicrophone.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZMicrophone.m; sourceTree = "<group>"; };
66755A5E1B3B79130013E67E /* EZOutput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZOutput.h; sourceTree = "<group>"; };
66755A5F1B3B79130013E67E /* EZOutput.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZOutput.m; sourceTree = "<group>"; };
66755A601B3B79130013E67E /* EZPlot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZPlot.h; sourceTree = "<group>"; };
66755A611B3B79130013E67E /* EZPlot.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZPlot.m; sourceTree = "<group>"; };
66755A621B3B79130013E67E /* EZRecorder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZRecorder.h; sourceTree = "<group>"; };
66755A631B3B79130013E67E /* EZRecorder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZRecorder.m; sourceTree = "<group>"; };
66755A641B3B79130013E67E /* TPCircularBuffer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = TPCircularBuffer.c; sourceTree = "<group>"; };
66755A651B3B79130013E67E /* TPCircularBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TPCircularBuffer.h; sourceTree = "<group>"; };
66755A671B3B79130013E67E /* CHANGELOG */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CHANGELOG; sourceTree = "<group>"; };
66755A681B3B79130013E67E /* VERSION */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = VERSION; sourceTree = "<group>"; };
94056D93185BB0BC00EB94BA /* EZAudioOpenGLWaveformExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = EZAudioOpenGLWaveformExample.app; sourceTree = BUILT_PRODUCTS_DIR; };
94056D96185BB0BC00EB94BA /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
94056D99185BB0BC00EB94BA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
94056D9A185BB0BC00EB94BA /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; };
94056D9B185BB0BC00EB94BA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
94056D9E185BB0BC00EB94BA /* EZAudioOpenGLWaveformExample-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "EZAudioOpenGLWaveformExample-Info.plist"; sourceTree = "<group>"; };
94056DA0185BB0BC00EB94BA /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
94056DA2185BB0BC00EB94BA /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = main.m; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objc; };
94056DA4185BB0BC00EB94BA /* EZAudioOpenGLWaveformExample-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "EZAudioOpenGLWaveformExample-Prefix.pch"; sourceTree = "<group>"; };
94056DA6185BB0BC00EB94BA /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = "<group>"; };
94056DA8185BB0BC00EB94BA /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = AppDelegate.h; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
94056DA9185BB0BC00EB94BA /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = AppDelegate.m; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objc; };
94056DAC185BB0BC00EB94BA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
94056DAE185BB0BC00EB94BA /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
94056DB4185BB0BC00EB94BA /* EZAudioOpenGLWaveformExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = EZAudioOpenGLWaveformExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
94056DB5185BB0BC00EB94BA /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
94056DBC185BB0BC00EB94BA /* EZAudioOpenGLWaveformExampleTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "EZAudioOpenGLWaveformExampleTests-Info.plist"; sourceTree = "<group>"; };
94056DBE185BB0BC00EB94BA /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
94056DC0185BB0BC00EB94BA /* EZAudioOpenGLWaveformExampleTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = EZAudioOpenGLWaveformExampleTests.m; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objc; };
94056DCA185BB0D600EB94BA /* OpenGLWaveformViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = OpenGLWaveformViewController.h; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
94056DCB185BB0D600EB94BA /* OpenGLWaveformViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = OpenGLWaveformViewController.m; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objc; };
94056DCC185BB0D600EB94BA /* OpenGLWaveformViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = OpenGLWaveformViewController.xib; sourceTree = "<group>"; };
94056DCF185BB0E200EB94BA /* GLKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLKit.framework; path = System/Library/Frameworks/GLKit.framework; sourceTree = SDKROOT; };
94056DD1185BB0E900EB94BA /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; };
94056DD3185BB0EF00EB94BA /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
94056DD5185BB0F400EB94BA /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
94056DD6185BB0F400EB94BA /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; };
94056DD7185BB0F400EB94BA /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
94056D90185BB0BC00EB94BA /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
94056DD8185BB0F400EB94BA /* AudioToolbox.framework in Frameworks */,
94056DD9185BB0F400EB94BA /* AudioUnit.framework in Frameworks */,
94056DDA185BB0F400EB94BA /* CoreAudio.framework in Frameworks */,
94056DD4185BB0EF00EB94BA /* QuartzCore.framework in Frameworks */,
94056DD2185BB0E900EB94BA /* OpenGL.framework in Frameworks */,
94056DD0185BB0E200EB94BA /* GLKit.framework in Frameworks */,
94056D97185BB0BC00EB94BA /* Cocoa.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
94056DB1185BB0BC00EB94BA /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
94056DB7185BB0BC00EB94BA /* Cocoa.framework in Frameworks */,
94056DB6185BB0BC00EB94BA /* XCTest.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
66755A431B3B79120013E67E /* EZAudio */ = {
isa = PBXGroup;
children = (
66755A461B3B79130013E67E /* EZAudio.h */,
66755A471B3B79130013E67E /* EZAudio.m */,
66755A481B3B79130013E67E /* EZAudioDevice.h */,
66755A491B3B79130013E67E /* EZAudioDevice.m */,
66755A4A1B3B79130013E67E /* EZAudioDisplayLink.h */,
66755A4B1B3B79130013E67E /* EZAudioDisplayLink.m */,
66755A4C1B3B79130013E67E /* EZAudioFile.h */,
66755A4D1B3B79130013E67E /* EZAudioFile.m */,
66755A4E1B3B79130013E67E /* EZAudioFloatConverter.h */,
66755A4F1B3B79130013E67E /* EZAudioFloatConverter.m */,
66755A501B3B79130013E67E /* EZAudioFloatData.h */,
66755A511B3B79130013E67E /* EZAudioFloatData.m */,
66755A521B3B79130013E67E /* EZAudioPlayer.h */,
66755A531B3B79130013E67E /* EZAudioPlayer.m */,
66755A541B3B79130013E67E /* EZAudioPlot.h */,
66755A551B3B79130013E67E /* EZAudioPlot.m */,
66755A561B3B79130013E67E /* EZAudioPlotGL.h */,
66755A571B3B79130013E67E /* EZAudioPlotGL.m */,
66755A5A1B3B79130013E67E /* EZAudioUtilities.h */,
66755A5B1B3B79130013E67E /* EZAudioUtilities.m */,
66755A5C1B3B79130013E67E /* EZMicrophone.h */,
66755A5D1B3B79130013E67E /* EZMicrophone.m */,
66755A5E1B3B79130013E67E /* EZOutput.h */,
66755A5F1B3B79130013E67E /* EZOutput.m */,
66755A601B3B79130013E67E /* EZPlot.h */,
66755A611B3B79130013E67E /* EZPlot.m */,
66755A621B3B79130013E67E /* EZRecorder.h */,
66755A631B3B79130013E67E /* EZRecorder.m */,
66755A641B3B79130013E67E /* TPCircularBuffer.c */,
66755A651B3B79130013E67E /* TPCircularBuffer.h */,
66755A661B3B79130013E67E /* VERSION */,
);
name = EZAudio;
path = ../../../../EZAudio;
sourceTree = "<group>";
};
66755A661B3B79130013E67E /* VERSION */ = {
isa = PBXGroup;
children = (
66755A671B3B79130013E67E /* CHANGELOG */,
66755A681B3B79130013E67E /* VERSION */,
);
path = VERSION;
sourceTree = "<group>";
};
94056D8A185BB0BC00EB94BA = {
isa = PBXGroup;
children = (
94056D9C185BB0BC00EB94BA /* EZAudioOpenGLWaveformExample */,
94056DBA185BB0BC00EB94BA /* EZAudioOpenGLWaveformExampleTests */,
94056D95185BB0BC00EB94BA /* Frameworks */,
94056D94185BB0BC00EB94BA /* Products */,
);
sourceTree = "<group>";
};
94056D94185BB0BC00EB94BA /* Products */ = {
isa = PBXGroup;
children = (
94056D93185BB0BC00EB94BA /* EZAudioOpenGLWaveformExample.app */,
94056DB4185BB0BC00EB94BA /* EZAudioOpenGLWaveformExampleTests.xctest */,
);
name = Products;
sourceTree = "<group>";
};
94056D95185BB0BC00EB94BA /* Frameworks */ = {
isa = PBXGroup;
children = (
94056DD5185BB0F400EB94BA /* AudioToolbox.framework */,
94056DD6185BB0F400EB94BA /* AudioUnit.framework */,
94056DD7185BB0F400EB94BA /* CoreAudio.framework */,
94056DD3185BB0EF00EB94BA /* QuartzCore.framework */,
94056DD1185BB0E900EB94BA /* OpenGL.framework */,
94056DCF185BB0E200EB94BA /* GLKit.framework */,
94056D96185BB0BC00EB94BA /* Cocoa.framework */,
94056DB5185BB0BC00EB94BA /* XCTest.framework */,
94056D98185BB0BC00EB94BA /* Other Frameworks */,
);
name = Frameworks;
sourceTree = "<group>";
};
94056D98185BB0BC00EB94BA /* Other Frameworks */ = {
isa = PBXGroup;
children = (
94056D99185BB0BC00EB94BA /* AppKit.framework */,
94056D9A185BB0BC00EB94BA /* CoreData.framework */,
94056D9B185BB0BC00EB94BA /* Foundation.framework */,
);
name = "Other Frameworks";
sourceTree = "<group>";
};
94056D9C185BB0BC00EB94BA /* EZAudioOpenGLWaveformExample */ = {
isa = PBXGroup;
children = (
66755A431B3B79120013E67E /* EZAudio */,
94056DA8185BB0BC00EB94BA /* AppDelegate.h */,
94056DA9185BB0BC00EB94BA /* AppDelegate.m */,
94056DCA185BB0D600EB94BA /* OpenGLWaveformViewController.h */,
94056DCB185BB0D600EB94BA /* OpenGLWaveformViewController.m */,
94056DCC185BB0D600EB94BA /* OpenGLWaveformViewController.xib */,
94056DAB185BB0BC00EB94BA /* MainMenu.xib */,
94056DAE185BB0BC00EB94BA /* Images.xcassets */,
94056D9D185BB0BC00EB94BA /* Supporting Files */,
);
path = EZAudioOpenGLWaveformExample;
sourceTree = "<group>";
};
94056D9D185BB0BC00EB94BA /* Supporting Files */ = {
isa = PBXGroup;
children = (
94056D9E185BB0BC00EB94BA /* EZAudioOpenGLWaveformExample-Info.plist */,
94056D9F185BB0BC00EB94BA /* InfoPlist.strings */,
94056DA2185BB0BC00EB94BA /* main.m */,
94056DA4185BB0BC00EB94BA /* EZAudioOpenGLWaveformExample-Prefix.pch */,
94056DA5185BB0BC00EB94BA /* Credits.rtf */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
94056DBA185BB0BC00EB94BA /* EZAudioOpenGLWaveformExampleTests */ = {
isa = PBXGroup;
children = (
94056DC0185BB0BC00EB94BA /* EZAudioOpenGLWaveformExampleTests.m */,
94056DBB185BB0BC00EB94BA /* Supporting Files */,
);
path = EZAudioOpenGLWaveformExampleTests;
sourceTree = "<group>";
};
94056DBB185BB0BC00EB94BA /* Supporting Files */ = {
isa = PBXGroup;
children = (
94056DBC185BB0BC00EB94BA /* EZAudioOpenGLWaveformExampleTests-Info.plist */,
94056DBD185BB0BC00EB94BA /* InfoPlist.strings */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
94056D92185BB0BC00EB94BA /* EZAudioOpenGLWaveformExample */ = {
isa = PBXNativeTarget;
buildConfigurationList = 94056DC4185BB0BC00EB94BA /* Build configuration list for PBXNativeTarget "EZAudioOpenGLWaveformExample" */;
buildPhases = (
94056D8F185BB0BC00EB94BA /* Sources */,
94056D90185BB0BC00EB94BA /* Frameworks */,
94056D91185BB0BC00EB94BA /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = EZAudioOpenGLWaveformExample;
productName = EZAudioOpenGLWaveformExample;
productReference = 94056D93185BB0BC00EB94BA /* EZAudioOpenGLWaveformExample.app */;
productType = "com.apple.product-type.application";
};
94056DB3185BB0BC00EB94BA /* EZAudioOpenGLWaveformExampleTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 94056DC7185BB0BC00EB94BA /* Build configuration list for PBXNativeTarget "EZAudioOpenGLWaveformExampleTests" */;
buildPhases = (
94056DB0185BB0BC00EB94BA /* Sources */,
94056DB1185BB0BC00EB94BA /* Frameworks */,
94056DB2185BB0BC00EB94BA /* Resources */,
);
buildRules = (
);
dependencies = (
94056DB9185BB0BC00EB94BA /* PBXTargetDependency */,
);
name = EZAudioOpenGLWaveformExampleTests;
productName = EZAudioOpenGLWaveformExampleTests;
productReference = 94056DB4185BB0BC00EB94BA /* EZAudioOpenGLWaveformExampleTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
94056D8B185BB0BC00EB94BA /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0500;
ORGANIZATIONNAME = "Syed Haris Ali";
TargetAttributes = {
94056DB3185BB0BC00EB94BA = {
TestTargetID = 94056D92185BB0BC00EB94BA;
};
};
};
buildConfigurationList = 94056D8E185BB0BC00EB94BA /* Build configuration list for PBXProject "EZAudioOpenGLWaveformExample" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = 94056D8A185BB0BC00EB94BA;
productRefGroup = 94056D94185BB0BC00EB94BA /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
94056D92185BB0BC00EB94BA /* EZAudioOpenGLWaveformExample */,
94056DB3185BB0BC00EB94BA /* EZAudioOpenGLWaveformExampleTests */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
94056D91185BB0BC00EB94BA /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
94056DA1185BB0BC00EB94BA /* InfoPlist.strings in Resources */,
66755A7B1B3B79130013E67E /* VERSION in Resources */,
94056DAF185BB0BC00EB94BA /* Images.xcassets in Resources */,
94056DA7185BB0BC00EB94BA /* Credits.rtf in Resources */,
94056DCE185BB0D600EB94BA /* OpenGLWaveformViewController.xib in Resources */,
94056DAD185BB0BC00EB94BA /* MainMenu.xib in Resources */,
66755A7A1B3B79130013E67E /* CHANGELOG in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
94056DB2185BB0BC00EB94BA /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
94056DBF185BB0BC00EB94BA /* InfoPlist.strings in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
94056D8F185BB0BC00EB94BA /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
66755A711B3B79130013E67E /* EZAudioPlot.m in Sources */,
66755A701B3B79130013E67E /* EZAudioPlayer.m in Sources */,
94056DAA185BB0BC00EB94BA /* AppDelegate.m in Sources */,
66755A721B3B79130013E67E /* EZAudioPlotGL.m in Sources */,
66755A6D1B3B79130013E67E /* EZAudioFile.m in Sources */,
66755A761B3B79130013E67E /* EZOutput.m in Sources */,
66755A741B3B79130013E67E /* EZAudioUtilities.m in Sources */,
66755A771B3B79130013E67E /* EZPlot.m in Sources */,
94056DA3185BB0BC00EB94BA /* main.m in Sources */,
66755A781B3B79130013E67E /* EZRecorder.m in Sources */,
66755A6F1B3B79130013E67E /* EZAudioFloatData.m in Sources */,
66755A6E1B3B79130013E67E /* EZAudioFloatConverter.m in Sources */,
66755A6C1B3B79130013E67E /* EZAudioDisplayLink.m in Sources */,
66755A751B3B79130013E67E /* EZMicrophone.m in Sources */,
66755A6B1B3B79130013E67E /* EZAudioDevice.m in Sources */,
94056DCD185BB0D600EB94BA /* OpenGLWaveformViewController.m in Sources */,
66755A791B3B79130013E67E /* TPCircularBuffer.c in Sources */,
66755A6A1B3B79130013E67E /* EZAudio.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
94056DB0185BB0BC00EB94BA /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
94056DC1185BB0BC00EB94BA /* EZAudioOpenGLWaveformExampleTests.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
94056DB9185BB0BC00EB94BA /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 94056D92185BB0BC00EB94BA /* EZAudioOpenGLWaveformExample */;
targetProxy = 94056DB8185BB0BC00EB94BA /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
94056D9F185BB0BC00EB94BA /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
94056DA0185BB0BC00EB94BA /* en */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
};
94056DA5185BB0BC00EB94BA /* Credits.rtf */ = {
isa = PBXVariantGroup;
children = (
94056DA6185BB0BC00EB94BA /* en */,
);
name = Credits.rtf;
sourceTree = "<group>";
};
94056DAB185BB0BC00EB94BA /* MainMenu.xib */ = {
isa = PBXVariantGroup;
children = (
94056DAC185BB0BC00EB94BA /* Base */,
);
name = MainMenu.xib;
sourceTree = "<group>";
};
94056DBD185BB0BC00EB94BA /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
94056DBE185BB0BC00EB94BA /* en */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
94056DC2185BB0BC00EB94BA /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.9;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = macosx;
};
name = Debug;
};
94056DC3185BB0BC00EB94BA /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.9;
SDKROOT = macosx;
};
name = Release;
};
94056DC5185BB0BC00EB94BA /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
COMBINE_HIDPI_IMAGES = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "EZAudioOpenGLWaveformExample/EZAudioOpenGLWaveformExample-Prefix.pch";
INFOPLIST_FILE = "EZAudioOpenGLWaveformExample/EZAudioOpenGLWaveformExample-Info.plist";
PRODUCT_NAME = "$(TARGET_NAME)";
WRAPPER_EXTENSION = app;
};
name = Debug;
};
94056DC6185BB0BC00EB94BA /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
COMBINE_HIDPI_IMAGES = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "EZAudioOpenGLWaveformExample/EZAudioOpenGLWaveformExample-Prefix.pch";
INFOPLIST_FILE = "EZAudioOpenGLWaveformExample/EZAudioOpenGLWaveformExample-Info.plist";
PRODUCT_NAME = "$(TARGET_NAME)";
WRAPPER_EXTENSION = app;
};
name = Release;
};
94056DC8185BB0BC00EB94BA /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/EZAudioOpenGLWaveformExample.app/Contents/MacOS/EZAudioOpenGLWaveformExample";
COMBINE_HIDPI_IMAGES = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(DEVELOPER_FRAMEWORKS_DIR)",
"$(inherited)",
);
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "EZAudioOpenGLWaveformExample/EZAudioOpenGLWaveformExample-Prefix.pch";
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
INFOPLIST_FILE = "EZAudioOpenGLWaveformExampleTests/EZAudioOpenGLWaveformExampleTests-Info.plist";
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUNDLE_LOADER)";
WRAPPER_EXTENSION = xctest;
};
name = Debug;
};
94056DC9185BB0BC00EB94BA /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/EZAudioOpenGLWaveformExample.app/Contents/MacOS/EZAudioOpenGLWaveformExample";
COMBINE_HIDPI_IMAGES = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(DEVELOPER_FRAMEWORKS_DIR)",
"$(inherited)",
);
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "EZAudioOpenGLWaveformExample/EZAudioOpenGLWaveformExample-Prefix.pch";
INFOPLIST_FILE = "EZAudioOpenGLWaveformExampleTests/EZAudioOpenGLWaveformExampleTests-Info.plist";
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUNDLE_LOADER)";
WRAPPER_EXTENSION = xctest;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
94056D8E185BB0BC00EB94BA /* Build configuration list for PBXProject "EZAudioOpenGLWaveformExample" */ = {
isa = XCConfigurationList;
buildConfigurations = (
94056DC2185BB0BC00EB94BA /* Debug */,
94056DC3185BB0BC00EB94BA /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
94056DC4185BB0BC00EB94BA /* Build configuration list for PBXNativeTarget "EZAudioOpenGLWaveformExample" */ = {
isa = XCConfigurationList;
buildConfigurations = (
94056DC5185BB0BC00EB94BA /* Debug */,
94056DC6185BB0BC00EB94BA /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
94056DC7185BB0BC00EB94BA /* Build configuration list for PBXNativeTarget "EZAudioOpenGLWaveformExampleTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
94056DC8185BB0BC00EB94BA /* Debug */,
94056DC9185BB0BC00EB94BA /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 94056D8B185BB0BC00EB94BA /* Project object */;
}
@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:EZAudioOpenGLWaveformExample.xcodeproj">
</FileRef>
</Workspace>
@@ -1,39 +0,0 @@
//
// AppDelegate.h
// EZAudioOpenGLWaveformExample
//
// Created by Syed Haris Ali on 12/1/13.
// Copyright (c) 2013 Syed Haris Ali. All rights reserved.
//
// 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.
#import <Cocoa/Cocoa.h>
#import "OpenGLWaveformViewController.h"
@interface AppDelegate : NSObject <NSApplicationDelegate>
@property (assign) IBOutlet NSWindow *window;
/**
Create our OpenGLWaveformViewController
*/
@property (nonatomic,strong) OpenGLWaveformViewController *openGLWaveformViewController;
@end
@@ -1,43 +0,0 @@
//
// AppDelegate.m
// EZAudioOpenGLWaveformExample
//
// Created by Syed Haris Ali on 12/1/13.
// Copyright (c) 2013 Syed Haris Ali. All rights reserved.
//
// 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.
#import "AppDelegate.h"
@implementation AppDelegate
@synthesize openGLWaveformViewController;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
// Swap in our view controller in the window's content view
self.openGLWaveformViewController = [[OpenGLWaveformViewController alloc] init];
// Resize view controller to content view's current size
self.openGLWaveformViewController.view.frame = [self.window.contentView frame];
// Add resizing flags to make the view controller resize with the window
self.openGLWaveformViewController.view.autoresizingMask = (NSViewWidthSizable|NSViewHeightSizable);
// Add in the core graphics view controller as subview
[self.window.contentView addSubview:self.openGLWaveformViewController.view];
}
@end
@@ -1,9 +0,0 @@
//
// Prefix header
//
// The contents of this file are implicitly included at the beginning of every source file.
//
#ifdef __OBJC__
#import <Cocoa/Cocoa.h>
#endif
@@ -1,127 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="7706" systemVersion="14E46" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies>
<deployment version="1070" identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="7706"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="OpenGLWaveformViewController">
<connections>
<outlet property="audioPlot" destination="foT-nv-032" id="Baw-Le-z98"/>
<outlet property="microphoneInputChannelPopUpButton" destination="Usd-lp-n8s" id="FbQ-hj-24k"/>
<outlet property="microphoneInputPopUpButton" destination="wBG-jf-wVy" id="thS-Ur-IMj"/>
<outlet property="microphoneSwitch" destination="TbW-ha-PgJ" id="wEZ-dt-f7t"/>
<outlet property="view" destination="hFn-jA-9Se" id="cfu-I4-qhQ"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<customView id="hFn-jA-9Se">
<rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<subviews>
<customView translatesAutoresizingMaskIntoConstraints="NO" id="foT-nv-032" customClass="EZAudioPlotGL">
<rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
<subviews>
<button translatesAutoresizingMaskIntoConstraints="NO" id="TbW-ha-PgJ">
<rect key="frame" x="339" y="47" width="123" height="18"/>
<constraints>
<constraint firstAttribute="width" constant="119" id="xPL-Un-c5O"/>
</constraints>
<buttonCell key="cell" type="check" title="Microphone On" bezelStyle="regularSquare" imagePosition="right" state="on" inset="2" id="DaM-FV-gba">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="toggleMicrophone:" target="-2" id="Zb5-tE-lf2"/>
</connections>
</button>
<segmentedControl verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="UPI-59-15v">
<rect key="frame" x="335" y="18" width="127" height="24"/>
<segmentedCell key="cell" borderStyle="border" alignment="left" style="rounded" trackingMode="selectOne" id="VRd-fb-9nH">
<font key="font" metaFont="system"/>
<segments>
<segment label="Buffer" selected="YES"/>
<segment label="Rolling" tag="1"/>
</segments>
</segmentedCell>
<connections>
<action selector="changePlotType:" target="-2" id="BMJ-vA-3ce"/>
</connections>
</segmentedControl>
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="wBG-jf-wVy" userLabel="microphoneInputPopUpButton">
<rect key="frame" x="18" y="17" width="180" height="26"/>
<constraints>
<constraint firstAttribute="width" constant="175" id="aMw-9p-rHt"/>
</constraints>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="cAL-rs-h1w" id="H5k-ea-wV5">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
<menu key="menu" id="15c-sS-jR2">
<items>
<menuItem title="Item 1" state="on" id="cAL-rs-h1w"/>
<menuItem title="Item 2" id="LTz-i3-N0M"/>
<menuItem title="Item 3" id="twD-3N-rcl"/>
</items>
</menu>
</popUpButtonCell>
</popUpButton>
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Usd-lp-n8s" userLabel="microphoneInputChannelPopUpButton">
<rect key="frame" x="204" y="17" width="79" height="26"/>
<constraints>
<constraint firstAttribute="width" constant="74" id="oDB-ke-aGz"/>
</constraints>
<popUpButtonCell key="cell" type="push" title="1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="Oit-zz-O9w" id="Eyb-QQ-0bg">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
<menu key="menu" id="IPB-NH-My1">
<items>
<menuItem title="1" state="on" id="Oit-zz-O9w"/>
<menuItem title="Item 2" id="v3y-Nn-80j"/>
<menuItem title="Item 3" id="IHk-VR-fPC"/>
</items>
</menu>
</popUpButtonCell>
</popUpButton>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="AuX-d2-dD9">
<rect key="frame" x="18" y="46" width="36" height="17"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Input" id="Fq3-tX-8aU">
<font key="font" metaFont="system"/>
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="PMV-Zt-Wg6">
<rect key="frame" x="204" y="46" width="55" height="17"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Channel" id="PTE-g2-mTV">
<font key="font" metaFont="system"/>
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</subviews>
<constraints>
<constraint firstItem="AuX-d2-dD9" firstAttribute="leading" secondItem="foT-nv-032" secondAttribute="leading" constant="20" id="251-JP-6Sa"/>
<constraint firstItem="PMV-Zt-Wg6" firstAttribute="leading" secondItem="AuX-d2-dD9" secondAttribute="trailing" constant="154" id="2EP-1U-pH4"/>
<constraint firstAttribute="bottom" secondItem="wBG-jf-wVy" secondAttribute="bottom" constant="20" id="3kE-rV-Xyk"/>
<constraint firstItem="wBG-jf-wVy" firstAttribute="leading" secondItem="foT-nv-032" secondAttribute="leading" constant="20" id="5BJ-zk-KIK"/>
<constraint firstItem="wBG-jf-wVy" firstAttribute="top" secondItem="AuX-d2-dD9" secondAttribute="bottom" constant="5" id="GPm-pn-f3f"/>
<constraint firstAttribute="bottom" secondItem="UPI-59-15v" secondAttribute="bottom" constant="20" id="NIO-kU-qxG"/>
<constraint firstItem="UPI-59-15v" firstAttribute="top" secondItem="TbW-ha-PgJ" secondAttribute="bottom" constant="8" id="TZN-2g-Vnf"/>
<constraint firstAttribute="trailing" secondItem="TbW-ha-PgJ" secondAttribute="trailing" constant="20" id="mg0-av-TaM"/>
<constraint firstItem="Usd-lp-n8s" firstAttribute="top" secondItem="PMV-Zt-Wg6" secondAttribute="bottom" constant="5" id="nD0-WN-DIk"/>
<constraint firstAttribute="trailing" secondItem="UPI-59-15v" secondAttribute="trailing" constant="20" id="rW1-1W-2K8"/>
<constraint firstItem="Usd-lp-n8s" firstAttribute="leading" secondItem="wBG-jf-wVy" secondAttribute="trailing" constant="11" id="uWS-Ht-6JY"/>
<constraint firstAttribute="bottom" secondItem="Usd-lp-n8s" secondAttribute="bottom" constant="20" id="yZL-HJ-0px"/>
</constraints>
</customView>
</subviews>
<constraints>
<constraint firstAttribute="trailing" secondItem="foT-nv-032" secondAttribute="trailing" id="4QC-HO-oMa"/>
<constraint firstItem="foT-nv-032" firstAttribute="top" secondItem="hFn-jA-9Se" secondAttribute="top" id="5zo-Yc-OKX"/>
<constraint firstAttribute="bottom" secondItem="foT-nv-032" secondAttribute="bottom" id="VKs-UL-eU4"/>
<constraint firstItem="foT-nv-032" firstAttribute="leading" secondItem="hFn-jA-9Se" secondAttribute="leading" id="o4A-j4-xiR"/>
</constraints>
</customView>
</objects>
</document>
@@ -1,29 +0,0 @@
{\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;}
{\colortbl;\red255\green255\blue255;}
\paperw9840\paperh8400
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
\f0\b\fs24 \cf0 Engineering:
\b0 \
Some people\
\
\b Human Interface Design:
\b0 \
Some other people\
\
\b Testing:
\b0 \
Hopefully not nobody\
\
\b Documentation:
\b0 \
Whoever\
\
\b With special thanks to:
\b0 \
Mom\
}
@@ -1,2 +0,0 @@
/* Localized versions of Info.plist keys */
@@ -1,51 +0,0 @@
//
// EZAudioOpenGLWaveformExampleTests.m
// EZAudioOpenGLWaveformExampleTests
//
// Created by Syed Haris Ali on 12/1/13.
// Copyright (c) 2013 Syed Haris Ali. All rights reserved.
//
// 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.
#import <XCTest/XCTest.h>
@interface EZAudioOpenGLWaveformExampleTests : XCTestCase
@end
@implementation EZAudioOpenGLWaveformExampleTests
- (void)setUp
{
[super setUp];
// Put setup code here. This method is called before the invocation of each test method in the class.
}
- (void)tearDown
{
// Put teardown code here. This method is called after the invocation of each test method in the class.
[super tearDown];
}
- (void)testExample
{
XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__);
}
@end
@@ -1,2 +0,0 @@
/* Localized versions of Info.plist keys */
@@ -1,630 +0,0 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
66755B4E1B3B79310013E67E /* EZAudio.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755B2B1B3B79310013E67E /* EZAudio.m */; };
66755B4F1B3B79310013E67E /* EZAudioDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755B2D1B3B79310013E67E /* EZAudioDevice.m */; };
66755B501B3B79310013E67E /* EZAudioDisplayLink.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755B2F1B3B79310013E67E /* EZAudioDisplayLink.m */; };
66755B511B3B79310013E67E /* EZAudioFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755B311B3B79310013E67E /* EZAudioFile.m */; };
66755B521B3B79310013E67E /* EZAudioFloatConverter.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755B331B3B79310013E67E /* EZAudioFloatConverter.m */; };
66755B531B3B79310013E67E /* EZAudioFloatData.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755B351B3B79310013E67E /* EZAudioFloatData.m */; };
66755B541B3B79310013E67E /* EZAudioPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755B371B3B79310013E67E /* EZAudioPlayer.m */; };
66755B551B3B79310013E67E /* EZAudioPlot.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755B391B3B79310013E67E /* EZAudioPlot.m */; };
66755B561B3B79310013E67E /* EZAudioPlotGL.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755B3B1B3B79310013E67E /* EZAudioPlotGL.m */; };
66755B581B3B79310013E67E /* EZAudioUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755B3F1B3B79310013E67E /* EZAudioUtilities.m */; };
66755B591B3B79310013E67E /* EZMicrophone.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755B411B3B79310013E67E /* EZMicrophone.m */; };
66755B5A1B3B79310013E67E /* EZOutput.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755B431B3B79310013E67E /* EZOutput.m */; };
66755B5B1B3B79310013E67E /* EZPlot.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755B451B3B79310013E67E /* EZPlot.m */; };
66755B5C1B3B79310013E67E /* EZRecorder.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755B471B3B79310013E67E /* EZRecorder.m */; };
66755B5D1B3B79310013E67E /* TPCircularBuffer.c in Sources */ = {isa = PBXBuildFile; fileRef = 66755B481B3B79310013E67E /* TPCircularBuffer.c */; };
66755B5E1B3B79310013E67E /* CHANGELOG in Resources */ = {isa = PBXBuildFile; fileRef = 66755B4B1B3B79310013E67E /* CHANGELOG */; };
66755B5F1B3B79310013E67E /* VERSION in Resources */ = {isa = PBXBuildFile; fileRef = 66755B4C1B3B79310013E67E /* VERSION */; };
941D71B81864C457007D52D8 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 941D71B71864C457007D52D8 /* Cocoa.framework */; };
941D71C21864C457007D52D8 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 941D71C01864C457007D52D8 /* InfoPlist.strings */; };
941D71C41864C457007D52D8 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 941D71C31864C457007D52D8 /* main.m */; };
941D71C81864C457007D52D8 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 941D71C61864C457007D52D8 /* Credits.rtf */; };
941D71CB1864C457007D52D8 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 941D71CA1864C457007D52D8 /* AppDelegate.m */; };
941D71CE1864C457007D52D8 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 941D71CC1864C457007D52D8 /* MainMenu.xib */; };
941D71D01864C457007D52D8 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 941D71CF1864C457007D52D8 /* Images.xcassets */; };
941D71D71864C457007D52D8 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 941D71D61864C457007D52D8 /* XCTest.framework */; };
941D71D81864C457007D52D8 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 941D71B71864C457007D52D8 /* Cocoa.framework */; };
941D71E01864C457007D52D8 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 941D71DE1864C457007D52D8 /* InfoPlist.strings */; };
941D71E21864C457007D52D8 /* EZAudioPassThroughExampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 941D71E11864C457007D52D8 /* EZAudioPassThroughExampleTests.m */; };
941D72151864C4A0007D52D8 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 941D72121864C4A0007D52D8 /* AudioToolbox.framework */; };
941D72161864C4A0007D52D8 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 941D72131864C4A0007D52D8 /* AudioUnit.framework */; };
941D72171864C4A0007D52D8 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 941D72141864C4A0007D52D8 /* CoreAudio.framework */; };
941D721A1864C4AD007D52D8 /* GLKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 941D72181864C4AD007D52D8 /* GLKit.framework */; };
941D721B1864C4AD007D52D8 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 941D72191864C4AD007D52D8 /* OpenGL.framework */; };
941D721D1864C4C0007D52D8 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 941D721C1864C4C0007D52D8 /* QuartzCore.framework */; };
941D72211864C4D7007D52D8 /* PassThroughViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 941D721F1864C4D7007D52D8 /* PassThroughViewController.m */; };
941D72221864C4D7007D52D8 /* PassThroughViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 941D72201864C4D7007D52D8 /* PassThroughViewController.xib */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
941D71D91864C457007D52D8 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 941D71AC1864C456007D52D8 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 941D71B31864C457007D52D8;
remoteInfo = EZAudioPassThroughExample;
};
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
66755B2A1B3B79310013E67E /* EZAudio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudio.h; sourceTree = "<group>"; };
66755B2B1B3B79310013E67E /* EZAudio.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudio.m; sourceTree = "<group>"; };
66755B2C1B3B79310013E67E /* EZAudioDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioDevice.h; sourceTree = "<group>"; };
66755B2D1B3B79310013E67E /* EZAudioDevice.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioDevice.m; sourceTree = "<group>"; };
66755B2E1B3B79310013E67E /* EZAudioDisplayLink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioDisplayLink.h; sourceTree = "<group>"; };
66755B2F1B3B79310013E67E /* EZAudioDisplayLink.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioDisplayLink.m; sourceTree = "<group>"; };
66755B301B3B79310013E67E /* EZAudioFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioFile.h; sourceTree = "<group>"; };
66755B311B3B79310013E67E /* EZAudioFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioFile.m; sourceTree = "<group>"; };
66755B321B3B79310013E67E /* EZAudioFloatConverter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioFloatConverter.h; sourceTree = "<group>"; };
66755B331B3B79310013E67E /* EZAudioFloatConverter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioFloatConverter.m; sourceTree = "<group>"; };
66755B341B3B79310013E67E /* EZAudioFloatData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioFloatData.h; sourceTree = "<group>"; };
66755B351B3B79310013E67E /* EZAudioFloatData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioFloatData.m; sourceTree = "<group>"; };
66755B361B3B79310013E67E /* EZAudioPlayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioPlayer.h; sourceTree = "<group>"; };
66755B371B3B79310013E67E /* EZAudioPlayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioPlayer.m; sourceTree = "<group>"; };
66755B381B3B79310013E67E /* EZAudioPlot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioPlot.h; sourceTree = "<group>"; };
66755B391B3B79310013E67E /* EZAudioPlot.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioPlot.m; sourceTree = "<group>"; };
66755B3A1B3B79310013E67E /* EZAudioPlotGL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioPlotGL.h; sourceTree = "<group>"; };
66755B3B1B3B79310013E67E /* EZAudioPlotGL.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioPlotGL.m; sourceTree = "<group>"; };
66755B3E1B3B79310013E67E /* EZAudioUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioUtilities.h; sourceTree = "<group>"; };
66755B3F1B3B79310013E67E /* EZAudioUtilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioUtilities.m; sourceTree = "<group>"; };
66755B401B3B79310013E67E /* EZMicrophone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZMicrophone.h; sourceTree = "<group>"; };
66755B411B3B79310013E67E /* EZMicrophone.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZMicrophone.m; sourceTree = "<group>"; };
66755B421B3B79310013E67E /* EZOutput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZOutput.h; sourceTree = "<group>"; };
66755B431B3B79310013E67E /* EZOutput.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZOutput.m; sourceTree = "<group>"; };
66755B441B3B79310013E67E /* EZPlot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZPlot.h; sourceTree = "<group>"; };
66755B451B3B79310013E67E /* EZPlot.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZPlot.m; sourceTree = "<group>"; };
66755B461B3B79310013E67E /* EZRecorder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZRecorder.h; sourceTree = "<group>"; };
66755B471B3B79310013E67E /* EZRecorder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZRecorder.m; sourceTree = "<group>"; };
66755B481B3B79310013E67E /* TPCircularBuffer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = TPCircularBuffer.c; sourceTree = "<group>"; };
66755B491B3B79310013E67E /* TPCircularBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TPCircularBuffer.h; sourceTree = "<group>"; };
66755B4B1B3B79310013E67E /* CHANGELOG */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CHANGELOG; sourceTree = "<group>"; };
66755B4C1B3B79310013E67E /* VERSION */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = VERSION; sourceTree = "<group>"; };
941D71B41864C457007D52D8 /* EZAudioPassThroughExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = EZAudioPassThroughExample.app; sourceTree = BUILT_PRODUCTS_DIR; };
941D71B71864C457007D52D8 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
941D71BA1864C457007D52D8 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
941D71BB1864C457007D52D8 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; };
941D71BC1864C457007D52D8 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
941D71BF1864C457007D52D8 /* EZAudioPassThroughExample-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "EZAudioPassThroughExample-Info.plist"; sourceTree = "<group>"; };
941D71C11864C457007D52D8 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
941D71C31864C457007D52D8 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
941D71C51864C457007D52D8 /* EZAudioPassThroughExample-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "EZAudioPassThroughExample-Prefix.pch"; sourceTree = "<group>"; };
941D71C71864C457007D52D8 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = "<group>"; };
941D71C91864C457007D52D8 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = EZAudioPassThroughExample/AppDelegate.h; sourceTree = SOURCE_ROOT; };
941D71CA1864C457007D52D8 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
941D71CD1864C457007D52D8 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
941D71CF1864C457007D52D8 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
941D71D51864C457007D52D8 /* EZAudioPassThroughExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = EZAudioPassThroughExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
941D71D61864C457007D52D8 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
941D71DD1864C457007D52D8 /* EZAudioPassThroughExampleTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "EZAudioPassThroughExampleTests-Info.plist"; sourceTree = "<group>"; };
941D71DF1864C457007D52D8 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
941D71E11864C457007D52D8 /* EZAudioPassThroughExampleTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = EZAudioPassThroughExampleTests.m; sourceTree = "<group>"; };
941D72121864C4A0007D52D8 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
941D72131864C4A0007D52D8 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; };
941D72141864C4A0007D52D8 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; };
941D72181864C4AD007D52D8 /* GLKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLKit.framework; path = System/Library/Frameworks/GLKit.framework; sourceTree = SDKROOT; };
941D72191864C4AD007D52D8 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; };
941D721C1864C4C0007D52D8 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
941D721E1864C4D7007D52D8 /* PassThroughViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PassThroughViewController.h; sourceTree = "<group>"; };
941D721F1864C4D7007D52D8 /* PassThroughViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PassThroughViewController.m; sourceTree = "<group>"; };
941D72201864C4D7007D52D8 /* PassThroughViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PassThroughViewController.xib; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
941D71B11864C457007D52D8 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
941D721D1864C4C0007D52D8 /* QuartzCore.framework in Frameworks */,
941D721A1864C4AD007D52D8 /* GLKit.framework in Frameworks */,
941D721B1864C4AD007D52D8 /* OpenGL.framework in Frameworks */,
941D72151864C4A0007D52D8 /* AudioToolbox.framework in Frameworks */,
941D72161864C4A0007D52D8 /* AudioUnit.framework in Frameworks */,
941D72171864C4A0007D52D8 /* CoreAudio.framework in Frameworks */,
941D71B81864C457007D52D8 /* Cocoa.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
941D71D21864C457007D52D8 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
941D71D81864C457007D52D8 /* Cocoa.framework in Frameworks */,
941D71D71864C457007D52D8 /* XCTest.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
66755B271B3B79310013E67E /* EZAudio */ = {
isa = PBXGroup;
children = (
66755B2A1B3B79310013E67E /* EZAudio.h */,
66755B2B1B3B79310013E67E /* EZAudio.m */,
66755B2C1B3B79310013E67E /* EZAudioDevice.h */,
66755B2D1B3B79310013E67E /* EZAudioDevice.m */,
66755B2E1B3B79310013E67E /* EZAudioDisplayLink.h */,
66755B2F1B3B79310013E67E /* EZAudioDisplayLink.m */,
66755B301B3B79310013E67E /* EZAudioFile.h */,
66755B311B3B79310013E67E /* EZAudioFile.m */,
66755B321B3B79310013E67E /* EZAudioFloatConverter.h */,
66755B331B3B79310013E67E /* EZAudioFloatConverter.m */,
66755B341B3B79310013E67E /* EZAudioFloatData.h */,
66755B351B3B79310013E67E /* EZAudioFloatData.m */,
66755B361B3B79310013E67E /* EZAudioPlayer.h */,
66755B371B3B79310013E67E /* EZAudioPlayer.m */,
66755B381B3B79310013E67E /* EZAudioPlot.h */,
66755B391B3B79310013E67E /* EZAudioPlot.m */,
66755B3A1B3B79310013E67E /* EZAudioPlotGL.h */,
66755B3B1B3B79310013E67E /* EZAudioPlotGL.m */,
66755B3E1B3B79310013E67E /* EZAudioUtilities.h */,
66755B3F1B3B79310013E67E /* EZAudioUtilities.m */,
66755B401B3B79310013E67E /* EZMicrophone.h */,
66755B411B3B79310013E67E /* EZMicrophone.m */,
66755B421B3B79310013E67E /* EZOutput.h */,
66755B431B3B79310013E67E /* EZOutput.m */,
66755B441B3B79310013E67E /* EZPlot.h */,
66755B451B3B79310013E67E /* EZPlot.m */,
66755B461B3B79310013E67E /* EZRecorder.h */,
66755B471B3B79310013E67E /* EZRecorder.m */,
66755B481B3B79310013E67E /* TPCircularBuffer.c */,
66755B491B3B79310013E67E /* TPCircularBuffer.h */,
66755B4A1B3B79310013E67E /* VERSION */,
);
name = EZAudio;
path = ../../../../EZAudio;
sourceTree = "<group>";
};
66755B4A1B3B79310013E67E /* VERSION */ = {
isa = PBXGroup;
children = (
66755B4B1B3B79310013E67E /* CHANGELOG */,
66755B4C1B3B79310013E67E /* VERSION */,
);
path = VERSION;
sourceTree = "<group>";
};
941D71AB1864C456007D52D8 = {
isa = PBXGroup;
children = (
941D71BD1864C457007D52D8 /* EZAudioPassThroughExample */,
941D71DB1864C457007D52D8 /* EZAudioPassThroughExampleTests */,
941D71B61864C457007D52D8 /* Frameworks */,
941D71B51864C457007D52D8 /* Products */,
);
sourceTree = "<group>";
};
941D71B51864C457007D52D8 /* Products */ = {
isa = PBXGroup;
children = (
941D71B41864C457007D52D8 /* EZAudioPassThroughExample.app */,
941D71D51864C457007D52D8 /* EZAudioPassThroughExampleTests.xctest */,
);
name = Products;
sourceTree = "<group>";
};
941D71B61864C457007D52D8 /* Frameworks */ = {
isa = PBXGroup;
children = (
941D721C1864C4C0007D52D8 /* QuartzCore.framework */,
941D72181864C4AD007D52D8 /* GLKit.framework */,
941D72191864C4AD007D52D8 /* OpenGL.framework */,
941D72121864C4A0007D52D8 /* AudioToolbox.framework */,
941D72131864C4A0007D52D8 /* AudioUnit.framework */,
941D72141864C4A0007D52D8 /* CoreAudio.framework */,
941D71B71864C457007D52D8 /* Cocoa.framework */,
941D71D61864C457007D52D8 /* XCTest.framework */,
941D71B91864C457007D52D8 /* Other Frameworks */,
);
name = Frameworks;
sourceTree = "<group>";
};
941D71B91864C457007D52D8 /* Other Frameworks */ = {
isa = PBXGroup;
children = (
941D71BA1864C457007D52D8 /* AppKit.framework */,
941D71BB1864C457007D52D8 /* CoreData.framework */,
941D71BC1864C457007D52D8 /* Foundation.framework */,
);
name = "Other Frameworks";
sourceTree = "<group>";
};
941D71BD1864C457007D52D8 /* EZAudioPassThroughExample */ = {
isa = PBXGroup;
children = (
66755B271B3B79310013E67E /* EZAudio */,
941D71C91864C457007D52D8 /* AppDelegate.h */,
941D71CA1864C457007D52D8 /* AppDelegate.m */,
941D721E1864C4D7007D52D8 /* PassThroughViewController.h */,
941D721F1864C4D7007D52D8 /* PassThroughViewController.m */,
941D72201864C4D7007D52D8 /* PassThroughViewController.xib */,
941D71CC1864C457007D52D8 /* MainMenu.xib */,
941D71CF1864C457007D52D8 /* Images.xcassets */,
941D71BE1864C457007D52D8 /* Supporting Files */,
);
path = EZAudioPassThroughExample;
sourceTree = "<group>";
};
941D71BE1864C457007D52D8 /* Supporting Files */ = {
isa = PBXGroup;
children = (
941D71BF1864C457007D52D8 /* EZAudioPassThroughExample-Info.plist */,
941D71C01864C457007D52D8 /* InfoPlist.strings */,
941D71C31864C457007D52D8 /* main.m */,
941D71C51864C457007D52D8 /* EZAudioPassThroughExample-Prefix.pch */,
941D71C61864C457007D52D8 /* Credits.rtf */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
941D71DB1864C457007D52D8 /* EZAudioPassThroughExampleTests */ = {
isa = PBXGroup;
children = (
941D71E11864C457007D52D8 /* EZAudioPassThroughExampleTests.m */,
941D71DC1864C457007D52D8 /* Supporting Files */,
);
path = EZAudioPassThroughExampleTests;
sourceTree = "<group>";
};
941D71DC1864C457007D52D8 /* Supporting Files */ = {
isa = PBXGroup;
children = (
941D71DD1864C457007D52D8 /* EZAudioPassThroughExampleTests-Info.plist */,
941D71DE1864C457007D52D8 /* InfoPlist.strings */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
941D71B31864C457007D52D8 /* EZAudioPassThroughExample */ = {
isa = PBXNativeTarget;
buildConfigurationList = 941D71E51864C457007D52D8 /* Build configuration list for PBXNativeTarget "EZAudioPassThroughExample" */;
buildPhases = (
941D71B01864C457007D52D8 /* Sources */,
941D71B11864C457007D52D8 /* Frameworks */,
941D71B21864C457007D52D8 /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = EZAudioPassThroughExample;
productName = EZAudioPassThroughExample;
productReference = 941D71B41864C457007D52D8 /* EZAudioPassThroughExample.app */;
productType = "com.apple.product-type.application";
};
941D71D41864C457007D52D8 /* EZAudioPassThroughExampleTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 941D71E81864C457007D52D8 /* Build configuration list for PBXNativeTarget "EZAudioPassThroughExampleTests" */;
buildPhases = (
941D71D11864C457007D52D8 /* Sources */,
941D71D21864C457007D52D8 /* Frameworks */,
941D71D31864C457007D52D8 /* Resources */,
);
buildRules = (
);
dependencies = (
941D71DA1864C457007D52D8 /* PBXTargetDependency */,
);
name = EZAudioPassThroughExampleTests;
productName = EZAudioPassThroughExampleTests;
productReference = 941D71D51864C457007D52D8 /* EZAudioPassThroughExampleTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
941D71AC1864C456007D52D8 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0500;
ORGANIZATIONNAME = "Syed Haris Ali";
TargetAttributes = {
941D71D41864C457007D52D8 = {
TestTargetID = 941D71B31864C457007D52D8;
};
};
};
buildConfigurationList = 941D71AF1864C456007D52D8 /* Build configuration list for PBXProject "EZAudioPassThroughExample" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = 941D71AB1864C456007D52D8;
productRefGroup = 941D71B51864C457007D52D8 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
941D71B31864C457007D52D8 /* EZAudioPassThroughExample */,
941D71D41864C457007D52D8 /* EZAudioPassThroughExampleTests */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
941D71B21864C457007D52D8 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
941D72221864C4D7007D52D8 /* PassThroughViewController.xib in Resources */,
66755B5F1B3B79310013E67E /* VERSION in Resources */,
941D71C21864C457007D52D8 /* InfoPlist.strings in Resources */,
941D71D01864C457007D52D8 /* Images.xcassets in Resources */,
941D71C81864C457007D52D8 /* Credits.rtf in Resources */,
941D71CE1864C457007D52D8 /* MainMenu.xib in Resources */,
66755B5E1B3B79310013E67E /* CHANGELOG in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
941D71D31864C457007D52D8 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
941D71E01864C457007D52D8 /* InfoPlist.strings in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
941D71B01864C457007D52D8 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
66755B551B3B79310013E67E /* EZAudioPlot.m in Sources */,
66755B541B3B79310013E67E /* EZAudioPlayer.m in Sources */,
941D72211864C4D7007D52D8 /* PassThroughViewController.m in Sources */,
66755B561B3B79310013E67E /* EZAudioPlotGL.m in Sources */,
66755B511B3B79310013E67E /* EZAudioFile.m in Sources */,
66755B5A1B3B79310013E67E /* EZOutput.m in Sources */,
66755B581B3B79310013E67E /* EZAudioUtilities.m in Sources */,
66755B5B1B3B79310013E67E /* EZPlot.m in Sources */,
941D71CB1864C457007D52D8 /* AppDelegate.m in Sources */,
66755B5C1B3B79310013E67E /* EZRecorder.m in Sources */,
66755B531B3B79310013E67E /* EZAudioFloatData.m in Sources */,
66755B521B3B79310013E67E /* EZAudioFloatConverter.m in Sources */,
66755B501B3B79310013E67E /* EZAudioDisplayLink.m in Sources */,
66755B591B3B79310013E67E /* EZMicrophone.m in Sources */,
66755B4F1B3B79310013E67E /* EZAudioDevice.m in Sources */,
941D71C41864C457007D52D8 /* main.m in Sources */,
66755B5D1B3B79310013E67E /* TPCircularBuffer.c in Sources */,
66755B4E1B3B79310013E67E /* EZAudio.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
941D71D11864C457007D52D8 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
941D71E21864C457007D52D8 /* EZAudioPassThroughExampleTests.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
941D71DA1864C457007D52D8 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 941D71B31864C457007D52D8 /* EZAudioPassThroughExample */;
targetProxy = 941D71D91864C457007D52D8 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
941D71C01864C457007D52D8 /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
941D71C11864C457007D52D8 /* en */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
};
941D71C61864C457007D52D8 /* Credits.rtf */ = {
isa = PBXVariantGroup;
children = (
941D71C71864C457007D52D8 /* en */,
);
name = Credits.rtf;
sourceTree = "<group>";
};
941D71CC1864C457007D52D8 /* MainMenu.xib */ = {
isa = PBXVariantGroup;
children = (
941D71CD1864C457007D52D8 /* Base */,
);
name = MainMenu.xib;
sourceTree = "<group>";
};
941D71DE1864C457007D52D8 /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
941D71DF1864C457007D52D8 /* en */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
941D71E31864C457007D52D8 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.9;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = macosx;
};
name = Debug;
};
941D71E41864C457007D52D8 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.9;
SDKROOT = macosx;
};
name = Release;
};
941D71E61864C457007D52D8 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
COMBINE_HIDPI_IMAGES = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "EZAudioPassThroughExample/EZAudioPassThroughExample-Prefix.pch";
INFOPLIST_FILE = "EZAudioPassThroughExample/EZAudioPassThroughExample-Info.plist";
PRODUCT_NAME = "$(TARGET_NAME)";
WRAPPER_EXTENSION = app;
};
name = Debug;
};
941D71E71864C457007D52D8 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
COMBINE_HIDPI_IMAGES = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "EZAudioPassThroughExample/EZAudioPassThroughExample-Prefix.pch";
INFOPLIST_FILE = "EZAudioPassThroughExample/EZAudioPassThroughExample-Info.plist";
PRODUCT_NAME = "$(TARGET_NAME)";
WRAPPER_EXTENSION = app;
};
name = Release;
};
941D71E91864C457007D52D8 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/EZAudioPassThroughExample.app/Contents/MacOS/EZAudioPassThroughExample";
COMBINE_HIDPI_IMAGES = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(DEVELOPER_FRAMEWORKS_DIR)",
"$(inherited)",
);
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "EZAudioPassThroughExample/EZAudioPassThroughExample-Prefix.pch";
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
INFOPLIST_FILE = "EZAudioPassThroughExampleTests/EZAudioPassThroughExampleTests-Info.plist";
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUNDLE_LOADER)";
WRAPPER_EXTENSION = xctest;
};
name = Debug;
};
941D71EA1864C457007D52D8 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/EZAudioPassThroughExample.app/Contents/MacOS/EZAudioPassThroughExample";
COMBINE_HIDPI_IMAGES = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(DEVELOPER_FRAMEWORKS_DIR)",
"$(inherited)",
);
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "EZAudioPassThroughExample/EZAudioPassThroughExample-Prefix.pch";
INFOPLIST_FILE = "EZAudioPassThroughExampleTests/EZAudioPassThroughExampleTests-Info.plist";
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUNDLE_LOADER)";
WRAPPER_EXTENSION = xctest;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
941D71AF1864C456007D52D8 /* Build configuration list for PBXProject "EZAudioPassThroughExample" */ = {
isa = XCConfigurationList;
buildConfigurations = (
941D71E31864C457007D52D8 /* Debug */,
941D71E41864C457007D52D8 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
941D71E51864C457007D52D8 /* Build configuration list for PBXNativeTarget "EZAudioPassThroughExample" */ = {
isa = XCConfigurationList;
buildConfigurations = (
941D71E61864C457007D52D8 /* Debug */,
941D71E71864C457007D52D8 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
941D71E81864C457007D52D8 /* Build configuration list for PBXNativeTarget "EZAudioPassThroughExampleTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
941D71E91864C457007D52D8 /* Debug */,
941D71EA1864C457007D52D8 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 941D71AC1864C456007D52D8 /* Project object */;
}
@@ -1,39 +0,0 @@
//
// AppDelegate.h
// EZAudioPassThroughExample
//
// Created by Syed Haris Ali on 12/20/13.
// Copyright (c) 2013 Syed Haris Ali. All rights reserved.
//
// 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.
#import <Cocoa/Cocoa.h>
#import "PassThroughViewController.h"
@interface AppDelegate : NSObject <NSApplicationDelegate>
@property (assign) IBOutlet NSWindow *window;
/**
The PassThroughViewController
*/
@property (nonatomic,strong) PassThroughViewController *passThroughViewController;
@end
@@ -1,45 +0,0 @@
//
// AppDelegate.m
// EZAudioPassThroughExample
//
// Created by Syed Haris Ali on 12/20/13.
// Copyright (c) 2013 Syed Haris Ali. All rights reserved.
//
// 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.
#import "AppDelegate.h"
@implementation AppDelegate
@synthesize passThroughViewController;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
// Swap in our view controller in the window's content view
self.passThroughViewController = [[PassThroughViewController alloc] init];
// Resize view controller to content view's current size
self.passThroughViewController.view.frame = [self.window.contentView frame];
// Add resizing flags to make the view controller resize with the window
self.passThroughViewController.view.autoresizingMask = (NSViewWidthSizable|NSViewHeightSizable);
// Add in the core graphics view controller as subview
[self.window.contentView addSubview:self.passThroughViewController.view];
}
@end
@@ -1,9 +0,0 @@
//
// Prefix header
//
// The contents of this file are implicitly included at the beginning of every source file.
//
#ifdef __OBJC__
#import <Cocoa/Cocoa.h>
#endif
@@ -1,89 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="7706" systemVersion="14E46" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies>
<deployment version="1070" identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="7706"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="PassThroughViewController">
<connections>
<outlet property="audioPlot" destination="szV-uu-KbA" id="KwB-bl-yeS"/>
<outlet property="microphoneSwitch" destination="hej-uQ-uG1" id="fhN-xl-LNP"/>
<outlet property="view" destination="1d9-8y-ung" id="BT4-Db-KNk"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<customView id="1d9-8y-ung">
<rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<subviews>
<customView translatesAutoresizingMaskIntoConstraints="NO" id="szV-uu-KbA" customClass="EZAudioPlotGL">
<rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
<subviews>
<box autoresizesSubviews="NO" title="Box" boxType="custom" borderType="none" translatesAutoresizingMaskIntoConstraints="NO" id="eSf-nW-gda">
<rect key="frame" x="0.0" y="0.0" width="480" height="57"/>
<view key="contentView">
<rect key="frame" x="0.0" y="0.0" width="480" height="57"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<button translatesAutoresizingMaskIntoConstraints="NO" id="hej-uQ-uG1">
<rect key="frame" x="16" y="16" width="119" height="18"/>
<constraints>
<constraint firstAttribute="height" constant="14" id="fd8-mW-5iG"/>
<constraint firstAttribute="width" constant="115" id="znu-AU-bWg"/>
</constraints>
<buttonCell key="cell" type="check" title="Microphone On" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="k97-dB-fHu">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="toggleMicrophone:" target="-2" id="ofz-vX-IjK"/>
</connections>
</button>
<segmentedControl verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="sPx-Eg-cI6">
<rect key="frame" x="335" y="16" width="129" height="24"/>
<constraints>
<constraint firstAttribute="width" constant="125" id="JlH-Js-Z1d"/>
<constraint firstAttribute="height" constant="21" id="hEY-sc-Ib0"/>
</constraints>
<segmentedCell key="cell" borderStyle="border" alignment="left" style="rounded" trackingMode="selectOne" id="q61-MR-tCv">
<font key="font" metaFont="system"/>
<segments>
<segment label="Buffer" selected="YES"/>
<segment label="Rolling" tag="1"/>
</segments>
</segmentedCell>
<connections>
<action selector="changePlotType:" target="-2" id="UVX-Mg-yXi"/>
</connections>
</segmentedControl>
</subviews>
</view>
<constraints>
<constraint firstAttribute="trailing" secondItem="sPx-Eg-cI6" secondAttribute="trailing" constant="18" id="3dz-EL-GYk"/>
<constraint firstItem="hej-uQ-uG1" firstAttribute="leading" secondItem="eSf-nW-gda" secondAttribute="leading" constant="18" id="QRY-A3-l3d"/>
<constraint firstItem="sPx-Eg-cI6" firstAttribute="centerY" secondItem="eSf-nW-gda" secondAttribute="centerY" id="ZiD-Mc-F6Z"/>
<constraint firstItem="sPx-Eg-cI6" firstAttribute="bottom" secondItem="hej-uQ-uG1" secondAttribute="bottom" id="kMA-Gc-Asn"/>
<constraint firstAttribute="height" constant="57" id="q54-Ma-rT2"/>
</constraints>
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
<color key="fillColor" red="0.0" green="0.0" blue="0.0" alpha="0.70000000000000007" colorSpace="calibratedRGB"/>
</box>
</subviews>
<constraints>
<constraint firstItem="eSf-nW-gda" firstAttribute="leading" secondItem="szV-uu-KbA" secondAttribute="leading" id="n5W-wG-XMz"/>
<constraint firstAttribute="bottom" secondItem="eSf-nW-gda" secondAttribute="bottom" id="ob1-us-1L5"/>
<constraint firstAttribute="trailing" secondItem="eSf-nW-gda" secondAttribute="trailing" id="pGc-Rn-8IL"/>
</constraints>
</customView>
</subviews>
<constraints>
<constraint firstAttribute="bottom" secondItem="szV-uu-KbA" secondAttribute="bottom" id="8NU-Oj-lK1"/>
<constraint firstAttribute="trailing" secondItem="szV-uu-KbA" secondAttribute="trailing" id="AVW-CO-N2Q"/>
<constraint firstItem="szV-uu-KbA" firstAttribute="top" secondItem="1d9-8y-ung" secondAttribute="top" id="DM4-bU-zuP"/>
<constraint firstItem="szV-uu-KbA" firstAttribute="leading" secondItem="1d9-8y-ung" secondAttribute="leading" id="Qkq-oi-gx2"/>
</constraints>
</customView>
</objects>
</document>
@@ -1,29 +0,0 @@
{\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;}
{\colortbl;\red255\green255\blue255;}
\paperw9840\paperh8400
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
\f0\b\fs24 \cf0 Engineering:
\b0 \
Some people\
\
\b Human Interface Design:
\b0 \
Some other people\
\
\b Testing:
\b0 \
Hopefully not nobody\
\
\b Documentation:
\b0 \
Whoever\
\
\b With special thanks to:
\b0 \
Mom\
}
@@ -1,2 +0,0 @@
/* Localized versions of Info.plist keys */
@@ -1,14 +0,0 @@
//
// main.m
// EZAudioPassThroughExample
//
// Created by Syed Haris Ali on 12/20/13.
// Copyright (c) 2013 Syed Haris Ali. All rights reserved.
//
#import <Cocoa/Cocoa.h>
int main(int argc, const char * argv[])
{
return NSApplicationMain(argc, argv);
}
@@ -1,22 +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>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIdentifier</key>
<string>com.sha.${PRODUCT_NAME:rfc1034identifier}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
</dict>
</plist>
@@ -1,34 +0,0 @@
//
// EZAudioPassThroughExampleTests.m
// EZAudioPassThroughExampleTests
//
// Created by Syed Haris Ali on 12/20/13.
// Copyright (c) 2013 Syed Haris Ali. All rights reserved.
//
#import <XCTest/XCTest.h>
@interface EZAudioPassThroughExampleTests : XCTestCase
@end
@implementation EZAudioPassThroughExampleTests
- (void)setUp
{
[super setUp];
// Put setup code here. This method is called before the invocation of each test method in the class.
}
- (void)tearDown
{
// Put teardown code here. This method is called after the invocation of each test method in the class.
[super tearDown];
}
- (void)testExample
{
XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__);
}
@end
@@ -1,2 +0,0 @@
/* Localized versions of Info.plist keys */
@@ -1,634 +0,0 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
6628E2351B3A121A00020E56 /* simple-drum-beat.wav in Resources */ = {isa = PBXBuildFile; fileRef = 6628E2341B3A121A00020E56 /* simple-drum-beat.wav */; };
66755AA31B3B791C0013E67E /* EZAudio.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A801B3B791C0013E67E /* EZAudio.m */; };
66755AA41B3B791C0013E67E /* EZAudioDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A821B3B791C0013E67E /* EZAudioDevice.m */; };
66755AA51B3B791C0013E67E /* EZAudioDisplayLink.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A841B3B791C0013E67E /* EZAudioDisplayLink.m */; };
66755AA61B3B791C0013E67E /* EZAudioFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A861B3B791C0013E67E /* EZAudioFile.m */; };
66755AA71B3B791C0013E67E /* EZAudioFloatConverter.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A881B3B791C0013E67E /* EZAudioFloatConverter.m */; };
66755AA81B3B791C0013E67E /* EZAudioFloatData.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A8A1B3B791C0013E67E /* EZAudioFloatData.m */; };
66755AA91B3B791C0013E67E /* EZAudioPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A8C1B3B791C0013E67E /* EZAudioPlayer.m */; };
66755AAA1B3B791C0013E67E /* EZAudioPlot.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A8E1B3B791C0013E67E /* EZAudioPlot.m */; };
66755AAB1B3B791C0013E67E /* EZAudioPlotGL.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A901B3B791C0013E67E /* EZAudioPlotGL.m */; };
66755AAD1B3B791C0013E67E /* EZAudioUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A941B3B791C0013E67E /* EZAudioUtilities.m */; };
66755AAE1B3B791C0013E67E /* EZMicrophone.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A961B3B791C0013E67E /* EZMicrophone.m */; };
66755AAF1B3B791C0013E67E /* EZOutput.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A981B3B791C0013E67E /* EZOutput.m */; };
66755AB01B3B791C0013E67E /* EZPlot.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A9A1B3B791C0013E67E /* EZPlot.m */; };
66755AB11B3B791C0013E67E /* EZRecorder.m in Sources */ = {isa = PBXBuildFile; fileRef = 66755A9C1B3B791C0013E67E /* EZRecorder.m */; };
66755AB21B3B791C0013E67E /* TPCircularBuffer.c in Sources */ = {isa = PBXBuildFile; fileRef = 66755A9D1B3B791C0013E67E /* TPCircularBuffer.c */; };
66755AB31B3B791C0013E67E /* CHANGELOG in Resources */ = {isa = PBXBuildFile; fileRef = 66755AA01B3B791C0013E67E /* CHANGELOG */; };
66755AB41B3B791C0013E67E /* VERSION in Resources */ = {isa = PBXBuildFile; fileRef = 66755AA11B3B791C0013E67E /* VERSION */; };
94056EFB185BD83400EB94BA /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94056EFA185BD83400EB94BA /* Cocoa.framework */; };
94056F05185BD83400EB94BA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 94056F03185BD83400EB94BA /* InfoPlist.strings */; };
94056F07185BD83400EB94BA /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 94056F06185BD83400EB94BA /* main.m */; };
94056F0B185BD83400EB94BA /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 94056F09185BD83400EB94BA /* Credits.rtf */; };
94056F0E185BD83400EB94BA /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 94056F0D185BD83400EB94BA /* AppDelegate.m */; };
94056F11185BD83400EB94BA /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 94056F0F185BD83400EB94BA /* MainMenu.xib */; };
94056F13185BD83400EB94BA /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 94056F12185BD83400EB94BA /* Images.xcassets */; };
94056F1A185BD83400EB94BA /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94056F19185BD83400EB94BA /* XCTest.framework */; };
94056F1B185BD83400EB94BA /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94056EFA185BD83400EB94BA /* Cocoa.framework */; };
94056F23185BD83400EB94BA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 94056F21185BD83400EB94BA /* InfoPlist.strings */; };
94056F25185BD83400EB94BA /* EZAudioPlayFileExampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 94056F24185BD83400EB94BA /* EZAudioPlayFileExampleTests.m */; };
94056F31185BD86D00EB94BA /* PlayFileViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 94056F2F185BD86D00EB94BA /* PlayFileViewController.m */; };
94056F32185BD86D00EB94BA /* PlayFileViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 94056F30185BD86D00EB94BA /* PlayFileViewController.xib */; };
94056F5D185BDB3500EB94BA /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94056F5C185BDB3500EB94BA /* OpenGL.framework */; };
94056F5F185BDB3900EB94BA /* GLKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94056F5E185BDB3900EB94BA /* GLKit.framework */; };
94056F61185BDB3F00EB94BA /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94056F60185BDB3F00EB94BA /* QuartzCore.framework */; };
94056F65185BDB4700EB94BA /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94056F62185BDB4700EB94BA /* AudioToolbox.framework */; };
94056F66185BDB4700EB94BA /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94056F63185BDB4700EB94BA /* AudioUnit.framework */; };
94056F67185BDB4700EB94BA /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94056F64185BDB4700EB94BA /* CoreAudio.framework */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
94056F1C185BD83400EB94BA /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 94056EEF185BD83400EB94BA /* Project object */;
proxyType = 1;
remoteGlobalIDString = 94056EF6185BD83400EB94BA;
remoteInfo = EZAudioPlayFileExample;
};
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
6628E2341B3A121A00020E56 /* simple-drum-beat.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = "simple-drum-beat.wav"; path = "../../../simple-drum-beat.wav"; sourceTree = "<group>"; };
66755A7F1B3B791C0013E67E /* EZAudio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudio.h; sourceTree = "<group>"; };
66755A801B3B791C0013E67E /* EZAudio.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudio.m; sourceTree = "<group>"; };
66755A811B3B791C0013E67E /* EZAudioDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioDevice.h; sourceTree = "<group>"; };
66755A821B3B791C0013E67E /* EZAudioDevice.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioDevice.m; sourceTree = "<group>"; };
66755A831B3B791C0013E67E /* EZAudioDisplayLink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioDisplayLink.h; sourceTree = "<group>"; };
66755A841B3B791C0013E67E /* EZAudioDisplayLink.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioDisplayLink.m; sourceTree = "<group>"; };
66755A851B3B791C0013E67E /* EZAudioFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioFile.h; sourceTree = "<group>"; };
66755A861B3B791C0013E67E /* EZAudioFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioFile.m; sourceTree = "<group>"; };
66755A871B3B791C0013E67E /* EZAudioFloatConverter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioFloatConverter.h; sourceTree = "<group>"; };
66755A881B3B791C0013E67E /* EZAudioFloatConverter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioFloatConverter.m; sourceTree = "<group>"; };
66755A891B3B791C0013E67E /* EZAudioFloatData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioFloatData.h; sourceTree = "<group>"; };
66755A8A1B3B791C0013E67E /* EZAudioFloatData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioFloatData.m; sourceTree = "<group>"; };
66755A8B1B3B791C0013E67E /* EZAudioPlayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioPlayer.h; sourceTree = "<group>"; };
66755A8C1B3B791C0013E67E /* EZAudioPlayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioPlayer.m; sourceTree = "<group>"; };
66755A8D1B3B791C0013E67E /* EZAudioPlot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioPlot.h; sourceTree = "<group>"; };
66755A8E1B3B791C0013E67E /* EZAudioPlot.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioPlot.m; sourceTree = "<group>"; };
66755A8F1B3B791C0013E67E /* EZAudioPlotGL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioPlotGL.h; sourceTree = "<group>"; };
66755A901B3B791C0013E67E /* EZAudioPlotGL.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioPlotGL.m; sourceTree = "<group>"; };
66755A931B3B791C0013E67E /* EZAudioUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAudioUtilities.h; sourceTree = "<group>"; };
66755A941B3B791C0013E67E /* EZAudioUtilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZAudioUtilities.m; sourceTree = "<group>"; };
66755A951B3B791C0013E67E /* EZMicrophone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZMicrophone.h; sourceTree = "<group>"; };
66755A961B3B791C0013E67E /* EZMicrophone.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZMicrophone.m; sourceTree = "<group>"; };
66755A971B3B791C0013E67E /* EZOutput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZOutput.h; sourceTree = "<group>"; };
66755A981B3B791C0013E67E /* EZOutput.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZOutput.m; sourceTree = "<group>"; };
66755A991B3B791C0013E67E /* EZPlot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZPlot.h; sourceTree = "<group>"; };
66755A9A1B3B791C0013E67E /* EZPlot.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZPlot.m; sourceTree = "<group>"; };
66755A9B1B3B791C0013E67E /* EZRecorder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZRecorder.h; sourceTree = "<group>"; };
66755A9C1B3B791C0013E67E /* EZRecorder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EZRecorder.m; sourceTree = "<group>"; };
66755A9D1B3B791C0013E67E /* TPCircularBuffer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = TPCircularBuffer.c; sourceTree = "<group>"; };
66755A9E1B3B791C0013E67E /* TPCircularBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TPCircularBuffer.h; sourceTree = "<group>"; };
66755AA01B3B791C0013E67E /* CHANGELOG */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CHANGELOG; sourceTree = "<group>"; };
66755AA11B3B791C0013E67E /* VERSION */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = VERSION; sourceTree = "<group>"; };
94056EF7185BD83400EB94BA /* EZAudioPlayFileExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = EZAudioPlayFileExample.app; sourceTree = BUILT_PRODUCTS_DIR; };
94056EFA185BD83400EB94BA /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
94056EFD185BD83400EB94BA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
94056EFE185BD83400EB94BA /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; };
94056EFF185BD83400EB94BA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
94056F02185BD83400EB94BA /* EZAudioPlayFileExample-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "EZAudioPlayFileExample-Info.plist"; sourceTree = "<group>"; };
94056F04185BD83400EB94BA /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
94056F06185BD83400EB94BA /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
94056F08185BD83400EB94BA /* EZAudioPlayFileExample-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "EZAudioPlayFileExample-Prefix.pch"; sourceTree = "<group>"; };
94056F0A185BD83400EB94BA /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = "<group>"; };
94056F0C185BD83400EB94BA /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = AppDelegate.h; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
94056F0D185BD83400EB94BA /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
94056F10185BD83400EB94BA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
94056F12185BD83400EB94BA /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
94056F18185BD83400EB94BA /* EZAudioPlayFileExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = EZAudioPlayFileExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
94056F19185BD83400EB94BA /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
94056F20185BD83400EB94BA /* EZAudioPlayFileExampleTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "EZAudioPlayFileExampleTests-Info.plist"; sourceTree = "<group>"; };
94056F22185BD83400EB94BA /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
94056F24185BD83400EB94BA /* EZAudioPlayFileExampleTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = EZAudioPlayFileExampleTests.m; sourceTree = "<group>"; };
94056F2E185BD86D00EB94BA /* PlayFileViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlayFileViewController.h; sourceTree = "<group>"; };
94056F2F185BD86D00EB94BA /* PlayFileViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PlayFileViewController.m; sourceTree = "<group>"; };
94056F30185BD86D00EB94BA /* PlayFileViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PlayFileViewController.xib; sourceTree = "<group>"; };
94056F5C185BDB3500EB94BA /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; };
94056F5E185BDB3900EB94BA /* GLKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLKit.framework; path = System/Library/Frameworks/GLKit.framework; sourceTree = SDKROOT; };
94056F60185BDB3F00EB94BA /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
94056F62185BDB4700EB94BA /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
94056F63185BDB4700EB94BA /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; };
94056F64185BDB4700EB94BA /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
94056EF4185BD83400EB94BA /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
94056F65185BDB4700EB94BA /* AudioToolbox.framework in Frameworks */,
94056F66185BDB4700EB94BA /* AudioUnit.framework in Frameworks */,
94056F67185BDB4700EB94BA /* CoreAudio.framework in Frameworks */,
94056F61185BDB3F00EB94BA /* QuartzCore.framework in Frameworks */,
94056F5F185BDB3900EB94BA /* GLKit.framework in Frameworks */,
94056F5D185BDB3500EB94BA /* OpenGL.framework in Frameworks */,
94056EFB185BD83400EB94BA /* Cocoa.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
94056F15185BD83400EB94BA /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
94056F1B185BD83400EB94BA /* Cocoa.framework in Frameworks */,
94056F1A185BD83400EB94BA /* XCTest.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
66755A7C1B3B791C0013E67E /* EZAudio */ = {
isa = PBXGroup;
children = (
66755A7F1B3B791C0013E67E /* EZAudio.h */,
66755A801B3B791C0013E67E /* EZAudio.m */,
66755A811B3B791C0013E67E /* EZAudioDevice.h */,
66755A821B3B791C0013E67E /* EZAudioDevice.m */,
66755A831B3B791C0013E67E /* EZAudioDisplayLink.h */,
66755A841B3B791C0013E67E /* EZAudioDisplayLink.m */,
66755A851B3B791C0013E67E /* EZAudioFile.h */,
66755A861B3B791C0013E67E /* EZAudioFile.m */,
66755A871B3B791C0013E67E /* EZAudioFloatConverter.h */,
66755A881B3B791C0013E67E /* EZAudioFloatConverter.m */,
66755A891B3B791C0013E67E /* EZAudioFloatData.h */,
66755A8A1B3B791C0013E67E /* EZAudioFloatData.m */,
66755A8B1B3B791C0013E67E /* EZAudioPlayer.h */,
66755A8C1B3B791C0013E67E /* EZAudioPlayer.m */,
66755A8D1B3B791C0013E67E /* EZAudioPlot.h */,
66755A8E1B3B791C0013E67E /* EZAudioPlot.m */,
66755A8F1B3B791C0013E67E /* EZAudioPlotGL.h */,
66755A901B3B791C0013E67E /* EZAudioPlotGL.m */,
66755A931B3B791C0013E67E /* EZAudioUtilities.h */,
66755A941B3B791C0013E67E /* EZAudioUtilities.m */,
66755A951B3B791C0013E67E /* EZMicrophone.h */,
66755A961B3B791C0013E67E /* EZMicrophone.m */,
66755A971B3B791C0013E67E /* EZOutput.h */,
66755A981B3B791C0013E67E /* EZOutput.m */,
66755A991B3B791C0013E67E /* EZPlot.h */,
66755A9A1B3B791C0013E67E /* EZPlot.m */,
66755A9B1B3B791C0013E67E /* EZRecorder.h */,
66755A9C1B3B791C0013E67E /* EZRecorder.m */,
66755A9D1B3B791C0013E67E /* TPCircularBuffer.c */,
66755A9E1B3B791C0013E67E /* TPCircularBuffer.h */,
66755A9F1B3B791C0013E67E /* VERSION */,
);
name = EZAudio;
path = ../../../../EZAudio;
sourceTree = "<group>";
};
66755A9F1B3B791C0013E67E /* VERSION */ = {
isa = PBXGroup;
children = (
66755AA01B3B791C0013E67E /* CHANGELOG */,
66755AA11B3B791C0013E67E /* VERSION */,
);
path = VERSION;
sourceTree = "<group>";
};
94056EEE185BD83400EB94BA = {
isa = PBXGroup;
children = (
94056F00185BD83400EB94BA /* EZAudioPlayFileExample */,
94056F1E185BD83400EB94BA /* EZAudioPlayFileExampleTests */,
94056EF9185BD83400EB94BA /* Frameworks */,
94056EF8185BD83400EB94BA /* Products */,
);
sourceTree = "<group>";
};
94056EF8185BD83400EB94BA /* Products */ = {
isa = PBXGroup;
children = (
94056EF7185BD83400EB94BA /* EZAudioPlayFileExample.app */,
94056F18185BD83400EB94BA /* EZAudioPlayFileExampleTests.xctest */,
);
name = Products;
sourceTree = "<group>";
};
94056EF9185BD83400EB94BA /* Frameworks */ = {
isa = PBXGroup;
children = (
94056F62185BDB4700EB94BA /* AudioToolbox.framework */,
94056F63185BDB4700EB94BA /* AudioUnit.framework */,
94056F64185BDB4700EB94BA /* CoreAudio.framework */,
94056F60185BDB3F00EB94BA /* QuartzCore.framework */,
94056F5E185BDB3900EB94BA /* GLKit.framework */,
94056F5C185BDB3500EB94BA /* OpenGL.framework */,
94056EFA185BD83400EB94BA /* Cocoa.framework */,
94056F19185BD83400EB94BA /* XCTest.framework */,
94056EFC185BD83400EB94BA /* Other Frameworks */,
);
name = Frameworks;
sourceTree = "<group>";
};
94056EFC185BD83400EB94BA /* Other Frameworks */ = {
isa = PBXGroup;
children = (
94056EFD185BD83400EB94BA /* AppKit.framework */,
94056EFE185BD83400EB94BA /* CoreData.framework */,
94056EFF185BD83400EB94BA /* Foundation.framework */,
);
name = "Other Frameworks";
sourceTree = "<group>";
};
94056F00185BD83400EB94BA /* EZAudioPlayFileExample */ = {
isa = PBXGroup;
children = (
66755A7C1B3B791C0013E67E /* EZAudio */,
94056F0C185BD83400EB94BA /* AppDelegate.h */,
94056F0D185BD83400EB94BA /* AppDelegate.m */,
94056F2E185BD86D00EB94BA /* PlayFileViewController.h */,
94056F2F185BD86D00EB94BA /* PlayFileViewController.m */,
94056F30185BD86D00EB94BA /* PlayFileViewController.xib */,
94056F0F185BD83400EB94BA /* MainMenu.xib */,
6628E2341B3A121A00020E56 /* simple-drum-beat.wav */,
94056F12185BD83400EB94BA /* Images.xcassets */,
94056F01185BD83400EB94BA /* Supporting Files */,
);
path = EZAudioPlayFileExample;
sourceTree = "<group>";
};
94056F01185BD83400EB94BA /* Supporting Files */ = {
isa = PBXGroup;
children = (
94056F02185BD83400EB94BA /* EZAudioPlayFileExample-Info.plist */,
94056F03185BD83400EB94BA /* InfoPlist.strings */,
94056F06185BD83400EB94BA /* main.m */,
94056F08185BD83400EB94BA /* EZAudioPlayFileExample-Prefix.pch */,
94056F09185BD83400EB94BA /* Credits.rtf */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
94056F1E185BD83400EB94BA /* EZAudioPlayFileExampleTests */ = {
isa = PBXGroup;
children = (
94056F24185BD83400EB94BA /* EZAudioPlayFileExampleTests.m */,
94056F1F185BD83400EB94BA /* Supporting Files */,
);
path = EZAudioPlayFileExampleTests;
sourceTree = "<group>";
};
94056F1F185BD83400EB94BA /* Supporting Files */ = {
isa = PBXGroup;
children = (
94056F20185BD83400EB94BA /* EZAudioPlayFileExampleTests-Info.plist */,
94056F21185BD83400EB94BA /* InfoPlist.strings */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
94056EF6185BD83400EB94BA /* EZAudioPlayFileExample */ = {
isa = PBXNativeTarget;
buildConfigurationList = 94056F28185BD83400EB94BA /* Build configuration list for PBXNativeTarget "EZAudioPlayFileExample" */;
buildPhases = (
94056EF3185BD83400EB94BA /* Sources */,
94056EF4185BD83400EB94BA /* Frameworks */,
94056EF5185BD83400EB94BA /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = EZAudioPlayFileExample;
productName = EZAudioPlayFileExample;
productReference = 94056EF7185BD83400EB94BA /* EZAudioPlayFileExample.app */;
productType = "com.apple.product-type.application";
};
94056F17185BD83400EB94BA /* EZAudioPlayFileExampleTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 94056F2B185BD83400EB94BA /* Build configuration list for PBXNativeTarget "EZAudioPlayFileExampleTests" */;
buildPhases = (
94056F14185BD83400EB94BA /* Sources */,
94056F15185BD83400EB94BA /* Frameworks */,
94056F16185BD83400EB94BA /* Resources */,
);
buildRules = (
);
dependencies = (
94056F1D185BD83400EB94BA /* PBXTargetDependency */,
);
name = EZAudioPlayFileExampleTests;
productName = EZAudioPlayFileExampleTests;
productReference = 94056F18185BD83400EB94BA /* EZAudioPlayFileExampleTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
94056EEF185BD83400EB94BA /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0500;
ORGANIZATIONNAME = "Syed Haris Ali";
TargetAttributes = {
94056F17185BD83400EB94BA = {
TestTargetID = 94056EF6185BD83400EB94BA;
};
};
};
buildConfigurationList = 94056EF2185BD83400EB94BA /* Build configuration list for PBXProject "EZAudioPlayFileExample" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = 94056EEE185BD83400EB94BA;
productRefGroup = 94056EF8185BD83400EB94BA /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
94056EF6185BD83400EB94BA /* EZAudioPlayFileExample */,
94056F17185BD83400EB94BA /* EZAudioPlayFileExampleTests */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
94056EF5185BD83400EB94BA /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
6628E2351B3A121A00020E56 /* simple-drum-beat.wav in Resources */,
94056F05185BD83400EB94BA /* InfoPlist.strings in Resources */,
66755AB31B3B791C0013E67E /* CHANGELOG in Resources */,
94056F13185BD83400EB94BA /* Images.xcassets in Resources */,
94056F0B185BD83400EB94BA /* Credits.rtf in Resources */,
66755AB41B3B791C0013E67E /* VERSION in Resources */,
94056F32185BD86D00EB94BA /* PlayFileViewController.xib in Resources */,
94056F11185BD83400EB94BA /* MainMenu.xib in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
94056F16185BD83400EB94BA /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
94056F23185BD83400EB94BA /* InfoPlist.strings in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
94056EF3185BD83400EB94BA /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
66755AAA1B3B791C0013E67E /* EZAudioPlot.m in Sources */,
66755AA91B3B791C0013E67E /* EZAudioPlayer.m in Sources */,
94056F31185BD86D00EB94BA /* PlayFileViewController.m in Sources */,
66755AAB1B3B791C0013E67E /* EZAudioPlotGL.m in Sources */,
66755AA61B3B791C0013E67E /* EZAudioFile.m in Sources */,
66755AAF1B3B791C0013E67E /* EZOutput.m in Sources */,
66755AAD1B3B791C0013E67E /* EZAudioUtilities.m in Sources */,
66755AB01B3B791C0013E67E /* EZPlot.m in Sources */,
94056F0E185BD83400EB94BA /* AppDelegate.m in Sources */,
66755AB11B3B791C0013E67E /* EZRecorder.m in Sources */,
66755AA81B3B791C0013E67E /* EZAudioFloatData.m in Sources */,
66755AA71B3B791C0013E67E /* EZAudioFloatConverter.m in Sources */,
66755AA51B3B791C0013E67E /* EZAudioDisplayLink.m in Sources */,
66755AAE1B3B791C0013E67E /* EZMicrophone.m in Sources */,
66755AA41B3B791C0013E67E /* EZAudioDevice.m in Sources */,
94056F07185BD83400EB94BA /* main.m in Sources */,
66755AB21B3B791C0013E67E /* TPCircularBuffer.c in Sources */,
66755AA31B3B791C0013E67E /* EZAudio.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
94056F14185BD83400EB94BA /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
94056F25185BD83400EB94BA /* EZAudioPlayFileExampleTests.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
94056F1D185BD83400EB94BA /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 94056EF6185BD83400EB94BA /* EZAudioPlayFileExample */;
targetProxy = 94056F1C185BD83400EB94BA /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
94056F03185BD83400EB94BA /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
94056F04185BD83400EB94BA /* en */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
};
94056F09185BD83400EB94BA /* Credits.rtf */ = {
isa = PBXVariantGroup;
children = (
94056F0A185BD83400EB94BA /* en */,
);
name = Credits.rtf;
sourceTree = "<group>";
};
94056F0F185BD83400EB94BA /* MainMenu.xib */ = {
isa = PBXVariantGroup;
children = (
94056F10185BD83400EB94BA /* Base */,
);
name = MainMenu.xib;
sourceTree = "<group>";
};
94056F21185BD83400EB94BA /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
94056F22185BD83400EB94BA /* en */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
94056F26185BD83400EB94BA /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.9;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = macosx;
};
name = Debug;
};
94056F27185BD83400EB94BA /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.9;
SDKROOT = macosx;
};
name = Release;
};
94056F29185BD83400EB94BA /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
COMBINE_HIDPI_IMAGES = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "EZAudioPlayFileExample/EZAudioPlayFileExample-Prefix.pch";
INFOPLIST_FILE = "EZAudioPlayFileExample/EZAudioPlayFileExample-Info.plist";
PRODUCT_NAME = "$(TARGET_NAME)";
WRAPPER_EXTENSION = app;
};
name = Debug;
};
94056F2A185BD83400EB94BA /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
COMBINE_HIDPI_IMAGES = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "EZAudioPlayFileExample/EZAudioPlayFileExample-Prefix.pch";
INFOPLIST_FILE = "EZAudioPlayFileExample/EZAudioPlayFileExample-Info.plist";
PRODUCT_NAME = "$(TARGET_NAME)";
WRAPPER_EXTENSION = app;
};
name = Release;
};
94056F2C185BD83400EB94BA /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/EZAudioPlayFileExample.app/Contents/MacOS/EZAudioPlayFileExample";
COMBINE_HIDPI_IMAGES = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(DEVELOPER_FRAMEWORKS_DIR)",
"$(inherited)",
);
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "EZAudioPlayFileExample/EZAudioPlayFileExample-Prefix.pch";
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
INFOPLIST_FILE = "EZAudioPlayFileExampleTests/EZAudioPlayFileExampleTests-Info.plist";
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUNDLE_LOADER)";
WRAPPER_EXTENSION = xctest;
};
name = Debug;
};
94056F2D185BD83400EB94BA /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/EZAudioPlayFileExample.app/Contents/MacOS/EZAudioPlayFileExample";
COMBINE_HIDPI_IMAGES = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(DEVELOPER_FRAMEWORKS_DIR)",
"$(inherited)",
);
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "EZAudioPlayFileExample/EZAudioPlayFileExample-Prefix.pch";
INFOPLIST_FILE = "EZAudioPlayFileExampleTests/EZAudioPlayFileExampleTests-Info.plist";
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUNDLE_LOADER)";
WRAPPER_EXTENSION = xctest;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
94056EF2185BD83400EB94BA /* Build configuration list for PBXProject "EZAudioPlayFileExample" */ = {
isa = XCConfigurationList;
buildConfigurations = (
94056F26185BD83400EB94BA /* Debug */,
94056F27185BD83400EB94BA /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
94056F28185BD83400EB94BA /* Build configuration list for PBXNativeTarget "EZAudioPlayFileExample" */ = {
isa = XCConfigurationList;
buildConfigurations = (
94056F29185BD83400EB94BA /* Debug */,
94056F2A185BD83400EB94BA /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
94056F2B185BD83400EB94BA /* Build configuration list for PBXNativeTarget "EZAudioPlayFileExampleTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
94056F2C185BD83400EB94BA /* Debug */,
94056F2D185BD83400EB94BA /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 94056EEF185BD83400EB94BA /* Project object */;
}
@@ -1,39 +0,0 @@
//
// AppDelegate.h
// EZAudioPlayFileExample
//
// Created by Syed Haris Ali on 12/1/13.
// Copyright (c) 2013 Syed Haris Ali. All rights reserved.
//
// 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.
#import <Cocoa/Cocoa.h>
#import "PlayFileViewController.h"
@interface AppDelegate : NSObject <NSApplicationDelegate>
@property (assign) IBOutlet NSWindow *window;
/**
Create our CoreGraphicsWaveformViewController
*/
@property (nonatomic,strong) PlayFileViewController *playFileViewController;
@end
@@ -1,43 +0,0 @@
//
// AppDelegate.m
// EZAudioPlayFileExample
//
// Created by Syed Haris Ali on 12/1/13.
// Copyright (c) 2013 Syed Haris Ali. All rights reserved.
//
// 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.
#import "AppDelegate.h"
@implementation AppDelegate
@synthesize playFileViewController;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
// Swap in our view controller in the window's content view
self.playFileViewController = [[PlayFileViewController alloc] init];
// Resize view controller to content view's current size
self.playFileViewController.view.frame = [self.window.contentView frame];
// Add resizing flags to make the view controller resize with the window
self.playFileViewController.view.autoresizingMask = (NSViewWidthSizable|NSViewHeightSizable);
// Add in the core graphics view controller as subview
[self.window.contentView addSubview:self.playFileViewController.view];
}
@end

Some files were not shown because too many files have changed in this diff Show More