PIanoAI

Realtime piano learning and accompaniment from a Pi-powered AI ?

  • 所有者: schollz/PIanoAI
  • 平台:
  • 許可證: GNU General Public License v3.0
  • 分類:
  • 主題:
  • 喜歡:
    0
      比較:

Github星跟蹤圖

PIanoAI (Piano AI on a Raspberry Pi)

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.

See it

Here's an example of me teaching for ~30 seconds and then jamming with the AI:

Playing

Here are some longer clips of me playing with the AI: clip #2 clip #3

Read about it

Read more about it at rpiai.com/piano.

Try it

  1. Get a MIDI-enabled keyboard and two-way MIDI adapter ($18). Or get a USB-MIDI keyboard ($38).
  2. Get a Raspberry Pi (however, a Windows / Linux / OS X computer should also work) and connect it to the MIDI keyboard.
  3. Build latest version of 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 install
  1. Download the latest release OR install Go and go get it:
go get -v github.com/schollz/pianoai
  1. Add export 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.
  2. Play!
$ pianoai

For some extra jazziness do

$ pianoai --jazzy

Options

Piano keyboard controls

When 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).

Command line options

There are many command-line options for tuning the AI, but feel free to play with the code as well. Current options:

   --bpm value             BPM to use (default: 120)
   --tick value            tick frequency in hertz (default: 500)
   --hp value              high pass note threshold to use for leraning (default: 65)
   --waits value           beats of silence before AI jumps in (default: 2)
   --quantize value        1/quantize is shortest possible note (default: 64)
   --file value, -f value  file save/load to when pressing bottom C (default: "music_history.json")
   --debug                 debug mode
   --manual                AI is activated manually
   --link value            AI LinkLength (default: 3)
   --jazzy                 AI Jazziness
   --stacatto              AI Stacattoness
   --chords                AI Allow chords
   --follow                AI velocities follow the host

Roadmap

Must haves

Want haves

  • Player changes velocity according to the host
  • Integrating more AI routines

Similar projects

Acknowledgements

Thanks to @egonelbre for the Gopher graphic.
Thanks to @rakyll for porting libportmidi to Go.

License

portmidi is Licensed under Apache License, Version 2.0.

Get in touch

Like this? Need help? Tweet at me @yakczar.

主要指標

概覽
名稱與所有者schollz/PIanoAI
主編程語言Go
編程語言Go (語言數: 2)
平台
許可證GNU General Public License v3.0
所有者活动
創建於2017-08-30 13:26:55
推送於2018-11-18 18:05:59
最后一次提交2018-11-11 05:27:39
發布數1
最新版本名稱v1.0.0 (發布於 2017-09-05 09:53:13)
第一版名稱v1.0.0 (發布於 2017-09-05 09:53:13)
用户参与
星數346
關注者數14
派生數19
提交數84
已啟用問題?
問題數7
打開的問題數4
拉請求數0
打開的拉請求數1
關閉的拉請求數0
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?