{"id":20970283,"url":"https://github.com/sbooth/cxxaudioutilities","last_synced_at":"2025-04-23T04:37:23.321Z","repository":{"id":237956367,"uuid":"795571171","full_name":"sbooth/CXXAudioUtilities","owner":"sbooth","description":"Classes simplifying common operations in Core Audio and Audio Toolbox.","archived":false,"fork":false,"pushed_at":"2025-02-05T15:14:18.000Z","size":266,"stargazers_count":2,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-15T16:34:36.379Z","etag":null,"topics":["audiotoolbox","coreaudio"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sbooth.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-05-03T15:09:06.000Z","updated_at":"2025-02-18T17:53:52.000Z","dependencies_parsed_at":"2024-12-25T22:25:03.992Z","dependency_job_id":"921fabd9-fde5-47d8-91bb-80edaf4bd864","html_url":"https://github.com/sbooth/CXXAudioUtilities","commit_stats":null,"previous_names":["sbooth/cxxaudioutilities"],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sbooth%2FCXXAudioUtilities","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sbooth%2FCXXAudioUtilities/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sbooth%2FCXXAudioUtilities/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sbooth%2FCXXAudioUtilities/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sbooth","download_url":"https://codeload.github.com/sbooth/CXXAudioUtilities/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250372600,"owners_count":21419719,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audiotoolbox","coreaudio"],"created_at":"2024-11-19T03:57:38.519Z","updated_at":"2025-04-23T04:37:23.301Z","avatar_url":"https://github.com/sbooth.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CXXAudioUtilities\n\nAssorted C++ classes simplifying common operations in Core Audio and Audio Toolbox.\n\n\u003e [!NOTE]\n\u003e C++17 is required.\n\n## Installation\n\n### Swift Package Manager\n\nAdd a package dependency to https://github.com/sbooth/CXXAudioUtilities in Xcode.\n\n### Manual or Custom Build\n\n1. Clone the [CXXAudioUtilities](https://github.com/sbooth/CXXAudioUtilities) repository.\n2. `swift build`.\n\n## CXXAudioUtilities\n\n### CoreAudioTypes Wrappers\n\n| C++ Class | Description |\n| --- | --- |\n| [SFB::CABufferList](Sources/CXXAudioUtilities/include/SFBCABufferList.hpp) | A class wrapping a Core Audio `AudioBufferList` with a specific format, frame capacity, and frame length |\n| [SFB::CAChannelLayout](Sources/CXXAudioUtilities/include/SFBCAChannelLayout.hpp) | A class wrapping a Core Audio `AudioChannelLayout` |\n| [SFB::CAStreamBasicDescription](Sources/CXXAudioUtilities/include/SFBCAStreamBasicDescription.hpp) | A class extending the functionality of a Core Audio `AudioStreamBasicDescription` |\n| [SFB::CATimeStamp](Sources/CXXAudioUtilities/include/SFBCATimeStamp.hpp) | A class extending the functionality of a Core Audio `AudioTimeStamp` |\n| [SFB::CAException](Sources/CXXAudioUtilities/include/SFBCAException.hpp) | `std::error_category` for handling Core Audio errors as exceptions |\n\n### AudioHardware Wrappers\n\n| C++ Class | Description |\n| --- | --- |\n| [SFB::CAPropertyAddress](Sources/CXXAudioUtilities/include/SFBCAPropertyAddress.hpp) | A class extending the functionality of a Core Audio `AudioObjectPropertyAddress` |\n| [SFB::CAAudioObject](Sources/CXXAudioUtilities/include/SFBCAAudioObject.hpp) | A wrapper around a HAL audio object |\n| [SFB::CAAudioDevice](Sources/CXXAudioUtilities/include/SFBCAAudioDevice.hpp) | A wrapper around a HAL audio device |\n| [SFB::CAAudioStream](Sources/CXXAudioUtilities/include/SFBCAAudioStream.hpp) | A wrapper around a HAL audio stream |\n| [SFB::CAAudioSystemObject](Sources/CXXAudioUtilities/include/SFBCAAudioSystemObject.hpp) | A wrapper around `kAudioObjectSystemObject` |\n\n### AudioToolbox Wrappers\n\n| C++ Class | Description |\n| --- | --- |\n| [SFB::AudioFileWrapper](Sources/CXXAudioUtilities/include/SFBAudioFileWrapper.hpp) | A bare-bones wrapper around `AudioFile` modeled after `std::unique_ptr` |\n| [SFB::ExtAudioFileWrapper](Sources/CXXAudioUtilities/include/SFBExtAudioFileWrapper.hpp) | A bare-bones wrapper around `ExtAudioFile` modeled after `std::unique_ptr` |\n| [SFB::CAAUGraph](Sources/CXXAudioUtilities/include/SFBCAAUGraph.hpp) | A wrapper around `AUGraph` |\n| [SFB::CAAudioFile](Sources/CXXAudioUtilities/include/SFBCAAudioFile.hpp) | A wrapper around `AudioFile` |\n| [SFB::CAExtAudioFile](Sources/CXXAudioUtilities/include/SFBCAExtAudioFile.hpp) | A wrapper around `ExtAudioFile` |\n| [SFB::CAAudioFormat](Sources/CXXAudioUtilities/include/SFBCAAudioFormat.hpp) | A wrapper around `AudioFormat` |\n| [SFB::CAAudioConverter](Sources/CXXAudioUtilities/include/SFBCAAudioConverter.hpp) | A wrapper around `AudioConverter` |\n\n### Ring Buffers\n\n| C++ Class | Description |\n| --- | --- |\n| [SFB::RingBuffer](Sources/CXXAudioUtilities/include/SFBRingBuffer.hpp) | A generic ring buffer |\n| [SFB::AudioRingBuffer](Sources/CXXAudioUtilities/include/SFBAudioRingBuffer.hpp) | A ring buffer supporting non-interleaved audio |\n| [SFB::CARingBuffer](Sources/CXXAudioUtilities/include/SFBCARingBuffer.hpp) | A ring buffer supporting timestamped non-interleaved audio |\n\n### Utility Classes\n\n| C++ Class | Description |\n| --- | --- |\n| [SFB::ByteStream](Sources/CXXAudioUtilities/include/SFBByteStream.hpp) | A `ByteStream` provides heterogeneous typed access to an untyped buffer |\n| [SFB::CFWrapper](Sources/CXXAudioUtilities/include/SFBCFWrapper.hpp) | A wrapper around a Core Foundation object |\n| [SFB::DispatchSemaphore](Sources/CXXAudioUtilities/include/SFBDispatchSemaphore.hpp) | A wrapper around `dispatch_semaphore_t` |\n| [SFB::ScopeGuard](Sources/CXXAudioUtilities/include/SFBScopeGuard.hpp) | A class that calls a function upon destruction |\n| [SFB::UnfairLock](Sources/CXXAudioUtilities/include/SFBUnfairLock.hpp) | A wrapper around `os_unfair_lock` implementing C++ `Lockable` |\n\n| C++ Class | Description |\n| --- | --- |\n| [SFB::AudioUnitRecorder](Sources/CXXAudioUtilities/include/SFBAudioUnitRecorder.hpp) | A class that asynchronously writes the output from an `AudioUnit` to a file |\n\n## License\n\nReleased under the [MIT License](https://github.com/sbooth/CXXAudioUtilities/blob/main/LICENSE.txt).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsbooth%2Fcxxaudioutilities","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsbooth%2Fcxxaudioutilities","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsbooth%2Fcxxaudioutilities/lists"}