- Objective: Generate Unique and Interesting Rock Drum Beat MIDI Files
- Language: Python, HTML, CSS
- License: GNU
- Filetype(s): .PY, .HTML, Dockerfile, JSON
- APP Video Demo: https://www.loom.com/share/ac3e25eed1494cfca877b65aebff30eb
- Deployment Server
- Chris Burrows ( Lead Programmer / Design)
Local Machine Instance -- Docker
- Git Clone this Repository
- Create
.env
in top level usingdotenv_template.txt
OR pass in environment variables (CONTEXT=LOCAL) - Install Docker https://docs.docker.com/get-docker/
- In your terminal, cd (change directory) to the parent 'EveryRockBeatEver'
- GitBash may be useful for a terminal application: https://git-scm.com/downloads
- Run the Dockerfile command
docker build -t erbe .
- Run the Dockerfile command
docker run -p 5000:5000 erbe
- Open a browser and navigate to the URL:
localhost:5000
Local Machine Instance -- IDE
- Git Clone this Repository
- Create
.env
in top level usingdotenv_template.txt
- In IDE Terminal:
$ python -m venv venv # Virtual environment
$ source venv/Scripts/activate
# (bash terminal)
$ pip install -r requirements.txt
$ flask --app EveryRockBeatEver --debug run
# (debug tag optional)
Cloud / Deployment Instance
- Follow all the above steps, specifying
CONTEXT=CLOUD
in.env
- Make sure your server is configured with the necessary CORS parameters.
Test Both Environments Simultaneously
- Follow all the above steps, specifying
CONTEXT=FULL
in.env
- From Home, click on the
Quick Generate
Button. - Now, a MIDI File displays with Playback options or a Download Option.
It should be a rock drum beat within a tempo of 80 - 160 BPM. - Feel free to repeat, using the
Quick Generate
to get a new beat!
There are additional plans to integrate more user control over the algorithm using timbres, dynamics, breakability, and subdivisions. Machine Learning is also a prospect.
This project would not have been possible without the use of some fantastic musical packages:
MIDIUtil: https://midiutil.readthedocs.io/en/1.2.1/
html-midi-player: https://cifkao.github.io/html-midi-player/
The "Every Rock Beat Ever" App was originated from the idea of creating an algorithm as the rhythmic foundation for a progressive metal album. The initial "code base" was a simple calculator in a Google Sheets field, but after its Author attended an online Data Science Bootcamp it was quickly adopted into a Python App.
Chris Burrows is an all around drummer with specialization in Progressive Metal and a Programmer with budding
interests in Software Development and Data Science. You can also check out his contributions in musical projects
on various platforms:
-
Coma Cluster Void (Former Drummer)
-
Thoren (Current Drummer)
-
Vihaan (Former Session / Live Drummer)
-
R.O.P. (Former Session / Live Drummer)
-
Wonderbox (Former Producer / Engineer)