├── README.md ├── Xcode_Bird.aiff ├── Xcode_Bzzt.aiff ├── Xcode_Chime.aiff ├── Xcode_Click.aiff ├── Xcode_Collect.aiff ├── Xcode_Error.aiff ├── Xcode_Knock.aiff ├── Xcode_Pop.aiff ├── Xcode_Punch.aiff ├── Xcode_Quack.aiff ├── Xcode_Swish.aiff ├── Xcode_Zip.aiff └── xcode_debug_sounds.png /README.md: -------------------------------------------------------------------------------- 1 | # Xcode Breakpoint Sounds 2 | 3 | ![Sounds](/xcode_debug_sounds.png?raw=true "Sounds") 4 | 5 | **Xcode Breakpoint Sounds** is a custom collection of audio files specifically made for use with Xcode's _Sound_ breakpoint action. 6 | 7 | For more info, see the [complete blog post](http://sound-of-silence.com/?article=20170306) on these sounds. 8 | 9 | ## :speaker: Why use sounds? 10 | 11 | The biggest downside of typical breakpoints is that they freeze everything in its tracks and forcibly remove you from the context of the app you're debugging. Sometimes you'll want to gain a better understanding of how and when certain code is executing as you use the app in a fluid, natural manner. 12 | 13 | **Audible breakpoints** have several unique advantages. They allow you to: 14 | 15 | - Use the app you're debugging in a natural, fluid manner, without interruptions 16 | - Keep your eyes completely focused on the UI or visual behaviors of that app 17 | - Obtain immediate feedback when reproducing timing-sensitive bugs, since the app does not need to be paused for the breakpoints to communicate the intended information 18 | - On macOS, avoid unwanted side effects caused by the app being deactivated when Xcode is brought forward (this is especially useful when debugging issues with popovers or utility panels, etc.) 19 | 20 | ## What makes a 'good' breakpoint sound? 21 | 22 | You'll quickly notice that Xcode's default sounds are fairly limited. Breakpoint sounds should ideally meet several criteria: 23 | 24 | - The audio files should be small in size (fast to load, quick to initiate playback) 25 | - They should be short in duration, to avoid long pauses while the breakpoint sound action is run 26 | - They should be uniquely discernible from each other, in cases where multiple sounds might play close together 27 | - Each playback should be distinct (so that the number of times the breakpoint sound is played is clear) 28 | - They should ideally convey some kind of meaning, or improve the context of debugging in some way 29 | 30 | This collection attempts to provide a well-rounded, multi-purpose set of debugging sounds which meet all of the above criteria. 31 | 32 | ## How to use 33 | 34 | :large_orange_diamond: **Option 1: Adding to Xcode** 35 | 36 | The easiest way to use these sounds is to add them to Xcode's breakpoint editor sound menu: 37 | 38 | 1. Download the sounds 39 | 2. Copy the audio files to `~/Library/Sounds` 40 | 3. Quit and relaunch Xcode 41 | 42 | :large_orange_diamond: **Option 2: Using AFPlay** 43 | 44 | If you don't wish to modify your `~/Library/Sounds` folder, you can also easily play these sounds by using the _Shell Command_ breakpoint action, rather than the _Sound_ action. 45 | 46 | Simply create a breakpoint which calls the `afplay` command and provide the file path to the sound effect you want to play as the argument. With this approach, you can make use of any arbitrary audio file in any location. 47 | 48 | ## The Sounds 49 | 50 | 51 | While these may not be amazing audio effects from a creativity or production-value standpoint, I believe they are particularly good choices for debugging. The example context listed for each audio file is obviously just a suggestion - they can be used however you like. The idea is simply to choose an effect which has some subjective association which makes it easier to recognize each breakpoint, particularly when using multiple breakpoints together. 52 | 53 | | Sound | Example Context | 54 | | --- | --- | 55 | | Xcode_Collect | Adding object to a collection (sound is similar to collecting an item or increasing your score in a video game) | 56 | | Xcode_Pop | Removing an item from a collection (e.g. 'popping' an object from a stack), freeing memory or releasing an object | 57 | | Xcode_Bzzt | Error or unexpected condition, useful for breakpoints in code that should not be hit | 58 | | Xcode_Swish | Releasing objects, freeing memory, exiting methods/functions, early returns | 59 | | Xcode_Click | Marker or tick sound (especially short, useful for breakpoints which may occur in rapid succession) | 60 | | Xcode_Error | Error or unexpected conditional | 61 | | Xcode_Knock | File writes, counter increment or decrement, etc. | 62 | | Xcode_Punch | Costly operation or code which is performing significant work | 63 | | Xcode_Zip | General purpose | 64 | | Xcode_Quack | General purpose | 65 | | Xcode_Bird | General purpose | 66 | | Xcode_Chime | General purpose | 67 | 68 | ## Author 69 | 70 | **Matt Reagan** - Website: [http://sound-of-silence.com/](http://sound-of-silence.com/) - Twitter: [@hmblebee](https://twitter.com/hmblebee) 71 | 72 | ## Licensing / Credits 73 | 74 | These sound effects were selected from a library of royalty-free audio files, which I've amassed over the years for use with some of my [game development projects](http://sound-of-silence.com/?page=gamedev). No copyrights or author credits are known to me; each audio file here is believed to be in the public domain. If you have questions on the source of any of these audio files please feel free to contact me. 75 | 76 | -------------------------------------------------------------------------------- /Xcode_Bird.aiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matthewreagan/Xcode-Breakpoint-Sounds/0861d8a958e6464a2b4b09436fac6671e4ea36b3/Xcode_Bird.aiff -------------------------------------------------------------------------------- /Xcode_Bzzt.aiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matthewreagan/Xcode-Breakpoint-Sounds/0861d8a958e6464a2b4b09436fac6671e4ea36b3/Xcode_Bzzt.aiff -------------------------------------------------------------------------------- /Xcode_Chime.aiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matthewreagan/Xcode-Breakpoint-Sounds/0861d8a958e6464a2b4b09436fac6671e4ea36b3/Xcode_Chime.aiff -------------------------------------------------------------------------------- /Xcode_Click.aiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matthewreagan/Xcode-Breakpoint-Sounds/0861d8a958e6464a2b4b09436fac6671e4ea36b3/Xcode_Click.aiff -------------------------------------------------------------------------------- /Xcode_Collect.aiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matthewreagan/Xcode-Breakpoint-Sounds/0861d8a958e6464a2b4b09436fac6671e4ea36b3/Xcode_Collect.aiff -------------------------------------------------------------------------------- /Xcode_Error.aiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matthewreagan/Xcode-Breakpoint-Sounds/0861d8a958e6464a2b4b09436fac6671e4ea36b3/Xcode_Error.aiff -------------------------------------------------------------------------------- /Xcode_Knock.aiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matthewreagan/Xcode-Breakpoint-Sounds/0861d8a958e6464a2b4b09436fac6671e4ea36b3/Xcode_Knock.aiff -------------------------------------------------------------------------------- /Xcode_Pop.aiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matthewreagan/Xcode-Breakpoint-Sounds/0861d8a958e6464a2b4b09436fac6671e4ea36b3/Xcode_Pop.aiff -------------------------------------------------------------------------------- /Xcode_Punch.aiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matthewreagan/Xcode-Breakpoint-Sounds/0861d8a958e6464a2b4b09436fac6671e4ea36b3/Xcode_Punch.aiff -------------------------------------------------------------------------------- /Xcode_Quack.aiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matthewreagan/Xcode-Breakpoint-Sounds/0861d8a958e6464a2b4b09436fac6671e4ea36b3/Xcode_Quack.aiff -------------------------------------------------------------------------------- /Xcode_Swish.aiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matthewreagan/Xcode-Breakpoint-Sounds/0861d8a958e6464a2b4b09436fac6671e4ea36b3/Xcode_Swish.aiff -------------------------------------------------------------------------------- /Xcode_Zip.aiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matthewreagan/Xcode-Breakpoint-Sounds/0861d8a958e6464a2b4b09436fac6671e4ea36b3/Xcode_Zip.aiff -------------------------------------------------------------------------------- /xcode_debug_sounds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matthewreagan/Xcode-Breakpoint-Sounds/0861d8a958e6464a2b4b09436fac6671e4ea36b3/xcode_debug_sounds.png --------------------------------------------------------------------------------