accraze / python-twelve-tone

:notes: 12-tone matrix to generate dodecaphonic melodies :notes:
https://pypi.python.org/pypi/twelve-tone
BSD 2-Clause "Simplified" License
71 stars 5 forks source link

CLI input subcommands for choosing a particular row #32

Open jgarte opened 1 year ago

jgarte commented 1 year ago

Currently, twelve-tone asks the user to use the following notation to get a particular row form from the randomly generated run:

twelve-tone -r 2 -c 3

I'm proposing that instead we used the notation that composers are used to when they learn this stuff in school/theory classes/etc.

This would also reduce the amount of input that a user has to type at the CLI interface:

twelve-tone ri versus twelve-tone -r 2 -c 3. The latter seems too verbose of a CLI interface for getting a row form in my humble opinion.

The following gives you the retrograde-inversion from a randomly generated twelve-tone matrix.

twelve-tone ri

or

twelve-tone RI

Additionally passing in the "generator" note from which the matrix is created would be cool.

The following would get you the retrograde-inversion from the twelve-tone matrix based off of a G note.

twelve-tone G ri

or

twelve-tone G RI

I have not mentioned how we would handle accidentals in this issue but there are a few approaches we can take.

The idea would be to have p, i, r, and ri and subcommands for the CLI.

That is, prime, inversion, retrograde, and retrograde-inversion row forms as subcommands that can be passed in to the CLI of twelve-tone in order to choose the row form that you want to retrieve.

@accraze WDYT

accraze commented 1 year ago

Hey @jgarte I love this idea and agree that the API should reflect the composers mindset.

I think most of these operations should be fairly straightforward to implement - I might take a stab at it towards the end of the month, although if anyone else is interested in the meantime, feel free to send a patch!

jgarte commented 1 year ago

@accraze

Let me know if you'd like to pair on this over jitsi.

Otherwise, I'll try to hack on this a bit myself when I find a pocket of time to work on it.