Contributing¶
Contributions are welcome! This guide covers how to set up a development environment, the project structure, and how to submit changes.
Getting started¶
1. Fork and clone¶
2. Development install¶
3. Verify¶
Project structure¶
How to contribute¶
Reporting bugs¶
Open an issue with:
- What you expected to happen
- What actually happened
- Steps to reproduce (include the command you ran)
- OS, Python version, and any relevant package versions
Suggesting features¶
Open an issue describing:
- The problem you're trying to solve
- Your proposed solution (if you have one)
- Any alternative approaches you considered
Submitting changes¶
-
Create a feature branch from
main: -
Make your changes. Keep commits focused — one logical change per commit.
-
Test your changes against a real Suno export if possible.
-
Push and open a pull request:
-
In your PR description, explain what changed and why.
Code style¶
- Follow existing patterns in the codebase
- Use type hints for function signatures
- Use Pydantic models for structured data
- Keep functions focused — if a function does too many things, split it
- Use
richfor terminal output (not bareprint)
Adding a new advanced feature¶
Advanced features live in suno_to_ableton/features/. To add one:
- Create a new module in
features/following the pattern of existing ones - Add the CLI flag in
cli.py - Wire it into the pipeline in
pipeline.py - Write a doc in
docs/features/explaining what decisions the feature makes and when to use it (see existing docs for the format) - Add the flag to the CLI flags table in CLI Flags Reference
- Add the feature to the Advanced Features overview
Documentation¶
Documentation lives in docs/ and is built with MkDocs Material. To preview locally:
When adding or changing features, update the relevant docs.
License¶
By contributing, you agree that your contributions will be licensed under the same license as the project. See LICENSE.