<img align=”left” alt=”logo” src=”assets/logo.png” /> Harmonex

<img alt=”Travis CI build status” src=”https://secure.travis-ci.org/njonsson/harmonex.svg?branch=master” /><img alt=”HexFaktor dependencies status” src=”https://beta.hexfaktor.org/badge/all/github/njonsson/harmonex.svg” /><img alt=”Coveralls test coverage status” src=”https://coveralls.io/repos/njonsson/harmonex/badge.svg?branch=master” /><img alt=”Hex release” src=”https://img.shields.io/hexpm/v/harmonex.svg” />

This is a collection of tools for music theory called Harmonex (pronounced “harmonics”).

See what’s changed lately by reading the project history.

Usage

Pitches and intervals are the two main constructs available in Harmonex at present.

You can refer to a pitch using any of the following styles of expressions:

You can refer to an interval using either of the following styles of expressions:

What can you do with Harmonex?

Its functions can answer elementary textbook music theory questions such as:

Functionality still under development

Harmonex also will have functions for exploring compositional questions such as:

Installation

Install the Hex package by adding :harmonex to the list of dependencies in your project’s mix.exs file:

# mix.exs

# ...
def deps do
  [{:harmonex, "~> 0.5.0"}]
end
# ...

Contributing

To submit a patch to the project:

  1. Fork the official repository.
  2. Create your feature branch: git checkout -b my-new-feature.
  3. Commit your changes: git commit -am 'Add some feature'.
  4. Push to the branch: git push origin my-new-feature.
  5. Create a new pull request.

After cloning the repository, mix deps.get to install dependencies. Then mix test to run the tests. You can also iex to get an interactive prompt that will allow you to experiment. To build this package, mix hex.build.

To release a new version:

  1. Update the project history in History.md, and then commit.
  2. Update the version number in mix.exs respecting Semantic Versioning, update the “Installation” section of this readme to reference the new version, and then commit.
  3. Build and publish the Hex package with mix hex.publish.
  4. Tag with a name like vMAJOR.MINOR.PATCH corresponding to the new version, and then push commits and tags.

License

Released under the MIT License.