{"id":20329213,"url":"https://github.com/sharon-xa/simuaudio","last_synced_at":"2026-05-01T02:31:20.485Z","repository":{"id":261878766,"uuid":"885612878","full_name":"sharon-xa/simuaudio","owner":"sharon-xa","description":"SimuAudio is a command-line tool for managing simultaneous audio playback between multiple devices using PipeWire's module-null-sink.","archived":false,"fork":false,"pushed_at":"2025-01-15T01:09:04.000Z","size":24,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-09T16:45:05.622Z","etag":null,"topics":["audio","cli","linux","pipewire"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sharon-xa.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"zenodo":null}},"created_at":"2024-11-09T00:01:45.000Z","updated_at":"2025-01-15T01:09:06.000Z","dependencies_parsed_at":"2024-11-09T01:17:26.218Z","dependency_job_id":"65fd587d-58ad-4cd7-971d-62fa9643faab","html_url":"https://github.com/sharon-xa/simuaudio","commit_stats":null,"previous_names":["sharon-xa/simuaudio"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/sharon-xa/simuaudio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sharon-xa%2Fsimuaudio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sharon-xa%2Fsimuaudio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sharon-xa%2Fsimuaudio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sharon-xa%2Fsimuaudio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sharon-xa","download_url":"https://codeload.github.com/sharon-xa/simuaudio/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sharon-xa%2Fsimuaudio/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32483406,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"online","status_checked_at":"2026-05-01T02:00:05.856Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["audio","cli","linux","pipewire"],"created_at":"2024-11-14T20:09:41.857Z","updated_at":"2026-05-01T02:31:20.471Z","avatar_url":"https://github.com/sharon-xa.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SimuAudio\n\nSimuAudio is a Command-Line Interface (CLI) tool for managing simultaneous audio playback between multiple devices using PipeWire's `module-combine-sink`. It allows you to play audio through multiple devices, stop simultaneous playback, and list all available audio devices.\n\n## Features\n\n- Start simultaneous audio playback between devices, with optional latency settings.\n- Combine multiple audio output devices into a single virtual output.\n- Kill all active playback processes.\n- List all available audio devices.\n- Automatically set the combined output as the default for playback.\n- Save and manage device configurations for ease of use.\n- Validate device names and latency values.\n\n## Installation\n\nYou can manually install the `SimuAudio` CLI by cloning this repository and building it yourself, or you can use an installation script.\n\n### Installation via Script\n\nRun the following command in your terminal to install SimuAudio:\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/sharon-xa/simuaudio/main/install.sh | sudo bash\n```\n\n## Dependencies\n\n1. pipewire\n2. pipewire-pulse (called pipewire-pulseaudio on Fedora)\n3. pipewire-alsa\n4. wireplumber\n\n## Usage\n\n### Command Line Usage\n\n```bash\nsimuaudio [flags]\n```\n\n### Flags\n\n| Flag | Description                                                                  |\n| ---- | ---------------------------------------------------------------------------- |\n| `-s` | Start simultaneous audio playback between devices with optional latencies.   |\n| `-k` | Kill all active playback processes, stopping audio playback between devices. |\n| `-l` | List all available audio devices.                                            |\n| `-h` | Show the help message with available operations.                             |\n\n### Example Usage\n\n1. **Starting Simultaneous Audio Playback**\n\n   To start audio playback across multiple devices with optional latencies:\n\n   ```bash\n   simuaudio -s \u003cdevice1\u003e=\u003clatency1\u003e,\u003cdevice2\u003e=\u003clatency2\u003e\n   ```\n\n   For example:\n\n   ```bash\n   simuaudio -s alsa_output.pci-0000_0a_00.6.analog-stereo=100,bluez_output.D8_37_3B_09_3D_C0.1=200\n   ```\n\n   This will create a combined output that plays the same audio on both devices, applying a latency of 100ms to the first device and 200ms to the second. If a latency value is omitted, it defaults to 0ms.\n\n   The CLI will also set the combined output as the default, so all system audio is routed to the combined sink.\n\n2. **Killing Active Loopbacks**\n\n   To stop all active playback processes, run:\n\n   ```bash\n   simuaudio -k\n   ```\n\n   This will unload the `module-null-sink` and `module-loopback` modules, stopping all simultaneous audio playback.\n\n3. **Listing Audio Devices**\n\n   To list all available audio devices (sinks):\n\n   ```bash\n   simuaudio -l\n   ```\n\n   This command will display all available audio output devices on your system, helping you identify the correct device names and associated media names to use with the `-s` flag.\n\n### Additional Notes\n\n- Ensure device names are specified correctly for playback to work. Use the `-l` flag to view available devices.\n- If a combined output is created, it will be set as the default sink, allowing all applications to play through the combined devices without additional configuration.\n- If an invalid latency value is provided, a warning will be displayed, and a default latency of 0ms will be used for the affected device.\n\n### Troubleshooting\n\nIf you encounter issues with **SimuAudio**, here are some steps that might help:\n\n1. **Ensure PipeWire and Dependencies are Installed**: Verify that PipeWire, `pactl`, and `pw-jack` are properly installed and running on your system. You can check the status of PipeWire with:\n\n   ```bash\n   systemctl --user status pipewire\n   ```\n\n2. **Volume and Device Configuration**: If some devices aren’t producing sound, check your audio configuration with `pavucontrol` (PulseAudio Volume Control) to ensure that the correct devices are selected as outputs for the combined sink.\n\n3. **Restart PipeWire**: Sometimes, restarting PipeWire can resolve audio issues:\n\n   ```bash\n   systemctl --user restart pipewire\n   ```\n\n4. **Unload All Modules**: If multiple combined sinks are causing conflicts, you can remove them all with:\n\n   ```bash\n   pactl unload-module module-combine-sink\n   ```\n\n5. **Verify Device Names**: Use `simuaudio -l` to list all available audio devices and ensure the device names used in `-s` are valid.\n\n6. **Check Error Messages**: If a command fails, SimuAudio provides detailed error messages to help diagnose the issue.\n\nThis CLI simplifies the management of audio output on multiple devices, leveraging PipeWire’s advanced features for seamless audio sharing.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsharon-xa%2Fsimuaudio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsharon-xa%2Fsimuaudio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsharon-xa%2Fsimuaudio/lists"}