Thank you for your interest in contributing to SoundSwarm! This document provides guidelines and information for contributors.
By participating in this project, you agree to maintain a respectful and inclusive environment for everyone.
If you find a bug, please create an issue with:
- Title: A clear, descriptive title
- Description: What happened vs. what you expected
- Steps to Reproduce: How can we recreate the issue?
- Environment: Browser, OS, device type
- Screenshots: If applicable
Feature requests are welcome! Please create an issue with:
- Title: Brief description of the feature
- Problem: What problem does this solve?
- Solution: Your proposed solution
- Alternatives: Any alternatives you've considered
- Fork the repository
- Create a branch for your feature (
git checkout -b feature/amazing-feature) - Make your changes following the code style guidelines
- Test your changes thoroughly
- Commit with clear messages (
git commit -m 'Add amazing feature') - Push to your branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Use
constandlet, nevervar - Use meaningful variable and function names
- Add JSDoc comments for functions
- Keep functions focused and small
- Use async/await for asynchronous code
/**
* Calculate the frequency for a given note
* @param {string} note - Note name (e.g., "C4")
* @returns {number} Frequency in Hz
*/
function getFrequency(note) {
return NOTE_FREQUENCIES[note] || 440;
}- Use CSS custom properties for colors and common values
- Group related properties together
- Use meaningful class names
- Comment sections for organization
/* ============================================
Section Name
============================================ */
.component {
/* Layout */
display: flex;
/* Spacing */
padding: 20px;
/* Visual */
background: var(--bg-color);
}- Use semantic elements (
<header>,<main>,<footer>, etc.) - Include appropriate ARIA attributes for accessibility
- Keep markup clean and well-indented
-
Clone your fork:
git clone https://github.com/your-username/soundswarm.git cd soundswarm -
Start a local server:
python -m http.server 8000
-
Open
http://localhost:8000
Before submitting a PR, please test:
- Chrome (latest)
- Firefox (latest)
- Safari (latest)
- Mobile Safari (if possible)
- Different screen sizes
- Sound plays without clicks or pops
- Note transitions are smooth
- Arpeggiator works correctly
- Settings persist after reload
- iOS Safari audio works (if you have access)
soundswarm/
├── index.html # Main entry point
├── styles.css # All styles
├── app.js # Application logic
├── README.md # Project documentation
├── CONTRIBUTING.md # This file
├── LICENSE # MIT License
└── .gitignore # Git ignore rules
Here are some areas where contributions would be especially welcome:
- Improve documentation
- Add more chord presets
- Improve mobile UI/UX
- Add keyboard shortcuts
- Add new waveform visualizations
- Implement MIDI input support
- Add recording/export functionality
- Create a chord builder UI
- Add WebRTC for real-time collaboration
- Implement a backend for session coordination
- Add support for custom samples
- Create a PWA with offline support
Feel free to open an issue with the "question" label if you have any questions about contributing.
Thank you for helping make SoundSwarmbetter! 🎵