# πŸ₯ Drum Beat Repository [![CI](https://github.com/Babali42/DrumBeatRepo/actions/workflows/angular-deploy-github-pages.yml/badge.svg)](https://github.com/Babali42/DrumBeatRepo/actions/workflows/angular-deploy-github-pages.yml) [![License](https://img.shields.io/github/license/Babali42/DrumBeatRepo)](LICENSE) [![Good First Issues](https://img.shields.io/github/issues/Babali42/DrumBeatRepo/good%20first%20issue)](https://github.com/Babali42/DrumBeatRepo/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) [![Last Commit](https://img.shields.io/github/last-commit/Babali42/DrumBeatRepo)](https://github.com/Babali42/DrumBeatRepo/commits/main) [![All Contributors](https://img.shields.io/github/all-contributors/babali42/drumbeatrepo?color=ee8449&style=flat-square)](#contributors) *A library of drum patterns for music lovers / Une bibliothΓ¨que rythmique pour les mΓ©lomanes 🎡* Welcome to **Drum Beat Repository**, a web-based project for musicians to explore and create drum patterns. Built with **Angular** and the **Web Audio API**, this interactive tool delivers a smooth, in-browser drum sequencing experience. πŸ‘‰ **Try it now:** [www.drumbeatrepo.com](https://www.drumbeatrepo.com/#/) App Screenshot ## Requirements 1. Scala Engine `./engine` : [Scala](https://www.scala-lang.org/) and its build tool [sbt](https://www.scala-sbt.org/) 2. Angular Application `./frontend`: [Node.js](https://nodejs.org/fr) ```bash git clone https://github.com/Babali42/DrumBeatRepo.git cd DrumBeatRepo/ cd engine/ sbt fastLinkJS cd ../frontend/ npm run start ``` ## Open in codespace 1. On the repo page, click the **Code** button β†’ **Codespaces** tab β†’ **Create codespace on main**. 2. A Codespace starts automatically. First creation takes a few minutes. ## What happens on startup - `angular-frontend`: runs `npm install` and installs Chromium (needed for Karma tests). - `scala-backend`: runs `sbt fastLinkJS` and stays alive. - The Angular dev server is forwarded on port **4200**. > First `sbt fastLinkJS` run downloads dependencies and can take a while. The Angular app needs `frontend/engine/main.js` to exist before it runs. ## πŸš€ Quick Start ### 1. Engine (Scala) #### Why ? This scala engine is the core of the application, with the command/state modelling in a functional programming way. > It's my first scala project, I'm open to feedbacks, and PR ! #### Go into directory Open a terminal in folder : `cd engine/` #### How to test it - Run all tests : `sbt testFull` - Continously run tests : `sbt "~test"` #### How to link it to Angular - Build a js file in the frontend project directory : `sbt fastLinkJS` or `sbt fullLinkJS` ### 2. Frontend (Angular) #### Go into directory Open a terminal in folder : `cd frontend/` #### How to test it - Run (angular) karma tests : `npm run test` - Run vitest tests : `npm run test-vitest` - Vitest specs (*.spec.vite.ts) can use Angular TestBed; the test environment is set up in src/test-setup.vite.ts (example: src/app/ui/services/space-bar-behaviour/player.events.service.spec.vite.ts) ➑️ App runs at: `http://localhost:4200` ## Contributing Everyone is welcome β€” devs, musicians, designers. ### πŸ” Find something to work on * Browse issues: * Start with: `good first issue` ### πŸ₯ Add a drum beat * Pick a missing genre * Either: * Comment on * Or implement it directly and open a PR ## Contribution Workflow 1. Fork + create branch from `main` 2. Make changes 3. βœ… Pass all tests 4. Open a Pull Request ## Contributors
GiaHuy0031
GiaHuy0031

πŸ’»
Kireo
Kireo

πŸ’»
Konscept440
Konscept440

πŸ”Š 🎨 πŸ’‘
Linasti
Linasti

πŸ€”
jpeg729
jpeg729

πŸ€” πŸ’»
bLeclercDev
bLeclercDev

πŸ’» 🎨 πŸ€”
Pelin Engin Duran
Pelin Engin Duran

πŸ’»
Slaiker
Slaiker
πŸ€” πŸ”Š
Thomas Barbier
Thomas Barbier

πŸ’‘
Avnee Dadhich
Avnee Dadhich

πŸ’»
Draoui Haroun
Draoui Haroun

πŸ’»
Prajwal
Prajwal

πŸ’»
Harshvardhan Kurade
Harshvardhan Kurade

πŸ’»
luisaromero
luisaromero

πŸ’» 🎨
Divya Dattaram Mhatre
Divya Dattaram Mhatre

πŸ’» 🎨
kirti7617
kirti7617

πŸ’»
fraydo23
fraydo23

πŸ’»
Weza Mwiwa
Weza Mwiwa

πŸ’» 🎨
Maeva Innocent
Maeva Innocent

πŸ’» πŸ”Š
Akshay Sarkar
Akshay Sarkar

πŸ’» ⚠️
Deepak Guptha
Deepak Guptha

πŸ’»
- **Louison** for the ideation of the very first version of this app - **Etienne** for the testing and the dub beat pattern - **[Damien Musy](https://Damien-musy.fr)** for the blazing fast mobile ui sketch ! ## License - **Code**: Licensed under the [GNU General Public License](./LICENSE). - **Non-code content** (UI concepts, beats, etc.): Licensed under a [Creative Commons Attribution-ShareAlike 4.0](https://creativecommons.org/licenses/by-sa/4.0/) license.