README.md
# Note-Art JS :guitar:
:fire:
[![Downloads](https://img.shields.io/npm/dt/note-art.svg?style=flat-square)]()
[![Build Status](https://semaphoreci.com/api/v1/seanitzel/note-art/branches/master/shields_badge.svg)](https://semaphoreci.com/seanitzel/note-art)
[![Maintainability](https://api.codeclimate.com/v1/badges/0206283c6843673ea6d6/maintainability)](https://codeclimate.com/github/Seanitzel/Note-Art/maintainability)
[![Test Coverage](https://api.codeclimate.com/v1/badges/0206283c6843673ea6d6/test_coverage)](https://codeclimate.com/github/Seanitzel/Note-Art/test_coverage)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
:fire:
##### [Demo (outdated) :musical_note:](https://note-art-demo.netlify.com/) | [API :blue_book:](https://note-art-docs.netlify.com/)
<br>
> Music is a highly versatile art that originates in nature, and has been taken up by mankind as a way of expression and also as an art.
> Now, it's going to be taken up by machines as well.
<br>
## Table of Contents
* [About the Project](#about)
* [Features](#features)
* [Getting Started](#getting-started)
* [Usage](#usage)
* [Contribute and Support](#contribute-and-support)
* [Todo](#todo)
* [Contact](#contact)
* [License](#license)
## About
* Create Notes, Chords, Scales and more easily.
* Designed to be simple and intuitive.
* Easily integrate with other music libraries to play music in the browser - You can use libraries like ToneJS to easily
play scales, chords and even scores you create with Note-Art.
* Use this library to create tools for musicians, research music theory, just create some fun music with programming and
much more!
## Features
1. Transpose, generate chords and scales easily, invert chords.
2. Tons of music theory utilities, e.g getting the interval between 2 notes, normalizing notes, getting the enharmonic pitch class, converting sharps to flats and a lot more.
## Getting Started
Installation:
``` bash
# Using npm
npm install note-art
# Using yarn
yarn add note-art
```
### Usage
Note-art is fully written in TS and offers functions that can achieve any music theory related task you desire.
#### Theory Functions
* patterns are in semi-tones.
##### Transpose any pitch class, note or group of notes easily
```js
import { transpose } from 'note-art'
// PitchClass
transpose('A', 5) // 'D'
// Note
transpose('A3', 5) // 'D4'
// Group of notes(can represent a chord, scale or anything else)
const notes = ['C3', 'E3', 'G3']
notes.map(note => transpose(note, 7)) // ['G3', 'B3', 'D4']
```
##### Other functions
```js
import { noteFromFrequency, intervalsToNotes, invertChord };
noteFromFrequency(440) // A4
const majorChordPattern = [0, 4, 7];
const cMajorChord = intervalsToNotes('C3', majorChordPattern) // ['C3', 'E3', 'G3']
const cMajorFirstInversion = invertChord(cMajorChord, 1); // ['E3', 'G3', 'C4']
```
<br>
Check out the [API](https://note-art-docs.netlify.com/) for more.
## Contribute and Support :pray:
* Make a [pull request :avocado:](https://github.com/Seanitzel/Note-Art).
* Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any
contributions you make are **greatly appreciated**.
1. Fork the Project
2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
3. Commit your Changes (`git commit -m 'Add some AmazingFeature`)
4. Push to the Branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request
* Support me on [patreon](https://www.patreon.com/Seanitzel).
* Download my app on the google play store
- [Music Guru](https://play.google.com/store/apps/details?id=com.scales.scaleheaven) - **which can generate and
play any scale in the history of mankind** on google play.
## Todo:
* Create music theory functions - pitch class, note, chord, etc... :heavy_check_mark:
* Re-implement Music notation.
## Contact
Sean Dvir - [seandvir12@gmail.com](seandvir12@gmail.com) - [@seanitzel](https://twitter.com/seanitzel) <br>
Your welcome to mail me your ideas and recommendations!<br>
## License
Note-Art uses the MIT license, check out the license tab for more information.