aprog_pynblinc_readme.note (3166B)
1 2 pynblinc 3 ================================================================================ 4 5 `pynblinc` is the Python implementation of `nblinc` (*n*early *bli*nd 6 *c*omposition), which is kind of a middle ground between a tracker / step 7 sequencer and a piano roll. The goal of (py)nblinc is to achieve the following: 8 9 - Keyboard based pattern / melody composition without the need to write text. 10 - VIM-like keyboard bindings 11 - TUI instead of GUI based, i.e. using [curses](https://docs.python.org/3/howto/curses.html). 12 13 Although it can be extended to support MIDI or OSC output, pynblinc will first 14 and foremost be developed with *Csound* in mind. The basic idea is that pynblinc 15 will be used for composing a score, while nvim is used to define the orchestra 16 (instruments) 17 18 19 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 20 | 1 Suggested use | 21 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 22 - Paper plan (high level composition). You can't avoid composition on paper. 23 Don't try to! 24 - Jamming (recording and melody composition) 25 - Putting melodies and samples together. 26 - Use Csound with separate score (`.sco`) and orchestra (`.orc`) files. 27 - Use (py)nblinc to compose score files and (n)vim to define the orchestra. 28 29 30 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 31 | 2 Programming resources | 32 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 33 This section links to documentation for some of the libraries used in pynblinc. 34 35 == 2.1 ============================== Mido ===================================== 36 For midi support: 37 - [MIDO General](http://mido.readthedocs.io/en/latest/) 38 - [MIDI Files](https://github.com/olemb/mido/blob/master/mido/midifiles/midifiles.py) 39 - [MIDI Tracks](https://github.com/olemb/mido/blob/master/mido/midifiles/tracks.py) 40 41 == 2.2 ============================== TUI ====================================== 42 43 - [curses](https://docs.python.org/3/howto/curses.html) 44 - [more curses](https://docs.python.org/3/library/curses.html) 45 46 47 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 48 | 3 Notes on programming | 49 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 50 - As the score will be edited by pynblinc and the orchestra by vim it makes 51 sense to use separate files. 52 - For this to work with the current program, the score must be limited to 53 *i* statements only. This should be fine for now, because: 54 1. *f* statements can be moved to the orchestra (using *ftgen* opcode, which 55 is really the preferred way to load tables anyway) 56 2. *t* statements aren't supported by ctcsound anyway, it seems. 57 58 To deal with tempos, allow a single t statement as the first line of the score 59 and parse this manually in pynblinc.