Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/betaveros/riffshuffle
a flexible interface for interactive automatic harmonization
https://github.com/betaveros/riffshuffle
Last synced: about 6 hours ago
JSON representation
a flexible interface for interactive automatic harmonization
- Host: GitHub
- URL: https://github.com/betaveros/riffshuffle
- Owner: betaveros
- Created: 2020-05-12T06:50:04.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2023-03-05T13:02:04.000Z (over 1 year ago)
- Last Synced: 2023-04-10T03:22:27.443Z (over 1 year ago)
- Language: Python
- Size: 3.92 MB
- Stars: 7
- Watchers: 2
- Forks: 1
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
RiffShuffle
===========My 2020 MEng thesis project, advised by Eran Egozy
The thesis is accessible on DSpace@MIT here: https://dspace.mit.edu/handle/1721.1/127386
Don't expect the code to be too good, it was all written under time pressure
## Setup
Versions of things are very not extensively tested.
### setup and data preprocessing (run this once)
- set up and activate a virtualenv with Python 3, probably Python 3.6 at least?
- `pip install -r requirements.txt`
- run `fetch.sh` to hopefully get all the data from the right places; if something fails, read this script and see if you can track the data down???
- run `parse_all.py` to parse everything into our format and store it in pickle. ~~Nottingham is very slow, like a few minutes; the others should be a few seconds each.~~ Everything is fast now because I upgraded my dependencies? ¯\\_(ツ)\_/¯### server/client
- Server: with the virtualenv active, `python server.py`
- Client: `npm install; npm start` (`yarn` will probably work too (I forgot which dependency manager I've been using in which project, I guess this one was `npm`))(The computations are simple enough that they could probably be done directly on the client in a WebWorker or something. I did a server/client architecture originally because I wanted to leave the door open to use more advanced machine learning libraries on the backend. That didn't happen, but it's too late now. I mean, I could probably sit down for a few hours to a few days and port all the logic to JavaScript if I felt like it, but...)
### data
See `usertests`. We lost several harmonizations because users selected the wrong melody or uploaded the wrong file: 1-2-3, 2-1-5, 2-4-1 (test number - song number - participant number). Should probably have made the server upload them itself, oops.
We also reordered the songs when presenting them to users in test 2 to get more varied data. The JSON files provided here are in the order used in test 1 and described in the thesis; in the second test, they were presented in the order song1, song4, song2, song3.