Files
automixer/CONTRIBUTING.md
2025-12-12 22:13:54 +01:00

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

  1. Fork the repo and create your branch from main
  2. If you've added code that should be tested, add tests
  3. If you've changed APIs, update the documentation
  4. Ensure the test suite passes
  5. Make sure your code follows the existing style
  6. 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/await for 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! 🎵