91 lines
2.8 KiB
Markdown
91 lines
2.8 KiB
Markdown
|
# Listen to your Git repo!
|
|||
|
|
|||
|
This little script converts your Git repository to MIDI music.
|
|||
|
|
|||
|
## Scales
|
|||
|
|
|||
|
There are 5 scales built in:
|
|||
|
|
|||
|
* C major
|
|||
|
* A harmonic major
|
|||
|
* Chromatic
|
|||
|
* Pentatonic
|
|||
|
* D major
|
|||
|
|
|||
|
## Programs
|
|||
|
|
|||
|
Programs in MIDI are effectively lists of instruments and effects to use.
|
|||
|
This script doesn’t use effects (yet).
|
|||
|
|
|||
|
Here are the built-in programs you can use:
|
|||
|
|
|||
|
* Sitar and Tablah (Indian style)
|
|||
|
* Bells (have you heard of Mike Oldfield? This will be familiar then)
|
|||
|
* Metal (because obviously)
|
|||
|
* Pure violin
|
|||
|
* Space (for futuristic repositories)
|
|||
|
* Sea-copter (Use this if you want some noise)
|
|||
|
|
|||
|
## Requirements
|
|||
|
|
|||
|
To create MIDI music, we use the MIDIUtil package. For reading Git
|
|||
|
repositories, we use GitPython.
|
|||
|
|
|||
|
## Command line arguments
|
|||
|
|
|||
|
If you want to create music from a branch other than `master` (the default),
|
|||
|
you can specify it with `--branch branchname`.
|
|||
|
|
|||
|
If you want to save the MIDI file to the disk, use `--file outputfile.mid`
|
|||
|
|
|||
|
To play your MIDI file directly, use `--play`. This requires the `pygame`
|
|||
|
package to be installed.
|
|||
|
|
|||
|
If you want to see what is happening right now (can be useful with large
|
|||
|
repos), add `--verbose` to the command line.
|
|||
|
|
|||
|
To specify the scale to use, pass `--scale scalename`. There is no default,
|
|||
|
so you have to specify this. To list the scale names understood by the
|
|||
|
script, use `--scale list`.
|
|||
|
|
|||
|
To specify the program to use, pass `--program pragramname`. Again, there
|
|||
|
is no default, and you can list the available ones with `--program list`.
|
|||
|
|
|||
|
The volume of each note is randomized to get a more real feeling. By
|
|||
|
default, this means the lowest and loudest notes can have 100 units of
|
|||
|
difference. If this is too much for you (sometimes it can be annoying),
|
|||
|
specify a smaller number with `--volume-range N` (the valid range
|
|||
|
i`0..255`).
|
|||
|
|
|||
|
Some repositories begin with a huge import, when a lot of files were added
|
|||
|
to the repository. This can sound awful with some programs, so you might
|
|||
|
want to skip them. To do so, use `--skip N`, where `N` is the number of
|
|||
|
commits you want to skip.
|
|||
|
|
|||
|
## GUI
|
|||
|
|
|||
|
If you have GTK+ 3.X installed and have the GObject Introspection stuff
|
|||
|
installed for Python (this is the default on many GTK based Linux desktops),
|
|||
|
if you don’t specify a scale and a program on the command line, the GUI
|
|||
|
window will come up. Here you can set everything that is available from the
|
|||
|
command line, and follow visually what is happening in the background.
|
|||
|
|
|||
|
## TODO
|
|||
|
|
|||
|
There are some features I want to add.
|
|||
|
|
|||
|
* Skip or shorten large commits.
|
|||
|
|
|||
|
## Contributing
|
|||
|
|
|||
|
If you find a bug or have some ideas, open an Issue on GitHub.
|
|||
|
|
|||
|
If you can implement it, the better! Just go with the (GitHub) flow! Fork
|
|||
|
the repository, do the coding, and open a pull request.
|
|||
|
|
|||
|
## Code of Conduct
|
|||
|
|
|||
|
In general, follow
|
|||
|
the [Open Code of Conduct](https://github.com/todogroup/opencodeofconduct)
|
|||
|
of the [TODO Group](https://twitter.com/todogroup).
|