This project was developed during the Hack'1'Robo hackathon and received special recognition from the jury.
ReMi provides the following features:
- Generate arpeggios with a Reservoir Computing neural network
- Control reservoir hyperparameters in real time through MIDI
- Visualise reservoir states and processing steps in real time
- Add
remi.amxdto a MIDI Ableton track - Run
app.pyto start communication between Max for Live and Python - Run
liveplot.pyto visualise reservoir states - Run
gui.pyto visualise processing steps - Press keys, and enjoy riding the edge of chaos :)
Here are some useful features that could be implemented in the future. Don't hesitate to either help us implementing them or propose some new ideas!
- Add a pulse as an extra input to the reservoir, control its gain and periodicity. A more sophisticated approach would be to add a step sequencer as input (multiple pulses with their own rhythmic pattern).
- Add a parameter that controls the probability of playing no note (silence). Currently, silence is represented in the same way as a note. Hence its probability of being selected for the beat cannot be differentially modulated.
- Save/load reservoir weights and dynamics
This quick preliminary demo is just meant for you to hear what ReMi can sound like. Four keys were pressed constantly and the order of the notes was chosen by ReMi. Drums were not played by ReMi (although it could have).
NB: Keep in mind that this is just an example. A Reservoir is a universal dynamical system approximator. ReMi could therefore generate any possible melody.
demo_remi.mp4
Use the Requirement file:
pip install -r requirements.txtorpip3 install -r requirements.txtTkinter should be installed on your system:- for Linux: ``sudo apt-get install python3-tk
orsudo apt-get install python-tk``` - for Mac OS:
brew install python-tk