noteflakes / lydown

A language for music notation
http://ciconia.github.io/lydown
MIT License
24 stars 0 forks source link

Interactive mode for CLI #50

Open noteflakes opened 8 years ago

noteflakes commented 8 years ago

When run without any parameters, the lydown command should start an interactive session:

BWV247 sharon$ lydown
BWV247 ♬ score // compile the score for BWV247 and display in browser
BWV247 ♬ cd 01-choro
01-choro ♬ cat viola:53 // show line 53 of viola part
53> dr6re,6.f3g+8a+r4r
01-choro ♬ edit viola:53 // start vim on viola part at line 53
...
01-choro ♬ e flute1:23 // e is shorthand for edit
...
01-choro ♬ viola:53-54 // compile viola part bars 53-54 and open it
01-choro ♬ viola:53- // compile viola part bars 53 to end and open it
noteflakes commented 8 years ago

Still missing:

movement/work generation:

gen 2oboes strings choir continuo
gen 03-choral: choir continuo

switch from line numbers to measure numbers (requires parsing files and understanding time signatures and rhythms)

vertical editing:

// delete measures 13-15 from all parts
del 13-15 

// edit measure 24 in vim. Lydown will create a
// temporary file containing routes for each part 
// and its corresponding music for the measure.
// when the editing is done, lydown will parse the
// file and insert any changes into the source
// files at the correct locations
edit 24

// insert music at measure 3. Works the same as
// vedit, but starts with file with empty music for 
//each part
insert 3

// show music for all parts at measure 8. Use less
// if listing overflows screen (like in psql)
cat 8

shortcuts: c for cat, e for edit, d for del, i for insert, g for gen

support for git commands

noteflakes commented 8 years ago

More commands (and more info here: https://keep.google.com/#NOTE/14fdeea8cf9.81739c3145807b93)

// compile and play midi
play <movement>
noteflakes commented 8 years ago

For the implementation, commands should be implemented as functions, which also serve for implementing the plain thor-based CLI.