TuneForge is a modern desktop audio player built with C# and WPF, featuring advanced audio visualization and a sleek Material Design interface. The application combines powerful audio processing capabilities with an intuitive user experience.
- Support for common audio formats: MP3, WAV, FLAC, AAC
- High-quality audio processing with NAudio library
- Advanced audio device management and selection
- Volume control and audio enhancement features
- Modern Material Design theme with MahApps.Metro integration
- Avalonia UI components for cross-platform compatibility
- Responsive and intuitive navigation
- Custom audio visualizer with OpenGL shaders
- FluentWPF styling for enhanced aesthetics
- Playlist management with drag-and-drop support
- Favorite songs collection with persistent storage
- Music directory browsing and file management
- Real-time audio visualization with OpenTK graphics
- Comprehensive metadata display using TagLibSharp
- Settings panel for audio device configuration
- ReactiveUI for responsive MVVM architecture
- CommunityToolkit.Mvvm for modern data binding
- Syncfusion controls for enhanced UI components
- ActiproSoftware editors for advanced input controls
- Logging system for debugging and monitoring
- Automated testing with xUnit framework
Important
TuneForge saves your favorite songs in a FavoriteSong.txt file within the program folder.
If this file is deleted, all your favorite songs will be lost.
- .NET Framework 4.8.1 β Primary runtime environment
- C# 9.0 β Modern language features and syntax
- WPF β Windows Presentation Foundation for UI
- MVVM Pattern β Clean architecture with separation of concerns
- NAudio 2.2.1 β Comprehensive audio library
- TagLibSharp 2.3.0 β Metadata extraction and editing
- OpenTK 3.3.3 β OpenGL bindings for audio visualization
- MaterialDesignThemes 5.2.1 β Material Design components
- MahApps.Metro 2.0.0 β Modern window styling
- Avalonia 11.3.2 β Cross-platform UI framework
- FluentWPF 0.10.2 β Fluent Design system
- Syncfusion Controls β Professional UI components
- ReactiveUI 20.4.1 β Reactive extensions for WPF
- System.Reactive 6.0.1 β Reactive programming framework
- DynamicData 9.4.1 β Reactive collections
- xUnit 2.9.3 β Unit testing framework
- Moq 4.20.72 β Mocking framework for unit tests
- CommunityToolkit.Mvvm 8.4.0 β MVVM toolkit
- Microsoft.Xaml.Behaviors β XAML behaviors and triggers



Note
To remove a song from the list, click on the song and press the Delete button.
- Windows 10/11 (64-bit recommended)
- .NET Framework 4.8.1 or later
- Visual Studio 2022 (for development)
- Clone the repository:
git clone https://github.com/IOleg-crypto/WpfTuneForgePlayer.git
cd WpfTuneForgePlayer- Restore NuGet packages:
dotnet restore- Build the solution:
msbuild WpfTuneForgePlayer.csproj /p:Configuration=Release- Run the application:
.\bin\Release\WpfTuneForgePlayer.exe- Open
WpfTuneForgePlayer.slnin Visual Studio 2022 - Restore NuGet packages through Package Manager
- Build the solution (Ctrl+Shift+B)
- Run with debugging (F5)
The project includes comprehensive unit tests using xUnit and Moq frameworks:
- Helpers: Song, Logger, TimerHelper classes
- Services: AudioService, VolumeService functionality
- Mathematics: Vector2 operations
- Integration Tests: Audio device interactions (manual run)
# Run all tests
dotnet test
# Run with detailed output
dotnet test --verbosity normal
# Run specific test class
dotnet test --filter "SongTests"This project includes GitHub Actions for automated building and releasing:
- Continuous Integration on every push to
mainbranch - Automated Testing with xUnit test framework
- Release Packaging with executable and assets
- GitHub Releases with downloadable ZIP files
- Load Music: Use the file browser to select audio files or entire directories
- Playback Controls: Use play, pause, stop, and track navigation buttons
- Volume Control: Adjust audio levels through the interface
- Favorites: Mark songs as favorites for quick access
- Visualization: Enjoy real-time audio visualization during playback
- Audio Device Selection: Configure output devices in settings
- Playlist Management: Create and manage custom playlists
- Metadata Viewing: View detailed song information and album art
- Keyboard Shortcuts: Use standard media keys for playback control
WpfTuneForgePlayer/
βββ Commands/ # Command pattern implementations
βββ Helpers/ # Utility classes and converters
βββ Mathematics/ # Vector and math utilities
βββ Services/ # Audio and business logic services
βββ Shader/ # OpenGL shaders for visualization
βββ ViewModel/ # MVVM view models
βββ Views/ # XAML user interface files
βββ assets/ # Application assets and icons
βββ bin/ # Compiled binaries
We welcome contributions! Here's how you can help:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow C# coding conventions
- Write unit tests for new features
- Update documentation as needed
- Ensure all tests pass before submitting PR
This project is licensed under the MIT License - see the LICENSE file for details.
- NAudio team for excellent audio processing library
- Material Design community for UI inspiration
- OpenTK developers for OpenGL bindings
- All contributors who help improve this project
If you encounter any issues or have questions:
- Check the Issues page
- Create a new issue with detailed information
- Join our community discussions
Made with β€οΈ using C# and WPF
