# Notes
- https://github.com/daveyarwood/alda-clj
- http://www.lilypond.org/
- http://www.nerds.de/en/ipmidi.html
- http://mudcu.be/midi-js/
- http://www.noisy-toys.de/droguedrums/
- https://github.com/youpy/go-coremidi
- https://github.com/deadsy/libusb/tree/master/examples/midi
- https://github.com/lxn/win
- https://github.com/dbatbold/beep
- https://www.basicmusictheory.com/
- https://schollz.com/blog/portmidi/
- http://www.music.mcgill.ca/~gary/rtmidi/index.html
## todos
- capture timing of recorded notes
- https://fusionauth.io/blog/2018/09/20/download-counts-from-google-cloud-storage
## docs
- https://www.edb.gov.hk/attachment/tc/curriculum-development/kla/arts-edu/nss/gm_drumlist_8050.pdf
## Roger Linn on MPC60 swing
"Swing – applied to quantized 16th-note beats – is a big part of it. My implementation of swing has always been very simple: I merely delay the second 16th note within each 8th note. In other words, I delay all the even-numbered 16th notes within the beat (2, 4, 6, 8, etc.) In my products I describe the swing amount in terms of the ratio of time duration between the first and second 16th notes within each 8th note. For example, 50% is no swing, meaning that both 16th notes within each 8th note are given equal timing. And 66% means perfect triplet swing, meaning that the first 16th note of each pair gets 2/3 of the time, and the second 16th note gets 1/3, so the second 16th note falls on a perfect 8th note triplet. "
## LSP design
https://blog.logrocket.com/how-to-use-the-language-server-protocol-to-extending-a-client-764da0e7863c/
https://github.com/rcjsuen/dockerfile-language-server-nodejs