├── .gitignore
├── .swiftpm
└── xcode
│ └── package.xcworkspace
│ └── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── Example
├── Example.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
├── Example
│ ├── Assets.xcassets
│ │ ├── AccentColor.colorset
│ │ │ └── Contents.json
│ │ ├── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ └── Contents.json
│ ├── ContentView.swift
│ ├── Example.entitlements
│ ├── ExampleApp.swift
│ └── Preview Content
│ │ └── Preview Assets.xcassets
│ │ └── Contents.json
├── ExampleTests
│ └── ExampleTests.swift
├── ExampleUITests
│ ├── ExampleUITests.swift
│ └── ExampleUITestsLaunchTests.swift
└── Package.swift
├── LICENSE
├── Package.swift
├── README.md
├── Sources
└── SystemSound
│ ├── SystemSound.swift
│ ├── SystemSoundKeys.swift
│ └── SystemSoundKind.swift
├── SystemSound.xcworkspace
├── contents.xcworkspacedata
└── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── SystemSoundTable.md
└── Tests
└── SystemSoundTests
└── SystemSoundTests.swift
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | /.build
3 | /Packages
4 | xcuserdata/
5 | DerivedData/
6 | .swiftpm/config/registries.json
7 | .swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
8 | .netrc
9 |
10 | ## Build generated
11 | build/
12 | DerivedData/
13 |
14 | ## Various settings
15 | *.pbxuser
16 | !default.pbxuser
17 | *.mode1v3
18 | !default.mode1v3
19 | *.mode2v3
20 | !default.mode2v3
21 | *.perspectivev3
22 | !default.perspectivev3
23 | xcuserdata/
24 | node_modules/
25 |
26 | ## Other
27 | *.moved-aside
28 | *.xccheckout
29 | *.xcscmblueprint
30 | *.DS_Store
31 |
32 | ## Obj-C/Swift specific
33 | *.hmap
34 | *.ipa
35 | *.dSYM.zip
36 | *.dSYM
37 | *.generated.swift
38 |
39 |
40 | Carthage/
41 | Pods/
42 |
43 | # CocoaPods
44 | #
45 | # We recommend against adding the Pods directory to your .gitignore. However
46 | # you should judge for yourself, the pros and cons are mentioned at:
47 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
48 | #
49 |
50 | # bundler
51 | vendor/bundle
52 |
--------------------------------------------------------------------------------
/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Example/Example.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 56;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 42D692232A9D2ACB00ADB99C /* ExampleApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42D692222A9D2ACB00ADB99C /* ExampleApp.swift */; };
11 | 42D692252A9D2ACB00ADB99C /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42D692242A9D2ACB00ADB99C /* ContentView.swift */; };
12 | 42D692272A9D2ACE00ADB99C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 42D692262A9D2ACE00ADB99C /* Assets.xcassets */; };
13 | 42D6922B2A9D2ACE00ADB99C /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 42D6922A2A9D2ACE00ADB99C /* Preview Assets.xcassets */; };
14 | 42D692352A9D2ACE00ADB99C /* ExampleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42D692342A9D2ACE00ADB99C /* ExampleTests.swift */; };
15 | 42D6923F2A9D2ACE00ADB99C /* ExampleUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42D6923E2A9D2ACE00ADB99C /* ExampleUITests.swift */; };
16 | 42D692412A9D2ACE00ADB99C /* ExampleUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42D692402A9D2ACE00ADB99C /* ExampleUITestsLaunchTests.swift */; };
17 | 42D692512A9D2AF400ADB99C /* SystemSound in Frameworks */ = {isa = PBXBuildFile; productRef = 42D692502A9D2AF400ADB99C /* SystemSound */; };
18 | /* End PBXBuildFile section */
19 |
20 | /* Begin PBXContainerItemProxy section */
21 | 42D692312A9D2ACE00ADB99C /* PBXContainerItemProxy */ = {
22 | isa = PBXContainerItemProxy;
23 | containerPortal = 42D692172A9D2ACB00ADB99C /* Project object */;
24 | proxyType = 1;
25 | remoteGlobalIDString = 42D6921E2A9D2ACB00ADB99C;
26 | remoteInfo = Example;
27 | };
28 | 42D6923B2A9D2ACE00ADB99C /* PBXContainerItemProxy */ = {
29 | isa = PBXContainerItemProxy;
30 | containerPortal = 42D692172A9D2ACB00ADB99C /* Project object */;
31 | proxyType = 1;
32 | remoteGlobalIDString = 42D6921E2A9D2ACB00ADB99C;
33 | remoteInfo = Example;
34 | };
35 | /* End PBXContainerItemProxy section */
36 |
37 | /* Begin PBXFileReference section */
38 | 42D6921F2A9D2ACB00ADB99C /* Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Example.app; sourceTree = BUILT_PRODUCTS_DIR; };
39 | 42D692222A9D2ACB00ADB99C /* ExampleApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExampleApp.swift; sourceTree = ""; };
40 | 42D692242A9D2ACB00ADB99C /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; };
41 | 42D692262A9D2ACE00ADB99C /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
42 | 42D692282A9D2ACE00ADB99C /* Example.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Example.entitlements; sourceTree = ""; };
43 | 42D6922A2A9D2ACE00ADB99C /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; };
44 | 42D692302A9D2ACE00ADB99C /* ExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
45 | 42D692342A9D2ACE00ADB99C /* ExampleTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExampleTests.swift; sourceTree = ""; };
46 | 42D6923A2A9D2ACE00ADB99C /* ExampleUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ExampleUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
47 | 42D6923E2A9D2ACE00ADB99C /* ExampleUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExampleUITests.swift; sourceTree = ""; };
48 | 42D692402A9D2ACE00ADB99C /* ExampleUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExampleUITestsLaunchTests.swift; sourceTree = ""; };
49 | 42D6924E2A9D2AE500ADB99C /* SystemSound */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = SystemSound; path = ..; sourceTree = ""; };
50 | /* End PBXFileReference section */
51 |
52 | /* Begin PBXFrameworksBuildPhase section */
53 | 42D6921C2A9D2ACB00ADB99C /* Frameworks */ = {
54 | isa = PBXFrameworksBuildPhase;
55 | buildActionMask = 2147483647;
56 | files = (
57 | 42D692512A9D2AF400ADB99C /* SystemSound in Frameworks */,
58 | );
59 | runOnlyForDeploymentPostprocessing = 0;
60 | };
61 | 42D6922D2A9D2ACE00ADB99C /* Frameworks */ = {
62 | isa = PBXFrameworksBuildPhase;
63 | buildActionMask = 2147483647;
64 | files = (
65 | );
66 | runOnlyForDeploymentPostprocessing = 0;
67 | };
68 | 42D692372A9D2ACE00ADB99C /* Frameworks */ = {
69 | isa = PBXFrameworksBuildPhase;
70 | buildActionMask = 2147483647;
71 | files = (
72 | );
73 | runOnlyForDeploymentPostprocessing = 0;
74 | };
75 | /* End PBXFrameworksBuildPhase section */
76 |
77 | /* Begin PBXGroup section */
78 | 42D692162A9D2ACB00ADB99C = {
79 | isa = PBXGroup;
80 | children = (
81 | 42D6924D2A9D2AE500ADB99C /* Packages */,
82 | 42D692212A9D2ACB00ADB99C /* Example */,
83 | 42D692332A9D2ACE00ADB99C /* ExampleTests */,
84 | 42D6923D2A9D2ACE00ADB99C /* ExampleUITests */,
85 | 42D692202A9D2ACB00ADB99C /* Products */,
86 | 42D6924F2A9D2AF400ADB99C /* Frameworks */,
87 | );
88 | sourceTree = "";
89 | };
90 | 42D692202A9D2ACB00ADB99C /* Products */ = {
91 | isa = PBXGroup;
92 | children = (
93 | 42D6921F2A9D2ACB00ADB99C /* Example.app */,
94 | 42D692302A9D2ACE00ADB99C /* ExampleTests.xctest */,
95 | 42D6923A2A9D2ACE00ADB99C /* ExampleUITests.xctest */,
96 | );
97 | name = Products;
98 | sourceTree = "";
99 | };
100 | 42D692212A9D2ACB00ADB99C /* Example */ = {
101 | isa = PBXGroup;
102 | children = (
103 | 42D692222A9D2ACB00ADB99C /* ExampleApp.swift */,
104 | 42D692242A9D2ACB00ADB99C /* ContentView.swift */,
105 | 42D692262A9D2ACE00ADB99C /* Assets.xcassets */,
106 | 42D692282A9D2ACE00ADB99C /* Example.entitlements */,
107 | 42D692292A9D2ACE00ADB99C /* Preview Content */,
108 | );
109 | path = Example;
110 | sourceTree = "";
111 | };
112 | 42D692292A9D2ACE00ADB99C /* Preview Content */ = {
113 | isa = PBXGroup;
114 | children = (
115 | 42D6922A2A9D2ACE00ADB99C /* Preview Assets.xcassets */,
116 | );
117 | path = "Preview Content";
118 | sourceTree = "";
119 | };
120 | 42D692332A9D2ACE00ADB99C /* ExampleTests */ = {
121 | isa = PBXGroup;
122 | children = (
123 | 42D692342A9D2ACE00ADB99C /* ExampleTests.swift */,
124 | );
125 | path = ExampleTests;
126 | sourceTree = "";
127 | };
128 | 42D6923D2A9D2ACE00ADB99C /* ExampleUITests */ = {
129 | isa = PBXGroup;
130 | children = (
131 | 42D6923E2A9D2ACE00ADB99C /* ExampleUITests.swift */,
132 | 42D692402A9D2ACE00ADB99C /* ExampleUITestsLaunchTests.swift */,
133 | );
134 | path = ExampleUITests;
135 | sourceTree = "";
136 | };
137 | 42D6924D2A9D2AE500ADB99C /* Packages */ = {
138 | isa = PBXGroup;
139 | children = (
140 | 42D6924E2A9D2AE500ADB99C /* SystemSound */,
141 | );
142 | name = Packages;
143 | sourceTree = "";
144 | };
145 | 42D6924F2A9D2AF400ADB99C /* Frameworks */ = {
146 | isa = PBXGroup;
147 | children = (
148 | );
149 | name = Frameworks;
150 | sourceTree = "";
151 | };
152 | /* End PBXGroup section */
153 |
154 | /* Begin PBXNativeTarget section */
155 | 42D6921E2A9D2ACB00ADB99C /* Example */ = {
156 | isa = PBXNativeTarget;
157 | buildConfigurationList = 42D692442A9D2ACE00ADB99C /* Build configuration list for PBXNativeTarget "Example" */;
158 | buildPhases = (
159 | 42D6921B2A9D2ACB00ADB99C /* Sources */,
160 | 42D6921C2A9D2ACB00ADB99C /* Frameworks */,
161 | 42D6921D2A9D2ACB00ADB99C /* Resources */,
162 | );
163 | buildRules = (
164 | );
165 | dependencies = (
166 | );
167 | name = Example;
168 | packageProductDependencies = (
169 | 42D692502A9D2AF400ADB99C /* SystemSound */,
170 | );
171 | productName = Example;
172 | productReference = 42D6921F2A9D2ACB00ADB99C /* Example.app */;
173 | productType = "com.apple.product-type.application";
174 | };
175 | 42D6922F2A9D2ACE00ADB99C /* ExampleTests */ = {
176 | isa = PBXNativeTarget;
177 | buildConfigurationList = 42D692472A9D2ACE00ADB99C /* Build configuration list for PBXNativeTarget "ExampleTests" */;
178 | buildPhases = (
179 | 42D6922C2A9D2ACE00ADB99C /* Sources */,
180 | 42D6922D2A9D2ACE00ADB99C /* Frameworks */,
181 | 42D6922E2A9D2ACE00ADB99C /* Resources */,
182 | );
183 | buildRules = (
184 | );
185 | dependencies = (
186 | 42D692322A9D2ACE00ADB99C /* PBXTargetDependency */,
187 | );
188 | name = ExampleTests;
189 | productName = ExampleTests;
190 | productReference = 42D692302A9D2ACE00ADB99C /* ExampleTests.xctest */;
191 | productType = "com.apple.product-type.bundle.unit-test";
192 | };
193 | 42D692392A9D2ACE00ADB99C /* ExampleUITests */ = {
194 | isa = PBXNativeTarget;
195 | buildConfigurationList = 42D6924A2A9D2ACE00ADB99C /* Build configuration list for PBXNativeTarget "ExampleUITests" */;
196 | buildPhases = (
197 | 42D692362A9D2ACE00ADB99C /* Sources */,
198 | 42D692372A9D2ACE00ADB99C /* Frameworks */,
199 | 42D692382A9D2ACE00ADB99C /* Resources */,
200 | );
201 | buildRules = (
202 | );
203 | dependencies = (
204 | 42D6923C2A9D2ACE00ADB99C /* PBXTargetDependency */,
205 | );
206 | name = ExampleUITests;
207 | productName = ExampleUITests;
208 | productReference = 42D6923A2A9D2ACE00ADB99C /* ExampleUITests.xctest */;
209 | productType = "com.apple.product-type.bundle.ui-testing";
210 | };
211 | /* End PBXNativeTarget section */
212 |
213 | /* Begin PBXProject section */
214 | 42D692172A9D2ACB00ADB99C /* Project object */ = {
215 | isa = PBXProject;
216 | attributes = {
217 | BuildIndependentTargetsInParallel = 1;
218 | LastSwiftUpdateCheck = 1430;
219 | LastUpgradeCheck = 1430;
220 | TargetAttributes = {
221 | 42D6921E2A9D2ACB00ADB99C = {
222 | CreatedOnToolsVersion = 14.3.1;
223 | };
224 | 42D6922F2A9D2ACE00ADB99C = {
225 | CreatedOnToolsVersion = 14.3.1;
226 | TestTargetID = 42D6921E2A9D2ACB00ADB99C;
227 | };
228 | 42D692392A9D2ACE00ADB99C = {
229 | CreatedOnToolsVersion = 14.3.1;
230 | TestTargetID = 42D6921E2A9D2ACB00ADB99C;
231 | };
232 | };
233 | };
234 | buildConfigurationList = 42D6921A2A9D2ACB00ADB99C /* Build configuration list for PBXProject "Example" */;
235 | compatibilityVersion = "Xcode 14.0";
236 | developmentRegion = en;
237 | hasScannedForEncodings = 0;
238 | knownRegions = (
239 | en,
240 | Base,
241 | );
242 | mainGroup = 42D692162A9D2ACB00ADB99C;
243 | productRefGroup = 42D692202A9D2ACB00ADB99C /* Products */;
244 | projectDirPath = "";
245 | projectRoot = "";
246 | targets = (
247 | 42D6921E2A9D2ACB00ADB99C /* Example */,
248 | 42D6922F2A9D2ACE00ADB99C /* ExampleTests */,
249 | 42D692392A9D2ACE00ADB99C /* ExampleUITests */,
250 | );
251 | };
252 | /* End PBXProject section */
253 |
254 | /* Begin PBXResourcesBuildPhase section */
255 | 42D6921D2A9D2ACB00ADB99C /* Resources */ = {
256 | isa = PBXResourcesBuildPhase;
257 | buildActionMask = 2147483647;
258 | files = (
259 | 42D6922B2A9D2ACE00ADB99C /* Preview Assets.xcassets in Resources */,
260 | 42D692272A9D2ACE00ADB99C /* Assets.xcassets in Resources */,
261 | );
262 | runOnlyForDeploymentPostprocessing = 0;
263 | };
264 | 42D6922E2A9D2ACE00ADB99C /* Resources */ = {
265 | isa = PBXResourcesBuildPhase;
266 | buildActionMask = 2147483647;
267 | files = (
268 | );
269 | runOnlyForDeploymentPostprocessing = 0;
270 | };
271 | 42D692382A9D2ACE00ADB99C /* Resources */ = {
272 | isa = PBXResourcesBuildPhase;
273 | buildActionMask = 2147483647;
274 | files = (
275 | );
276 | runOnlyForDeploymentPostprocessing = 0;
277 | };
278 | /* End PBXResourcesBuildPhase section */
279 |
280 | /* Begin PBXSourcesBuildPhase section */
281 | 42D6921B2A9D2ACB00ADB99C /* Sources */ = {
282 | isa = PBXSourcesBuildPhase;
283 | buildActionMask = 2147483647;
284 | files = (
285 | 42D692252A9D2ACB00ADB99C /* ContentView.swift in Sources */,
286 | 42D692232A9D2ACB00ADB99C /* ExampleApp.swift in Sources */,
287 | );
288 | runOnlyForDeploymentPostprocessing = 0;
289 | };
290 | 42D6922C2A9D2ACE00ADB99C /* Sources */ = {
291 | isa = PBXSourcesBuildPhase;
292 | buildActionMask = 2147483647;
293 | files = (
294 | 42D692352A9D2ACE00ADB99C /* ExampleTests.swift in Sources */,
295 | );
296 | runOnlyForDeploymentPostprocessing = 0;
297 | };
298 | 42D692362A9D2ACE00ADB99C /* Sources */ = {
299 | isa = PBXSourcesBuildPhase;
300 | buildActionMask = 2147483647;
301 | files = (
302 | 42D6923F2A9D2ACE00ADB99C /* ExampleUITests.swift in Sources */,
303 | 42D692412A9D2ACE00ADB99C /* ExampleUITestsLaunchTests.swift in Sources */,
304 | );
305 | runOnlyForDeploymentPostprocessing = 0;
306 | };
307 | /* End PBXSourcesBuildPhase section */
308 |
309 | /* Begin PBXTargetDependency section */
310 | 42D692322A9D2ACE00ADB99C /* PBXTargetDependency */ = {
311 | isa = PBXTargetDependency;
312 | target = 42D6921E2A9D2ACB00ADB99C /* Example */;
313 | targetProxy = 42D692312A9D2ACE00ADB99C /* PBXContainerItemProxy */;
314 | };
315 | 42D6923C2A9D2ACE00ADB99C /* PBXTargetDependency */ = {
316 | isa = PBXTargetDependency;
317 | target = 42D6921E2A9D2ACB00ADB99C /* Example */;
318 | targetProxy = 42D6923B2A9D2ACE00ADB99C /* PBXContainerItemProxy */;
319 | };
320 | /* End PBXTargetDependency section */
321 |
322 | /* Begin XCBuildConfiguration section */
323 | 42D692422A9D2ACE00ADB99C /* Debug */ = {
324 | isa = XCBuildConfiguration;
325 | buildSettings = {
326 | ALWAYS_SEARCH_USER_PATHS = NO;
327 | CLANG_ANALYZER_NONNULL = YES;
328 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
329 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
330 | CLANG_ENABLE_MODULES = YES;
331 | CLANG_ENABLE_OBJC_ARC = YES;
332 | CLANG_ENABLE_OBJC_WEAK = YES;
333 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
334 | CLANG_WARN_BOOL_CONVERSION = YES;
335 | CLANG_WARN_COMMA = YES;
336 | CLANG_WARN_CONSTANT_CONVERSION = YES;
337 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
338 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
339 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
340 | CLANG_WARN_EMPTY_BODY = YES;
341 | CLANG_WARN_ENUM_CONVERSION = YES;
342 | CLANG_WARN_INFINITE_RECURSION = YES;
343 | CLANG_WARN_INT_CONVERSION = YES;
344 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
345 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
346 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
347 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
348 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
349 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
350 | CLANG_WARN_STRICT_PROTOTYPES = YES;
351 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
352 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
353 | CLANG_WARN_UNREACHABLE_CODE = YES;
354 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
355 | COPY_PHASE_STRIP = NO;
356 | DEBUG_INFORMATION_FORMAT = dwarf;
357 | ENABLE_STRICT_OBJC_MSGSEND = YES;
358 | ENABLE_TESTABILITY = YES;
359 | GCC_C_LANGUAGE_STANDARD = gnu11;
360 | GCC_DYNAMIC_NO_PIC = NO;
361 | GCC_NO_COMMON_BLOCKS = YES;
362 | GCC_OPTIMIZATION_LEVEL = 0;
363 | GCC_PREPROCESSOR_DEFINITIONS = (
364 | "DEBUG=1",
365 | "$(inherited)",
366 | );
367 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
368 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
369 | GCC_WARN_UNDECLARED_SELECTOR = YES;
370 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
371 | GCC_WARN_UNUSED_FUNCTION = YES;
372 | GCC_WARN_UNUSED_VARIABLE = YES;
373 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
374 | MTL_FAST_MATH = YES;
375 | ONLY_ACTIVE_ARCH = YES;
376 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
377 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
378 | };
379 | name = Debug;
380 | };
381 | 42D692432A9D2ACE00ADB99C /* Release */ = {
382 | isa = XCBuildConfiguration;
383 | buildSettings = {
384 | ALWAYS_SEARCH_USER_PATHS = NO;
385 | CLANG_ANALYZER_NONNULL = YES;
386 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
387 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
388 | CLANG_ENABLE_MODULES = YES;
389 | CLANG_ENABLE_OBJC_ARC = YES;
390 | CLANG_ENABLE_OBJC_WEAK = YES;
391 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
392 | CLANG_WARN_BOOL_CONVERSION = YES;
393 | CLANG_WARN_COMMA = YES;
394 | CLANG_WARN_CONSTANT_CONVERSION = YES;
395 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
396 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
397 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
398 | CLANG_WARN_EMPTY_BODY = YES;
399 | CLANG_WARN_ENUM_CONVERSION = YES;
400 | CLANG_WARN_INFINITE_RECURSION = YES;
401 | CLANG_WARN_INT_CONVERSION = YES;
402 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
403 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
404 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
405 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
406 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
407 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
408 | CLANG_WARN_STRICT_PROTOTYPES = YES;
409 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
410 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
411 | CLANG_WARN_UNREACHABLE_CODE = YES;
412 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
413 | COPY_PHASE_STRIP = NO;
414 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
415 | ENABLE_NS_ASSERTIONS = NO;
416 | ENABLE_STRICT_OBJC_MSGSEND = YES;
417 | GCC_C_LANGUAGE_STANDARD = gnu11;
418 | GCC_NO_COMMON_BLOCKS = YES;
419 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
420 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
421 | GCC_WARN_UNDECLARED_SELECTOR = YES;
422 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
423 | GCC_WARN_UNUSED_FUNCTION = YES;
424 | GCC_WARN_UNUSED_VARIABLE = YES;
425 | MTL_ENABLE_DEBUG_INFO = NO;
426 | MTL_FAST_MATH = YES;
427 | SWIFT_COMPILATION_MODE = wholemodule;
428 | SWIFT_OPTIMIZATION_LEVEL = "-O";
429 | };
430 | name = Release;
431 | };
432 | 42D692452A9D2ACE00ADB99C /* Debug */ = {
433 | isa = XCBuildConfiguration;
434 | buildSettings = {
435 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
436 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
437 | CODE_SIGN_ENTITLEMENTS = Example/Example.entitlements;
438 | CODE_SIGN_STYLE = Automatic;
439 | CURRENT_PROJECT_VERSION = 1;
440 | DEVELOPMENT_ASSET_PATHS = "\"Example/Preview Content\"";
441 | DEVELOPMENT_TEAM = WLCQDVKTS9;
442 | ENABLE_HARDENED_RUNTIME = YES;
443 | ENABLE_PREVIEWS = YES;
444 | GENERATE_INFOPLIST_FILE = YES;
445 | "INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphoneos*]" = YES;
446 | "INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphonesimulator*]" = YES;
447 | "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphoneos*]" = YES;
448 | "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphonesimulator*]" = YES;
449 | "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphoneos*]" = YES;
450 | "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphonesimulator*]" = YES;
451 | "INFOPLIST_KEY_UIStatusBarStyle[sdk=iphoneos*]" = UIStatusBarStyleDefault;
452 | "INFOPLIST_KEY_UIStatusBarStyle[sdk=iphonesimulator*]" = UIStatusBarStyleDefault;
453 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
454 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
455 | IPHONEOS_DEPLOYMENT_TARGET = 16.4;
456 | LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks";
457 | "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks";
458 | MACOSX_DEPLOYMENT_TARGET = 13.3;
459 | MARKETING_VERSION = 1.0;
460 | PRODUCT_BUNDLE_IDENTIFIER = "com.p-x9.Example";
461 | PRODUCT_NAME = "$(TARGET_NAME)";
462 | SDKROOT = auto;
463 | SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx";
464 | SWIFT_EMIT_LOC_STRINGS = YES;
465 | SWIFT_VERSION = 5.0;
466 | TARGETED_DEVICE_FAMILY = "1,2";
467 | };
468 | name = Debug;
469 | };
470 | 42D692462A9D2ACE00ADB99C /* Release */ = {
471 | isa = XCBuildConfiguration;
472 | buildSettings = {
473 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
474 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
475 | CODE_SIGN_ENTITLEMENTS = Example/Example.entitlements;
476 | CODE_SIGN_STYLE = Automatic;
477 | CURRENT_PROJECT_VERSION = 1;
478 | DEVELOPMENT_ASSET_PATHS = "\"Example/Preview Content\"";
479 | DEVELOPMENT_TEAM = WLCQDVKTS9;
480 | ENABLE_HARDENED_RUNTIME = YES;
481 | ENABLE_PREVIEWS = YES;
482 | GENERATE_INFOPLIST_FILE = YES;
483 | "INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphoneos*]" = YES;
484 | "INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphonesimulator*]" = YES;
485 | "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphoneos*]" = YES;
486 | "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphonesimulator*]" = YES;
487 | "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphoneos*]" = YES;
488 | "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphonesimulator*]" = YES;
489 | "INFOPLIST_KEY_UIStatusBarStyle[sdk=iphoneos*]" = UIStatusBarStyleDefault;
490 | "INFOPLIST_KEY_UIStatusBarStyle[sdk=iphonesimulator*]" = UIStatusBarStyleDefault;
491 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
492 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
493 | IPHONEOS_DEPLOYMENT_TARGET = 16.4;
494 | LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks";
495 | "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks";
496 | MACOSX_DEPLOYMENT_TARGET = 13.3;
497 | MARKETING_VERSION = 1.0;
498 | PRODUCT_BUNDLE_IDENTIFIER = "com.p-x9.Example";
499 | PRODUCT_NAME = "$(TARGET_NAME)";
500 | SDKROOT = auto;
501 | SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx";
502 | SWIFT_EMIT_LOC_STRINGS = YES;
503 | SWIFT_VERSION = 5.0;
504 | TARGETED_DEVICE_FAMILY = "1,2";
505 | };
506 | name = Release;
507 | };
508 | 42D692482A9D2ACE00ADB99C /* Debug */ = {
509 | isa = XCBuildConfiguration;
510 | buildSettings = {
511 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
512 | BUNDLE_LOADER = "$(TEST_HOST)";
513 | CODE_SIGN_STYLE = Automatic;
514 | CURRENT_PROJECT_VERSION = 1;
515 | DEVELOPMENT_TEAM = WLCQDVKTS9;
516 | GENERATE_INFOPLIST_FILE = YES;
517 | IPHONEOS_DEPLOYMENT_TARGET = 16.4;
518 | MACOSX_DEPLOYMENT_TARGET = 13.3;
519 | MARKETING_VERSION = 1.0;
520 | PRODUCT_BUNDLE_IDENTIFIER = "com.p-x9.ExampleTests";
521 | PRODUCT_NAME = "$(TARGET_NAME)";
522 | SDKROOT = auto;
523 | SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx";
524 | SWIFT_EMIT_LOC_STRINGS = NO;
525 | SWIFT_VERSION = 5.0;
526 | TARGETED_DEVICE_FAMILY = "1,2";
527 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Example.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Example";
528 | };
529 | name = Debug;
530 | };
531 | 42D692492A9D2ACE00ADB99C /* Release */ = {
532 | isa = XCBuildConfiguration;
533 | buildSettings = {
534 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
535 | BUNDLE_LOADER = "$(TEST_HOST)";
536 | CODE_SIGN_STYLE = Automatic;
537 | CURRENT_PROJECT_VERSION = 1;
538 | DEVELOPMENT_TEAM = WLCQDVKTS9;
539 | GENERATE_INFOPLIST_FILE = YES;
540 | IPHONEOS_DEPLOYMENT_TARGET = 16.4;
541 | MACOSX_DEPLOYMENT_TARGET = 13.3;
542 | MARKETING_VERSION = 1.0;
543 | PRODUCT_BUNDLE_IDENTIFIER = "com.p-x9.ExampleTests";
544 | PRODUCT_NAME = "$(TARGET_NAME)";
545 | SDKROOT = auto;
546 | SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx";
547 | SWIFT_EMIT_LOC_STRINGS = NO;
548 | SWIFT_VERSION = 5.0;
549 | TARGETED_DEVICE_FAMILY = "1,2";
550 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Example.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Example";
551 | };
552 | name = Release;
553 | };
554 | 42D6924B2A9D2ACE00ADB99C /* Debug */ = {
555 | isa = XCBuildConfiguration;
556 | buildSettings = {
557 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
558 | CODE_SIGN_STYLE = Automatic;
559 | CURRENT_PROJECT_VERSION = 1;
560 | DEVELOPMENT_TEAM = WLCQDVKTS9;
561 | GENERATE_INFOPLIST_FILE = YES;
562 | IPHONEOS_DEPLOYMENT_TARGET = 16.4;
563 | MACOSX_DEPLOYMENT_TARGET = 13.3;
564 | MARKETING_VERSION = 1.0;
565 | PRODUCT_BUNDLE_IDENTIFIER = "com.p-x9.ExampleUITests";
566 | PRODUCT_NAME = "$(TARGET_NAME)";
567 | SDKROOT = auto;
568 | SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx";
569 | SWIFT_EMIT_LOC_STRINGS = NO;
570 | SWIFT_VERSION = 5.0;
571 | TARGETED_DEVICE_FAMILY = "1,2";
572 | TEST_TARGET_NAME = Example;
573 | };
574 | name = Debug;
575 | };
576 | 42D6924C2A9D2ACE00ADB99C /* Release */ = {
577 | isa = XCBuildConfiguration;
578 | buildSettings = {
579 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
580 | CODE_SIGN_STYLE = Automatic;
581 | CURRENT_PROJECT_VERSION = 1;
582 | DEVELOPMENT_TEAM = WLCQDVKTS9;
583 | GENERATE_INFOPLIST_FILE = YES;
584 | IPHONEOS_DEPLOYMENT_TARGET = 16.4;
585 | MACOSX_DEPLOYMENT_TARGET = 13.3;
586 | MARKETING_VERSION = 1.0;
587 | PRODUCT_BUNDLE_IDENTIFIER = "com.p-x9.ExampleUITests";
588 | PRODUCT_NAME = "$(TARGET_NAME)";
589 | SDKROOT = auto;
590 | SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx";
591 | SWIFT_EMIT_LOC_STRINGS = NO;
592 | SWIFT_VERSION = 5.0;
593 | TARGETED_DEVICE_FAMILY = "1,2";
594 | TEST_TARGET_NAME = Example;
595 | };
596 | name = Release;
597 | };
598 | /* End XCBuildConfiguration section */
599 |
600 | /* Begin XCConfigurationList section */
601 | 42D6921A2A9D2ACB00ADB99C /* Build configuration list for PBXProject "Example" */ = {
602 | isa = XCConfigurationList;
603 | buildConfigurations = (
604 | 42D692422A9D2ACE00ADB99C /* Debug */,
605 | 42D692432A9D2ACE00ADB99C /* Release */,
606 | );
607 | defaultConfigurationIsVisible = 0;
608 | defaultConfigurationName = Release;
609 | };
610 | 42D692442A9D2ACE00ADB99C /* Build configuration list for PBXNativeTarget "Example" */ = {
611 | isa = XCConfigurationList;
612 | buildConfigurations = (
613 | 42D692452A9D2ACE00ADB99C /* Debug */,
614 | 42D692462A9D2ACE00ADB99C /* Release */,
615 | );
616 | defaultConfigurationIsVisible = 0;
617 | defaultConfigurationName = Release;
618 | };
619 | 42D692472A9D2ACE00ADB99C /* Build configuration list for PBXNativeTarget "ExampleTests" */ = {
620 | isa = XCConfigurationList;
621 | buildConfigurations = (
622 | 42D692482A9D2ACE00ADB99C /* Debug */,
623 | 42D692492A9D2ACE00ADB99C /* Release */,
624 | );
625 | defaultConfigurationIsVisible = 0;
626 | defaultConfigurationName = Release;
627 | };
628 | 42D6924A2A9D2ACE00ADB99C /* Build configuration list for PBXNativeTarget "ExampleUITests" */ = {
629 | isa = XCConfigurationList;
630 | buildConfigurations = (
631 | 42D6924B2A9D2ACE00ADB99C /* Debug */,
632 | 42D6924C2A9D2ACE00ADB99C /* Release */,
633 | );
634 | defaultConfigurationIsVisible = 0;
635 | defaultConfigurationName = Release;
636 | };
637 | /* End XCConfigurationList section */
638 |
639 | /* Begin XCSwiftPackageProductDependency section */
640 | 42D692502A9D2AF400ADB99C /* SystemSound */ = {
641 | isa = XCSwiftPackageProductDependency;
642 | productName = SystemSound;
643 | };
644 | /* End XCSwiftPackageProductDependency section */
645 | };
646 | rootObject = 42D692172A9D2ACB00ADB99C /* Project object */;
647 | }
648 |
--------------------------------------------------------------------------------
/Example/Example.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Example/Example.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Example/Example/Assets.xcassets/AccentColor.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "idiom" : "universal"
5 | }
6 | ],
7 | "info" : {
8 | "author" : "xcode",
9 | "version" : 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Example/Example/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "platform" : "ios",
6 | "size" : "1024x1024"
7 | },
8 | {
9 | "idiom" : "mac",
10 | "scale" : "1x",
11 | "size" : "16x16"
12 | },
13 | {
14 | "idiom" : "mac",
15 | "scale" : "2x",
16 | "size" : "16x16"
17 | },
18 | {
19 | "idiom" : "mac",
20 | "scale" : "1x",
21 | "size" : "32x32"
22 | },
23 | {
24 | "idiom" : "mac",
25 | "scale" : "2x",
26 | "size" : "32x32"
27 | },
28 | {
29 | "idiom" : "mac",
30 | "scale" : "1x",
31 | "size" : "128x128"
32 | },
33 | {
34 | "idiom" : "mac",
35 | "scale" : "2x",
36 | "size" : "128x128"
37 | },
38 | {
39 | "idiom" : "mac",
40 | "scale" : "1x",
41 | "size" : "256x256"
42 | },
43 | {
44 | "idiom" : "mac",
45 | "scale" : "2x",
46 | "size" : "256x256"
47 | },
48 | {
49 | "idiom" : "mac",
50 | "scale" : "1x",
51 | "size" : "512x512"
52 | },
53 | {
54 | "idiom" : "mac",
55 | "scale" : "2x",
56 | "size" : "512x512"
57 | }
58 | ],
59 | "info" : {
60 | "author" : "xcode",
61 | "version" : 1
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/Example/Example/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Example/Example/ContentView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ContentView.swift
3 | // Example
4 | //
5 | // Created by p-x9 on 2023/08/29.
6 | //
7 | //
8 |
9 | import SwiftUI
10 | import SystemSound
11 |
12 | struct ContentView: View {
13 | @State var searchText: String = ""
14 |
15 | var soundKeys: [SystemSoundKey] {
16 | if searchText.isEmpty {
17 | return SystemSoundKey.allCases
18 | } else {
19 | return SystemSoundKey.allCases.filter { key in
20 | key.title.contains(searchText)
21 | }
22 | }
23 | }
24 |
25 | var body: some View {
26 | NavigationView {
27 | _body
28 | }
29 | .searchable(text: $searchText)
30 | }
31 | }
32 |
33 | extension ContentView {
34 | var _body: some View {
35 | VStack {
36 | List(soundKeys, id: \.self) { key in
37 | HStack {
38 | VStack(alignment: .leading) {
39 | HStack {
40 | Text(key.name)
41 | if let category = key.category {
42 | Text("(\(category))")
43 | .font(.caption)
44 | }
45 | }
46 | Text(key.numbers)
47 | .font(.caption)
48 | }
49 | Spacer()
50 | }
51 | .contentShape(Rectangle())
52 | .onTapGesture {
53 | AudioServicesPlaySystemSound(key)
54 | }
55 | }
56 | }
57 | }
58 | }
59 |
60 | private extension SystemSoundKey {
61 | var numbers: String {
62 | id.description
63 | }
64 |
65 | var title: String {
66 | if let category {
67 | return "\(name)(\(category))\n(\(numbers))"
68 | }
69 | return "\(name)\n(\(numbers))"
70 | }
71 | }
72 |
73 | struct ContentView_Previews: PreviewProvider {
74 | static var previews: some View {
75 | ContentView()
76 | }
77 | }
78 |
--------------------------------------------------------------------------------
/Example/Example/Example.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.app-sandbox
6 |
7 | com.apple.security.files.user-selected.read-only
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Example/Example/ExampleApp.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ExampleApp.swift
3 | // Example
4 | //
5 | // Created by p-x9 on 2023/08/29.
6 | //
7 | //
8 |
9 | import SwiftUI
10 |
11 | @main
12 | struct ExampleApp: App {
13 | var body: some Scene {
14 | WindowGroup {
15 | ContentView()
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Example/Example/Preview Content/Preview Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Example/ExampleTests/ExampleTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ExampleTests.swift
3 | // Example
4 | //
5 | // Created by p-x9 on 2023/08/29.
6 | //
7 | //
8 |
9 | import XCTest
10 |
11 | final class ExampleTests: XCTestCase {
12 |
13 | override func setUpWithError() throws {
14 | // Put setup code here. This method is called before the invocation of each test method in the class.
15 | }
16 |
17 | override func tearDownWithError() throws {
18 | // Put teardown code here. This method is called after the invocation of each test method in the class.
19 | }
20 |
21 | func testExample() throws {
22 | // This is an example of a functional test case.
23 | // Use XCTAssert and related functions to verify your tests produce the correct results.
24 | // Any test you write for XCTest can be annotated as throws and async.
25 | // Mark your test throws to produce an unexpected failure when your test encounters an uncaught error.
26 | // Mark your test async to allow awaiting for asynchronous code to complete. Check the results with assertions afterwards.
27 | }
28 |
29 | func testPerformanceExample() throws {
30 | // This is an example of a performance test case.
31 | measure {
32 | // Put the code you want to measure the time of here.
33 | }
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/Example/ExampleUITests/ExampleUITests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ExampleUITests.swift
3 | // Example
4 | //
5 | // Created by p-x9 on 2023/08/29.
6 | //
7 | //
8 |
9 | import XCTest
10 |
11 | final class ExampleUITests: XCTestCase {
12 |
13 | override func setUpWithError() throws {
14 | // Put setup code here. This method is called before the invocation of each test method in the class.
15 |
16 | // In UI tests it is usually best to stop immediately when a failure occurs.
17 | continueAfterFailure = false
18 |
19 | // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
20 | }
21 |
22 | override func tearDownWithError() throws {
23 | // Put teardown code here. This method is called after the invocation of each test method in the class.
24 | }
25 |
26 | func testExample() throws {
27 | // UI tests must launch the application that they test.
28 | let app = XCUIApplication()
29 | app.launch()
30 |
31 | // Use XCTAssert and related functions to verify your tests produce the correct results.
32 | }
33 |
34 | func testLaunchPerformance() throws {
35 | if #available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 7.0, *) {
36 | // This measures how long it takes to launch your application.
37 | measure(metrics: [XCTApplicationLaunchMetric()]) {
38 | XCUIApplication().launch()
39 | }
40 | }
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/Example/ExampleUITests/ExampleUITestsLaunchTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ExampleUITestsLaunchTests.swift
3 | // Example
4 | //
5 | // Created by p-x9 on 2023/08/29.
6 | //
7 | //
8 |
9 | import XCTest
10 |
11 | final class ExampleUITestsLaunchTests: XCTestCase {
12 |
13 | override class var runsForEachTargetApplicationUIConfiguration: Bool {
14 | true
15 | }
16 |
17 | override func setUpWithError() throws {
18 | continueAfterFailure = false
19 | }
20 |
21 | func testLaunch() throws {
22 | let app = XCUIApplication()
23 | app.launch()
24 |
25 | // Insert steps here to perform after app launch but before taking a screenshot,
26 | // such as logging into a test account or navigating somewhere in the app
27 |
28 | let attachment = XCTAttachment(screenshot: app.screenshot())
29 | attachment.name = "Launch Screen"
30 | attachment.lifetime = .keepAlways
31 | add(attachment)
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/Example/Package.swift:
--------------------------------------------------------------------------------
1 | // swift-tools-version: 5.8
2 |
3 | import PackageDescription
4 |
5 | let package = Package(
6 | name: "",
7 | products: [],
8 | dependencies: [],
9 | targets: []
10 | )
11 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 p-x9
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Package.swift:
--------------------------------------------------------------------------------
1 | // swift-tools-version: 5.8
2 |
3 | import PackageDescription
4 |
5 | let package = Package(
6 | name: "SystemSound",
7 | products: [
8 | .library(
9 | name: "SystemSound",
10 | targets: ["SystemSound"]
11 | ),
12 | ],
13 | dependencies: [],
14 | targets: [
15 | .target(
16 | name: "SystemSound",
17 | dependencies: []
18 | ),
19 | .testTarget(
20 | name: "SystemSoundTests",
21 | dependencies: ["SystemSound"]
22 | ),
23 | ]
24 | )
25 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # SystemSound
2 |
3 | A Swift Library that makes swift-system-sound playback easy.
4 |
5 |
6 |
7 | [](https://github.com/p-x9/swift-system-sound/issues)
8 | [](https://github.com/p-x9/swift-system-sound/network/members)
9 | [](https://github.com/p-x9/swift-system-sound/stargazers)
10 | [](https://github.com/p-x9/swift-system-sound/)
11 |
12 | The system sound in `AudioToolBox` must be specified numerically, but it is not clear what that numerical value should sound like.
13 | Therefore, I have made it possible to play sounds by specifying the sound name.
14 | It was obtained by analyzing the system file.
15 |
16 | The following table shows the correspondence between SystemSoundID and sound names.
17 | [Table of SytemSoundID and Sound Name](./SystemSoundTable.md)
18 |
19 | ## Usage
20 | ### import
21 |
22 | ```swift
23 | import SystemSound
24 | ```
25 |
26 | ### PlaySounds
27 |
28 | ```swift
29 | AudioServicesPlaySystemSound(.smsSent(.sentMessage))
30 | AudioServicesPlaySystemSound(.touchTone(.dtmfStar))
31 | AudioServicesPlaySystemSound(.navigationPush)
32 | ```
33 |
34 | ## License
35 | SystemSound is released under the MIT License. See [LICENSE](./LICENSE)
36 |
--------------------------------------------------------------------------------
/Sources/SystemSound/SystemSound.swift:
--------------------------------------------------------------------------------
1 | import AudioToolbox
2 |
3 | public func AudioServicesPlaySystemSound(_ systemSoundKey: SystemSoundKey) {
4 | AudioServicesPlaySystemSound(systemSoundKey.systemSoundId)
5 | }
6 |
7 | public func AudioServicesPlayAlertSound(_ systemSoundKey: SystemSoundKey) {
8 | AudioServicesPlayAlertSound(systemSoundKey.systemSoundId)
9 | }
10 |
11 | public func AudioServicesPlaySystemSoundWithCompletion(
12 | _ systemSoundKey: SystemSoundKey,
13 | _ inCompletionBlock: (() -> Void)?
14 | ) {
15 | AudioServicesPlaySystemSoundWithCompletion(
16 | systemSoundKey.systemSoundId,
17 | inCompletionBlock
18 | )
19 | }
20 |
21 | public func AudioServicesPlayAlertSoundWithCompletion(
22 | _ systemSoundKey: SystemSoundKey,
23 | _ inCompletionBlock: (() -> Void)?
24 | ) {
25 | AudioServicesPlayAlertSoundWithCompletion(
26 | systemSoundKey.systemSoundId,
27 | inCompletionBlock
28 | )
29 | }
30 |
--------------------------------------------------------------------------------
/Sources/SystemSound/SystemSoundKind.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SystemSoundKind.swift
3 | // SystemSound
4 | //
5 | // Created by p-x9 on 2025/03/18
6 | //
7 | //
8 |
9 | import Foundation
10 |
11 | public enum SystemSoundKind: String, Codable, Hashable {
12 | case `default`
13 | case modern
14 | case new
15 | case nano
16 | }
17 |
18 | extension SystemSoundKind {
19 | public var directoryName: String {
20 | switch self {
21 | case .default: "."
22 | case .modern: "Modern"
23 | case .new: "New"
24 | case .nano: "nano"
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/SystemSound.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/SystemSound.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/SystemSoundTable.md:
--------------------------------------------------------------------------------
1 | | SystemSoundID | File Name | Category | Kind | Version |
2 | | :----: | :----: | :----: | :----: | :----: |
3 | | 30 | ringback_tone_ansi.caf | InCallSystemSound | nano | |
4 | | 31 | ringback_tone_cept.caf | InCallSystemSound | nano | |
5 | | 32 | busy_tone_ansi.caf | InCallSystemSound | nano | |
6 | | 33 | busy_tone_cept.caf | InCallSystemSound | nano | |
7 | | 34 | call_waiting_tone_ansi.caf | InCallSystemSound | nano | |
8 | | 35 | call_waiting_tone_cept.caf | InCallSystemSound | nano | |
9 | | 36 | end_call_tone_cept.caf | InCallSystemSound | nano | |
10 | | 37 | ringback_tone_hk.caf | InCallSystemSound | nano | |
11 | | 38 | ringback_tone_aus.caf | InCallSystemSound | nano | |
12 | | 39 | ringback_tone_uk.caf | InCallSystemSound | nano | |
13 | | 1000 | new-mail.caf | MailReceived | default | |
14 | | 1001 | mail-sent.caf | MailSent | default | |
15 | | 1002 | sms-received1.caf | VoicemailReceived | nano | |
16 | | 1003 | ReceivedMessage.caf | SMSReceived | default | |
17 | | 1004 | SentMessage.caf | SMSSent | default | |
18 | | 1005 | alarm.caf | CalendarAlert | default | |
19 | | 1006 | low_power.caf | LowPower | default | |
20 | | 1007 | sms-received1.caf | SMSReceived_Alert | nano | |
21 | | 1008 | sms-received2.caf | SMSReceived_Alert | default | |
22 | | 1009 | sms-received3.caf | SMSReceived_Alert | default | |
23 | | 1010 | sms-received4.caf | SMSReceived_Alert | default | |
24 | | 1011 | - | SMSReceived_Vibrate | - | |
25 | | 1012 | sms-received1.caf | SMSReceived_Alert | nano | |
26 | | 1013 | sms-received5.caf | SMSReceived_Alert | default | |
27 | | 1014 | sms-received6.caf | SMSReceived_Alert | default | |
28 | | 1015 | sms-received1.caf | UserAlert | nano | |
29 | | 1016 | tweet_sent.caf | MailSent | default | |
30 | | 1017 | alarm.caf | ReminderAlert | default | |
31 | | 1018 | Swish.caf | MailSent | default | |
32 | | 1020 | Anticipate.caf | SMSReceived_Alert | New | |
33 | | 1021 | Bloom.caf | SMSReceived_Alert | New | |
34 | | 1022 | Calypso.caf | SMSReceived_Alert | New | |
35 | | 1023 | Choo_Choo.caf | SMSReceived_Alert | New | |
36 | | 1024 | Descent.caf | SMSReceived_Alert | New | |
37 | | 1025 | Fanfare.caf | SMSReceived_Alert | New | |
38 | | 1026 | Ladder.caf | SMSReceived_Alert | New | |
39 | | 1027 | Minuet.caf | SMSReceived_Alert | New | |
40 | | 1028 | News_Flash.caf | SMSReceived_Alert | New | |
41 | | 1029 | Noir.caf | SMSReceived_Alert | New | |
42 | | 1030 | Sherwood_Forest.caf | SMSReceived_Alert | New | |
43 | | 1031 | Spell.caf | SMSReceived_Alert | New | |
44 | | 1032 | Suspense.caf | SMSReceived_Alert | New | |
45 | | 1033 | Telegraph.caf | SMSReceived_Alert | New | |
46 | | 1034 | Tiptoes.caf | SMSReceived_Alert | New | |
47 | | 1035 | Typewriters.caf | SMSReceived_Alert | New | |
48 | | 1036 | Update.caf | SMSReceived_Alert | New | |
49 | | 1050 | ussd.caf | USSDAlert | default | |
50 | | 1051 | SIMToolkitCallDropped.caf | SIMToolkitTone | default | |
51 | | 1052 | SIMToolkitGeneralBeep.caf | SIMToolkitTone | default | |
52 | | 1053 | SIMToolkitNegativeACK.caf | SIMToolkitTone | default | |
53 | | 1054 | SIMToolkitPositiveACK.caf | SIMToolkitTone | default | |
54 | | 1055 | SIMToolkitSMS.caf | SIMToolkitTone | default | |
55 | | 1057 | Tink.caf | PINKeyPressed | default | |
56 | | 1060 | WebcamStart.caf | WebcamStartAlwaysHeard | default | iOS16~ |
57 | | 1061 | LiquidDetected.caf | LiquidDetectedAlwaysHeard | default | iOS17~ |
58 | | 1070 | ct-busy.caf | AudioToneBusy | default | |
59 | | 1071 | ct-congestion.caf | AudioToneCongestion | default | |
60 | | 1072 | ct-path-ack.caf | AudioTonePathAcknowledge | default | |
61 | | 1073 | ct-error.caf | AudioToneError | default | |
62 | | 1074 | ct-call-waiting.caf | AudioToneCallWaiting | nano | |
63 | | 1075 | ct-keytone2.caf | AudioToneKey2 | default | |
64 | | 1100 | lock.caf | ScreenLocked | default | |
65 | | 1102 | - | FailedUnlock | - | |
66 | | 1103 | Tink.caf | KeyPressed | default | |
67 | | 1104 | key_press_click.caf | KeyPressed | default | |
68 | | 1105 | Tock.caf | KeyPressed | default | |
69 | | 1106 | connect_power.caf | ConnectedToPower | default | |
70 | | 1107 | RingerChanged.caf | RingerSwitchIndication | default | |
71 | | 1108 | photoShutter.caf | CameraShutter | default | |
72 | | 1109 | shake.caf | ShakeToShuffle | default | |
73 | | 1110 | jbl_begin.caf | JBL_Begin | default | |
74 | | 1111 | jbl_confirm.caf | JBL_Confirm | default | |
75 | | 1112 | jbl_cancel.caf | JBL_Cancel | default | |
76 | | 1113 | begin_record.caf | BeginRecording | default | |
77 | | 1114 | end_record.caf | EndRecording | default | |
78 | | 1115 | jbl_ambiguous.caf | JBL_Ambiguous | default | |
79 | | 1116 | jbl_no_match.caf | JBL_NoMatch | default | |
80 | | 1117 | begin_record.caf | BeginVideoRecordingAlwaysHeard | default | |
81 | | 1118 | end_record.caf | EndVideoRecordingAlwaysHeard | default | |
82 | | 1119 | camera_shutter_burst.caf | CameraShutterAlt | Modern | |
83 | | 1120 | airdrop_invite.caf | AirDropInvitation | Modern | iOS17~ |
84 | | 1121 | camera_shutter_burst_begin.caf | CameraShutterAlt | Modern | |
85 | | 1122 | camera_shutter_burst_end.caf | CameraShutterAlt | Modern | |
86 | | 1123 | key_press_click.caf | KeyPressClick_Remote | default | |
87 | | 1124 | focus_change_keyboard.caf | - | default | |
88 | | 1125 | focus_change_app_icon.caf | - | default | |
89 | | 1126 | focus_change_large.caf | - | default | |
90 | | 1127 | focus_change_small.caf | - | default | |
91 | | 1128 | navigation_push.caf | - | default | |
92 | | 1129 | navigation_pop.caf | - | default | |
93 | | 1130 | keyboard_press_normal.caf | - | default | |
94 | | 1131 | keyboard_press_delete.caf | - | default | |
95 | | 1132 | keyboard_press_clear.caf | - | default | |
96 | | 1150 | vc~invitation-accepted.caf | VCInvitationAccepted | nano | |
97 | | 1151 | vc~ringing.caf | VCRinging | nano | |
98 | | 1152 | vc~ended.caf | VCEnded | nano | |
99 | | 1153 | ct-call-waiting.caf | VCCallWaiting | nano | |
100 | | 1154 | vc~ringing.caf | VCCallUpgrade | nano | |
101 | | 1155 | key_press_delete.caf | KeyPressed | default | |
102 | | 1156 | key_press_modifier.caf | KeyPressed | default | |
103 | | 1157 | wheels_of_time.caf | KeyPressed | default | |
104 | | 1158 | go_to_sleep_alert.caf | GoToSleep_Alert | default | |
105 | | 1159 | warsaw.caf | Warsaw | default | |
106 | | 1160 | nfc_scan_complete.caf | PaymentSuccess | default | |
107 | | 1161 | - | PearlSuccess | - | |
108 | | 1162 | - | PearlFailure | - | |
109 | | 1163 | access_scan_complete.caf | PaymentSuccess | default | |
110 | | 1164 | - | USBHardening_Alert | - | |
111 | | 1165 | 3rd_party_critical.caf | Critical_Alert | default | |
112 | | 1166 | PaymentReceived.caf | PaymentReceived | default | |
113 | | 1167 | Doorbell.caf | Doorbell | default | iOS16~ |
114 | | 1168 | PaymentReceivedFailure.caf | PaymentReceivedFailure | default | iOS16~ |
115 | | 1169 | EarInteraction_Complete.caf | EarInteraction_Complete | default | iOS18.1~ |
116 | | 1174 | - | Time_To_Run | - | iOS16~ |
117 | | 1175 | - | Time_To_Walk | - | iOS16~ |
118 | | 1200 | dtmf-0.caf | TouchTone | nano | |
119 | | 1201 | dtmf-1.caf | TouchTone | nano | |
120 | | 1202 | dtmf-2.caf | TouchTone | nano | |
121 | | 1203 | dtmf-3.caf | TouchTone | nano | |
122 | | 1204 | dtmf-4.caf | TouchTone | nano | |
123 | | 1205 | dtmf-5.caf | TouchTone | nano | |
124 | | 1206 | dtmf-6.caf | TouchTone | nano | |
125 | | 1207 | dtmf-7.caf | TouchTone | nano | |
126 | | 1208 | dtmf-8.caf | TouchTone | nano | |
127 | | 1209 | dtmf-9.caf | TouchTone | nano | |
128 | | 1210 | dtmf-star.caf | TouchTone | nano | |
129 | | 1211 | dtmf-pound.caf | TouchTone | nano | |
130 | | 1253 | DeviceShutdown.caf | DeviceShutdown | default | iOS16~ |
131 | | 1254 | long_low_short_high.caf | Headset_StartCall | default | |
132 | | 1255 | short_double_high.caf | Headset_Redial | default | |
133 | | 1256 | short_low_high.caf | Headset_AnswerCall | default | |
134 | | 1257 | short_double_low.caf | Headset_EndCall | default | |
135 | | 1258 | short_double_low.caf | Headset_CallWaitingActions | default | |
136 | | 1259 | middle_9_short_double_low.caf | Headset_TransitionEnd | default | |
137 | | 1260 | camera_timer_final_second.caf | CameraShutterAlt | default | |
138 | | 1261 | camera_timer_countdown.caf | CameraShutterAlt | default | |
139 | | 1262 | health_notification.caf | Health_Alert | default | |
140 | | 1263 | MultiwayJoin.caf | InCallSystemSound | nano | |
141 | | 1264 | MultiwayLeave.caf | InCallSystemSound | nano | |
142 | | 1265 | multiway_invitation.caf | VCGroupInvitation_Alert | default | |
143 | | 1270 | PushToTalkJoined.caf | PushToTalkJoined | nano | iOS16.2~ |
144 | | 1271 | PushToTalkLeft.caf | PushToTalkLeft | nano | iOS16.2~ |
145 | | 1272 | PushToTalkUnmute.caf | PushToTalkUnmute | nano | iOS16.2~ |
146 | | 1273 | PushToTalkMute.caf | PushToTalkMute | nano | iOS16.2~ |
147 | | 1274 | PushToTalkUnmuteFail.caf | PushToTalkUnmuteFail | nano | iOS16.2~ |
148 | | 1275 | SenderConfirmation.caf | IDCard_Sender_Confirmation | nano | iOS17~ |
149 | | 1276 | ReceiverConfirmation.caf | IDCard_Receiver_Confirmation | nano | iOS17~ |
150 | | 1277 | ReceiverConnect.caf | IDCard_Receiver_Connect | nano | iOS17~ |
151 | | 1278 | - | DictationBegin | - | iOS18~ |
152 | | 1279 | - | DictationCancel | - | iOS18~ |
153 | | 1280 | - | DictationConfirm | - | iOS18~ |
154 | | 1281 | RemoteAttentionRequest_Alert.caf | - | default | iOS18.2~ |
155 | | 1300 | sms-received1.caf | SystemSoundPreview_IgnoreRingerSwitch | nano | |
156 | | 1301 | ReceivedMessage.caf | SystemSoundPreview_IgnoreRingerSwitch | default | |
157 | | 1302 | new-mail.caf | SystemSoundPreview_IgnoreRingerSwitch | default | |
158 | | 1303 | mail-sent.caf | SystemSoundPreview_IgnoreRingerSwitch | default | |
159 | | 1304 | alarm.caf | SystemSoundPreview_IgnoreRingerSwitch | default | |
160 | | 1305 | lock.caf | SystemSoundPreview | default | |
161 | | 1306 | key_press_click.caf | KeyPressClickPreview | default | |
162 | | 1307 | sms-received1.caf | SMSReceived_Selection | nano | |
163 | | 1308 | sms-received2.caf | SMSReceived_Selection | default | |
164 | | 1309 | sms-received3.caf | SMSReceived_Selection | default | |
165 | | 1310 | sms-received4.caf | SMSReceived_Selection | default | |
166 | | 1311 | - | SMSReceived_Vibrate | - | |
167 | | 1312 | sms-received1.caf | SMSReceived_Selection | nano | |
168 | | 1313 | sms-received5.caf | SMSReceived_Selection | default | |
169 | | 1314 | sms-received6.caf | SMSReceived_Selection | default | |
170 | | 1315 | sms-received1.caf | SystemSoundPreview | nano | |
171 | | 1317 | alarm.caf | SystemSoundPreview_IgnoreRingerSwitch | default | |
172 | | 1318 | Swish.caf | SystemSoundPreview_IgnoreRingerSwitch_NoVibe | default | |
173 | | 1320 | Anticipate.caf | SMSReceived_Selection | New | |
174 | | 1321 | Bloom.caf | SMSReceived_Selection | New | |
175 | | 1322 | Calypso.caf | SMSReceived_Selection | New | |
176 | | 1323 | Choo_Choo.caf | SMSReceived_Selection | New | |
177 | | 1324 | Descent.caf | SMSReceived_Selection | New | |
178 | | 1325 | Fanfare.caf | SMSReceived_Selection | New | |
179 | | 1326 | Ladder.caf | SMSReceived_Selection | New | |
180 | | 1327 | Minuet.caf | SMSReceived_Selection | New | |
181 | | 1328 | News_Flash.caf | SMSReceived_Selection | New | |
182 | | 1329 | Noir.caf | SMSReceived_Selection | New | |
183 | | 1330 | Sherwood_Forest.caf | SMSReceived_Selection | New | |
184 | | 1331 | Spell.caf | SMSReceived_Selection | New | |
185 | | 1332 | Suspense.caf | SMSReceived_Selection | New | |
186 | | 1333 | Telegraph.caf | SMSReceived_Selection | New | |
187 | | 1334 | Tiptoes.caf | SMSReceived_Selection | New | |
188 | | 1335 | Typewriters.caf | SMSReceived_Selection | New | |
189 | | 1336 | Update.caf | SMSReceived_Selection | New | |
190 | | 1340 | PINEnterDigit_AX.caf | PINEnterDigit_AX | default | iOS16~ |
191 | | 1341 | PINDelete_AX.caf | PINDelete_AX | default | iOS16~ |
192 | | 1342 | PINSubmit_AX.caf | PINSubmit_AX | default | iOS16~ |
193 | | 1343 | PINUnexpected.caf | PINUnexpected | default | iOS16~ |
194 | | 1344 | PINEnterDigit.caf | PINEnterDigit | default | iOS16~ |
195 | | 1345 | PINDelete.caf | PINDelete | default | iOS16~ |
196 | | 1346 | NFCCardProvisioned.caf | - | default | iOS18~ |
197 | | 1347 | NFCCardComplete.caf | - | default | iOS18~ |
198 | | 1348 | NFCCardError.caf | - | default | iOS18~ |
199 | | 1350 | - | RingerVibeChanged | - | |
200 | | 1351 | - | SilentVibeChanged | - | |
201 | | 1352 | - | VibrateAlways | - | |
202 | | 1360 | connect_power.caf | - | default | |
203 | | 1361 | connect_power.caf | - | default | |
204 | | 1362 | HeadphoneAudioExposureLimitExceeded.caf | HeadphoneAudioExposureLimitExceeded | nano | |
205 | | 1363 | HealthNotificationUrgent.caf | HealthNotificationUrgent | nano | |
206 | | 1364 | MicMute.caf | InCallSystemSound | nano | |
207 | | 1365 | MicUnmute.caf | InCallSystemSound | nano | |
208 | | 1366 | MicUnmuteFail.caf | InCallSystemSound | nano | |
209 | | 1367 | ScreenSharingStarted.caf | InCallSystemSound | nano | |
210 | | 1368 | MediaPaused.caf | - | nano | |
211 | | 1369 | MediaHandoff.caf | - | nano | |
212 | | 1370 | NavigationGenericManeuver.caf | NavigationGenericManeuver | default | |
213 | | 1371 | HeadGesturesDoubleNod.caf | - | nano | iOS18~ |
214 | | 1372 | HeadGesturesDoubleShake.caf | - | nano | iOS18~ |
215 | | 1373 | HeadGesturesPartialNod.caf | - | nano | iOS18~ |
216 | | 1374 | HeadGesturesPartialShake.caf | - | nano | iOS18~ |
217 | | 1393 | ScreenCapture.caf | - | nano | |
218 | | 1394 | payment_success.caf | PaymentSuccess | default | |
219 | | 1395 | payment_failure.caf | PaymentFailure | default | |
220 | | 1396 | acknowledgment_sent.caf | - | default | |
221 | | 1397 | acknowledgment_received.caf | - | default | |
222 | | 1398 | nfc_scan_failure.caf | PaymentFailure | default | |
223 | | 1400 | Notification_Haptic.caf | Notification_Haptic | nano | |
224 | | 1401 | Ringtone_US_Haptic.caf | Ringtone_US_Haptic | nano | |
225 | | 1402 | Ringtone_UK_Haptic.caf | Ringtone_UK_Haptic | nano | |
226 | | 1403 | Alarm_Haptic.caf | Alarm_Haptic | nano | |
227 | | 1404 | SiriStart_Haptic.caf | SiriStart_Haptic | nano | |
228 | | 1405 | SiriStopSuccess_Haptic.caf | SiriStopSuccess_Haptic | nano | |
229 | | 1406 | SiriStopFailure_Haptic.caf | SiriStopFailure_Haptic | nano | |
230 | | 1407 | Stockholm_Haptic.caf | Stockholm_Haptic | nano | |
231 | | 1408 | Beat_Haptic.caf | Beat_Haptic | nano | |
232 | | 1409 | - | RubberBand_Haptic | - | |
233 | | 1410 | DoNotDisturb_Haptic.caf | DoNotDisturb_Haptic | nano | |
234 | | 1411 | - | UIConfirmation_Haptic | - | |
235 | | 1412 | - | ET_Heartbeat_Haptic | - | |
236 | | 1413 | Timer_Haptic.caf | Timer_Haptic | nano | |
237 | | 1414 | NavigationLeftTurn_Haptic.caf | NavigationLeftTurn_Haptic | nano | |
238 | | 1415 | NavigationRightTurn_Haptic.caf | NavigationRightTurn_Haptic | nano | |
239 | | 1416 | Detent_Haptic.caf | Detent_Haptic | nano | |
240 | | 1417 | NavigationGenericManeuver_Haptic.caf | NavigationGenericManeuver_Haptic | nano | |
241 | | 1418 | CameraCountdownTick_Haptic.caf | CameraCountdownTick_Haptic | nano | |
242 | | 1419 | CameraCountdownImminent_Haptic.caf | CameraCountdownImminent_Haptic | nano | |
243 | | 1420 | ET_RemoteTap_Receive_Haptic.caf | ET_RemoteTap_Receive_Haptic | nano | |
244 | | 1421 | ET_RemoteTap_Send_Haptic.caf | ET_RemoteTap_Send_Haptic | nano | |
245 | | 1422 | ET_BeginNotification_Haptic.caf | ET_BeginNotification_Haptic | nano | |
246 | | 1423 | - | DoNotDisturbExpiryWarning_Haptic | - | |
247 | | 1424 | StockholmActive_Haptic.caf | StockholmActive_Haptic | nano | |
248 | | 1425 | StockholmActiveSingleCycle_Haptic.caf | StockholmActiveSingleCycle_Haptic | nano | |
249 | | 1426 | StockholmFailure_Haptic.caf | StockholmFailure_Haptic | nano | |
250 | | 1427 | SedentaryTimer_Haptic.caf | SedentaryTimer_Haptic | nano | |
251 | | 1428 | HourlyChime_Haptic.caf | HourlyChime_Haptic | nano | |
252 | | 1429 | Preview_AudioAndHaptic.caf | Preview_AudioAndHaptic | nano | |
253 | | 1430 | Alert_ActivityGoalAttained_Haptic.caf | Alert_ActivityGoalAttained_Haptic | nano | |
254 | | 1431 | Alert_ActivityGoalBehind_Haptic.caf | Alert_ActivityGoalBehind_Haptic | nano | |
255 | | 1432 | Alert_ActivityGoalClose_Haptic.caf | Alert_ActivityGoalClose_Haptic | nano | |
256 | | 1433 | Alert_BatteryLow_10p_Haptic.caf | Alert_BatteryLow_Haptic | nano | |
257 | | 1434 | Alert_BatteryLow_5p_Haptic.caf | Alert_BatteryCritical_Haptic | nano | |
258 | | 1435 | Alert_Calendar_Haptic.caf | Alert_Calendar_Haptic | nano | |
259 | | 1436 | Notification_Haptic.caf | Alert_Mail_Haptic | nano | |
260 | | 1437 | Notification_Haptic.caf | Alert_Messages_1_Haptic | nano | |
261 | | 1438 | Notification_Haptic.caf | Alert_Messages_2_Haptic | nano | |
262 | | 1439 | Notification_Haptic.caf | Alert_Messages_3_Haptic | nano | |
263 | | 1440 | Alert_PassbookBalance_Haptic.caf | Alert_PassbookBalance_Haptic | nano | |
264 | | 1441 | Alert_PassbookGeofence_Haptic.caf | Alert_PassbookGeofence_Haptic | nano | |
265 | | 1442 | Alert_PhotostreamActivity_Haptic.caf | Alert_PhotostreamActivity_Haptic | nano | |
266 | | 1443 | Alert_ReminderDue_Haptic.caf | Alert_ReminderDue_Haptic | nano | |
267 | | 1444 | Notification_Haptic.caf | Alert_Voicemail_Haptic | nano | |
268 | | 1445 | Alert_WalkieTalkie_Haptic.caf | Alert_WalkieTalkie_Haptic | nano | |
269 | | 1446 | BatteryMagsafe_Haptic.caf | BatteryMagsafe_Haptic | nano | |
270 | | 1447 | BuddyPairingFailure_Haptic.caf | BuddyPairingFailure_Haptic | nano | |
271 | | 1448 | BuddyPairingSuccess_Haptic.caf | BuddyPairingSuccess_Haptic | nano | |
272 | | 1449 | CameraShutter_Haptic.caf | CameraShutter_Haptic | nano | |
273 | | 1450 | Alert_MapsDirectionsInApp_Haptic.caf | Alert_MapsDirectionsInApp_Haptic | nano | |
274 | | 1451 | MessagesIncoming_Haptic.caf | MessagesIncoming_Haptic | nano | |
275 | | 1452 | MessagesOutgoing_Haptic.caf | MessagesOutgoing_Haptic | nano | |
276 | | 1453 | OnOffPasscodeFailure_Haptic.caf | OnOffPasscodeFailure_Haptic | nano | |
277 | | 1457 | - | OrbInvoke_Haptic | - | |
278 | | 1458 | OrbLayers_Haptic.caf | OrbLayers_Haptic | nano | |
279 | | 1459 | PhoneHangUp_Haptic.caf | PhoneHangUp_Haptic | nano | |
280 | | 1460 | PhotosZoomDetent_Haptic.caf | PhotosZoomDetent_Haptic | nano | |
281 | | 1461 | QB_Dictation_Haptic.caf | QB_Dictation_Haptic | nano | |
282 | | 1462 | - | SpringboardEdgeUniverse_Haptic | - | |
283 | | 1463 | - | SpringboardHardStop_Haptic | - | |
284 | | 1464 | StopwatchLap_Haptic.caf | StopwatchLap_Haptic | nano | |
285 | | 1465 | StopwatchReset_Haptic.caf | StopwatchReset_Haptic | nano | |
286 | | 1466 | StopwatchStart_Haptic.caf | StopwatchStart_Haptic | nano | |
287 | | 1467 | StopwatchStop_Haptic.caf | StopwatchStop_Haptic | nano | |
288 | | 1468 | TimerCancel_Haptic.caf | TimerCancel_Haptic | nano | |
289 | | 1469 | TimerPause_Haptic.caf | TimerPause_Haptic | nano | |
290 | | 1470 | TimerStart_Haptic.caf | TimerStart_Haptic | nano | |
291 | | 1471 | TimerWheelHoursDetent_Haptic.caf | TimerWheelHoursDetent_Haptic | nano | |
292 | | 1472 | WalkieTalkieActiveStart_Haptic.caf | WalkieTalkieActiveStart_Haptic | nano | |
293 | | 1473 | WorkoutComplete_Haptic.caf | WorkoutComplete_Haptic | nano | |
294 | | 1474 | WorkoutCountdown_Haptic.caf | WorkoutCountdown_Haptic | nano | |
295 | | 1475 | Alert_3rdParty_Haptic.caf | Alert_3rdParty_Haptic | nano | |
296 | | 1476 | WorkoutSelect_Haptic.caf | WorkoutSelect_Haptic | nano | |
297 | | 1477 | WorkoutPressStart_Haptic.caf | WorkoutPressStart_Haptic | nano | |
298 | | 1478 | - | ClockAnalogTick_Haptic | - | |
299 | | 1479 | TimerWheelMinutesDetent_Haptic.caf | TimerWheelMinutesDetent_Haptic | nano | |
300 | | 1480 | PhoneAnswer_Haptic.caf | PhoneAnswer_Haptic | nano | |
301 | | 1481 | PhoneHold_Haptic.caf | PhoneHold_Haptic | nano | |
302 | | 1482 | WalkieTalkieActiveEnd_Haptic.caf | WalkieTalkieActiveEnd_Haptic | nano | |
303 | | 1483 | - | UISnap_Haptic | - | |
304 | | 1484 | UISwitch_On_Haptic.caf | UISwitch_On_Haptic | nano | |
305 | | 1485 | UISwitch_Off_Haptic.caf | UISwitch_Off_Haptic | nano | |
306 | | 1486 | UISwipe_Haptic.caf | UISwipe_Haptic | nano | |
307 | | 1487 | SystemStartup_Haptic.caf | SystemStartup_Haptic | nano | |
308 | | 1488 | BuddyPairingRemoteConnection_Haptic.caf | BuddyPairingRemoteConnection_Haptic | nano | |
309 | | 1489 | BuddyPairingRemoteTap_Haptic.caf | BuddyPairingRemoteTap_Haptic | nano | |
310 | | 1490 | QB_Dictation_Off_Haptic.caf | QB_Dictation_Off_Haptic | nano | |
311 | | 1491 | RingtoneDucked_US_Haptic.caf | RingtoneDucked_US_Haptic | nano | |
312 | | 1492 | RingtoneDucked_UK_Haptic.caf | RingtoneDucked_UK_Haptic | nano | |
313 | | 1493 | SalientNotification_Haptic.caf | SalientNotification_Haptic | nano | |
314 | | 1494 | Notification_Salient_Haptic.caf | Notification_Salient_Haptic | nano | |
315 | | 1495 | ET_BeginNotification_Salient_Haptic.caf | ET_BeginNotification_Salient_Haptic | nano | |
316 | | 1496 | Alert_Calendar_Salient_Haptic.caf | Alert_Calendar_Salient_Haptic | nano | |
317 | | 1497 | Notification_Salient_Haptic.caf | Alert_Mail_Salient_Haptic | nano | |
318 | | 1498 | Notification_Salient_Haptic.caf | Alert_Messages_1_Salient_Haptic | nano | |
319 | | 1499 | Alert_ReminderDue_Salient_Haptic.caf | Alert_ReminderDue_Salient_Haptic | nano | |
320 | | 1500 | Notification_Salient_Haptic.caf | Alert_Voicemail_Salient_Haptic | nano | |
321 | | 1501 | Alert_3rdParty_Salient_Haptic.caf | Alert_3rdParty_Salient_Haptic | nano | |
322 | | 1502 | 3rdParty_DirectionUp_Haptic.caf | 3rdParty_DirectionUp_Haptic | nano | |
323 | | 1503 | 3rdParty_DirectionDown_Haptic.caf | 3rdParty_DirectionDown_Haptic | nano | |
324 | | 1504 | 3rdParty_Success_Haptic.caf | 3rdParty_Success_Haptic | nano | |
325 | | 1505 | 3rdParty_Failure_Haptic.caf | 3rdParty_Failure_Haptic | nano | |
326 | | 1506 | 3rdParty_Retry_Haptic.caf | 3rdParty_Retry_Haptic | nano | |
327 | | 1507 | 3rdParty_Start_Haptic.caf | 3rdParty_Start_Haptic | nano | |
328 | | 1508 | 3rdParty_Stop_Haptic.caf | 3rdParty_Stop_Haptic | nano | |
329 | | 1509 | Alarm_Nightstand_Haptic.caf | Alarm_Nightstand_Haptic | nano | |
330 | | 1510 | Alert_BatteryLow_5p_Salient_Haptic.caf | Alert_BatteryCritical_Salient_Haptic | nano | |
331 | | 1511 | NavigationLeftTurn_Salient_Haptic.caf | NavigationLeftTurn_Salient_Haptic | nano | |
332 | | 1512 | NavigationRightTurn_Salient_Haptic.caf | NavigationRightTurn_Salient_Haptic | nano | |
333 | | 1513 | NavigationGenericManeuver_Salient_Haptic.caf | NavigationGenericManeuver_Salient_Haptic | nano | |
334 | | 1514 | SedentaryTimer_Salient_Haptic.caf | SedentaryTimer_Salient_Haptic | nano | |
335 | | 1515 | Alert_ActivityGoalAttained_Salient_Haptic.caf | Alert_ActivityGoalAttained_Salient_Haptic | nano | |
336 | | 1516 | Alert_ActivityGoalBehind_Salient_Haptic.caf | Alert_ActivityGoalBehind_Salient_Haptic | nano | |
337 | | 1517 | Alert_PassbookGeofence_Salient_Haptic.caf | Alert_PassbookGeofence_Salient_Haptic | nano | |
338 | | 1518 | WorkoutSaved_Haptic.caf | WorkoutSaved_Haptic | nano | |
339 | | 1519 | - | OrbPeek_Haptic | - | |
340 | | 1520 | - | OrbPop_Haptic | - | |
341 | | 1521 | - | OrbNegative_Haptic | - | |
342 | | 1522 | VoiceOver_Click_Haptic.caf | VoiceOver_Click_Haptic | nano | |
343 | | 1523 | SiriAutoSend_Haptic.caf | SiriAutoSend_Haptic | nano | |
344 | | 1524 | - | HummingbirdCycle_Haptic | - | |
345 | | 1525 | HummingbirdCompletion_Haptic.caf | HummingbirdCompletion_Haptic | nano | |
346 | | 1526 | HummingbirdNotification_Haptic.caf | HummingbirdNotification_Haptic | nano | |
347 | | 1527 | RemoteCameraShutterBurstBegin_Haptic.caf | RemoteCameraShutterBurstBegin_Haptic | nano | |
348 | | 1528 | RemoteCameraShutterBurstEnd_Haptic.caf | RemoteCameraShutterBurstEnd_Haptic | nano | |
349 | | 1529 | WorkoutPaused_Haptic.caf | WorkoutPaused_Haptic | nano | |
350 | | 1530 | WorkoutResumed_Haptic.caf | WorkoutResumed_Haptic | nano | |
351 | | 1531 | GoToSleep_Haptic.caf | GoToSleep_Haptic | nano | |
352 | | 1532 | Warsaw_Haptic.caf | Warsaw_Haptic | nano | |
353 | | 1533 | AutoUnlock_Haptic.caf | AutoUnlock_Haptic | nano | |
354 | | 1534 | Alert_ActivityFriendsGoalAttained_Haptic.caf | Alert_ActivityFriendsGoalAttained_Haptic | nano | |
355 | | 1535 | Alert_SpartanConnecting_Haptic.caf | Alert_SpartanConnecting_Haptic | nano | |
356 | | 1536 | Alert_SpartanConnecting_LowLatency_Haptic.caf | Alert_SpartanConnecting_LowLatency_Haptic | nano | |
357 | | 1537 | Alert_SpartanConnected_LowLatency_Haptic.caf | Alert_SpartanConnected_LowLatency_Haptic | nano | |
358 | | 1538 | Alert_SpartanDisconnected_LowLatency_Haptic.caf | Alert_SpartanDisconnected_LowLatency_Haptic | nano | |
359 | | 1539 | - | Alert_SpartanReminderEscalationLevel1_Haptic | - | |
360 | | 1540 | - | Alert_SpartanReminderEscalationLevel2_Haptic | - | |
361 | | 1541 | - | Alert_SpartanReminderEscalationLevel3_Haptic | - | |
362 | | 1542 | - | Alert_SpartanReminderEscalationLevel4_Haptic | - | |
363 | | 1543 | AccessScanComplete_Haptic.caf | AccessScanComplete_Haptic | nano | |
364 | | 1544 | BuddyMigrationStart_Haptic.caf | BuddyMigrationStart_Haptic | nano | |
365 | | 1545 | SOSFallDetectionPrompt_Haptic.caf | SOSFallDetectionPrompt_Haptic | nano | |
366 | | 1546 | SOSEmergencyContactTextPrompt_Haptic.caf | SOSEmergencyContactTextPrompt_Haptic | nano | |
367 | | 1547 | WorkoutStartAutodetect.caf | WorkoutStartAutoDetected_Haptic | nano | |
368 | | 1548 | WorkoutCompleteAutodetect.caf | WorkoutCompleteAutoDetected_Haptic | nano | |
369 | | 1549 | WorkoutPausedAutoDetect.caf | WorkoutPausedAutoDetected_Haptic | nano | |
370 | | 1550 | WorkoutResumedAutoDetect.caf | WorkoutResumedAutoDetected_Haptic | nano | |
371 | | 1551 | WorkoutPaceAbove.caf | Alert_PaceAbove_Haptic | nano | |
372 | | 1552 | WorkoutPaceBelow.caf | Alert_PaceBelow_Haptic | nano | |
373 | | 1553 | WalkieTalkieReceiveStart_Haptic.caf | WalkieTalkieReceiveStart_Haptic | nano | |
374 | | 1554 | WalkieTalkieReceiveEnd_Haptic.caf | WalkieTalkieReceiveEnd_Haptic | nano | |
375 | | 1555 | Alert_Health_Haptic.caf | Alert_Health_Haptic | nano | |
376 | | 1556 | MultiwayJoin.caf | InCallSystemSound | nano | |
377 | | 1557 | MultiwayLeave.caf | InCallSystemSound | nano | |
378 | | 1558 | MultiwayInvitation.caf | Alert_VCGroupInvitation_Haptic | nano | |
379 | | 1559 | 3rd_Party_Critical_Haptic.caf | Alert_Critical_Haptic | nano | |
380 | | 1560 | Alert_1stParty_Haptic.caf | Alert_FirstParty_Haptic | nano | |
381 | | 1561 | HealthNotificationUrgent.caf | Alert_HealthNotificationUrgent_Haptic | nano | |
382 | | 1562 | - | Alert_Limit_Exceeded_Haptic | - | iOS16~ |
383 | | 1563 | Siren_Countdown_Major_Haptic.caf | Siren_Countdown_Major_Haptic | nano | iOS16~ |
384 | | 1564 | Siren_Countdown_Minor_Haptic.caf | Siren_Countdown_Minor_Haptic | nano | iOS16~ |
385 | | 1565 | - | SunlightPrompt_Haptic | - | iOS16~ |
386 | | 1566 | Doorbell_Haptic.caf | Doorbell_Haptic | nano | iOS16~ |
387 | | 1567 | System_Notification_Haptic.caf | System_Notification_Haptic | nano | |
388 | | 1568 | SOSFallDetectionPromptEscalation_Haptic.caf | SOSFallDetectionPromptEscalation_Haptic | nano | |
389 | | 1569 | - | WalkAMile_Haptic | - | |
390 | | 1570 | HealthReadingComplete_Haptic.caf | HealthReadingComplete_Haptic | nano | |
391 | | 1571 | HealthReadingFail_Haptic.caf | HealthReadingFail_Haptic | nano | |
392 | | 1572 | HeadphoneAudioExposureLimitExceeded.caf | HeadphoneAudioExposureLimitExceeded_Haptic | nano | |
393 | | 1573 | ScreenCapture.caf | CameraShutter_Haptic | nano | |
394 | | 1574 | - | Time_To_Run_Haptic | - | iOS16~ |
395 | | 1575 | - | Time_To_Walk_Haptic | - | iOS16~ |
396 | | 1576 | PushToTalkJoined.caf | PushToTalkJoined_Haptic | nano | iOS16.2~ |
397 | | 1577 | PushToTalkLeft.caf | PushToTalkLeft_Haptic | nano | iOS16.2~ |
398 | | 1578 | PushToTalkUnmute.caf | PushToTalkUnmute_Haptic | nano | iOS16.2~ |
399 | | 1579 | PushToTalkMute.caf | PushToTalkMute_Haptic | nano | iOS16.2~ |
400 | | 1580 | PushToTalkUnmuteFail.caf | PushToTalkUnmuteFail_Haptic | nano | iOS16.2~ |
401 | | 1581 | WorkoutPrecisionStart_Haptic.caf | WorkoutPrecisionStart_Haptic | nano | iOS17~ |
402 | | 1582 | IntervalEnded.caf | Alert_IntervalEnded_Haptic | nano | iOS16.2~ |
403 | | 1583 | IntervalUpcoming.caf | Alert_IntervalUpcoming_Haptic | nano | iOS16.2~ |
404 | | 1584 | Elevation.caf | Elevation_Alert_Haptic | nano | iOS17~ |
405 | | 1585 | SenderConfirmation.caf | IDCard_Sender_Confirmation_Haptic | nano | iOS17~ |
406 | | 1586 | ReceiverConfirmation.caf | IDCard_Receiver_Confirmation_Haptic | nano | iOS17~ |
407 | | 1587 | ReceiverConnect.caf | IDCard_Receiver_Connect_Haptic | nano | iOS17~ |
408 | | 1588 | RegattaTimer.caf | - | nano | iOS18~ |
409 | | 3000 | - | RelTest1_Haptic | - | |
410 | | 3001 | SwTest1_Haptic.caf | unknown | nano | |
411 | | 3002 | - | SwTest2_Haptic | | |
412 | | 3003 | - | MMITest1_Haptic | | |
413 | | 3100 | - | AudioPrewarm | | iOS16~ |
414 | | 3101 | - | HapticPrewarm | | iOS16~ |
415 | | 4095 | - | Vibrate | | |
416 | | 4096 | - | UserAlert | | |
417 |
--------------------------------------------------------------------------------
/Tests/SystemSoundTests/SystemSoundTests.swift:
--------------------------------------------------------------------------------
1 | import XCTest
2 | @testable import SystemSound
3 |
4 | final class SystemSoundTests: XCTestCase {}
5 |
--------------------------------------------------------------------------------