├── 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 | 10 | com.apple.InterfaceBuilder.CocoaPlugin 11 | 783 12 | 13 | 14 | YES 15 | 16 | 17 | 18 | YES 19 | com.apple.InterfaceBuilder.CocoaPlugin 20 | 21 | 22 | YES 23 | 24 | YES 25 | 26 | 27 | YES 28 | 29 | 30 | 31 | YES 32 | 33 | NoisyApp 34 | 35 | 36 | FirstResponder 37 | 38 | 39 | NSApplication 40 | 41 | 42 | MainMenu 43 | 44 | YES 45 | 46 | 47 | Noisy 48 | 49 | 1048576 50 | 2147483647 51 | 52 | NSImage 53 | NSMenuCheckmark 54 | 55 | 56 | NSImage 57 | NSMenuMixedState 58 | 59 | submenuAction: 60 | 61 | Noisy 62 | 63 | YES 64 | 65 | 66 | About Noisy 67 | 68 | 2147483647 69 | 70 | 71 | 72 | 73 | 74 | YES 75 | YES 76 | 77 | 78 | 1048576 79 | 2147483647 80 | 81 | 82 | 83 | 84 | 85 | Hide Noisy 86 | h 87 | 1048576 88 | 2147483647 89 | 90 | 91 | 92 | 93 | 94 | Hide Others 95 | 96 | 1048576 97 | 2147483647 98 | 99 | 100 | 101 | 102 | 103 | Show All 104 | 1 105 | 1048576 106 | 2147483647 107 | 108 | 109 | 110 | 111 | 112 | YES 113 | YES 114 | 115 | 116 | 1048576 117 | 2147483647 118 | 119 | 120 | 121 | 122 | 123 | Quit Noisy 124 | q 125 | 1048576 126 | 2147483647 127 | 128 | 129 | 130 | 131 | _NSAppleMenu 132 | 133 | 134 | 135 | 136 | Window 137 | 138 | 1048576 139 | 2147483647 140 | 141 | 142 | submenuAction: 143 | 144 | 145 | Window 146 | 147 | 148 | YES 149 | 150 | 151 | Close Window 152 | w 153 | 1048576 154 | 2147483647 155 | 156 | 157 | 158 | 159 | 160 | Minimize 161 | m 162 | 1048576 163 | 2147483647 164 | 165 | 166 | 167 | 168 | 169 | YES 170 | YES 171 | 172 | 173 | 1048576 174 | 2147483647 175 | 176 | 177 | 178 | 179 | 180 | Bring All to Front 181 | 182 | 1048576 183 | 2147483647 184 | 185 | 186 | 187 | 188 | _NSWindowsMenu 189 | 190 | 191 | 192 | 193 | Help 194 | 195 | 1048576 196 | 2147483647 197 | 198 | 199 | submenuAction: 200 | 201 | 202 | Help 203 | 204 | 205 | YES 206 | 207 | 208 | About the “Colors” of Noise 209 | 210 | 1048576 211 | 2147483647 212 | 213 | 214 | 215 | 216 | 217 | YES 218 | YES 219 | 220 | 221 | 1048576 222 | 2147483647 223 | 224 | 225 | 226 | 227 | 228 | Noisy Website 229 | 230 | 1048576 231 | 2147483647 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | _NSMainMenu 240 | 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 | --------------------------------------------------------------------------------