diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml
index b8d8dff..b8dfc3b 100644
--- a/.github/workflows/run-tests.yml
+++ b/.github/workflows/run-tests.yml
@@ -35,5 +35,8 @@ jobs:
pip install -r requirements.txt
pip install pytest
+ - name: Install package
+ run: pip install -e .
+
- name: Run tests
run: pytest .
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 74a17ec..69e1f77 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,4 +6,5 @@ venv
*.pkl
output/*
download_cache.json
-*.csv
\ No newline at end of file
+*.csv
+dist
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..c7a06bf
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2025 MutilatedPeripherals
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
\ No newline at end of file
diff --git a/README.md b/README.md
index e4f7775..408c32d 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# Blast beat counter
+# Blast beat detector
[](https://github.com/MutilatedPeripherals/blastbeat-counter/actions/workflows/run-tests.yml)
@@ -38,15 +38,18 @@ And here is another one, from the ecuadorian band Curetaje:
## Demo
-Currently the detector is not deployed as a service because demucs requires a GPU for drum-track separation in reasonable time, and those servers aren't free...
+Currently the detector is not deployed as a service because demucs requires a GPU for drum-track separation in
+reasonable time, and those servers aren't free...
But you can:
-- Try this notebook to process some songs using Google's free-tier GPUs:
+
+- Try this notebook to process some songs using Google's free-tier
+ GPUs:
-
+
- Or just directly download examples of processed songs
-from [here](https://drive.google.com/drive/folders/1YFoxrsrBo8hl0cOYkdxCsfW_bf3CX7Al)
+ from [here](https://drive.google.com/drive/folders/1YFoxrsrBo8hl0cOYkdxCsfW_bf3CX7Al)
And then upload the results to the [visualizer](https://mutilatedperipherals.github.io/blastbeat-counter/):
@@ -70,25 +73,26 @@ apt-get install ffmpeg
### Specify the input files & run the code
-1. Create a `csv` file to pass as input to the `pipeline.py` file.
+1. Create a `csv` file to pass as input to the `pipeline.py` file.
- The only mandatory column is `src`, with the file paths of the songs to analyze. Youtube URLs are also supported on a best-effort basis (uses `yt-dlp` to download the audio).
+ The only mandatory column is `src`, with the file paths of the songs to analyze. Youtube URLs are also supported on a
+ best-effort basis (uses `yt-dlp` to download the audio).
- Example:
+ Example:
```csv
src
/home/linomp/Downloads/CURETAJE - Arutam.mp3
https://youtu.be/dQw4w9WgXcQ?si=J-UoAhM54KQGR6eW
```
-
+
Additional fields (advanced)
Other fields are supported for debugging & development, with the most important one being `step_size_in_seconds`, which determines the size of the segments on which the song is split & analized (default value: 0.15s).
-
- In `pipeline.py` you can see all the configurable fields. If left blank or unspecified, defaults will be used.
- Here is an example specifying an extra field:
+ In `pipeline.py` you can see all the configurable fields. If left blank or unspecified, defaults will be used.
+
+ Here is an example specifying an extra field:
```csv
src,step_size_in_seconds
diff --git a/index.html b/index.html
index b4f80ed..c4b9b9a 100644
--- a/index.html
+++ b/index.html
@@ -36,21 +36,30 @@
BlastViz
Blastbeat Detection Visualizer
-
Warning: This is a work in progress. The visualizer expects a ZIP file containing an audio
+
Warning: This is not a stand-alone tool. The visualizer expects a ZIP file containing an
+ audio
file (MP3 or WAV), a JSON file with the identified blast-beat sections, and optionally a drum-only audio track.