├── Resources
├── Noisy.icns
├── English.lproj
│ ├── InfoPlist.strings
│ └── MainMenu.xib
├── Credits.html
├── Credits.rtf
├── Info.plist
└── Noisy.sdef
├── .gitignore
├── Noisy.entitlements
├── LICENSE
├── Source
├── Noisy.pch
├── main.m
├── NoisyApp.h
├── NoiseGenerator.h
├── NoisyApp.m
└── NoiseGenerator.m
├── README
└── Noisy.xcodeproj
└── project.pbxproj
/Resources/Noisy.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jonshea/Noisy/HEAD/Resources/Noisy.icns
--------------------------------------------------------------------------------
/Resources/English.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jonshea/Noisy/HEAD/Resources/English.lproj/InfoPlist.strings
--------------------------------------------------------------------------------
/Resources/Credits.html:
--------------------------------------------------------------------------------
1 | Based on Noise by Blackhole Media
2 | http://www.blackholemedia.com/
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | build/
3 |
4 | ## Xcode Files:
5 | *.pbxuser
6 | *.mode1v3
7 | *.mode2v3
8 | *.perspective
9 | *.perspectivev3
10 |
--------------------------------------------------------------------------------
/Noisy.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.app-sandbox
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Resources/Credits.rtf:
--------------------------------------------------------------------------------
1 | {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf110
2 | {\fonttbl\f0\fswiss\fcharset0 Helvetica;}
3 | {\colortbl;\red255\green255\blue255;}
4 | \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
5 |
6 | \f0\fs24 \cf0 Based on Noise by Blackhole Media}
--------------------------------------------------------------------------------
/Resources/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIconFile
10 | Noisy
11 | CFBundleIdentifier
12 | com.rathertremendous.noisy
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | ${PRODUCT_NAME}
17 | CFBundlePackageType
18 | APPL
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1.3
23 | NSAppleScriptEnabled
24 | YES
25 | NSMainNibFile
26 | MainMenu
27 | NSPrincipalClass
28 | NoisyApp
29 |
30 |
31 |
--------------------------------------------------------------------------------
/Resources/Noisy.sdef:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2010, Noisy Developers
2 | All rights reserved.
3 |
4 | Redistribution and use in source and binary forms, with or without
5 | modification, are permitted provided that the following conditions are met:
6 | * Redistributions of source code must retain the above copyright
7 | notice, this list of conditions and the following disclaimer.
8 | * Redistributions in binary form must reproduce the above copyright
9 | notice, this list of conditions and the following disclaimer in the
10 | documentation and/or other materials provided with the distribution.
11 | * Neither the name of the nor the
12 | names of its contributors may be used to endorse or promote products
13 | derived from this software without specific prior written permission.
14 |
15 | THIS SOFTWARE IS PROVIDED BY Noisy Developers ``AS IS'' AND ANY
16 | EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18 | DISCLAIMED. IN NO EVENT SHALL Noisy Developers BE LIABLE FOR ANY
19 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 |
26 |
--------------------------------------------------------------------------------
/Source/Noisy.pch:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2008, Noisy Developers
3 | * All rights reserved.
4 | *
5 | * Redistribution and use in source and binary forms, with or without
6 | * modification, are permitted provided that the following conditions are met:
7 | * * Redistributions of source code must retain the above copyright
8 | * notice, this list of conditions and the following disclaimer.
9 | * * Redistributions in binary form must reproduce the above copyright
10 | * notice, this list of conditions and the following disclaimer in the
11 | * documentation and/or other materials provided with the distribution.
12 | * * Neither the name of the nor the
13 | * names of its contributors may be used to endorse or promote products
14 | * derived from this software without specific prior written permission.
15 | *
16 | * THIS SOFTWARE IS PROVIDED BY Noisy Developers ``AS IS'' AND ANY
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 | * DISCLAIMED. IN NO EVENT SHALL Noisy Developers BE LIABLE FOR ANY
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 | */
27 |
28 |
29 | #ifdef __OBJC__
30 | #import
31 | #endif
32 |
--------------------------------------------------------------------------------
/README:
--------------------------------------------------------------------------------
1 | Download:
2 | http://github.com/downloads/jonshea/Noisy/Noisy.zip
3 |
4 | What?
5 | Noisy is a random audio noise generator for OS X. It is based on “Noise” by Blackhole Media. It was maintained anonymously at http://code.google.com/p/noisy/, and is now maintained at http://github.com/jonshea/Noisy.
6 |
7 | Why?
8 | Does your coworker use a gigantic, over-engineered, mechanically switched keyboard that, when he gets up to speed, sounds like a train wrecking? Do people like to chit-chat next to you while you’re trying to work? Do high school students walk past your window every day shouting at each other so loudly that you’re certain they must be about to start a brawl, and do you, every day, go to the window to investigate only to discover that’s just how they communicate normally with each other? Are you otherwise easily distracted?
9 |
10 | A little bit of static noise in your headphones can make the rest of the world seem a lot further away.
11 |
12 | Acknowledgements
13 | Thanks to Blackhole Media, and to the original, anonymous creator/maintainer of Noisy.
14 |
15 | Changes
16 | Noisy 1.5:
17 | * Added support for quasi-Brownian noise. Brownian noise has less high frequency energy than either pink or white noise. To my ear it sounds less hissy and more relaxing than white or pink noise.
18 | * Added keyboard shortcuts. You can now use the arrow keys to nudge the volume up (up arrow or right arrow) or down (down arrow or left arrow). Just like iTunes, if you hold command-shift while you hit the arrow keys then the volume will peg all the way up or down.
19 | * The spacebar will now mute or unmute Noisy.
20 | * Noisy no longer quits when you close the control window.
21 | * Keyboard shortcuts work even if the Noisy control window is closed.
22 |
--------------------------------------------------------------------------------
/Source/main.m:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2008, Noisy Developers
3 | * All rights reserved.
4 | *
5 | * Redistribution and use in source and binary forms, with or without
6 | * modification, are permitted provided that the following conditions are met:
7 | * * Redistributions of source code must retain the above copyright
8 | * notice, this list of conditions and the following disclaimer.
9 | * * Redistributions in binary form must reproduce the above copyright
10 | * notice, this list of conditions and the following disclaimer in the
11 | * documentation and/or other materials provided with the distribution.
12 | * * Neither the name of the nor the
13 | * names of its contributors may be used to endorse or promote products
14 | * derived from this software without specific prior written permission.
15 | *
16 | * THIS SOFTWARE IS PROVIDED BY Noisy Developers ``AS IS'' AND ANY
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 | * DISCLAIMED. IN NO EVENT SHALL Noisy Developers BE LIABLE FOR ANY
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 | */
27 |
28 |
29 | #import
30 |
31 | int main(int argc, char *argv[])
32 | {
33 | return NSApplicationMain(argc, (const char **) argv);
34 | }
35 |
--------------------------------------------------------------------------------
/Source/NoisyApp.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2010, Jon Shea
3 | * Copyright (c) 2008, Noisy Developers
4 | * All rights reserved.
5 | *
6 | * Redistribution and use in source and binary forms, with or without
7 | * modification, are permitted provided that the following conditions are met:
8 | * * Redistributions of source code must retain the above copyright
9 | * notice, this list of conditions and the following disclaimer.
10 | * * Redistributions in binary form must reproduce the above copyright
11 | * notice, this list of conditions and the following disclaimer in the
12 | * documentation and/or other materials provided with the distribution.
13 | * * Neither the name of the nor the
14 | * names of its contributors may be used to endorse or promote products
15 | * derived from this software without specific prior written permission.
16 | *
17 | * THIS SOFTWARE IS PROVIDED BY Noisy Developers ``AS IS'' AND ANY
18 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20 | * DISCLAIMED. IN NO EVENT SHALL Noisy Developers BE LIABLE FOR ANY
21 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
26 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 | */
28 |
29 |
30 | #import
31 |
32 | @class NoisyWindow;
33 | @class NoiseGenerator;
34 |
35 | @interface NoisyApp : NSApplication {
36 | IBOutlet NSWindow *oWindow;
37 | NoiseGenerator *_generator;
38 | int previousNoiseType; // Saves the noise type during 'mute'
39 | }
40 |
41 | - (IBAction)openAboutNoiseColors:(id)sender;
42 | - (IBAction)openNoisyWebsite:(id)sender;
43 |
44 | - (double)volume;
45 | - (void)setVolume:(double)newVolume;
46 | - (int)noiseType;
47 | - (void)setNoiseType:(int)newNoiseType;
48 |
49 | - (void)toggleMute;
50 |
51 | @end
52 |
--------------------------------------------------------------------------------
/Source/NoiseGenerator.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Modifications to original file:
3 | * Copyright (c) 2010, Jon Shea
4 | * Copyright (c) 2008, Noisy Developers
5 | * All rights reserved.
6 | *
7 | * Original file:
8 | * NoiseGenerator.h
9 | * Noise
10 | * http://www.blackholemedia.com/noise/
11 | *
12 | * Copyright (c) 2002 Aaron Sittig
13 | * Copyright (c) 2001, Blackhole Media
14 | * All rights reserved.
15 | *
16 | * Redistribution and use in source and binary forms, with or without
17 | * modification, are permitted provided that the following conditions are met:
18 | * * Redistributions of source code must retain the above copyright
19 | * notice, this list of conditions and the following disclaimer.
20 | * * Redistributions in binary form must reproduce the above copyright
21 | * notice, this list of conditions and the following disclaimer in the
22 | * documentation and/or other materials provided with the distribution.
23 | * * Neither the name of the nor the
24 | * names of its contributors may be used to endorse or promote products
25 | * derived from this software without specific prior written permission.
26 | *
27 | * THIS SOFTWARE IS PROVIDED BY Noisy Developers ``AS IS'' AND ANY
28 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
29 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
30 | * DISCLAIMED. IN NO EVENT SHALL Noisy Developers BE LIABLE FOR ANY
31 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
32 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
33 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
34 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
35 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37 | */
38 |
39 |
40 | #import
41 | #import
42 |
43 |
44 | #define kPinkMaxRandomRows 32
45 | #define kPinkRandomBits 30
46 | #define kPinkRandomShift ((sizeof(long)*8)-kPinkRandomBits)
47 |
48 | #define kNumberOfBuffers 2
49 | #define kBytesPerBuffer (2*8*1024)
50 |
51 | static double const sNoiseMinVolume = 0.0;
52 | static double const sNoiseMaxVolume = 1.0;
53 | static double const sNoiseVolumeStepSize = 0.02;
54 |
55 |
56 | typedef enum {
57 | NoNoiseType,
58 | WhiteNoiseType,
59 | PinkNoiseType,
60 | BrownNoiseType,
61 | } NoiseType;
62 |
63 |
64 | @interface NoiseGenerator : NSObject
65 | {
66 | AudioQueueRef _queue;
67 | AudioQueueBufferRef _buffer[kNumberOfBuffers];
68 |
69 | long _pinkRows[kPinkMaxRandomRows];
70 | long _pinkRunningSum; // Used to optimize summing of generators
71 | int _pinkIndex; // Incremented each sample
72 | int _pinkIndexMask; // Index wrapped by &ing with this mask
73 | float _pinkScalar; // Used to scale within range of -1.0 to 1.0
74 |
75 | NoiseType _type;
76 | double _volume;
77 | BOOL _isPlaying;
78 | }
79 |
80 | - (double) volume;
81 | - (void) setVolume:(double)volume;
82 |
83 | - (NoiseType) type;
84 | - (void) setType:(NoiseType)type;
85 |
86 | @end
87 |
--------------------------------------------------------------------------------
/Source/NoisyApp.m:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2010, Jon Shea
3 | * Copyright (c) 2008, Noisy Developers
4 | * All rights reserved.
5 | *
6 | * Redistribution and use in source and binary forms, with or without
7 | * modification, are permitted provided that the following conditions are met:
8 | * * Redistributions of source code must retain the above copyright
9 | * notice, this list of conditions and the following disclaimer.
10 | * * Redistributions in binary form must reproduce the above copyright
11 | * notice, this list of conditions and the following disclaimer in the
12 | * documentation and/or other materials provided with the distribution.
13 | * * Neither the name of the nor the
14 | * names of its contributors may be used to endorse or promote products
15 | * derived from this software without specific prior written permission.
16 | *
17 | * THIS SOFTWARE IS PROVIDED BY Noisy Developers ``AS IS'' AND ANY
18 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20 | * DISCLAIMED. IN NO EVENT SHALL Noisy Developers BE LIABLE FOR ANY
21 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
26 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 | */
28 |
29 |
30 | #import "NoisyApp.h"
31 | #import "NoiseGenerator.h"
32 |
33 | static NSString *sNoiseTypeKeyPath = @"NoiseType";
34 | static NSString *sPreviousNoiseTypeKeyPath = @"PreviousNoiseType";
35 | static NSString *sNoiseVolumeKeyPath = @"NoiseVolume";
36 |
37 | @implementation NoisyApp
38 |
39 | + (void)initialize
40 | {
41 | NSMutableDictionary *defaults = [NSMutableDictionary dictionary];
42 |
43 | [defaults setObject:[NSNumber numberWithInteger:BrownNoiseType] forKey:sNoiseTypeKeyPath];
44 | [defaults setObject:[NSNumber numberWithInteger:BrownNoiseType] forKey:sNoiseTypeKeyPath];
45 | [defaults setObject:[NSNumber numberWithDouble:0.2] forKey:sNoiseVolumeKeyPath];
46 |
47 | [[NSUserDefaults standardUserDefaults] registerDefaults:defaults];
48 | }
49 |
50 | - (void)awakeFromNib
51 | {
52 | _generator = [[NoiseGenerator alloc] init];
53 |
54 | [self setVolume:[[NSUserDefaults standardUserDefaults] doubleForKey:sNoiseVolumeKeyPath]];
55 |
56 | // int p = [[NSUserDefaults standardUserDefaults] integerForKey:sPreviousNoiseTypeKeyPath];
57 | [self setNoiseType:[[NSUserDefaults standardUserDefaults] integerForKey:sNoiseTypeKeyPath]];
58 | previousNoiseType = [[NSUserDefaults standardUserDefaults] integerForKey:sPreviousNoiseTypeKeyPath];
59 |
60 | [[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self selector:@selector(handleWorkspaceWillSleepNotification:) name:NSWorkspaceWillSleepNotification object:NULL];
61 | }
62 |
63 |
64 | - (void)dealloc
65 | {
66 | [[[NSWorkspace sharedWorkspace] notificationCenter] removeObserver:self];
67 |
68 | [_generator release];
69 |
70 | [super dealloc];
71 | }
72 |
73 | - (double)volume {
74 | return [_generator volume];
75 | }
76 |
77 | - (void)setVolume:(double)newVolume {
78 | if (newVolume < sNoiseMinVolume) {
79 | newVolume = sNoiseMinVolume;
80 | }
81 | else if (newVolume > sNoiseMaxVolume) {
82 | newVolume = sNoiseMaxVolume;
83 | }
84 |
85 | [[NSUserDefaults standardUserDefaults] setDouble:newVolume forKey:sNoiseVolumeKeyPath];
86 | [_generator setVolume:newVolume];
87 | }
88 |
89 | - (int)noiseType {
90 | return [_generator type];
91 | }
92 |
93 | - (void)setNoiseType:(int)newNoiseType {
94 | // Save the previous noise type, unless the previous noise type was 'NoNoise'
95 | if ([self noiseType] != NoNoiseType) {
96 | previousNoiseType = [self noiseType];
97 | [[NSUserDefaults standardUserDefaults] setInteger:previousNoiseType forKey:sPreviousNoiseTypeKeyPath];
98 | }
99 |
100 | [[NSUserDefaults standardUserDefaults] setInteger:newNoiseType forKey:sNoiseTypeKeyPath];
101 | [_generator setType:newNoiseType];
102 | }
103 |
104 | - (void)toggleMute {
105 | if ([self noiseType] != NoNoiseType) {
106 | [self setNoiseType:NoNoiseType];
107 | }
108 | else {
109 | [self setNoiseType:previousNoiseType];
110 | }
111 | }
112 |
113 | - (void)applicationDidFinishLaunching:(NSNotification *)aNotification
114 | {
115 | [oWindow setReleasedWhenClosed:NO];
116 | }
117 |
118 | - (BOOL)applicationShouldHandleReopen:(NSApplication *)theApplication hasVisibleWindows:(BOOL)flag
119 | {
120 | [oWindow makeKeyAndOrderFront:self];
121 | return YES;
122 | }
123 |
124 | - (void)handleWorkspaceWillSleepNotification:(NSNotification *)notification
125 | {
126 | [[NSUserDefaults standardUserDefaults] setInteger:NoNoiseType forKey:sNoiseTypeKeyPath];
127 | }
128 |
129 | // Intercept events that correspond to keyboard commands
130 | - (void)sendEvent:(NSEvent *)anEvent
131 | {
132 | if ([anEvent type] == NSKeyDown) {
133 | NSString *theKeys = [anEvent charactersIgnoringModifiers];
134 | unichar keyChar = 0;
135 | if ([theKeys length] == 0) {
136 | return; // reject dead keys
137 | }
138 |
139 | if ([theKeys length] == 1) {
140 | keyChar = [theKeys characterAtIndex:0];
141 |
142 | // CommandanEventshift arrow will set the volume to max or min
143 | if ([anEvent modifierFlags] & NSCommandKeyMask && [anEvent modifierFlags] & NSShiftKeyMask) {
144 | if (keyChar == NSLeftArrowFunctionKey || keyChar == NSDownArrowFunctionKey) {
145 | [self setVolume:sNoiseMinVolume];
146 | return;
147 | }
148 | if (keyChar == NSRightArrowFunctionKey || keyChar == NSUpArrowFunctionKey) {
149 | [self setVolume:sNoiseMaxVolume];
150 | return;
151 | }
152 | }
153 |
154 | // Anything else with an arrow will nudge the volume up or down
155 | if (keyChar == NSLeftArrowFunctionKey || keyChar == NSDownArrowFunctionKey) {
156 | [self setVolume:[self volume] - sNoiseVolumeStepSize];
157 | return;
158 | }
159 | if (keyChar == NSRightArrowFunctionKey || keyChar == NSUpArrowFunctionKey) {
160 | [self setVolume:[self volume] + sNoiseVolumeStepSize];
161 | return;
162 | }
163 |
164 | //Spacebar toggles mute.
165 | if ([anEvent keyCode] == 49) {
166 | [self toggleMute];
167 | return;
168 | }
169 | }
170 | }
171 |
172 | [super sendEvent:anEvent];
173 | }
174 |
175 | #pragma mark -
176 | #pragma mark IBActions
177 |
178 | - (IBAction)openAboutNoiseColors:(id)sender
179 | {
180 | NSURL *url = [NSURL URLWithString:@"http://en.wikipedia.org/wiki/Colors_of_noise"];
181 | [[NSWorkspace sharedWorkspace] openURL:url];
182 | }
183 |
184 |
185 | - (IBAction)openNoisyWebsite:(id)sender
186 | {
187 | NSURL *url = [NSURL URLWithString:@"http://github.com/jonshea/Noisy"];
188 | [[NSWorkspace sharedWorkspace] openURL:url];
189 | }
190 |
191 |
192 | #pragma mark -
193 | #pragma mark AppleScript
194 |
195 | - (id) scriptNoiseType
196 | {
197 | NoiseType type = [[NSUserDefaults standardUserDefaults] integerForKey:sNoiseTypeKeyPath];
198 | OSType scriptType;
199 |
200 | if (type == WhiteNoiseType) {
201 | scriptType = 'Nwht';
202 | } else if (type == PinkNoiseType) {
203 | scriptType = 'Npnk';
204 | } else {
205 | scriptType = 'Nnon';
206 | }
207 |
208 | return [[[NSNumber alloc] initWithUnsignedInteger:scriptType] autorelease];
209 | }
210 |
211 |
212 | - (void)setScriptNoiseType:(id)scriptTypeAsNumber
213 | {
214 | OSType scriptType = [scriptTypeAsNumber unsignedIntegerValue];
215 | NoiseType type;
216 |
217 | if (scriptType == 'Nnon') {
218 | type = NoNoiseType;
219 | } else if (scriptType == 'Npnk') {
220 | type = PinkNoiseType;
221 | } else if (scriptType == 'Nwht') {
222 | type = WhiteNoiseType;
223 | } else {
224 | type = NoNoiseType;
225 | }
226 |
227 | [[NSUserDefaults standardUserDefaults] setInteger:type forKey:sNoiseTypeKeyPath];
228 | }
229 |
230 |
231 | - (id)scriptVolume
232 | {
233 | double volume = [[NSUserDefaults standardUserDefaults] doubleForKey:sNoiseVolumeKeyPath];
234 | NSInteger roundedVolume = round(volume * 100);
235 | return [NSNumber numberWithInteger:roundedVolume];
236 | }
237 |
238 |
239 | - (void)setScriptVolume:(id)volumeAsNumber
240 | {
241 | double volume = [volumeAsNumber doubleValue];
242 |
243 | volume /= 100.0;
244 | if (volume > 100.0) volume = 100.0;
245 | if (volume < 0.0) volume = 0.0;
246 |
247 | [[NSUserDefaults standardUserDefaults] setDouble:volume forKey:sNoiseVolumeKeyPath];
248 | }
249 |
250 | @end
251 |
--------------------------------------------------------------------------------
/Source/NoiseGenerator.m:
--------------------------------------------------------------------------------
1 | /*
2 | * Modifications to original file:
3 | * Copyright (c) 2010, Jon Shea
4 | * Copyright (c) 2008, Noisy Developers
5 | * All rights reserved.
6 | *
7 | * Original file:
8 | * NoiseGenerator.m
9 | * Noise
10 | * http://www.blackholemedia.com/noise/
11 | *
12 | * Copyright (c) 2002 Aaron Sittig
13 | * Copyright (c) 2001, Blackhole Media
14 | * All rights reserved.
15 | *
16 | * Redistribution and use in source and binary forms, with or without
17 | * modification, are permitted provided that the following conditions are met:
18 | * * Redistributions of source code must retain the above copyright
19 | * notice, this list of conditions and the following disclaimer.
20 | * * Redistributions in binary form must reproduce the above copyright
21 | * notice, this list of conditions and the following disclaimer in the
22 | * documentation and/or other materials provided with the distribution.
23 | * * Neither the name of the nor the
24 | * names of its contributors may be used to endorse or promote products
25 | * derived from this software without specific prior written permission.
26 | *
27 | * THIS SOFTWARE IS PROVIDED BY Noisy Developers ``AS IS'' AND ANY
28 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
29 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
30 | * DISCLAIMED. IN NO EVENT SHALL Noisy Developers BE LIABLE FOR ANY
31 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
32 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
33 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
34 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
35 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37 | */
38 |
39 |
40 | #import "NoiseGenerator.h"
41 | #import
42 |
43 |
44 | @interface NoiseGenerator (Internal)
45 | - (void)initRandomEnv:(long)numRows;
46 | - (void)createAudio;
47 | - (void)destroyAudio;
48 | - (void)startAudio;
49 | - (void)stopAudio;
50 | - (void)_processBuffer:(AudioQueueBufferRef)buffer;
51 | - (OSStatus)defaultOutputDeviceChanged;
52 | @end
53 |
54 |
55 | static unsigned long sGetNextRandomNumber()
56 | {
57 | static unsigned long randSeed = 22222; /* Change this for different random sequences. */
58 | randSeed = (randSeed * 196314165) + 907633515;
59 | return randSeed;
60 | }
61 |
62 |
63 | static void sAudioQueueOutputCallback(void *inUserData, AudioQueueRef inAQ, AudioQueueBufferRef inBuffer)
64 | {
65 | NoiseGenerator *generator = (NoiseGenerator *)inUserData;
66 | [generator _processBuffer:inBuffer];
67 | }
68 |
69 |
70 | static OSStatus sDefaultOutputDeviceChanged(AudioHardwarePropertyID inPropertyID, void *inClientData)
71 | {
72 | NoiseGenerator *generator = (NoiseGenerator *)inClientData;
73 | return [generator defaultOutputDeviceChanged];
74 | }
75 |
76 |
77 | @implementation NoiseGenerator
78 |
79 | - (id) init
80 | {
81 | if (self = [super init]) {
82 | [self initRandomEnv:5];
83 | }
84 |
85 | return self;
86 | }
87 |
88 |
89 | - (void)dealloc
90 | {
91 | [self stopAudio];
92 | [super dealloc];
93 | }
94 |
95 |
96 | - (void)initRandomEnv:(long)numRows
97 | {
98 | _pinkIndex = 0;
99 | _pinkIndexMask = (1 << numRows) - 1;
100 | _type = NoNoiseType;
101 | _volume = 0.33;
102 |
103 | // Calculate max possible signed random value. extra 1 for white noise always added
104 | long pmax = (numRows + 1) * (1 << (kPinkRandomBits-1));
105 | _pinkScalar = 1.0f / pmax;
106 |
107 | // Initialize rows
108 | int index;
109 | for (index = 0; index < numRows; index++) {
110 | _pinkRows[index] = 0;
111 | }
112 |
113 | _pinkRunningSum = 0;
114 | }
115 |
116 |
117 | - (void) startAudio
118 | {
119 | if (!_isPlaying) {
120 | AudioStreamBasicDescription description;
121 |
122 | description.mSampleRate = 44100;
123 | description.mFormatID = kAudioFormatLinearPCM;
124 | description.mFormatFlags = kAudioFormatFlagIsFloat;
125 | description.mBytesPerPacket = sizeof(float);
126 | description.mFramesPerPacket = 1;
127 | description.mBytesPerFrame = sizeof(float);
128 | description.mChannelsPerFrame = 1;
129 | description.mBitsPerChannel = sizeof(float) * 8;
130 |
131 | _isPlaying = YES;
132 | OSStatus err = AudioQueueNewOutput(&description, sAudioQueueOutputCallback, self, CFRunLoopGetCurrent(), kCFRunLoopCommonModes, 0, &_queue);
133 | if (err) { NSLog(@"AudioQueueNewOutput returned %d", err); return; }
134 |
135 | NSUInteger i;
136 | for (i = 0; i < kNumberOfBuffers; i++) {
137 | err = AudioQueueAllocateBuffer(_queue, kBytesPerBuffer, &_buffer[i]);
138 | if (err) { NSLog(@"AudioQueueAllocateBuffer returned %d", err); return; }
139 |
140 | [self _processBuffer:_buffer[i]];
141 | }
142 |
143 | err = AudioQueueStart(_queue, NULL);
144 | if (err) { NSLog(@"AudioQueueStart returned %d", err); return; }
145 | }
146 | }
147 |
148 |
149 | - (void) stopAudio
150 | {
151 | if (_isPlaying) {
152 | AudioQueueDispose(_queue, YES);
153 | _isPlaying = NO;
154 | }
155 | }
156 |
157 |
158 | - (void) _processBuffer:(AudioQueueBufferRef)audioQueueBuffer
159 | {
160 | UInt32 bufferSize = audioQueueBuffer->mAudioDataBytesCapacity;
161 | UInt32 bufferFrames = bufferSize / sizeof(float);
162 | float *buffer = (float *)audioQueueBuffer->mAudioData;
163 | float sample;
164 | UInt32 i;
165 |
166 | // White Noise
167 | if (_type == WhiteNoiseType) {
168 | for (i = 0; i < bufferFrames; i++) {
169 |
170 | sample = ((long)sGetNextRandomNumber()) * (float)(1.0f / LONG_MAX) * _volume;
171 | *buffer++ = sample;
172 | }
173 |
174 | // Pink Noise
175 | }
176 |
177 | else if (_type == PinkNoiseType) {
178 | for (i = 0; i < bufferFrames; i++) {
179 | // Increment and mask index
180 | _pinkIndex = (_pinkIndex + 1) & _pinkIndexMask;
181 |
182 | // If index is zero, don't update any random values
183 | if (_pinkIndex) {
184 | int numZeros = 0;
185 | int n = _pinkIndex;
186 |
187 | // Determine how many trailing zeros in pinkIndex
188 | // this will hang if n == 0 so test first
189 | while((n & 1) == 0) {
190 | n = n >> 1;
191 | numZeros++;
192 | }
193 |
194 | // Replace the indexed rows random value
195 | // Subtract and add back to pinkRunningSum instead of adding all
196 | // the random values together. only one changes each time
197 | _pinkRunningSum -= _pinkRows[numZeros];
198 | long newRandom = ((long)sGetNextRandomNumber()) >> kPinkRandomShift;
199 | _pinkRunningSum += newRandom;
200 | _pinkRows[numZeros] = newRandom;
201 | }
202 |
203 | // Add extra white noise value
204 | long newRandom = ((long)sGetNextRandomNumber()) >> kPinkRandomShift;
205 | long sum = _pinkRunningSum + newRandom;
206 |
207 | // Scale to range of -1.0 to 0.999 and factor in volume
208 | sample = _pinkScalar * sum * _volume;
209 |
210 | // Write to all channels
211 | *buffer++ = sample;
212 | }
213 | }
214 | else if (_type == BrownNoiseType) {
215 | // Brownian noise is defined as integral of the white noise signal. In order words,
216 | // the Brownian noise signal is a random walk. Unfortunately, the random walk has an
217 | // unbound amplitude, and the amplitude of our output has to be bound by +- 1.0 .
218 | // I have addressed this issue by 'nudging' _brown_ (the value of the integral of the white noise)
219 | // back towards zero after each step by subtracting brown/32 from the running total.
220 |
221 | // This will doubtless affect the spectral power density of the output, but not by enough that I
222 | // notice or care. If anyone has a better idea, I would be happen to implement it.
223 | double brown = 0.0;
224 | for (i = 0; i < bufferFrames; i++) {
225 | double white = ((long)sGetNextRandomNumber()) * (double)(1.0f / LONG_MAX);
226 | brown += white;
227 |
228 | // Nudge the random walk back towards zero. Brown is bounded by +- 32.
229 | // In practice, brown will rarely stray past +- 16.
230 | brown -= brown * 0.03125; // brown / 32.0
231 |
232 | // Since brown will be in the range +-16, we will scale it down to +- by multiplying
233 | // by 0.06250 (divide by 16).
234 | sample = (float)brown * 0.06250 * _volume;
235 |
236 | *buffer++ = sample;
237 | }
238 | }
239 |
240 | audioQueueBuffer->mAudioDataByteSize = (i * sizeof(float));
241 | AudioQueueEnqueueBuffer(_queue, audioQueueBuffer, 0, NULL);
242 | }
243 |
244 |
245 | - (OSStatus) defaultOutputDeviceChanged
246 | {
247 | [self stopAudio];
248 | if (_type != NoNoiseType) [self startAudio];
249 |
250 | return kAudioHardwareNoError;
251 | }
252 |
253 |
254 |
255 | - (void)setVolume:(double)newVolume
256 | {
257 | if (newVolume < 0.001) {
258 | [self stopAudio];
259 | }
260 | else if (_type != NoNoiseType && _volume < 0.001) {
261 | [self startAudio];
262 | }
263 |
264 | _volume = newVolume;
265 | }
266 |
267 |
268 | - (void) setType:(NoiseType)newType
269 | {
270 | NoiseType oldType = _type;
271 |
272 | if (oldType != newType) {
273 | _type = newType;
274 | if (newType == NoNoiseType) [self stopAudio];
275 | if (oldType == NoNoiseType) [self startAudio];
276 | }
277 | }
278 |
279 |
280 | - (double) volume
281 | {
282 | return _volume;
283 | }
284 |
285 |
286 | - (NoiseType) type
287 | {
288 | return _type;
289 | }
290 |
291 |
292 | @end
293 |
--------------------------------------------------------------------------------
/Noisy.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 45;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 0408DF68185E843C00F402CF /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0408DF67185E843C00F402CF /* AudioToolbox.framework */; };
11 | 552C29520E04A2CC0048FF6B /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 552C294C0E04A2CC0048FF6B /* main.m */; };
12 | 552C29530E04A2CC0048FF6B /* NoiseGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 552C294E0E04A2CC0048FF6B /* NoiseGenerator.m */; };
13 | 552C29540E04A2CC0048FF6B /* NoisyApp.m in Sources */ = {isa = PBXBuildFile; fileRef = 552C29510E04A2CC0048FF6B /* NoisyApp.m */; };
14 | 552C29650E04A3090048FF6B /* Noisy.sdef in Resources */ = {isa = PBXBuildFile; fileRef = 552C29640E04A3090048FF6B /* Noisy.sdef */; };
15 | 552C29A30E04A4900048FF6B /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 552C29A20E04A4900048FF6B /* Credits.rtf */; };
16 | 558406C70E10CEDD00EA991B /* Noisy.icns in Resources */ = {isa = PBXBuildFile; fileRef = 558406C60E10CEDD00EA991B /* Noisy.icns */; };
17 | 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; };
18 | 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
19 | 8D7FC7951213A76F00EB152C /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8D7FC7931213A76F00EB152C /* MainMenu.xib */; };
20 | /* End PBXBuildFile section */
21 |
22 | /* Begin PBXContainerItemProxy section */
23 | 556725580E57EBBE00327D19 /* PBXContainerItemProxy */ = {
24 | isa = PBXContainerItemProxy;
25 | containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
26 | proxyType = 1;
27 | remoteGlobalIDString = 8D1107260486CEB800E47090;
28 | remoteInfo = Noisy;
29 | };
30 | /* End PBXContainerItemProxy section */
31 |
32 | /* Begin PBXFileReference section */
33 | 0408DF67185E843C00F402CF /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = ../../../System/Library/Frameworks/AudioToolbox.framework; sourceTree = ""; };
34 | 0408DF69185E848600F402CF /* Noisy.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = Noisy.entitlements; sourceTree = ""; };
35 | 089C165DFE840E0CC02AAC07 /* InfoPlist.strings */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = InfoPlist.strings; path = Resources/English.lproj/InfoPlist.strings; sourceTree = ""; };
36 | 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; };
37 | 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; };
38 | 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; };
39 | 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; };
40 | 550C200D1171C44E0098F573 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
41 | 552C294C0E04A2CC0048FF6B /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Source/main.m; sourceTree = ""; };
42 | 552C294D0E04A2CC0048FF6B /* NoiseGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NoiseGenerator.h; path = Source/NoiseGenerator.h; sourceTree = ""; };
43 | 552C294E0E04A2CC0048FF6B /* NoiseGenerator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NoiseGenerator.m; path = Source/NoiseGenerator.m; sourceTree = ""; };
44 | 552C294F0E04A2CC0048FF6B /* Noisy.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Noisy.pch; path = Source/Noisy.pch; sourceTree = ""; };
45 | 552C29500E04A2CC0048FF6B /* NoisyApp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NoisyApp.h; path = Source/NoisyApp.h; sourceTree = ""; };
46 | 552C29510E04A2CC0048FF6B /* NoisyApp.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NoisyApp.m; path = Source/NoisyApp.m; sourceTree = ""; };
47 | 552C29640E04A3090048FF6B /* Noisy.sdef */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.sdef; name = Noisy.sdef; path = Resources/Noisy.sdef; sourceTree = ""; };
48 | 552C29A20E04A4900048FF6B /* Credits.rtf */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = Credits.rtf; path = Resources/Credits.rtf; sourceTree = ""; };
49 | 558406C60E10CEDD00EA991B /* Noisy.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = Noisy.icns; path = Resources/Noisy.icns; sourceTree = ""; };
50 | 55C932170E57F13500AE58E3 /* Create Zip */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "Create Zip"; sourceTree = BUILT_PRODUCTS_DIR; };
51 | 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = Resources/Info.plist; sourceTree = ""; };
52 | 8D1107320486CEB800E47090 /* Noisy.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Noisy.app; sourceTree = BUILT_PRODUCTS_DIR; };
53 | 8D7FC7941213A76F00EB152C /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = Resources/English.lproj/MainMenu.xib; sourceTree = ""; };
54 | /* End PBXFileReference section */
55 |
56 | /* Begin PBXFrameworksBuildPhase section */
57 | 8D11072E0486CEB800E47090 /* Frameworks */ = {
58 | isa = PBXFrameworksBuildPhase;
59 | buildActionMask = 2147483647;
60 | files = (
61 | 0408DF68185E843C00F402CF /* AudioToolbox.framework in Frameworks */,
62 | 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */,
63 | );
64 | runOnlyForDeploymentPostprocessing = 0;
65 | };
66 | /* End PBXFrameworksBuildPhase section */
67 |
68 | /* Begin PBXGroup section */
69 | 080E96DDFE201D6D7F000001 /* Source */ = {
70 | isa = PBXGroup;
71 | children = (
72 | 552C29500E04A2CC0048FF6B /* NoisyApp.h */,
73 | 552C29510E04A2CC0048FF6B /* NoisyApp.m */,
74 | 552C294D0E04A2CC0048FF6B /* NoiseGenerator.h */,
75 | 552C294E0E04A2CC0048FF6B /* NoiseGenerator.m */,
76 | 552C294F0E04A2CC0048FF6B /* Noisy.pch */,
77 | );
78 | name = Source;
79 | sourceTree = "";
80 | };
81 | 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = {
82 | isa = PBXGroup;
83 | children = (
84 | 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */,
85 | 550C200D1171C44E0098F573 /* AudioToolbox.framework */,
86 | );
87 | name = "Linked Frameworks";
88 | sourceTree = "";
89 | };
90 | 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = {
91 | isa = PBXGroup;
92 | children = (
93 | 29B97324FDCFA39411CA2CEA /* AppKit.framework */,
94 | 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */,
95 | 29B97325FDCFA39411CA2CEA /* Foundation.framework */,
96 | );
97 | name = "Other Frameworks";
98 | sourceTree = "";
99 | };
100 | 19C28FACFE9D520D11CA2CBB /* Products */ = {
101 | isa = PBXGroup;
102 | children = (
103 | 8D1107320486CEB800E47090 /* Noisy.app */,
104 | 55C932170E57F13500AE58E3 /* Create Zip */,
105 | );
106 | name = Products;
107 | sourceTree = "";
108 | };
109 | 29B97314FDCFA39411CA2CEA /* Noise2 */ = {
110 | isa = PBXGroup;
111 | children = (
112 | 0408DF69185E848600F402CF /* Noisy.entitlements */,
113 | 080E96DDFE201D6D7F000001 /* Source */,
114 | 29B97317FDCFA39411CA2CEA /* Resources */,
115 | 29B97323FDCFA39411CA2CEA /* Frameworks */,
116 | 19C28FACFE9D520D11CA2CBB /* Products */,
117 | );
118 | name = Noise2;
119 | sourceTree = "";
120 | };
121 | 29B97317FDCFA39411CA2CEA /* Resources */ = {
122 | isa = PBXGroup;
123 | children = (
124 | 552C294C0E04A2CC0048FF6B /* main.m */,
125 | 8D7FC7931213A76F00EB152C /* MainMenu.xib */,
126 | 558406C60E10CEDD00EA991B /* Noisy.icns */,
127 | 552C29A20E04A4900048FF6B /* Credits.rtf */,
128 | 552C29640E04A3090048FF6B /* Noisy.sdef */,
129 | 8D1107310486CEB800E47090 /* Info.plist */,
130 | 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */,
131 | );
132 | name = Resources;
133 | sourceTree = "";
134 | };
135 | 29B97323FDCFA39411CA2CEA /* Frameworks */ = {
136 | isa = PBXGroup;
137 | children = (
138 | 0408DF67185E843C00F402CF /* AudioToolbox.framework */,
139 | 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */,
140 | 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */,
141 | );
142 | name = Frameworks;
143 | sourceTree = "";
144 | };
145 | /* End PBXGroup section */
146 |
147 | /* Begin PBXNativeTarget section */
148 | 556725530E57EBB300327D19 /* Create Zip */ = {
149 | isa = PBXNativeTarget;
150 | buildConfigurationList = 556725610E57EC0000327D19 /* Build configuration list for PBXNativeTarget "Create Zip" */;
151 | buildPhases = (
152 | 5567255C0E57EBC900327D19 /* ShellScript */,
153 | );
154 | buildRules = (
155 | );
156 | dependencies = (
157 | 556725590E57EBBE00327D19 /* PBXTargetDependency */,
158 | );
159 | name = "Create Zip";
160 | productName = "Create Zip";
161 | productReference = 55C932170E57F13500AE58E3 /* Create Zip */;
162 | productType = "com.apple.product-type.tool";
163 | };
164 | 8D1107260486CEB800E47090 /* Noisy */ = {
165 | isa = PBXNativeTarget;
166 | buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "Noisy" */;
167 | buildPhases = (
168 | 8D1107290486CEB800E47090 /* Resources */,
169 | 8D11072C0486CEB800E47090 /* Sources */,
170 | 8D11072E0486CEB800E47090 /* Frameworks */,
171 | 55B597060DFCF50A00FDE3F4 /* Generate Scripting Definitions */,
172 | );
173 | buildRules = (
174 | );
175 | dependencies = (
176 | );
177 | name = Noisy;
178 | productInstallPath = "$(HOME)/Applications";
179 | productName = Noise2;
180 | productReference = 8D1107320486CEB800E47090 /* Noisy.app */;
181 | productType = "com.apple.product-type.application";
182 | };
183 | /* End PBXNativeTarget section */
184 |
185 | /* Begin PBXProject section */
186 | 29B97313FDCFA39411CA2CEA /* Project object */ = {
187 | isa = PBXProject;
188 | attributes = {
189 | TargetAttributes = {
190 | 8D1107260486CEB800E47090 = {
191 | SystemCapabilities = {
192 | com.apple.Sandbox = {
193 | enabled = 1;
194 | };
195 | };
196 | };
197 | };
198 | };
199 | buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Noisy" */;
200 | compatibilityVersion = "Xcode 3.0";
201 | developmentRegion = English;
202 | hasScannedForEncodings = 1;
203 | knownRegions = (
204 | en,
205 | );
206 | mainGroup = 29B97314FDCFA39411CA2CEA /* Noise2 */;
207 | projectDirPath = "";
208 | projectRoot = "";
209 | targets = (
210 | 8D1107260486CEB800E47090 /* Noisy */,
211 | 556725530E57EBB300327D19 /* Create Zip */,
212 | );
213 | };
214 | /* End PBXProject section */
215 |
216 | /* Begin PBXResourcesBuildPhase section */
217 | 8D1107290486CEB800E47090 /* Resources */ = {
218 | isa = PBXResourcesBuildPhase;
219 | buildActionMask = 2147483647;
220 | files = (
221 | 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */,
222 | 552C29650E04A3090048FF6B /* Noisy.sdef in Resources */,
223 | 552C29A30E04A4900048FF6B /* Credits.rtf in Resources */,
224 | 558406C70E10CEDD00EA991B /* Noisy.icns in Resources */,
225 | 8D7FC7951213A76F00EB152C /* MainMenu.xib in Resources */,
226 | );
227 | runOnlyForDeploymentPostprocessing = 0;
228 | };
229 | /* End PBXResourcesBuildPhase section */
230 |
231 | /* Begin PBXShellScriptBuildPhase section */
232 | 5567255C0E57EBC900327D19 /* ShellScript */ = {
233 | isa = PBXShellScriptBuildPhase;
234 | buildActionMask = 2147483647;
235 | files = (
236 | );
237 | inputPaths = (
238 | );
239 | outputPaths = (
240 | );
241 | runOnlyForDeploymentPostprocessing = 0;
242 | shellPath = /bin/sh;
243 | shellScript = "if [ $BUILD_STYLE != \"Release\" ]; then\n echo \"Could not generate .zip file.\"\n\techo \"Active Configuration needs to be set to 'Release'.\"\n\texit 1\nfi\n\ncd \"$BUILT_PRODUCTS_DIR\"\n\nDIR=Noisy\n\nrm -rf \"$DIR\" > /dev/null\nmkdir \"$DIR\"\n/Developer/Tools/CpMac -r Noisy.app $DIR\n\nmkdir \"$DIR/Source\"\ncp -r \"$SOURCE_ROOT\"/* \"$DIR/Source\"\n\nfind \"$DIR/Source/Noisy.xcodeproj\" -not -name \"project.pbxproj\" -depth 1 | xargs rm -rf\n\nzip -r Noisy.zip \"$DIR\"\nrm -rf \"$DIR\" > /dev/null\n\nopen .";
244 | };
245 | 55B597060DFCF50A00FDE3F4 /* Generate Scripting Definitions */ = {
246 | isa = PBXShellScriptBuildPhase;
247 | buildActionMask = 2147483647;
248 | files = (
249 | );
250 | inputPaths = (
251 | );
252 | name = "Generate Scripting Definitions";
253 | outputPaths = (
254 | );
255 | runOnlyForDeploymentPostprocessing = 0;
256 | shellPath = /bin/sh;
257 | shellScript = "#!/bin/sh\n\noutput=`sdp -fst -o \"$BUILT_PRODUCTS_DIR/$FULL_PRODUCT_NAME/Contents/Resources\" \"$SOURCE_ROOT/Resources/Noisy.sdef\" 2>&1`\nif [ ${#output} -gt 0 ] ; then\n echo $output\nfi\n";
258 | };
259 | /* End PBXShellScriptBuildPhase section */
260 |
261 | /* Begin PBXSourcesBuildPhase section */
262 | 8D11072C0486CEB800E47090 /* Sources */ = {
263 | isa = PBXSourcesBuildPhase;
264 | buildActionMask = 2147483647;
265 | files = (
266 | 552C29520E04A2CC0048FF6B /* main.m in Sources */,
267 | 552C29530E04A2CC0048FF6B /* NoiseGenerator.m in Sources */,
268 | 552C29540E04A2CC0048FF6B /* NoisyApp.m in Sources */,
269 | );
270 | runOnlyForDeploymentPostprocessing = 0;
271 | };
272 | /* End PBXSourcesBuildPhase section */
273 |
274 | /* Begin PBXTargetDependency section */
275 | 556725590E57EBBE00327D19 /* PBXTargetDependency */ = {
276 | isa = PBXTargetDependency;
277 | target = 8D1107260486CEB800E47090 /* Noisy */;
278 | targetProxy = 556725580E57EBBE00327D19 /* PBXContainerItemProxy */;
279 | };
280 | /* End PBXTargetDependency section */
281 |
282 | /* Begin PBXVariantGroup section */
283 | 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = {
284 | isa = PBXVariantGroup;
285 | children = (
286 | 089C165DFE840E0CC02AAC07 /* InfoPlist.strings */,
287 | );
288 | name = InfoPlist.strings;
289 | sourceTree = "";
290 | };
291 | 8D7FC7931213A76F00EB152C /* MainMenu.xib */ = {
292 | isa = PBXVariantGroup;
293 | children = (
294 | 8D7FC7941213A76F00EB152C /* English */,
295 | );
296 | name = MainMenu.xib;
297 | sourceTree = "";
298 | };
299 | /* End PBXVariantGroup section */
300 |
301 | /* Begin XCBuildConfiguration section */
302 | 556725560E57EBB400327D19 /* Debug */ = {
303 | isa = XCBuildConfiguration;
304 | buildSettings = {
305 | ALWAYS_SEARCH_USER_PATHS = NO;
306 | COPY_PHASE_STRIP = NO;
307 | GCC_DYNAMIC_NO_PIC = NO;
308 | GCC_ENABLE_FIX_AND_CONTINUE = YES;
309 | GCC_MODEL_TUNING = G5;
310 | GCC_OPTIMIZATION_LEVEL = 0;
311 | GCC_PRECOMPILE_PREFIX_HEADER = YES;
312 | GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h";
313 | INSTALL_PATH = /usr/local/bin;
314 | OTHER_LDFLAGS = (
315 | "-framework",
316 | Foundation,
317 | "-framework",
318 | AppKit,
319 | );
320 | PREBINDING = NO;
321 | PRODUCT_NAME = "";
322 | };
323 | name = Debug;
324 | };
325 | 556725570E57EBB400327D19 /* Release */ = {
326 | isa = XCBuildConfiguration;
327 | buildSettings = {
328 | ALWAYS_SEARCH_USER_PATHS = NO;
329 | COPY_PHASE_STRIP = YES;
330 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
331 | GCC_ENABLE_FIX_AND_CONTINUE = NO;
332 | GCC_MODEL_TUNING = G5;
333 | GCC_PRECOMPILE_PREFIX_HEADER = YES;
334 | GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h";
335 | INSTALL_PATH = /usr/local/bin;
336 | OTHER_LDFLAGS = (
337 | "-framework",
338 | Foundation,
339 | "-framework",
340 | AppKit,
341 | );
342 | PREBINDING = NO;
343 | PRODUCT_NAME = "Create Zip";
344 | ZERO_LINK = NO;
345 | };
346 | name = Release;
347 | };
348 | C01FCF4B08A954540054247B /* Debug */ = {
349 | isa = XCBuildConfiguration;
350 | buildSettings = {
351 | ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
352 | CODE_SIGN_ENTITLEMENTS = Noisy.entitlements;
353 | CODE_SIGN_IDENTITY = "-";
354 | COPY_PHASE_STRIP = NO;
355 | GCC_DYNAMIC_NO_PIC = NO;
356 | GCC_ENABLE_FIX_AND_CONTINUE = YES;
357 | GCC_MODEL_TUNING = G5;
358 | GCC_OPTIMIZATION_LEVEL = 0;
359 | GCC_PRECOMPILE_PREFIX_HEADER = YES;
360 | GCC_PREFIX_HEADER = Source/Noisy.pch;
361 | INFOPLIST_FILE = Resources/Info.plist;
362 | INSTALL_PATH = "$(HOME)/Applications";
363 | ONLY_ACTIVE_ARCH = YES;
364 | PRODUCT_NAME = Noisy;
365 | SDKROOT = macosx;
366 | VALID_ARCHS = "ppc i386 x86_64";
367 | WRAPPER_EXTENSION = app;
368 | ZERO_LINK = YES;
369 | };
370 | name = Debug;
371 | };
372 | C01FCF4C08A954540054247B /* Release */ = {
373 | isa = XCBuildConfiguration;
374 | buildSettings = {
375 | ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
376 | CODE_SIGN_ENTITLEMENTS = Noisy.entitlements;
377 | CODE_SIGN_IDENTITY = "-";
378 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
379 | GCC_MODEL_TUNING = G5;
380 | GCC_PRECOMPILE_PREFIX_HEADER = YES;
381 | GCC_PREFIX_HEADER = Source/Noisy.pch;
382 | INFOPLIST_FILE = Resources/Info.plist;
383 | INSTALL_PATH = "$(HOME)/Applications";
384 | PRODUCT_NAME = Noisy;
385 | SDKROOT = macosx;
386 | VALID_ARCHS = "ppc i386 x86_64";
387 | WRAPPER_EXTENSION = app;
388 | };
389 | name = Release;
390 | };
391 | C01FCF4F08A954540054247B /* Debug */ = {
392 | isa = XCBuildConfiguration;
393 | buildSettings = {
394 | GCC_WARN_ABOUT_RETURN_TYPE = YES;
395 | GCC_WARN_UNUSED_VARIABLE = YES;
396 | PREBINDING = NO;
397 | SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk";
398 | };
399 | name = Debug;
400 | };
401 | C01FCF5008A954540054247B /* Release */ = {
402 | isa = XCBuildConfiguration;
403 | buildSettings = {
404 | ARCHS = (
405 | ppc,
406 | i386,
407 | );
408 | GCC_WARN_ABOUT_RETURN_TYPE = YES;
409 | GCC_WARN_UNUSED_VARIABLE = YES;
410 | PREBINDING = NO;
411 | SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk";
412 | };
413 | name = Release;
414 | };
415 | /* End XCBuildConfiguration section */
416 |
417 | /* Begin XCConfigurationList section */
418 | 556725610E57EC0000327D19 /* Build configuration list for PBXNativeTarget "Create Zip" */ = {
419 | isa = XCConfigurationList;
420 | buildConfigurations = (
421 | 556725560E57EBB400327D19 /* Debug */,
422 | 556725570E57EBB400327D19 /* Release */,
423 | );
424 | defaultConfigurationIsVisible = 0;
425 | defaultConfigurationName = Release;
426 | };
427 | C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "Noisy" */ = {
428 | isa = XCConfigurationList;
429 | buildConfigurations = (
430 | C01FCF4B08A954540054247B /* Debug */,
431 | C01FCF4C08A954540054247B /* Release */,
432 | );
433 | defaultConfigurationIsVisible = 0;
434 | defaultConfigurationName = Release;
435 | };
436 | C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Noisy" */ = {
437 | isa = XCConfigurationList;
438 | buildConfigurations = (
439 | C01FCF4F08A954540054247B /* Debug */,
440 | C01FCF5008A954540054247B /* Release */,
441 | );
442 | defaultConfigurationIsVisible = 0;
443 | defaultConfigurationName = Release;
444 | };
445 | /* End XCConfigurationList section */
446 | };
447 | rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
448 | }
449 |
--------------------------------------------------------------------------------
/Resources/English.lproj/MainMenu.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 1050
5 | 10F569
6 | 783
7 | 1038.29
8 | 461.00
9 |
13 |
17 |
21 |
30 |
31 | YES
32 |
33 | NoisyApp
34 |
35 |
36 | FirstResponder
37 |
38 |
39 | NSApplication
40 |
41 |
241 |
242 | 263
243 | 2
244 | {{570, 471}, {230, 60}}
245 | 611844096
246 |
247 | NSWindow
248 |
249 | {3.40282e+38, 3.40282e+38}
250 |
251 |
252 | 256
253 |
254 | YES
255 |
256 |
257 | 268
258 | {{10, 30}, {210, 25}}
259 |
260 | YES
261 |
262 | -2080244224
263 | 0
264 |
265 | LucidaGrande
266 | 13
267 | 16
268 |
269 |
270 |
271 | YES
272 |
273 | Off
274 | 0
275 |
276 |
277 | White
278 | 1
279 | 0
280 |
281 |
282 | Pink
283 | 2
284 | 0
285 |
286 |
287 | Brown
288 | 3
289 | YES
290 | 0
291 |
292 |
293 | 3
294 | 2
295 |
296 |
297 |
298 |
299 | 268
300 | {{8, 5}, {214, 21}}
301 |
302 | YES
303 |
304 | -2079981824
305 | 0
306 |
307 |
308 | Helvetica
309 | 12
310 | 16
311 |
312 |
313 | 1
314 | 0.0
315 | 1
316 | 0.0
317 | 0
318 | 1
319 | NO
320 | NO
321 |
322 |
323 |
324 | {230, 60}
325 |
326 | {{0, 0}, {1280, 778}}
327 | {3.40282e+38, 3.40282e+38}
328 | NoisyWindow
329 |
330 |
331 | NoisyApp
332 |
333 |
334 |
335 |
336 | YES
337 |
338 |
339 | openNoisyWebsite:
340 |
341 |
342 |
343 | 271
344 |
345 |
346 |
347 | selectedTag: noiseType
348 |
349 |
350 |
351 |
352 |
353 | selectedTag: noiseType
354 | selectedTag
355 | noiseType
356 | 2
357 |
358 |
359 | 292
360 |
361 |
362 |
363 | value: volume
364 |
365 |
366 |
367 |
368 |
369 | value: volume
370 | value
371 | volume
372 | 2
373 |
374 |
375 | 293
376 |
377 |
378 |
379 | oWindow
380 |
381 |
382 |
383 | 295
384 |
385 |
386 |
387 | hide:
388 |
389 |
390 |
391 | 299
392 |
393 |
394 |
395 | terminate:
396 |
397 |
398 |
399 | 300
400 |
401 |
402 |
403 | miniaturizeAll:
404 |
405 |
406 |
407 | 301
408 |
409 |
410 |
411 | hideOtherApplications:
412 |
413 |
414 |
415 | 302
416 |
417 |
418 |
419 | orderFrontStandardAboutPanel:
420 |
421 |
422 |
423 | 303
424 |
425 |
426 |
427 | delegate
428 |
429 |
430 |
431 | 305
432 |
433 |
434 |
435 | orderOut:
436 |
437 |
438 |
439 | 309
440 |
441 |
442 |
443 | makeKeyAndOrderFront:
444 |
445 |
446 |
447 | 310
448 |
449 |
450 |
451 | delegate
452 |
453 |
454 |
455 | 312
456 |
457 |
458 |
459 | openAboutNoiseColors:
460 |
461 |
462 |
463 | 313
464 |
465 |
466 |
467 |
468 | YES
469 |
470 | 0
471 |
472 |
473 |
474 |
475 |
476 | -2
477 |
478 |
479 | File's Owner
480 |
481 |
482 | -1
483 |
484 |
485 | First Responder
486 |
487 |
488 | -3
489 |
490 |
491 | Application
492 |
493 |
494 | 29
495 |
496 |
497 | YES
498 |
499 |
500 |
501 |
502 |
503 | MainMenu
504 |
505 |
506 | 19
507 |
508 |
509 | YES
510 |
511 |
512 |
513 |
514 |
515 | 24
516 |
517 |
518 | YES
519 |
520 |
521 |
522 |
523 |
524 |
525 |
526 |
527 | 5
528 |
529 |
530 |
531 |
532 | 23
533 |
534 |
535 |
536 |
537 | 92
538 |
539 |
540 |
541 |
542 | 56
543 |
544 |
545 | YES
546 |
547 |
548 |
549 |
550 |
551 | 57
552 |
553 |
554 | YES
555 |
556 |
557 |
558 |
559 |
560 |
561 |
562 |
563 |
564 |
565 |
566 | 58
567 |
568 |
569 |
570 |
571 | 134
572 |
573 |
574 |
575 |
576 | 136
577 |
578 |
579 |
580 |
581 | 145
582 |
583 |
584 |
585 |
586 | 149
587 |
588 |
589 |
590 |
591 | 150
592 |
593 |
594 |
595 |
596 | 231
597 |
598 |
599 |
600 |
601 | 103
602 |
603 |
604 | YES
605 |
606 |
607 |
608 |
609 |
610 | 106
611 |
612 |
613 | YES
614 |
615 |
616 |
617 |
618 |
619 |
620 |
621 | 270
622 |
623 |
624 |
625 |
626 | 276
627 |
628 |
629 |
630 |
631 | 278
632 |
633 |
634 |
635 |
636 | 240
637 |
638 |
639 | YES
640 |
641 |
642 |
643 | Window
644 |
645 |
646 | 241
647 |
648 |
649 | YES
650 |
651 |
652 |
653 |
654 |
655 |
656 | 242
657 |
658 |
659 | YES
660 |
661 |
662 |
663 |
664 |
665 | 244
666 |
667 |
668 | YES
669 |
670 |
671 |
672 |
673 |
674 | 283
675 |
676 |
677 |
678 |
679 | 284
680 |
681 |
682 |
683 |
684 | 291
685 |
686 |
687 | NoisyApp
688 |
689 |
690 | 307
691 |
692 |
693 |
694 |
695 |
696 |
697 | YES
698 |
699 | YES
700 | -3.IBPluginDependency
701 | -3.ImportedFromIB2
702 | 103.IBPluginDependency
703 | 103.ImportedFromIB2
704 | 106.IBEditorWindowLastContentRect
705 | 106.IBPluginDependency
706 | 106.ImportedFromIB2
707 | 134.IBPluginDependency
708 | 134.ImportedFromIB2
709 | 136.IBPluginDependency
710 | 136.ImportedFromIB2
711 | 145.IBPluginDependency
712 | 145.ImportedFromIB2
713 | 149.IBPluginDependency
714 | 149.ImportedFromIB2
715 | 150.IBPluginDependency
716 | 150.ImportedFromIB2
717 | 19.IBPluginDependency
718 | 19.ImportedFromIB2
719 | 23.IBPluginDependency
720 | 23.ImportedFromIB2
721 | 231.IBPluginDependency
722 | 231.ImportedFromIB2
723 | 24.IBEditorWindowLastContentRect
724 | 24.IBPluginDependency
725 | 24.ImportedFromIB2
726 | 240.IBEditorWindowLastContentRect
727 | 240.IBPluginDependency
728 | 240.IBWindowTemplateEditedContentRect
729 | 240.ImportedFromIB2
730 | 240.NSWindowTemplate.visibleAtLaunch
731 | 241.IBPluginDependency
732 | 241.ImportedFromIB2
733 | 242.IBPluginDependency
734 | 242.ImportedFromIB2
735 | 244.IBPluginDependency
736 | 244.ImportedFromIB2
737 | 270.IBPluginDependency
738 | 270.ImportedFromIB2
739 | 276.IBPluginDependency
740 | 276.ImportedFromIB2
741 | 278.IBPluginDependency
742 | 278.ImportedFromIB2
743 | 283.IBPluginDependency
744 | 283.IBSegmentedControlInspectorSelectedSegmentMetadataKey
745 | 284.IBPluginDependency
746 | 29.IBEditorWindowLastContentRect
747 | 29.IBPluginDependency
748 | 29.ImportedFromIB2
749 | 307.IBPluginDependency
750 | 5.IBPluginDependency
751 | 5.ImportedFromIB2
752 | 56.IBPluginDependency
753 | 56.ImportedFromIB2
754 | 57.IBEditorWindowLastContentRect
755 | 57.IBPluginDependency
756 | 57.ImportedFromIB2
757 | 58.IBPluginDependency
758 | 58.ImportedFromIB2
759 | 92.IBPluginDependency
760 | 92.ImportedFromIB2
761 |
762 |
763 | YES
764 | com.apple.InterfaceBuilder.CocoaPlugin
765 |
766 | com.apple.InterfaceBuilder.CocoaPlugin
767 |
768 | {{976, 783}, {253, 53}}
769 | com.apple.InterfaceBuilder.CocoaPlugin
770 |
771 | com.apple.InterfaceBuilder.CocoaPlugin
772 |
773 | com.apple.InterfaceBuilder.CocoaPlugin
774 |
775 | com.apple.InterfaceBuilder.CocoaPlugin
776 |
777 | com.apple.InterfaceBuilder.CocoaPlugin
778 |
779 | com.apple.InterfaceBuilder.CocoaPlugin
780 |
781 | com.apple.InterfaceBuilder.CocoaPlugin
782 |
783 | com.apple.InterfaceBuilder.CocoaPlugin
784 |
785 | com.apple.InterfaceBuilder.CocoaPlugin
786 |
787 | {{905, 763}, {194, 73}}
788 | com.apple.InterfaceBuilder.CocoaPlugin
789 |
790 | {{381, 534}, {230, 60}}
791 | com.apple.InterfaceBuilder.CocoaPlugin
792 | {{381, 534}, {230, 60}}
793 |
794 |
795 | com.apple.InterfaceBuilder.CocoaPlugin
796 |
797 | com.apple.InterfaceBuilder.CocoaPlugin
798 |
799 | com.apple.InterfaceBuilder.CocoaPlugin
800 |
801 | com.apple.InterfaceBuilder.CocoaPlugin
802 |
803 | com.apple.InterfaceBuilder.CocoaPlugin
804 |
805 | com.apple.InterfaceBuilder.CocoaPlugin
806 |
807 | com.apple.InterfaceBuilder.CocoaPlugin
808 |
809 | com.apple.InterfaceBuilder.CocoaPlugin
810 | {{834, 836}, {203, 20}}
811 | com.apple.InterfaceBuilder.CocoaPlugin
812 |
813 | com.apple.InterfaceBuilder.CocoaPlugin
814 | com.apple.InterfaceBuilder.CocoaPlugin
815 |
816 | com.apple.InterfaceBuilder.CocoaPlugin
817 |
818 | {{846, 713}, {159, 123}}
819 | com.apple.InterfaceBuilder.CocoaPlugin
820 |
821 | com.apple.InterfaceBuilder.CocoaPlugin
822 |
823 | com.apple.InterfaceBuilder.CocoaPlugin
824 |
825 |
826 |
827 |
828 | YES
829 |
830 |
831 | YES
832 |
833 |
834 |
835 |
836 | YES
837 |
838 |
839 | YES
840 |
841 |
842 |
843 | 313
844 |
845 |
846 |
847 | YES
848 |
849 | FirstResponder
850 | NSObject
851 |
852 | IBUserSource
853 |
854 |
855 |
856 |
857 | NoisyApp
858 | NSApplication
859 |
860 | YES
861 |
862 | YES
863 | openAboutNoiseColors:
864 | openNoisyWebsite:
865 |
866 |
867 | YES
868 | id
869 | id
870 |
871 |
872 |
873 | YES
874 |
875 | YES
876 | openAboutNoiseColors:
877 | openNoisyWebsite:
878 |
879 |
880 | YES
881 |
882 | openAboutNoiseColors:
883 | id
884 |
885 |
886 | openNoisyWebsite:
887 | id
888 |
889 |
890 |
891 |
892 | oWindow
893 | NSWindow
894 |
895 |
896 | oWindow
897 |
898 | oWindow
899 | NSWindow
900 |
901 |
902 |
903 | IBProjectSource
904 | Source/NoisyApp.h
905 |
906 |
907 |
908 | NoisyApp
909 | NSApplication
910 |
911 | IBUserSource
912 |
913 |
914 |
915 |
916 |
917 | YES
918 |
919 | NSActionCell
920 | NSCell
921 |
922 | IBFrameworkSource
923 | AppKit.framework/Headers/NSActionCell.h
924 |
925 |
926 |
927 | NSApplication
928 | NSResponder
929 |
930 | IBFrameworkSource
931 | AppKit.framework/Headers/NSApplication.h
932 |
933 |
934 |
935 | NSApplication
936 |
937 | IBFrameworkSource
938 | AppKit.framework/Headers/NSApplicationScripting.h
939 |
940 |
941 |
942 | NSApplication
943 |
944 | IBFrameworkSource
945 | AppKit.framework/Headers/NSColorPanel.h
946 |
947 |
948 |
949 | NSApplication
950 |
951 | IBFrameworkSource
952 | AppKit.framework/Headers/NSHelpManager.h
953 |
954 |
955 |
956 | NSApplication
957 |
958 | IBFrameworkSource
959 | AppKit.framework/Headers/NSPageLayout.h
960 |
961 |
962 |
963 | NSApplication
964 |
965 | IBFrameworkSource
966 | AppKit.framework/Headers/NSUserInterfaceItemSearching.h
967 |
968 |
969 |
970 | NSCell
971 | NSObject
972 |
973 | IBFrameworkSource
974 | AppKit.framework/Headers/NSCell.h
975 |
976 |
977 |
978 | NSControl
979 | NSView
980 |
981 | IBFrameworkSource
982 | AppKit.framework/Headers/NSControl.h
983 |
984 |
985 |
986 | NSFormatter
987 | NSObject
988 |
989 | IBFrameworkSource
990 | Foundation.framework/Headers/NSFormatter.h
991 |
992 |
993 |
994 | NSMenu
995 | NSObject
996 |
997 | IBFrameworkSource
998 | AppKit.framework/Headers/NSMenu.h
999 |
1000 |
1001 |
1002 | NSMenuItem
1003 | NSObject
1004 |
1005 | IBFrameworkSource
1006 | AppKit.framework/Headers/NSMenuItem.h
1007 |
1008 |
1009 |
1010 | NSObject
1011 |
1012 | IBFrameworkSource
1013 | AppKit.framework/Headers/NSAccessibility.h
1014 |
1015 |
1016 |
1017 | NSObject
1018 |
1019 |
1020 |
1021 | NSObject
1022 |
1023 |
1024 |
1025 | NSObject
1026 |
1027 |
1028 |
1029 | NSObject
1030 |
1031 |
1032 |
1033 | NSObject
1034 |
1035 | IBFrameworkSource
1036 | AppKit.framework/Headers/NSDictionaryController.h
1037 |
1038 |
1039 |
1040 | NSObject
1041 |
1042 | IBFrameworkSource
1043 | AppKit.framework/Headers/NSDragging.h
1044 |
1045 |
1046 |
1047 | NSObject
1048 |
1049 | IBFrameworkSource
1050 | AppKit.framework/Headers/NSFontManager.h
1051 |
1052 |
1053 |
1054 | NSObject
1055 |
1056 | IBFrameworkSource
1057 | AppKit.framework/Headers/NSFontPanel.h
1058 |
1059 |
1060 |
1061 | NSObject
1062 |
1063 | IBFrameworkSource
1064 | AppKit.framework/Headers/NSKeyValueBinding.h
1065 |
1066 |
1067 |
1068 | NSObject
1069 |
1070 |
1071 |
1072 | NSObject
1073 |
1074 | IBFrameworkSource
1075 | AppKit.framework/Headers/NSNibLoading.h
1076 |
1077 |
1078 |
1079 | NSObject
1080 |
1081 | IBFrameworkSource
1082 | AppKit.framework/Headers/NSOutlineView.h
1083 |
1084 |
1085 |
1086 | NSObject
1087 |
1088 | IBFrameworkSource
1089 | AppKit.framework/Headers/NSPasteboard.h
1090 |
1091 |
1092 |
1093 | NSObject
1094 |
1095 | IBFrameworkSource
1096 | AppKit.framework/Headers/NSSavePanel.h
1097 |
1098 |
1099 |
1100 | NSObject
1101 |
1102 | IBFrameworkSource
1103 | AppKit.framework/Headers/NSTableView.h
1104 |
1105 |
1106 |
1107 | NSObject
1108 |
1109 | IBFrameworkSource
1110 | AppKit.framework/Headers/NSToolbarItem.h
1111 |
1112 |
1113 |
1114 | NSObject
1115 |
1116 | IBFrameworkSource
1117 | AppKit.framework/Headers/NSView.h
1118 |
1119 |
1120 |
1121 | NSObject
1122 |
1123 | IBFrameworkSource
1124 | Foundation.framework/Headers/NSArchiver.h
1125 |
1126 |
1127 |
1128 | NSObject
1129 |
1130 | IBFrameworkSource
1131 | Foundation.framework/Headers/NSClassDescription.h
1132 |
1133 |
1134 |
1135 | NSObject
1136 |
1137 | IBFrameworkSource
1138 | Foundation.framework/Headers/NSError.h
1139 |
1140 |
1141 |
1142 | NSObject
1143 |
1144 | IBFrameworkSource
1145 | Foundation.framework/Headers/NSFileManager.h
1146 |
1147 |
1148 |
1149 | NSObject
1150 |
1151 | IBFrameworkSource
1152 | Foundation.framework/Headers/NSKeyValueCoding.h
1153 |
1154 |
1155 |
1156 | NSObject
1157 |
1158 | IBFrameworkSource
1159 | Foundation.framework/Headers/NSKeyValueObserving.h
1160 |
1161 |
1162 |
1163 | NSObject
1164 |
1165 | IBFrameworkSource
1166 | Foundation.framework/Headers/NSKeyedArchiver.h
1167 |
1168 |
1169 |
1170 | NSObject
1171 |
1172 | IBFrameworkSource
1173 | Foundation.framework/Headers/NSObject.h
1174 |
1175 |
1176 |
1177 | NSObject
1178 |
1179 | IBFrameworkSource
1180 | Foundation.framework/Headers/NSObjectScripting.h
1181 |
1182 |
1183 |
1184 | NSObject
1185 |
1186 | IBFrameworkSource
1187 | Foundation.framework/Headers/NSPortCoder.h
1188 |
1189 |
1190 |
1191 | NSObject
1192 |
1193 | IBFrameworkSource
1194 | Foundation.framework/Headers/NSRunLoop.h
1195 |
1196 |
1197 |
1198 | NSObject
1199 |
1200 | IBFrameworkSource
1201 | Foundation.framework/Headers/NSScriptClassDescription.h
1202 |
1203 |
1204 |
1205 | NSObject
1206 |
1207 | IBFrameworkSource
1208 | Foundation.framework/Headers/NSScriptKeyValueCoding.h
1209 |
1210 |
1211 |
1212 | NSObject
1213 |
1214 | IBFrameworkSource
1215 | Foundation.framework/Headers/NSScriptObjectSpecifiers.h
1216 |
1217 |
1218 |
1219 | NSObject
1220 |
1221 | IBFrameworkSource
1222 | Foundation.framework/Headers/NSScriptWhoseTests.h
1223 |
1224 |
1225 |
1226 | NSObject
1227 |
1228 | IBFrameworkSource
1229 | Foundation.framework/Headers/NSThread.h
1230 |
1231 |
1232 |
1233 | NSObject
1234 |
1235 | IBFrameworkSource
1236 | Foundation.framework/Headers/NSURL.h
1237 |
1238 |
1239 |
1240 | NSObject
1241 |
1242 | IBFrameworkSource
1243 | Foundation.framework/Headers/NSURLConnection.h
1244 |
1245 |
1246 |
1247 | NSObject
1248 |
1249 | IBFrameworkSource
1250 | Foundation.framework/Headers/NSURLDownload.h
1251 |
1252 |
1253 |
1254 | NSResponder
1255 |
1256 | IBFrameworkSource
1257 | AppKit.framework/Headers/NSInterfaceStyle.h
1258 |
1259 |
1260 |
1261 | NSResponder
1262 | NSObject
1263 |
1264 | IBFrameworkSource
1265 | AppKit.framework/Headers/NSResponder.h
1266 |
1267 |
1268 |
1269 | NSSegmentedCell
1270 | NSActionCell
1271 |
1272 | IBFrameworkSource
1273 | AppKit.framework/Headers/NSSegmentedCell.h
1274 |
1275 |
1276 |
1277 | NSSegmentedControl
1278 | NSControl
1279 |
1280 | IBFrameworkSource
1281 | AppKit.framework/Headers/NSSegmentedControl.h
1282 |
1283 |
1284 |
1285 | NSSlider
1286 | NSControl
1287 |
1288 | IBFrameworkSource
1289 | AppKit.framework/Headers/NSSlider.h
1290 |
1291 |
1292 |
1293 | NSSliderCell
1294 | NSActionCell
1295 |
1296 | IBFrameworkSource
1297 | AppKit.framework/Headers/NSSliderCell.h
1298 |
1299 |
1300 |
1301 | NSView
1302 |
1303 | IBFrameworkSource
1304 | AppKit.framework/Headers/NSClipView.h
1305 |
1306 |
1307 |
1308 | NSView
1309 |
1310 |
1311 |
1312 | NSView
1313 |
1314 | IBFrameworkSource
1315 | AppKit.framework/Headers/NSRulerView.h
1316 |
1317 |
1318 |
1319 | NSView
1320 | NSResponder
1321 |
1322 |
1323 |
1324 | NSWindow
1325 |
1326 | IBFrameworkSource
1327 | AppKit.framework/Headers/NSDrawer.h
1328 |
1329 |
1330 |
1331 | NSWindow
1332 | NSResponder
1333 |
1334 | IBFrameworkSource
1335 | AppKit.framework/Headers/NSWindow.h
1336 |
1337 |
1338 |
1339 | NSWindow
1340 |
1341 | IBFrameworkSource
1342 | AppKit.framework/Headers/NSWindowScripting.h
1343 |
1344 |
1345 |
1346 |
1347 | 0
1348 | IBCocoaFramework
1349 |
1350 | com.apple.InterfaceBuilder.CocoaPlugin.macosx
1351 |
1352 |
1353 |
1354 | com.apple.InterfaceBuilder.CocoaPlugin.macosx
1355 |
1356 |
1357 |
1358 | com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3
1359 |
1360 |
1361 | YES
1362 | ../../Noisy.xcodeproj
1363 | 3
1364 |
1365 | YES
1366 |
1367 | YES
1368 | NSMenuCheckmark
1369 | NSMenuMixedState
1370 |
1371 |
1372 | YES
1373 | {9, 8}
1374 | {7, 2}
1375 |
1376 |
1377 |
1378 |
1379 |
--------------------------------------------------------------------------------