# Contributing to Karaoke Maker
Thank you for your interest in contributing to Karaoke Maker! This document provides guidelines and information for contributors.
# Getting Started
- Fork the repository
- Clone your fork:
git clone https://github.com/YOUR_USERNAME/karaoke-maker.git cd karaoke-maker - Run the setup script:
./setup.sh # Linux/macOS # or setup.bat # Windows
# Development Setup
# Prerequisites
- Python 3.8 or higher
- FFmpeg installed and in PATH
- Git
# Setting Up Development Environment
-
Create a virtual environment:
python -m venv venv source venv/bin/activate # Linux/macOS venv\Scripts\activate.bat # Windows -
Install dependencies:
pip install -r requirements.txt -
Run the application:
python main.py
# Project Structure
karaoke-maker/
├── main.py # Main GUI application (CustomTkinter)
├── audio_processor.py # Demucs vocal separation
├── lyrics_handler.py # Whisper transcription + azapi lookup
├── alignment.py # Forced alignment for lyrics
├── video_renderer.py # FFmpeg video generation
├── utils.py # Metadata extraction, helpers
├── requirements.txt # Python dependencies
├── assets/ # Default backgrounds, fonts
├── packaging/ # Distribution configs
│ ├── pyinstaller.spec # Windows .exe
│ └── flatpak/ # Linux Flatpak
└── tests/ # Unit tests (to be added)
# Code Style
- Follow PEP 8 style guidelines
- Use type hints where appropriate
- Add docstrings to functions and classes
- Keep functions focused and single-purpose
- Use meaningful variable names
# Example:
def process_audio(input_path: str, output_dir: str) -> Tuple[str, str]:
"""
Process audio file and separate vocals.
Args:
input_path: Path to input audio file
output_dir: Directory for output files
Returns:
Tuple of (vocals_path, instrumental_path)
"""
# Implementation here
pass
# Testing
Currently, the project uses manual testing. Automated tests are welcome contributions!
To test manually:
- Run the application
- Test with various MP3 files
- Try all three lyrics modes (Auto, Lookup, Manual)
- Verify output video quality
- Test error handling (invalid files, missing dependencies, etc.)
# Submitting Changes
-
Create a new branch for your feature/fix:
git checkout -b feature/your-feature-name -
Make your changes:
- Write clear, concise commit messages
- Test your changes thoroughly
- Update documentation if needed
-
Commit your changes:
git add . git commit -m "Add feature: description of changes" -
Push to your fork:
git push origin feature/your-feature-name -
Create a Pull Request:
- Go to the original repository
- Click “New Pull Request”
- Select your branch
- Describe your changes clearly
- Reference any related issues
# Pull Request Guidelines
- Title: Clear, descriptive title (e.g., “Add support for custom fonts”)
- Description: Explain what changes you made and why
- Testing: Describe how you tested your changes
- Documentation: Update README.md or other docs if needed
- Code Quality: Follow existing code style and patterns
# Areas for Contribution
Here are some areas where contributions are particularly welcome:
# Features
# Improvements
# Testing
# Documentation
# Packaging
# Bug Reports
When reporting bugs, please include:
- Description: Clear description of the issue
- Steps to Reproduce: How to trigger the bug
- Expected Behavior: What should happen
- Actual Behavior: What actually happens
- Environment:
- OS and version
- Python version
- FFmpeg version
- GPU (if applicable)
- Error Messages: Full error output
- Sample File: If possible, include a sample MP3 (or link)
# Feature Requests
For feature requests, please:
- Check if it’s already been requested
- Describe the feature clearly
- Explain the use case
- Suggest implementation approach (optional)
# Code Review Process
- Maintainers will review your PR
- Feedback may be provided for improvements
- Once approved, your PR will be merged
- You’ll be credited in the commit and contributors list
# Questions?
Feel free to:
- Open an issue for questions
- Start a discussion
- Reach out to maintainers
# License
By contributing, you agree that your contributions will be licensed under the MIT License.
# Thank You!
Your contributions help make Karaoke Maker better for everyone!