https://github.com/fooker/soundwire
an opinionated audio routing daemon for headless and remote-controlled audio setups
https://github.com/fooker/soundwire
Last synced: 2 months ago
JSON representation
an opinionated audio routing daemon for headless and remote-controlled audio setups
- Host: GitHub
- URL: https://github.com/fooker/soundwire
- Owner: fooker
- License: mit
- Created: 2024-04-25T10:20:42.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-04-25T13:35:32.000Z (about 1 year ago)
- Last Synced: 2025-01-30T18:28:47.231Z (4 months ago)
- Language: Rust
- Size: 25.4 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Awesome Lists containing this project
README
# 🎚️🎚️🎚️ Soundwire
`soundwire` is an opinionated audio routing daemon for headless and remote-controlled audio setups.
## 💫 Features
The following features make `soundwire` distinct:- Made to be run as a system service.
- Dynamic audio device handling with include and exclude filters.
- Playback integration for various protocols - see [Inputs](#inputs).
- Compatible to [Snapcast](https://github.com/badaix/snapcast) remote control protocol.## 🎤 Sources
`soundwire` currently supports the following source types:
- **pipe**: Creates a unix pipe where sound data is read from
- **device**: Captures sound from a sound input deviceThe following source types are planned and/or currently in development:
- **pulseaudio**: Creates a pulseaudio TCP server to stream audio using the pulseaudio native protocol
- **librespot**: Spawns a Spotify speaker
- **ROAP**: Create an ROAP/Airplay receiver
- **RTP**: Create an RTP session consumer## 🔊 Outputs
`soundwire` currently supports playing audio using the following sinks:
- **pipe**: Creates a unix pipe and write sound data to it
- **device**: Playback sound to a sound output device## 🔧 Configuration
`soundwire` reads a configuration file on startup.
The default config file path is `soundwire.conf` and can be changed using a command line option.
The config file uses the YAML file format and consists of the following sections:
- `outputs`: a list of outputs.
- `sources`: a list of sources.### `outputs`
Each output entry must consist of the following properties:
- `name`: The name of the output. The name must be unique among all outputs.
- `type`: The type of the output. See [Outputs](#outputs).All other properties are specific to the output type.
### `sources`
Each source entry must consist of the following properties:
- `name`: The name of the source. The name must be unique among all source.
- `type`: The type of the source. See [Sources](#sources).All other properties are specific to the source type.
### Example
```yaml
outputs:
- name: Headphones
type: device
device: Name of the sound device
- name: Screen
type: device
device: Name of the sound device
- name: monitor
type: pipe
path: /var/run/soundwire/outputsources:
- name: mopidy
type: pipe
path: /var/run/soundwire/mopidy
- name: pulseaudio
type: pipe
path: /var/run/soundwire/pulseaudio
- name: legacy
type: device
device: Name of the sound device
- name: aux
type: device
device: Name of the sound device
```## 🤝 Contributing
We welcome contributions from the community to help improve Photonic.
Whether you're a developer, designer, or enthusiast, there are many ways to get involved:* **Bug Reports:** Report any issues or bugs you encounter while using Photonic.
* **Feature Requests:** Suggest new features or enhancements to make Photonic even more powerful.
* **Pull Requests:** Submit pull requests to address bugs, implement new features, or improve documentation.## 📄 License
Photonic is licensed under the MIT License, which means you are free to use, modify, and distribute the software for both commercial and non-commercial purposes. See the [LICENSE](./LICENSE) file for more details.## 🛟 Support
If you have any questions, concerns, or feedback about Photonic, please [contact us](mailto:[email protected]) or open an issue on the project's GitHub repository.## 🙏 Acknowledgements
We would like to thank all contributors and supporters who have helped make Photonic possible. Your contributions and feedback are greatly appreciated!