3.1 KiB
3.1 KiB
Contributing to AutoMixer
First off, thank you for considering contributing to AutoMixer! It's people like you that make AutoMixer such a great tool.
Code of Conduct
This project and everyone participating in it is governed by our Code of Conduct. By participating, you are expected to uphold this code.
How Can I Contribute?
Reporting Bugs
Before creating bug reports, please check existing issues as you might find out that you don't need to create one. When you are creating a bug report, please include as many details as possible:
- Use a clear and descriptive title
- Describe the exact steps to reproduce the problem
- Provide specific examples (including sample audio files if possible)
- Describe the behavior you observed and what you expected
- Include your environment details (OS, Node.js version, FFmpeg version)
Suggesting Enhancements
Enhancement suggestions are tracked as GitHub issues. When creating an enhancement suggestion, please include:
- Use a clear and descriptive title
- Provide a detailed description of the suggested enhancement
- Explain why this enhancement would be useful
- List any alternative solutions you've considered
Pull Requests
- Fork the repo and create your branch from
main - If you've added code that should be tested, add tests
- If you've changed APIs, update the documentation
- Ensure the test suite passes
- Make sure your code follows the existing style
- Issue that pull request!
Development Setup
# Clone your fork
git clone https://github.com/your-username/automixer.git
cd automixer
# Install dependencies
npm install
# Run tests
npm test
# Run linter
npm run lint
Project Structure
automixer/
├── bin/
│ └── cli.js # CLI entry point
├── src/
│ ├── index.js # Main exports
│ ├── core/
│ │ └── AutoMixer.js # Main orchestrator
│ ├── audio/
│ │ ├── BPMDetector.js # BPM detection
│ │ ├── AudioAnalyzer.js # Metadata extraction
│ │ ├── TrackMixer.js # Crossfade mixing
│ │ └── PitchShifter.js # Tempo/pitch adjustment
│ └── utils/
│ └── index.js # Utility functions
├── tests/
│ └── ... # Test files
└── package.json
Coding Guidelines
JavaScript Style
- Use ES modules (
import/export) - Use
async/awaitfor asynchronous code - Document functions with JSDoc comments
- Use meaningful variable and function names
Commit Messages
- Use the present tense ("Add feature" not "Added feature")
- Use the imperative mood ("Move cursor to..." not "Moves cursor to...")
- Limit the first line to 72 characters
- Reference issues and pull requests when relevant
Documentation
- Update README.md for any user-facing changes
- Update JSDoc comments for API changes
- Add inline comments for complex logic
Testing
# Run all tests
npm test
# Run with coverage
npm run test:coverage
Questions?
Feel free to open an issue with your question or reach out to the maintainers.
Thank you for contributing! 🎵