pwsp 0.1.3

A simple soundpad application written in Rust using egui for the GUI, pipewire for audio input/output, and rodio for audio decoding.
# PipeWire SoundPad

This is a simple soundpad application written in Rust using egui for the GUI, pipewire for audio input/output, and rodio for audio decoding. It allows you to play various audio files (mp3, wav, ogg, flac, mp4, aac) through your microphone.

![ScreenShot](screenshot.png)

## Features

*   **Audio File Playback:** Supports a wide range of audio formats including mp3, wav, ogg, flac, mp4, and aac.
*   **Microphone Output:** Plays selected audio files through the chosen microphone.
*   **PipeWire Integration:** Leverages PipeWire for efficient audio routing and device management.
*   **egui GUI:** Provides a user-friendly interface for file selection, playback control, and microphone selection.
*   **Directory Management:** Allows adding and removing directories for organizing audio files.
*   **Search Functionality:** Enables searching for specific audio files within loaded directories.
*   **Playback Control:** Offers play/pause functionality, volume control, and a playback position slider.
*   **Persistent Configuration:** Saves the list of added directories and the selected microphone for future use.

## Installation

1.  **Rust and Cargo:** Ensure you have Rust and Cargo installed. You can install them from [https://www.rust-lang.org/tools/install]https://www.rust-lang.org/tools/install.
2.  **Dependencies:** This project requires PipeWire to be installed on your system.  The specific installation steps will depend on your distribution.
3. Run `cargo install pwsp`. Now you have PWSP installed on your system (`which pwsp`).

## Building without installing

1.  **Clone the Repository:** Clone this repository to your local machine with `git clone https://github.com/arabianq/pipewire-soundpad`
2.  **Build:** Navigate to the project directory in your terminal and run `cargo build --release`.
3. Now the binary is available in the *target* directory.

## Usage

1.  **Run:** After building, run the application using `cargo run --release`.
2.  **Add Directories:** Click the "+" button to add directories containing your audio files.
3.  **Select Directory:** Click on a directory in the list to view its contents.
4.  **Select Audio File:** Click on an audio file in the list to select it.
5.  **Choose Microphone:** Select your desired microphone from the dropdown menu.
6.  **Play/Pause:** Use the play/pause button to control playback.
7.  **Volume:** Adjust the volume using the volume slider.
8.  **Seek:** Use the playback position slider to navigate through the audio file.
9.  **Search:** Use the search bar to filter audio files by name.

## Configuration

The application saves the list of added directories and the selected microphone in the application's configuration directory.  This directory is typically located at `~/.config/pwsp`.


## Contributing

Contributions are welcome! Please open an issue or submit a pull request.

## License

[MIT](LICENSE)