Skip to content

IOleg-crypto/WPFTuneForge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

WpfTuneForgePlayer

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.


✨ Features

🎡 Audio Playback

  • 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

🎨 User Interface

  • 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

πŸ“± Core Functionality

  • 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

πŸ› οΈ Advanced Features

  • 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.

πŸš€ Technologies and Libraries

Core Framework

  • .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

Audio Processing

  • NAudio 2.2.1 β€” Comprehensive audio library
  • TagLibSharp 2.3.0 β€” Metadata extraction and editing
  • OpenTK 3.3.3 β€” OpenGL bindings for audio visualization

UI Framework

  • 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

Reactive Programming

  • ReactiveUI 20.4.1 β€” Reactive extensions for WPF
  • System.Reactive 6.0.1 β€” Reactive programming framework
  • DynamicData 9.4.1 β€” Reactive collections

Development Tools

  • 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

πŸ–ΌοΈ Screenshots

TuneForge Preview Main interface with audio visualization

Favorite Preview Favorite songs management

Settings Preview Audio device and settings configuration

Music Preview Music library and playlist view

Note

To remove a song from the list, click on the song and press the Delete button.


πŸ› οΈ Installation & Setup

Prerequisites

  • Windows 10/11 (64-bit recommended)
  • .NET Framework 4.8.1 or later
  • Visual Studio 2022 (for development)

Building from Source

  1. Clone the repository:
git clone https://github.com/IOleg-crypto/WpfTuneForgePlayer.git
cd WpfTuneForgePlayer
  1. Restore NuGet packages:
dotnet restore
  1. Build the solution:
msbuild WpfTuneForgePlayer.csproj /p:Configuration=Release
  1. Run the application:
.\bin\Release\WpfTuneForgePlayer.exe

Development Setup

  1. Open WpfTuneForgePlayer.sln in Visual Studio 2022
  2. Restore NuGet packages through Package Manager
  3. Build the solution (Ctrl+Shift+B)
  4. Run with debugging (F5)

πŸ§ͺ Testing

The project includes comprehensive unit tests using xUnit and Moq frameworks:

Test Coverage

  • Helpers: Song, Logger, TimerHelper classes
  • Services: AudioService, VolumeService functionality
  • Mathematics: Vector2 operations
  • Integration Tests: Audio device interactions (manual run)

Running Tests

# Run all tests
dotnet test

# Run with detailed output
dotnet test --verbosity normal

# Run specific test class
dotnet test --filter "SongTests"

πŸš€ Automated Builds

This project includes GitHub Actions for automated building and releasing:

  • Continuous Integration on every push to main branch
  • Automated Testing with xUnit test framework
  • Release Packaging with executable and assets
  • GitHub Releases with downloadable ZIP files

Build Status

.NET TuneForge


πŸ“– Usage

Basic Operations

  1. Load Music: Use the file browser to select audio files or entire directories
  2. Playback Controls: Use play, pause, stop, and track navigation buttons
  3. Volume Control: Adjust audio levels through the interface
  4. Favorites: Mark songs as favorites for quick access
  5. Visualization: Enjoy real-time audio visualization during playback

Advanced Features

  • 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

πŸ—οΈ Project Structure

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

🀝 Contributing

We welcome contributions! Here's how you can help:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Development Guidelines

  • Follow C# coding conventions
  • Write unit tests for new features
  • Update documentation as needed
  • Ensure all tests pass before submitting PR

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


πŸ™ Acknowledgments

  • 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

πŸ“ž Support

If you encounter any issues or have questions:

  1. Check the Issues page
  2. Create a new issue with detailed information
  3. Join our community discussions

Made with ❀️ using C# and WPF

About

This application is a music player developed using WPF, MVVM, and the NAudio library.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages