{"id":20120406,"url":"https://github.com/asahilinux/asahi-audio","last_synced_at":"2025-04-05T05:03:48.862Z","repository":{"id":41277900,"uuid":"469997732","full_name":"AsahiLinux/asahi-audio","owner":"AsahiLinux","description":"Userspace audio for Asahi Linux","archived":false,"fork":false,"pushed_at":"2025-03-30T04:27:31.000Z","size":31063,"stargazers_count":163,"open_issues_count":6,"forks_count":17,"subscribers_count":14,"default_branch":"main","last_synced_at":"2025-03-31T18:21:10.871Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Makefile","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/AsahiLinux.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2022-03-15T03:55:19.000Z","updated_at":"2025-03-30T04:27:30.000Z","dependencies_parsed_at":"2023-10-02T05:32:37.006Z","dependency_job_id":"24d75fd1-ec59-448d-a984-eecd1f74d41c","html_url":"https://github.com/AsahiLinux/asahi-audio","commit_stats":null,"previous_names":["asahilinux/asahi-audio"],"tags_count":27,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AsahiLinux%2Fasahi-audio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AsahiLinux%2Fasahi-audio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AsahiLinux%2Fasahi-audio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AsahiLinux%2Fasahi-audio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AsahiLinux","download_url":"https://codeload.github.com/AsahiLinux/asahi-audio/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247281549,"owners_count":20913190,"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":[],"created_at":"2024-11-13T19:19:56.507Z","updated_at":"2025-04-05T05:03:48.825Z","avatar_url":"https://github.com/AsahiLinux.png","language":"Makefile","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Linux userspace audio configuration for Apple Silicon Macs.\n\nThis repo contains DSP configuration files for Apple Silicon Macs supported by the\nAsahi Linux project. Our goal is to make the Asahi Linux audio experience better than macOS,\nand in doing so demonstrate that desktop Linux audio can be made fit for purpose with\na little bit of effort.\n\n### Currently Supported Devices (speakers)\n* MacBook Air (13-inch, M1, 2020)\n* MacBook Air (13-inch, M2, 2022)\n* MacBook Air (15-inch, M2, 2023)\n* MacBook Pro (13-inch, M1/M2, 2020/2022)\n* MacBook Pro (14-inch, M1/M2 Pro/Max, 2021/2023)\n* MacBook Pro (16-inch, M1/M2 Pro/Max, 2021/2023)\n* Mac mini (M1/M2/M2 Pro, 2020/2023)\n* Mac Studio (M1/M2 Max/Ultra, 2022/2023)\n\n### Currently Supported Devices (microphones)\n* MacBook Air (13-inch, M1, 2020)\n* MacBook Air (13-inch, M2, 2023)\n* MacBook Air (15-inch, M2, 2023)\n* MacBook Pro (14-inch, M1/M2 Pro/Max, 2021/2023)\n* MacBook Pro (16-inch, M1/M2 Pro/Max, 2021/2023)\n\n### Dependencies\n* speakersafetyd\n* linux-asahi 6.12.12-1 or above (see notes)\n* PipeWire 1.0 or above\n* WirePlumber 0.5.2 or above\n* Bankstown 1.1.0 or above\n* Triforce 0.2.0 or above\n* LSP Plugins 1.0.20 or above (only the LV2 set of plugins are used)\n\n**Notes**: Due to a critical bug in lsp-plugins speaker are enabled via\nout-of-tree patches to ensure known fixed LSP plugins are present.\n\n### Why this is necessary\nMicrospeakers are terrible. They are too small to reproduce any substantial bass at all,\nand are built too cheaply to behave in a linear fashion. You cannot change the laws of\nphysics, and this applies universally. Bluetooth speakers, phones, TV, and yes even\nApple's computers all have cheap and bad speakers either due to bill of material\ncost constraints, size constraints, or both. Modern Bluetooth speakers, phones, TVs\nand Macs often sound quite good, though. How do we explain this?\n\nThe answer is DSP. Computing power has become extremely cheap, cheaper than designing\nand manufacturing a good speaker. Not only this, but research into acoustics and our\nperception of sound (psychoacoustics) has been steadily increasing over the past couple\nof decades. We simply plaster over the limitations of tiny, cheap speakers by applying\naggressive EQ profiles and other tricks in the digital domain.\n\nIn the case of Apple Silicon machines, Apple has taken things one step further by including\n_actually good_ speakers on most modern Macs. The 14\" MacBook Pro has 6 speakers in it,\ndesigned to be used as a stereo array. macOS can handle this just fine of course, but\nwhat about Linux?\n\nUntil now, desktop Linux has not really had support for describing and properly driving\ndevices like this. It's the reason that some higher-end laptops sound better in Windows -\nOEMs work with codec vendors to add all of this processing to their Windows sound drivers.\nObviously, such a solution would never fly for desktop Linux.\n\nWe have therefore worked closely with PipeWire and WirePlumber upstream to design a more\nflexible, modular solution that can be used by anyone for any device that may require similar\nhandling, improving the desktop Linux audio experience for everyone.\n\n### How does it work?\nPipeWire and WirePlumber are able to create virtual audio devices comprised of a chain of\naudio plugins. These virtual devices can be backed by real hardware - a virtual sink can\nbe set to output to a target sound card, and a virtual source can capture audio from a real\nline level input or microphone.\n\nWe worked with upstream to enhance this functionality with the ability to automatically\nselect and load the correct virtual device, and to hide the unusable raw hardware from view.\n\nThis repo contains files which describe a virtual device for each supported Mac, as well as\ninstructions for WirePlumber to load the correct one on startup. It also contains impulse\nresponses for each Mac which encode the necessary EQ filters. On startup, PipeWire and\nWirePlumber detect which Mac they are running on, load in the correct virtual device and impulse\nresponses, and then hide the \"raw\" hardware output from the rest of userspace. All your software\nsees is a stereo output, and all you hear is quality sound from your Mac running Linux!\n\n\n### Better than macOS?\nWhile it is evident that Apple put an immense amount of effort into ensuring these\nmachines sound good, they tried a little _too_ hard...\n\nOn top of being tuned for an exaggerated Harman curve, macOS makes use of psychoacoustic bass\nenhancement, dynamic range compression, and spatialisation tricks to spice up the acoustic\nprofile of these machines. Unfortunately not only does this colour the sound\nin a way reminiscent of early Beats headphones, Apple actually have a _bug_ in their\npsychoacoustic bass processor that causes audible artefacts. This is whole setup is quite\nsimply unacceptable for anything but the most casual of listening.\n\nWe aim to deliver a mostly flat response across the audible range that will faithfully reproduce\nsource material without adding an excessive amount of colour.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fasahilinux%2Fasahi-audio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fasahilinux%2Fasahi-audio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fasahilinux%2Fasahi-audio/lists"}