由基于 Pi 的 AI 提供实时钢琴学习和伴奏
This is code for providing an augmented piano playing experience. When run, this code will provide computer accompaniment that learns in real-time from the human host pianist. When the host pianist stops playing for a given amount of time, the computer AI will then improvise in the space using the style learned from the host.
Here's an example of me teaching for ~30 seconds and then jamming with the AI: Here are some longer clips of me playing with the AI: clip #2 clip #3
Read more about it at rpiai.com/piano.
libportmidi (OS X: brew install portmidi).sudo apt-get install cmake-curses-gui libasound2-dev
git clone https://github.com/aoeu/portmidi.git
cd portmidi
ccmake . # press in sequence: c, e, c, e, g
make
sudo make installgo get it:go get -v github.com/schollz/pianoaiexport LD_LIBRARY_PATH=/usr/local/lib to your .bashrc. (Unnessecary if you did not build portmidi). Reload bash source ~/.bashrc if this is the first time.$ pianoaiFor some extra jazziness do
$ pianoai --jazzyWhen you play, you can always trigger learning and improvising by hitting the top B or top C respectively, on the piano keyboard (assuming an 88-key keyboard). If you use --manual mode then you can only hear improvisation after triggering. Normally, however, the improvisation will start as soon as it has enough notes and you leave enough space for the improvisation to take place (usually a few beats).
You can save your current data by pressing the bottom A on the piano keyboard and you can play back what you played by hitting the bottom Bb on the piano keyboard. Currently there is not a way to save the AI playing (but its in the roadmap, see below).
There are many command-line options for tuning the AI, but feel free to play with the code as well. Current options:
…Thanks to @egonelbre for the Gopher graphic.
Thanks to @rakyll for porting libportmidi to Go.
portmidi is Licensed under Apache License, Version 2.0.
Like this? Need help? Tweet at me @yakczar.
暂无开放 Issues,或尚未同步最近议题。