Repository files navigation

The Amazing Audio Engine

The Amazing Audio Engine is a sophisticated framework for iOS audio applications, built so you don't have to.

It is designed to be very easy to work with, and handles all of the intricacies of iOS audio on your behalf.

Built upon the efficient and low-latency Core Audio Remote IO system, and written by developer of Audiobus and Loopy Michael Tyson, The Amazing Audio Engine lets you get to work on making your app great instead of reinventing the wheel.

See http://theamazingaudioengine.com for details and http://theamazingaudioengine.com/doc for documentation.

License

Copyright (C) 2012-2015 A Tasty Pixel

This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.

Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:

  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.

  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.

  3. This notice may not be removed or altered from any source distribution.

Changelog

In-Development: 1.5.3 (master branch)

  • Added AEAudioBufferListCreateOnStack utility
  • Enable automaticLatencyManagement by default
  • Fixed a race condition when using setAudiobusSenderPort*
  • Added tvOS support (thanks to Florian Doyon)
  • Added playAtTime: facility to AEMemoryBufferPlayer (thanks to Anton Holmberg)
  • Added setup/teardown methods to AEInputReceiver
  • Fixed missing setup/teardown calls to input filters

1.5.2

  • Added composite setAudioDescription:inputEnabled:outputEnabled: update method
  • Added new initializer with AEAudioControllerOptions bitmask (thanks to Jonatan Liljedahl)
  • Added setting to always use the hardware sample rate (thanks to Jonatan Liljedahl)
  • Added missing teardown procedure for channels and filters
  • Fixed incorrect audio input conversion for interleaved formats
  • Fixed conversion issue with AEAudioUnitFilter
  • Fixed OS X build issue by removing AEReverbFilter for OS X (not supported on that platform)
  • Added 'audioGraphNode' properties to ABAudioUnitFilter/Channel
  • Updated TPCircularBuffer with added safety measures that will refuse to compile or crash early when a version mismatch is detected with other instances in your project
  • Address Audiobus issues for apps with both receiver and filter ports

1.5.1

  • Important fixes for the iPhone 6S
  • Added some AudioStreamBasicDescription utilities
  • Added extra AudioBufferList utilities and renamed existing ones for consistent naming
  • Added wrapper classes for Apple's effect audio units (thanks to Dream Engine's Jeremy Flores!)
  • Added Audio Unit parameter facilities (setParameterValue:forId: and getParameterValue:forId:)
  • Added AEMemoryBufferPlayer (a reincarnation of the previous in-memory AEAudioFilePlayer class)
  • Implemented 'playAtTime:' synchronisation method on AEAudioFilePlayer
  • Refactored out cross-thread messaging system into AEMessageQueue (thanks Jonatan Liljedahl!)
  • Replaced 'updateWithAudioDescription:...' mechanism with separate 'setAudioDescription', 'setInputEnabled' and 'setOutputEnabled' methods
  • Bunch of other little improvements; see git log for details.

1.5

  • OS X support! Many, many thanks to Steve Rubin!
  • Replaced in-memory version of AEAudioFilePlayer with an audio unit version which streams from disk (thanks to Ryan King and Jeremy Huff of Hello World Engineering, and Ryan Holmes for their contributions to this great enhancement).
  • Bunch of other little improvements; see git log for details.

About

Core Audio, Cordially: A sophisticated framework for iOS audio applications, built so you don't have to.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

The Amazing Audio Engine

The Amazing Audio Engine is a sophisticated framework for iOS audio applications, built so you don't have to.

It is designed to be very easy to work with, and handles all of the intricacies of iOS audio on your behalf.

Built upon the efficient and low-latency Core Audio Remote IO system, and written by developer of Audiobus and Loopy Michael Tyson, The Amazing Audio Engine lets you get to work on making your app great instead of reinventing the wheel.

See http://theamazingaudioengine.com for details and http://theamazingaudioengine.com/doc for documentation.

License

Copyright (C) 2012-2015 A Tasty Pixel

This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.

Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:

  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.

  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.

  3. This notice may not be removed or altered from any source distribution.

Changelog

In-Development: 1.5.3 (master branch)

  • Added AEAudioBufferListCreateOnStack utility
  • Enable automaticLatencyManagement by default
  • Fixed a race condition when using setAudiobusSenderPort*
  • Added tvOS support (thanks to Florian Doyon)
  • Added playAtTime: facility to AEMemoryBufferPlayer (thanks to Anton Holmberg)
  • Added setup/teardown methods to AEInputReceiver
  • Fixed missing setup/teardown calls to input filters

1.5.2

  • Added composite setAudioDescription:inputEnabled:outputEnabled: update method
  • Added new initializer with AEAudioControllerOptions bitmask (thanks to Jonatan Liljedahl)
  • Added setting to always use the hardware sample rate (thanks to Jonatan Liljedahl)
  • Added missing teardown procedure for channels and filters
  • Fixed incorrect audio input conversion for interleaved formats
  • Fixed conversion issue with AEAudioUnitFilter
  • Fixed OS X build issue by removing AEReverbFilter for OS X (not supported on that platform)
  • Added 'audioGraphNode' properties to ABAudioUnitFilter/Channel
  • Updated TPCircularBuffer with added safety measures that will refuse to compile or crash early when a version mismatch is detected with other instances in your project
  • Address Audiobus issues for apps with both receiver and filter ports

1.5.1

  • Important fixes for the iPhone 6S
  • Added some AudioStreamBasicDescription utilities
  • Added extra AudioBufferList utilities and renamed existing ones for consistent naming
  • Added wrapper classes for Apple's effect audio units (thanks to Dream Engine's Jeremy Flores!)
  • Added Audio Unit parameter facilities (setParameterValue:forId: and getParameterValue:forId:)
  • Added AEMemoryBufferPlayer (a reincarnation of the previous in-memory AEAudioFilePlayer class)
  • Implemented 'playAtTime:' synchronisation method on AEAudioFilePlayer
  • Refactored out cross-thread messaging system into AEMessageQueue (thanks Jonatan Liljedahl!)
  • Replaced 'updateWithAudioDescription:...' mechanism with separate 'setAudioDescription', 'setInputEnabled' and 'setOutputEnabled' methods
  • Bunch of other little improvements; see git log for details.

1.5

  • OS X support! Many, many thanks to Steve Rubin!
  • Replaced in-memory version of AEAudioFilePlayer with an audio unit version which streams from disk (thanks to Ryan King and Jeremy Huff of Hello World Engineering, and Ryan Holmes for their contributions to this great enhancement).
  • Bunch of other little improvements; see git log for details.

About

Core Audio, Cordially: A sophisticated framework for iOS audio applications, built so you don't have to.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

The Amazing Audio Engine

The Amazing Audio Engine is a sophisticated framework for iOS audio applications, built so you don't have to.

It is designed to be very easy to work with, and handles all of the intricacies of iOS audio on your behalf.

Built upon the efficient and low-latency Core Audio Remote IO system, and written by developer of Audiobus and Loopy Michael Tyson, The Amazing Audio Engine lets you get to work on making your app great instead of reinventing the wheel.

See http://theamazingaudioengine.com for details and http://theamazingaudioengine.com/doc for documentation.

License

Copyright (C) 2012-2015 A Tasty Pixel

This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.

Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:

  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.

  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.

  3. This notice may not be removed or altered from any source distribution.

Changelog

In-Development: 1.5.3 (master branch)

  • Added AEAudioBufferListCreateOnStack utility
  • Enable automaticLatencyManagement by default
  • Fixed a race condition when using setAudiobusSenderPort*
  • Added tvOS support (thanks to Florian Doyon)
  • Added playAtTime: facility to AEMemoryBufferPlayer (thanks to Anton Holmberg)
  • Added setup/teardown methods to AEInputReceiver
  • Fixed missing setup/teardown calls to input filters

1.5.2

  • Added composite setAudioDescription:inputEnabled:outputEnabled: update method
  • Added new initializer with AEAudioControllerOptions bitmask (thanks to Jonatan Liljedahl)
  • Added setting to always use the hardware sample rate (thanks to Jonatan Liljedahl)
  • Added missing teardown procedure for channels and filters
  • Fixed incorrect audio input conversion for interleaved formats
  • Fixed conversion issue with AEAudioUnitFilter
  • Fixed OS X build issue by removing AEReverbFilter for OS X (not supported on that platform)
  • Added 'audioGraphNode' properties to ABAudioUnitFilter/Channel
  • Updated TPCircularBuffer with added safety measures that will refuse to compile or crash early when a version mismatch is detected with other instances in your project
  • Address Audiobus issues for apps with both receiver and filter ports

1.5.1

  • Important fixes for the iPhone 6S
  • Added some AudioStreamBasicDescription utilities
  • Added extra AudioBufferList utilities and renamed existing ones for consistent naming
  • Added wrapper classes for Apple's effect audio units (thanks to Dream Engine's Jeremy Flores!)
  • Added Audio Unit parameter facilities (setParameterValue:forId: and getParameterValue:forId:)
  • Added AEMemoryBufferPlayer (a reincarnation of the previous in-memory AEAudioFilePlayer class)
  • Implemented 'playAtTime:' synchronisation method on AEAudioFilePlayer
  • Refactored out cross-thread messaging system into AEMessageQueue (thanks Jonatan Liljedahl!)
  • Replaced 'updateWithAudioDescription:...' mechanism with separate 'setAudioDescription', 'setInputEnabled' and 'setOutputEnabled' methods
  • Bunch of other little improvements; see git log for details.

1.5

  • OS X support! Many, many thanks to Steve Rubin!
  • Replaced in-memory version of AEAudioFilePlayer with an audio unit version which streams from disk (thanks to Ryan King and Jeremy Huff of Hello World Engineering, and Ryan Holmes for their contributions to this great enhancement).
  • Bunch of other little improvements; see git log for details.

About

Core Audio, Cordially: A sophisticated framework for iOS audio applications, built so you don't have to.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

The Amazing Audio Engine

The Amazing Audio Engine is a sophisticated framework for iOS audio applications, built so you don't have to.

It is designed to be very easy to work with, and handles all of the intricacies of iOS audio on your behalf.

Built upon the efficient and low-latency Core Audio Remote IO system, and written by developer of Audiobus and Loopy Michael Tyson, The Amazing Audio Engine lets you get to work on making your app great instead of reinventing the wheel.

See http://theamazingaudioengine.com for details and http://theamazingaudioengine.com/doc for documentation.

License

Copyright (C) 2012-2015 A Tasty Pixel

This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.

Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:

  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.

  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.

  3. This notice may not be removed or altered from any source distribution.

Changelog

In-Development: 1.5.3 (master branch)

  • Added AEAudioBufferListCreateOnStack utility
  • Enable automaticLatencyManagement by default
  • Fixed a race condition when using setAudiobusSenderPort*
  • Added tvOS support (thanks to Florian Doyon)
  • Added playAtTime: facility to AEMemoryBufferPlayer (thanks to Anton Holmberg)
  • Added setup/teardown methods to AEInputReceiver
  • Fixed missing setup/teardown calls to input filters

1.5.2

  • Added composite setAudioDescription:inputEnabled:outputEnabled: update method
  • Added new initializer with AEAudioControllerOptions bitmask (thanks to Jonatan Liljedahl)
  • Added setting to always use the hardware sample rate (thanks to Jonatan Liljedahl)
  • Added missing teardown procedure for channels and filters
  • Fixed incorrect audio input conversion for interleaved formats
  • Fixed conversion issue with AEAudioUnitFilter
  • Fixed OS X build issue by removing AEReverbFilter for OS X (not supported on that platform)
  • Added 'audioGraphNode' properties to ABAudioUnitFilter/Channel
  • Updated TPCircularBuffer with added safety measures that will refuse to compile or crash early when a version mismatch is detected with other instances in your project
  • Address Audiobus issues for apps with both receiver and filter ports

1.5.1

  • Important fixes for the iPhone 6S
  • Added some AudioStreamBasicDescription utilities
  • Added extra AudioBufferList utilities and renamed existing ones for consistent naming
  • Added wrapper classes for Apple's effect audio units (thanks to Dream Engine's Jeremy Flores!)
  • Added Audio Unit parameter facilities (setParameterValue:forId: and getParameterValue:forId:)
  • Added AEMemoryBufferPlayer (a reincarnation of the previous in-memory AEAudioFilePlayer class)
  • Implemented 'playAtTime:' synchronisation method on AEAudioFilePlayer
  • Refactored out cross-thread messaging system into AEMessageQueue (thanks Jonatan Liljedahl!)
  • Replaced 'updateWithAudioDescription:...' mechanism with separate 'setAudioDescription', 'setInputEnabled' and 'setOutputEnabled' methods
  • Bunch of other little improvements; see git log for details.

1.5

  • OS X support! Many, many thanks to Steve Rubin!
  • Replaced in-memory version of AEAudioFilePlayer with an audio unit version which streams from disk (thanks to Ryan King and Jeremy Huff of Hello World Engineering, and Ryan Holmes for their contributions to this great enhancement).
  • Bunch of other little improvements; see git log for details.

About

Core Audio, Cordially: A sophisticated framework for iOS audio applications, built so you don't have to.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

The Amazing Audio Engine

The Amazing Audio Engine is a sophisticated framework for iOS audio applications, built so you don't have to.

It is designed to be very easy to work with, and handles all of the intricacies of iOS audio on your behalf.

Built upon the efficient and low-latency Core Audio Remote IO system, and written by developer of Audiobus and Loopy Michael Tyson, The Amazing Audio Engine lets you get to work on making your app great instead of reinventing the wheel.

See http://theamazingaudioengine.com for details and http://theamazingaudioengine.com/doc for documentation.

License

Copyright (C) 2012-2015 A Tasty Pixel

This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.

Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:

  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.

  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.

  3. This notice may not be removed or altered from any source distribution.

Changelog

In-Development: 1.5.3 (master branch)

  • Added AEAudioBufferListCreateOnStack utility
  • Enable automaticLatencyManagement by default
  • Fixed a race condition when using setAudiobusSenderPort*
  • Added tvOS support (thanks to Florian Doyon)
  • Added playAtTime: facility to AEMemoryBufferPlayer (thanks to Anton Holmberg)
  • Added setup/teardown methods to AEInputReceiver
  • Fixed missing setup/teardown calls to input filters

1.5.2

  • Added composite setAudioDescription:inputEnabled:outputEnabled: update method
  • Added new initializer with AEAudioControllerOptions bitmask (thanks to Jonatan Liljedahl)
  • Added setting to always use the hardware sample rate (thanks to Jonatan Liljedahl)
  • Added missing teardown procedure for channels and filters
  • Fixed incorrect audio input conversion for interleaved formats
  • Fixed conversion issue with AEAudioUnitFilter
  • Fixed OS X build issue by removing AEReverbFilter for OS X (not supported on that platform)
  • Added 'audioGraphNode' properties to ABAudioUnitFilter/Channel
  • Updated TPCircularBuffer with added safety measures that will refuse to compile or crash early when a version mismatch is detected with other instances in your project
  • Address Audiobus issues for apps with both receiver and filter ports

1.5.1

  • Important fixes for the iPhone 6S
  • Added some AudioStreamBasicDescription utilities
  • Added extra AudioBufferList utilities and renamed existing ones for consistent naming
  • Added wrapper classes for Apple's effect audio units (thanks to Dream Engine's Jeremy Flores!)
  • Added Audio Unit parameter facilities (setParameterValue:forId: and getParameterValue:forId:)
  • Added AEMemoryBufferPlayer (a reincarnation of the previous in-memory AEAudioFilePlayer class)
  • Implemented 'playAtTime:' synchronisation method on AEAudioFilePlayer
  • Refactored out cross-thread messaging system into AEMessageQueue (thanks Jonatan Liljedahl!)
  • Replaced 'updateWithAudioDescription:...' mechanism with separate 'setAudioDescription', 'setInputEnabled' and 'setOutputEnabled' methods
  • Bunch of other little improvements; see git log for details.

1.5

  • OS X support! Many, many thanks to Steve Rubin!
  • Replaced in-memory version of AEAudioFilePlayer with an audio unit version which streams from disk (thanks to Ryan King and Jeremy Huff of Hello World Engineering, and Ryan Holmes for their contributions to this great enhancement).
  • Bunch of other little improvements; see git log for details.

About

Core Audio, Cordially: A sophisticated framework for iOS audio applications, built so you don't have to.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

The Amazing Audio Engine

The Amazing Audio Engine is a sophisticated framework for iOS audio applications, built so you don't have to.

It is designed to be very easy to work with, and handles all of the intricacies of iOS audio on your behalf.

Built upon the efficient and low-latency Core Audio Remote IO system, and written by developer of Audiobus and Loopy Michael Tyson, The Amazing Audio Engine lets you get to work on making your app great instead of reinventing the wheel.

See http://theamazingaudioengine.com for details and http://theamazingaudioengine.com/doc for documentation.

License

Copyright (C) 2012-2015 A Tasty Pixel

This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.

Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:

  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.

  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.

  3. This notice may not be removed or altered from any source distribution.

Changelog

In-Development: 1.5.3 (master branch)

  • Added AEAudioBufferListCreateOnStack utility
  • Enable automaticLatencyManagement by default
  • Fixed a race condition when using setAudiobusSenderPort*
  • Added tvOS support (thanks to Florian Doyon)
  • Added playAtTime: facility to AEMemoryBufferPlayer (thanks to Anton Holmberg)
  • Added setup/teardown methods to AEInputReceiver
  • Fixed missing setup/teardown calls to input filters

1.5.2

  • Added composite setAudioDescription:inputEnabled:outputEnabled: update method
  • Added new initializer with AEAudioControllerOptions bitmask (thanks to Jonatan Liljedahl)
  • Added setting to always use the hardware sample rate (thanks to Jonatan Liljedahl)
  • Added missing teardown procedure for channels and filters
  • Fixed incorrect audio input conversion for interleaved formats
  • Fixed conversion issue with AEAudioUnitFilter
  • Fixed OS X build issue by removing AEReverbFilter for OS X (not supported on that platform)
  • Added 'audioGraphNode' properties to ABAudioUnitFilter/Channel
  • Updated TPCircularBuffer with added safety measures that will refuse to compile or crash early when a version mismatch is detected with other instances in your project
  • Address Audiobus issues for apps with both receiver and filter ports

1.5.1

  • Important fixes for the iPhone 6S
  • Added some AudioStreamBasicDescription utilities
  • Added extra AudioBufferList utilities and renamed existing ones for consistent naming
  • Added wrapper classes for Apple's effect audio units (thanks to Dream Engine's Jeremy Flores!)
  • Added Audio Unit parameter facilities (setParameterValue:forId: and getParameterValue:forId:)
  • Added AEMemoryBufferPlayer (a reincarnation of the previous in-memory AEAudioFilePlayer class)
  • Implemented 'playAtTime:' synchronisation method on AEAudioFilePlayer
  • Refactored out cross-thread messaging system into AEMessageQueue (thanks Jonatan Liljedahl!)
  • Replaced 'updateWithAudioDescription:...' mechanism with separate 'setAudioDescription', 'setInputEnabled' and 'setOutputEnabled' methods
  • Bunch of other little improvements; see git log for details.

1.5

  • OS X support! Many, many thanks to Steve Rubin!
  • Replaced in-memory version of AEAudioFilePlayer with an audio unit version which streams from disk (thanks to Ryan King and Jeremy Huff of Hello World Engineering, and Ryan Holmes for their contributions to this great enhancement).
  • Bunch of other little improvements; see git log for details.

About

Core Audio, Cordially: A sophisticated framework for iOS audio applications, built so you don't have to.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

The Amazing Audio Engine

The Amazing Audio Engine is a sophisticated framework for iOS audio applications, built so you don't have to.

It is designed to be very easy to work with, and handles all of the intricacies of iOS audio on your behalf.

Built upon the efficient and low-latency Core Audio Remote IO system, and written by developer of Audiobus and Loopy Michael Tyson, The Amazing Audio Engine lets you get to work on making your app great instead of reinventing the wheel.

See http://theamazingaudioengine.com for details and http://theamazingaudioengine.com/doc for documentation.

License

Copyright (C) 2012-2015 A Tasty Pixel

This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.

Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:

  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.

  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.

  3. This notice may not be removed or altered from any source distribution.

Changelog

In-Development: 1.5.3 (master branch)

  • Added AEAudioBufferListCreateOnStack utility
  • Enable automaticLatencyManagement by default
  • Fixed a race condition when using setAudiobusSenderPort*
  • Added tvOS support (thanks to Florian Doyon)
  • Added playAtTime: facility to AEMemoryBufferPlayer (thanks to Anton Holmberg)
  • Added setup/teardown methods to AEInputReceiver
  • Fixed missing setup/teardown calls to input filters

1.5.2

  • Added composite setAudioDescription:inputEnabled:outputEnabled: update method
  • Added new initializer with AEAudioControllerOptions bitmask (thanks to Jonatan Liljedahl)
  • Added setting to always use the hardware sample rate (thanks to Jonatan Liljedahl)
  • Added missing teardown procedure for channels and filters
  • Fixed incorrect audio input conversion for interleaved formats
  • Fixed conversion issue with AEAudioUnitFilter
  • Fixed OS X build issue by removing AEReverbFilter for OS X (not supported on that platform)
  • Added 'audioGraphNode' properties to ABAudioUnitFilter/Channel
  • Updated TPCircularBuffer with added safety measures that will refuse to compile or crash early when a version mismatch is detected with other instances in your project
  • Address Audiobus issues for apps with both receiver and filter ports

1.5.1

  • Important fixes for the iPhone 6S
  • Added some AudioStreamBasicDescription utilities
  • Added extra AudioBufferList utilities and renamed existing ones for consistent naming
  • Added wrapper classes for Apple's effect audio units (thanks to Dream Engine's Jeremy Flores!)
  • Added Audio Unit parameter facilities (setParameterValue:forId: and getParameterValue:forId:)
  • Added AEMemoryBufferPlayer (a reincarnation of the previous in-memory AEAudioFilePlayer class)
  • Implemented 'playAtTime:' synchronisation method on AEAudioFilePlayer
  • Refactored out cross-thread messaging system into AEMessageQueue (thanks Jonatan Liljedahl!)
  • Replaced 'updateWithAudioDescription:...' mechanism with separate 'setAudioDescription', 'setInputEnabled' and 'setOutputEnabled' methods
  • Bunch of other little improvements; see git log for details.

1.5

  • OS X support! Many, many thanks to Steve Rubin!
  • Replaced in-memory version of AEAudioFilePlayer with an audio unit version which streams from disk (thanks to Ryan King and Jeremy Huff of Hello World Engineering, and Ryan Holmes for their contributions to this great enhancement).
  • Bunch of other little improvements; see git log for details.

About

Core Audio, Cordially: A sophisticated framework for iOS audio applications, built so you don't have to.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

The Amazing Audio Engine

The Amazing Audio Engine is a sophisticated framework for iOS audio applications, built so you don't have to.

It is designed to be very easy to work with, and handles all of the intricacies of iOS audio on your behalf.

Built upon the efficient and low-latency Core Audio Remote IO system, and written by developer of Audiobus and Loopy Michael Tyson, The Amazing Audio Engine lets you get to work on making your app great instead of reinventing the wheel.

See http://theamazingaudioengine.com for details and http://theamazingaudioengine.com/doc for documentation.

License

Copyright (C) 2012-2015 A Tasty Pixel

This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.

Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:

  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.

  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.

  3. This notice may not be removed or altered from any source distribution.

Changelog

In-Development: 1.5.3 (master branch)

  • Added AEAudioBufferListCreateOnStack utility
  • Enable automaticLatencyManagement by default
  • Fixed a race condition when using setAudiobusSenderPort*
  • Added tvOS support (thanks to Florian Doyon)
  • Added playAtTime: facility to AEMemoryBufferPlayer (thanks to Anton Holmberg)
  • Added setup/teardown methods to AEInputReceiver
  • Fixed missing setup/teardown calls to input filters

1.5.2

  • Added composite setAudioDescription:inputEnabled:outputEnabled: update method
  • Added new initializer with AEAudioControllerOptions bitmask (thanks to Jonatan Liljedahl)
  • Added setting to always use the hardware sample rate (thanks to Jonatan Liljedahl)
  • Added missing teardown procedure for channels and filters
  • Fixed incorrect audio input conversion for interleaved formats
  • Fixed conversion issue with AEAudioUnitFilter
  • Fixed OS X build issue by removing AEReverbFilter for OS X (not supported on that platform)
  • Added 'audioGraphNode' properties to ABAudioUnitFilter/Channel
  • Updated TPCircularBuffer with added safety measures that will refuse to compile or crash early when a version mismatch is detected with other instances in your project
  • Address Audiobus issues for apps with both receiver and filter ports

1.5.1

  • Important fixes for the iPhone 6S
  • Added some AudioStreamBasicDescription utilities
  • Added extra AudioBufferList utilities and renamed existing ones for consistent naming
  • Added wrapper classes for Apple's effect audio units (thanks to Dream Engine's Jeremy Flores!)
  • Added Audio Unit parameter facilities (setParameterValue:forId: and getParameterValue:forId:)
  • Added AEMemoryBufferPlayer (a reincarnation of the previous in-memory AEAudioFilePlayer class)
  • Implemented 'playAtTime:' synchronisation method on AEAudioFilePlayer
  • Refactored out cross-thread messaging system into AEMessageQueue (thanks Jonatan Liljedahl!)
  • Replaced 'updateWithAudioDescription:...' mechanism with separate 'setAudioDescription', 'setInputEnabled' and 'setOutputEnabled' methods
  • Bunch of other little improvements; see git log for details.

1.5

  • OS X support! Many, many thanks to Steve Rubin!
  • Replaced in-memory version of AEAudioFilePlayer with an audio unit version which streams from disk (thanks to Ryan King and Jeremy Huff of Hello World Engineering, and Ryan Holmes for their contributions to this great enhancement).
  • Bunch of other little improvements; see git log for details.

About

Core Audio, Cordially: A sophisticated framework for iOS audio applications, built so you don't have to.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages