{"_id":"etude","_rev":"43-573580d35fa9c07c07180cccc6139324","name":"etude","time":{"modified":"2022-06-17T21:13:58.146Z","created":"2016-07-30T23:40:00.076Z","1.0.0":"2016-07-30T23:40:00.076Z","0.0.0":"2016-07-30T23:41:22.980Z","0.0.1":"2016-07-30T23:58:51.268Z","0.0.0-alpha.0":"2016-07-31T00:20:47.067Z","0.0.0-alpha.1":"2016-07-31T00:25:40.599Z","0.0.0-alpha.2":"2016-07-31T01:59:35.174Z","0.0.0-alpha.3":"2016-07-31T02:23:47.629Z","0.0.0-alpha.4":"2016-07-31T03:58:55.421Z","0.0.0-alpha.5":"2016-07-31T22:54:44.067Z","0.0.0-alpha.6":"2016-08-01T03:17:48.721Z","0.0.0-alpha.7":"2016-08-01T04:45:43.256Z","1.0.1":"2016-08-01T06:22:39.436Z","1.0.2":"2016-08-01T06:39:20.407Z","1.0.3":"2016-08-01T07:00:59.483Z","1.0.4":"2016-08-01T07:07:30.260Z","1.0.5":"2016-08-02T00:39:53.267Z","1.0.6":"2016-08-02T00:45:38.973Z","1.0.7":"2016-08-02T02:43:16.019Z","1.0.8":"2016-08-02T05:34:34.203Z","1.0.9":"2016-08-05T23:23:46.623Z","1.1.0":"2016-08-10T22:25:28.285Z","1.1.1":"2016-08-10T22:38:49.803Z","1.2.0":"2016-08-14T22:58:14.176Z","1.2.1":"2016-08-14T23:16:05.024Z","1.3.0":"2016-08-15T00:53:15.454Z","1.3.1":"2016-08-15T01:01:01.267Z","1.3.2":"2016-08-25T04:59:01.205Z","1.3.3":"2016-08-27T00:22:31.143Z","1.4.0":"2016-08-27T01:04:37.144Z","1.4.1":"2016-08-27T04:00:45.496Z","1.4.2":"2016-08-27T07:56:39.385Z","1.5.0":"2016-08-28T09:01:39.571Z","1.6.0":"2016-08-30T05:01:44.836Z","1.6.1":"2016-08-30T05:03:42.637Z","2.1.0":"2016-09-16T22:33:14.887Z","3.0.0-0":"2017-10-29T21:22:01.650Z"},"maintainers":[{"name":"andrewthehan","email":"andrewthehan@gmail.com"}],"dist-tags":{"latest":"3.0.0-0"},"description":"JavaScript Music Theory API","readme":"# etude.js\r\n[![npm](https://img.shields.io/npm/v/etude.svg?maxAge=2592000)](https://www.npmjs.com/package/etude)\r\n\r\n> JavaScript Music Theory API\r\n\r\nTry it [here](https://tonicdev.com/npm/etude)!\r\n\r\nA port of [etude](https://github.com/andrewthehan/etude), the Java version. While similar, there are a few changes to take note of:\r\n- `asList` was removed due to the way arrays are implemented in JavaScript (JavaScript arrays can do most of what Java ArrayLists can do).\r\n- Streams was ported for use with `Letter` and `Scale`. Contains `filter`, `map`, `limit`, and `skip`.\r\n- Lack of most enum members. `values`, `ordinal`, and `valueOf` were ported (`values` was also \"overloaded\" via default parameters to take in `startingElement` where appropriate).\r\n- `Pitch` not being `Comparable`. However, `compareTo` was ported.\r\n- Complete alteration of utility methods. These were dependent on what was available in each respective language.\r\n- Lack of type checks due to the differences between Java and JavaScript as languages. However, static type checks are available if using [TypeScript](https://www.typescriptlang.org/).\r\n- Any whole number will not contain a decimal point when converted to a string (e.g. `1.0` will be converted to `\"1.0\"` in Java whereas `1.0` will be converted to `\"1\"` in JavaScript). This is relevant for `Value.DOUBLE_WHOLE` and `Value.WHOLE`.\r\n- Small syntactical changes\r\n\r\n  | Java                        | JavaScript          | Reason                                        |\r\n  |-----------------------------|---------------------|-----------------------------------------------|\r\n  | `EnumName.values().length`  | `EnumName.size`     | To avoid cloning `values` array               |\r\n  | `interval.getNumber()`      | `interval.distance` | `number` is a reserved word in JavaScript     |\r\n  | `policy.test(key)`          | `policy(key)`       | To allow `let policy = k => {...}` assignment |\r\n\r\n## Installation\r\n### Browser\r\nAdd this line to your html file:\r\n```html\r\n<script type=\"text/javascript\" src=\"https://unpkg.com/etude/js/etude-browser.js\"></script>\r\n```\r\nThe `src` pulls from the latest version of etude on npm. This may cause builds to break if a backward-incompatible version is released. To target a specific version, include the version number in the `src`:\r\n```html\r\n<script type=\"text/javascript\" src=\"https://unpkg.com/etude@version/js/etude-browser.js\"></script>\r\n```\r\nMore information on the version tag can be found at [unpkg](https://unpkg.com/).\r\n\r\nIf you do not wish to use unpkg, use [Browserify](http://browserify.org/) along with the require methods below. If you do not wish to use either, download the [file](https://raw.githubusercontent.com/andrewthehan/etude.js/master/js/etude-browser.js) and add this line to your html file:\r\n```html\r\n<script type=\"text/javascript\" src=\"path/to/file/etude-browser.js\"></script>\r\n```\r\nAny of the above methods adds `etude` to the global namespace. To avoid prepending module package names to each module name with each use (e.g. `etude.theory.Letter`), add these lines:\r\n```javascript\r\nconst {error, theory, util} = etude;\r\nconst {EtudeError} = error;\r\nconst {Accidental, Chord, Degree, Direction, Dynamic, Interval, Inversion, Key, KeySignature, Letter, Mode, MusicConstants, Note, Pitch, Policy, Scale, Tempo, TimeSignature, Value} = theory;\r\nconst {CircularIterator, CircularStream, ImmutablePrioritySet, InfiniteIterator, InfiniteStream} = util;\r\n```\r\n\r\n### require\r\nFirst install the package.\r\n```\r\nnpm install etude\r\n```\r\nThen include the package in your code using one of the following methods:\r\n#### Top level module:\r\n```javascript\r\nconst etude = require(\"etude\");\r\n```\r\nThis method requires you to prepend module package names to each module name with each use (e.g. `etude.theory.Letter`).\r\n\r\n#### Each module separately:\r\n```javascript\r\nconst {error, theory, util} = require(\"etude\");\r\nconst {EtudeError} = error;\r\nconst {Accidental, Chord, Degree, Direction, Dynamic, Interval, Inversion, Key, KeySignature, Letter, Mode, MusicConstants, Note, Pitch, Policy, Scale, Tempo, TimeSignature, Value} = theory;\r\nconst {CircularIterator, CircularStream, ImmutablePrioritySet, InfiniteIterator, InfiniteStream} = util;\r\n```\r\n\r\n## Examples\r\nFor extensive example usage, refer to the Java version's [unit tests](https://github.com/andrewthehan/etude/tree/master/src/test/java/tests).\r\n\r\n#### Accidental\r\n```javascript\r\nlet accidental = Accidental.FLAT;\r\nconsole.log(accidental.toString()); // b\r\nconsole.log(accidental.getOffset()); // -1\r\n\r\naccidental = Accidental.DOUBLE_SHARP;\r\nconsole.log(accidental.toString()); // x\r\nconsole.log(accidental.getOffset()); // 2\r\n\r\naccidental = Accidental.fromOffset(-3);\r\nconsole.log(accidental.toString()); // bbb\r\nconsole.log(accidental === Accidental.TRIPLE_FLAT); // true\r\n\r\naccidental = Accidental.fromString(\"n\");\r\nconsole.log(accidental.getOffset()); // 0\r\nconsole.log(accidental === Accidental.NATURAL); // true\r\n```\r\n\r\n#### Chord\r\n```javascript\r\nlet chord = new Chord(Pitch.fromString(\"C4\"), Chord.Quality.MAJOR);\r\nconsole.log(chord.toString()); // [Cn4(48), En4(52), Gn4(55)]\r\n\r\nchord = Chord\r\n  .builder()\r\n  .setRoot(Pitch.fromString(\"Ab4\"))\r\n  .add(Chord.Quality.MINOR)\r\n  .add(Interval.fromString(\"M6\"))\r\n  .build();\r\nconsole.log(chord.toString()); // [Ab4(56), Cb5(59), Eb5(63), Fn5(65)]\r\n\r\nchord = Chord\r\n  .builder()\r\n  .setRoot(Pitch.fromString(\"C4\"))\r\n  .add(Chord.Quality.DIMINISHED_SEVENTH)\r\n  .setInversion(Inversion.FIRST)\r\n  .build();\r\nconsole.log(chord.toString()); // [Eb4(51), Gb4(54), Bbb4(57), Cn5(60)]\r\n```\r\n\r\n#### Degree\r\n```javascript\r\nlet degree = Degree.TONIC;\r\nconsole.log(degree.getValue()); // 1\r\n\r\ndegree = Degree.fromValue(5);\r\nconsole.log(degree.toString()); // DOMINANT\r\n```\r\n\r\n#### Direction\r\n```javascript\r\nlet direction = Direction.ASCENDING;\r\nconsole.log(direction === Direction.DEFAULT); // true\r\n\r\ndirection = Direction.DESCENDING;\r\nconsole.log(direction !== Direction.DEFAULT); // true\r\n```\r\n\r\n#### Dynamic\r\n```javascript\r\nlet dynamic = Dynamic.PIANO;\r\nconsole.log(dynamic.toString()); // p\r\nconsole.log(dynamic.crescendo().toString()); // mp\r\nconsole.log(dynamic.diminuendo().toString()); // pp\r\n\r\ndynamic = Dynamic.fromString(\"mf\");\r\nconsole.log(dynamic === Dynamic.MEZZO_FORTE); // true\r\nconsole.log(dynamic.crescendo() === Dynamic.FORTE); // true\r\n```\r\n\r\n#### Interval\r\n```javascript\r\nlet interval = new Interval(Interval.Quality.MAJOR, 6);\r\nconsole.log(interval.getOffset()); // 9\r\n\r\ninterval = Interval.between(Pitch.fromString(\"Eb4\"), Pitch.fromString(\"Ab4\"));\r\nconsole.log(interval.toString()); // P4\r\n```\r\n\r\n#### Inversion\r\n```javascript\r\nlet inversion = Inversion.ROOT;\r\nconsole.log(inversion.getValue()); // 0\r\n\r\ninversion = Inversion.THIRD;\r\nconsole.log(inversion.getValue()); // 3 \r\n```\r\n\r\n#### Key\r\n```javascript\r\nlet key = new Key(Letter.C);\r\nconsole.log(key.toString()); // C\r\n\r\nkey = new Key(Letter.G, Accidental.SHARP);\r\nconsole.log(key.toString()); // G#\r\n\r\nconsole.log(key.step(1).toString()); // A\r\nconsole.log(key.step(2).toString()); // A#\r\n\r\nkey = new Key(Letter.F);\r\nlet ks = new KeySignature(Key.fromString(\"G\"), KeySignature.Quality.MAJOR);\r\nconsole.log(key.apply(ks).toString()); // F#\r\n\r\nkey = new Key(Letter.C, Accidental.FLAT);\r\nconsole.log(key.sharp().toString()); // C#\r\nconsole.log(key.none().toString()); // C\r\nconsole.log(key.doubleFlat().toString()); // Cbb\r\nconsole.log(key.isFlat()); // true\r\n\r\nlet anotherKey = key.getEnharmonicEquivalent(Letter.A);\r\nconsole.log(anotherKey.toString()); // Ax\r\nconsole.log(Key.isEnharmonic(key, anotherKey)); // true\r\n\r\nkey = Key.fromString(\"Eb\");\r\nconsole.log(key.getLetter() === Letter.E); // true\r\nconsole.log(key.getAccidental() === Accidental.FLAT); // true\r\n```\r\n\r\n#### KeySignature\r\n```javascript\r\nlet ks = new KeySignature(Key.fromString(\"D\"), KeySignature.Quality.MAJOR);\r\n\r\nconsole.log(ks.keyOf(Degree.MEDIANT).toString()); // F#\r\nconsole.log(ks.degreeOf(Key.fromString(\"G\")).toString()); // SUBDOMINANT\r\n\r\nconsole.log(ks.getKeysWithAccidentals().toString()); // F#,C#\r\n\r\nlet parallel = ks.getParallel();\r\nconsole.log(parallel.getKey().toString()); // D\r\nconsole.log(parallel.getQuality().toString()); // MINOR\r\n\r\nlet relative = ks.getRelative();\r\nconsole.log(relative.getKey().toString()); // B\r\nconsole.log(relative.getQuality().toString()); // MINOR\r\n\r\nconsole.log(KeySignature.ORDER_OF_SHARPS.toString()); // F,C,G,D,A,E,B\r\n```\r\n\r\n#### Letter\r\n```javascript\r\nlet letter = Letter.A;\r\nconsole.log(letter.getOffset()); // 9\r\n\r\nletter = Letter.fromChar('c');\r\nconsole.log(letter === Letter.C); // true\r\n\r\nlet letters = Letter\r\n  .stream(Letter.E)\r\n  .limit(10);\r\nconsole.log(letters.toString()); // E,F,G,A,B,C,D,E,F,G\r\n\r\nletters = Letter\r\n  .stream(Direction.DESCENDING, Letter.C)\r\n  .limit(8);\r\nconsole.log(letters.toString());  // C,B,A,G,F,E,D,C\r\n```\r\n\r\n#### Mode\r\n```javascript\r\nlet mode = Mode.IONIAN;\r\nconsole.log(mode.getStepPattern().toString()); // 2,2,1,2,2,2,1\r\n```\r\n\r\n#### MusicConstants\r\n```javascript\r\nconsole.log(MusicConstants.KEYS_IN_OCTAVE); // 12\r\nconsole.log(MusicConstants.SMALLEST_PROGRAM_NUMBER); // 0\r\nconsole.log(MusicConstants.LARGEST_PROGRAM_NUMBER); // 127\r\n```\r\n\r\n#### Note\r\n```javascript\r\nlet note = new Note(Pitch.fromString(\"C4\"), Value.QUARTER);\r\nconsole.log(note.toString()); // C4(48)[QUARTER]\r\n\r\nnote = Note.fromString(\"Db5[1]\");\r\nconsole.log(note.getPitch().toString()); // Db5(61)\r\nconsole.log(note.getValue().toString()); // WHOLE\r\n```\r\n\r\n#### Pitch\r\n```javascript\r\nlet pitch = new Pitch(Key.fromString(\"Bbb\"), 4);\r\nconsole.log(pitch.toString()); // Bbb4(57)\r\n\r\nlet ks = new KeySignature(Key.fromString(\"F\"), KeySignature.Quality.MAJOR);\r\npitch = pitch.apply(ks);\r\nconsole.log(pitch.toString()); // Bb4(58)\r\n\r\nconsole.log(pitch.step(3).toString()); // C#5(61)\r\nconsole.log(pitch.step(3, Policy.prioritize(Policy.FLAT)).toString()); // Db5(61)\r\n\r\nlet interval = new Interval(Interval.Quality.PERFECT, 4);\r\nconsole.log(pitch.step(interval).toString()); // Eb5(63)\r\n\r\npitch = pitch.getHigherPitch(Key.fromString(\"C\"));\r\nconsole.log(pitch.toString()); // C5(60)\r\n\r\nconsole.log(Pitch.isEnharmonic(Pitch.fromString(\"F#4\"), Pitch.fromString(\"Gb4\"))); // true\r\n\r\npitch = Pitch.fromProgramNumber(48);\r\nconsole.log(pitch.toString()); // C4(48)\r\n\r\npitch = Pitch.fromString(\"Ax7\");\r\nconsole.log(pitch.getKey().equals(Key.fromString(\"Ax\"))); // true\r\nconsole.log(pitch.getOctave() === 7); // true\r\n```\r\n\r\n#### Policy\r\n```javascript\r\nlet policy = Policy.DOUBLE_FLAT;\r\nconsole.log(policy(Key.fromString(\"C#\"))); // false\r\nconsole.log(policy(Key.fromString(\"Ebb\"))); // true\r\n\r\npolicy = Policy.SHARPS;\r\nconsole.log(policy(Key.fromString(\"C#\"))); // true\r\nconsole.log(policy(Key.fromString(\"C#x\"))); // true\r\n\r\npolicy = Policy.matchLetter(Letter.E);\r\nconsole.log(policy(Key.fromString(\"Dn\"))); // false\r\nconsole.log(policy(Key.fromString(\"Ebb\"))); // true\r\n\r\nlet ks = new KeySignature(Key.fromString(\"A\"), KeySignature.Quality.MAJOR);\r\npolicy = Policy.matchKeySignature(ks);\r\nconsole.log(policy(Key.fromString(\"F\"))); // false\r\nconsole.log(policy(Key.fromString(\"F#\"))); // true\r\n\r\nlet key = Key.fromString(\"G\");\r\nlet policies = Policy.prioritize(Policy.TRIPLE_SHARP, Policy.TRIPLE_FLAT, Policy.NONE_OR_NATURAL);\r\nconsole.log(key.step(2, policies).toString()); // Cbbb\r\n```\r\n\r\n#### Scale\r\n```javascript\r\nlet scale = new Scale(Key.fromString(\"Ab\"), Scale.Quality.MAJOR);\r\nlet keys = scale\r\n  .stream()\r\n  .limit(8);\r\nconsole.log(keys.toString()); // Ab,Bb,C,Db,Eb,F,G,Ab\r\n\r\nkeys = scale\r\n  .stream(Direction.DESCENDING)\r\n  .limit(8);\r\nconsole.log(keys.toString()); // Ab,G,F,Eb,Db,C,Bb,Ab\r\n\r\nscale = new Scale(Key.fromString(\"G\"), Scale.Quality.HARMONIC_MINOR);\r\nkeys = scale\r\n  .stream()\r\n  .limit(8);\r\nconsole.log(keys.toString()); // G,A,Bb,C,D,Eb,F#,G\r\n\r\nkeys = scale\r\n  .stream(Policy.prioritize(Policy.TRIPLE_FLAT, Policy.DOUBLE_FLAT))\r\n  .limit(8);\r\n/**\r\n * NOTE: the first key is G despite the policy prioritizing TRIPLE_FLAT and DOUBLE_FLAT\r\n * this is because the scale was constructed with G being the initial key\r\n */\r\nconsole.log(keys.toString()); // G,Cbbb,Cbb,Dbb,Fbbb,Fbb,Abbb,Abb\r\n\r\n// apply the policy on the initial key\r\nscale = new Scale(Key.fromString(\"G\").getEnharmonicEquivalent(Policy.prioritize(Policy.TRIPLE_FLAT, Policy.DOUBLE_FLAT)), Scale.Quality.HARMONIC_MINOR);\r\nkeys = scale\r\n  .stream(Policy.prioritize(Policy.TRIPLE_FLAT, Policy.DOUBLE_FLAT))\r\n  .limit(8);\r\n/**\r\n * NOTE: this begins with Abb\r\n */\r\nconsole.log(keys.toString()); // Abb,Cbbb,Cbb,Dbb,Fbbb,Fbb,Abbb,Abb\r\n```\r\n\r\n#### Tempo\r\n```javascript\r\nlet tempo = Tempo.ANDANTE;\r\nconsole.log(tempo.getBPM()); // 92\r\nconsole.log(tempo.getBeatValue() === Value.QUARTER); // true\r\nconsole.log(tempo.getTempoMarking()); // Andante\r\n\r\ntempo = Tempo.PRESTO;\r\nconsole.log(tempo.getBPM()); // 184\r\nconsole.log(tempo.getBeatValue() === Value.QUARTER); // true\r\nconsole.log(tempo.getTempoMarking()); // Presto\r\n\r\ntempo = new Tempo(100, Value.HALF);\r\nconsole.log(tempo.getBPM()); // 100\r\nconsole.log(tempo.getBeatValue() === Value.HALF); // true\r\nconsole.log(tempo.getTempoMarking()); // HALF = 100\r\n\r\ntempo = new Tempo(150, Value.EIGHTH, \"Pretty fast\");\r\nconsole.log(tempo.getBPM()); // 150\r\nconsole.log(tempo.getBeatValue() === Value.EIGHTH); // true\r\nconsole.log(tempo.getTempoMarking()); // Pretty fast\r\n```\r\n\r\n#### TimeSignature\r\n```javascript\r\nlet ts = TimeSignature.COMMON_TIME;\r\nconsole.log(ts.getDurationOfMeasure()); // 1\r\nconsole.log(ts.getBeatsPerMeasure()); // 4\r\nconsole.log(ts.getOneBeat() === Value.QUARTER); // true\r\n\r\nts = new TimeSignature(6, 8);\r\nconsole.log(ts.getDurationOfMeasure()); // 0.75\r\nconsole.log(ts.getBeatsPerMeasure()); // 6\r\nconsole.log(ts.getOneBeat() === Value.EIGHTH); // true\r\n\r\nts = new TimeSignature(3, Value.QUARTER);\r\nconsole.log(ts.getDurationOfMeasure()); // 0.75\r\nconsole.log(ts.getBeatsPerMeasure()); // 3\r\nconsole.log(ts.getOneBeat() === Value.QUARTER); // true\r\n```\r\n\r\n#### Value\r\n```javascript\r\nlet value = Value.QUARTER;\r\nconsole.log(value.toString()); // QUARTER\r\nconsole.log(value.getDuration()); // 0.25\r\n\r\nvalue = Value.fromString(\"0.25\");\r\nconsole.log(value === Value.QUARTER); // true\r\n\r\nvalue = Value.fromString(\"QUARTER\");\r\nconsole.log(value === Value.QUARTER); // true\r\n\r\nvalue = Value.fromString(\"1/4\");\r\nconsole.log(value === Value.QUARTER); // true\r\n\r\nvalue = Value.fromDuration(0.25);\r\nconsole.log(value === Value.QUARTER); // true\r\n```\r\n","versions":{"0.0.0-alpha.0":{"name":"etude","version":"0.0.0-alpha.0","description":"JavaScript Music Theory API","main":"js/index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/andrewthehan/etude.js.git"},"keywords":["etude","music","theory"],"author":{"name":"Andrew Han"},"license":"MIT","bugs":{"url":"https://github.com/andrewthehan/etude.js/issues"},"homepage":"https://github.com/andrewthehan/etude.js#readme","gitHead":"ef52e411683f675ddb612e5f79c5edd795affd74","_id":"etude@0.0.0-alpha.0","_shasum":"053bfcce3fd83d385fef8208ed8abf89c9405d73","_from":".","_npmVersion":"3.10.5","_nodeVersion":"4.4.7","_npmUser":{"name":"andrewthehan","email":"andrewthehan@gmail.com"},"dist":{"shasum":"053bfcce3fd83d385fef8208ed8abf89c9405d73","tarball":"https://registry.npmjs.org/etude/-/etude-0.0.0-alpha.0.tgz","integrity":"sha512-XIV5PXFtQ89gEGmBlMTJG7vBuoNCN8HqSEAHdnqWux8FfkVuT9SiQNTWkN8JDXTvWni/OMV+E06O2Uq2R2LTFg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC0xPLqFJKH/B21+2hHM0YVYhqLhXhpno/5Flbmrc1l7wIhAItqBSYKZlg4UIe0xxaodpv1Jqqw/mZKo2IIPJj45omN"}]},"maintainers":[{"name":"andrewthehan","email":"andrewthehan@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/etude-0.0.0-alpha.0.tgz_1469924446844_0.9173713263589889"}},"0.0.0-alpha.1":{"name":"etude","version":"0.0.0-alpha.1","description":"JavaScript Music Theory API","main":"ts/etude.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/andrewthehan/etude.js.git"},"keywords":["etude","music","theory"],"author":{"name":"Andrew Han"},"license":"MIT","bugs":{"url":"https://github.com/andrewthehan/etude.js/issues"},"homepage":"https://github.com/andrewthehan/etude.js#readme","gitHead":"70b7ba2181db4699b81acad4a21b5acf45b82301","_id":"etude@0.0.0-alpha.1","_shasum":"36a9dca9a402208eb4f6b3894fdead5ab051bf11","_from":".","_npmVersion":"3.10.5","_nodeVersion":"4.4.7","_npmUser":{"name":"andrewthehan","email":"andrewthehan@gmail.com"},"dist":{"shasum":"36a9dca9a402208eb4f6b3894fdead5ab051bf11","tarball":"https://registry.npmjs.org/etude/-/etude-0.0.0-alpha.1.tgz","integrity":"sha512-npE+LjQIo0Taasnk39ZGUAOePWz4PFdcdnf8WuykvG1eTsVILyHXDIJx/6HUx0VBsANlXV7+mgpSCCCb4r1m3Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCCGMKCulpW4ZRnr8efIRw3WcoKA4fGywmYYgjk0hRiBgIgVy9v7FI/EhKCxVF0hF9jHCpkiAi35hHQlbS3MBk0VIE="}]},"maintainers":[{"name":"andrewthehan","email":"andrewthehan@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/etude-0.0.0-alpha.1.tgz_1469924740371_0.9356487018521875"}},"0.0.0-alpha.2":{"name":"etude","version":"0.0.0-alpha.2","description":"JavaScript Music Theory API","main":"js/etude.ts","typings":"js/etude","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/andrewthehan/etude.js.git"},"keywords":["etude","music","theory","typescript"],"files":["js/"],"author":{"name":"Andrew Han"},"license":"MIT","bugs":{"url":"https://github.com/andrewthehan/etude.js/issues"},"homepage":"https://github.com/andrewthehan/etude.js#readme","gitHead":"fd32ce11a606bab64daa66430f5dd10dc5682446","_id":"etude@0.0.0-alpha.2","_shasum":"f9d634bcf743fae10d0ef4c1f322dbb3a1c928c9","_from":".","_npmVersion":"3.10.5","_nodeVersion":"4.4.7","_npmUser":{"name":"andrewthehan","email":"andrewthehan@gmail.com"},"dist":{"shasum":"f9d634bcf743fae10d0ef4c1f322dbb3a1c928c9","tarball":"https://registry.npmjs.org/etude/-/etude-0.0.0-alpha.2.tgz","integrity":"sha512-mg4qvZi8Dbb2Mz3gx43Rrgl/CUqI6xO4VJsCDMRmLrovhHVPjZAIaoeXmb78HY/c4ENbjzUBQxMdEp/WGctcJQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCRf5owFYuLXl12YrX2VwqezD2itqfSRCMEzFQc9kY3KQIhAJAVASdvjDpVUtea8Gm2K39sP5SazbSs9a7/yKety/aZ"}]},"maintainers":[{"name":"andrewthehan","email":"andrewthehan@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/etude-0.0.0-alpha.2.tgz_1469930370864_0.7435723766684532"}},"0.0.0-alpha.3":{"name":"etude","version":"0.0.0-alpha.3","description":"JavaScript Music Theory API","main":"js/etude.ts","typings":"js/etude","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/andrewthehan/etude.js.git"},"keywords":["etude","music","theory","typescript"],"files":["js/"],"author":{"name":"Andrew Han"},"license":"MIT","bugs":{"url":"https://github.com/andrewthehan/etude.js/issues"},"homepage":"https://github.com/andrewthehan/etude.js#readme","gitHead":"0e46511b6f7c337a967a93493f66fc998927ea2c","_id":"etude@0.0.0-alpha.3","_shasum":"395b393953a576e6b3e6cb4b958a65ee5afc03db","_from":".","_npmVersion":"3.10.5","_nodeVersion":"4.4.7","_npmUser":{"name":"andrewthehan","email":"andrewthehan@gmail.com"},"dist":{"shasum":"395b393953a576e6b3e6cb4b958a65ee5afc03db","tarball":"https://registry.npmjs.org/etude/-/etude-0.0.0-alpha.3.tgz","integrity":"sha512-H0hatvdjWcFqMclhL9+YrZSszC3rJncHUBmiTMwCV7x6xqtNm/h0q/tMe3wk67adJ7Iue5Wj3fhLePvPOTfbRQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBYtcWuRsfQCIK8YpUhitjmvFEWTCYMzBg1sHq/0SCggAiB6qYYbyjHckqJ5jSsWvYIv0tT7L/roS1QahmrHuQXjFQ=="}]},"maintainers":[{"name":"andrewthehan","email":"andrewthehan@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/etude-0.0.0-alpha.3.tgz_1469931823440_0.3308888867031783"}},"0.0.0-alpha.4":{"name":"etude","version":"0.0.0-alpha.4","description":"JavaScript Music Theory API","main":"js/etude.js","typings":"js/etude","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/andrewthehan/etude.js.git"},"keywords":["etude","music","theory","typescript"],"files":["js/"],"author":{"name":"Andrew Han"},"license":"MIT","bugs":{"url":"https://github.com/andrewthehan/etude.js/issues"},"homepage":"https://github.com/andrewthehan/etude.js#readme","gitHead":"0fca858ac353a89180ad463931c5b05862ff033d","_id":"etude@0.0.0-alpha.4","_shasum":"f63691d85e44cd2e198bd6c8361c37edfc9c2d7d","_from":".","_npmVersion":"3.10.5","_nodeVersion":"4.4.7","_npmUser":{"name":"andrewthehan","email":"andrewthehan@gmail.com"},"dist":{"shasum":"f63691d85e44cd2e198bd6c8361c37edfc9c2d7d","tarball":"https://registry.npmjs.org/etude/-/etude-0.0.0-alpha.4.tgz","integrity":"sha512-rCaRkgI+MpRxH2KsUwNsZc/bnLGTvNTQpJvPT84lNgFtFCYHkLSL2hs1ygerEEKguymnukPH+vbE9EmwuW6ppQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBdqBhwMKAVV/5htCMilbFKfgM2QUh/BrGv75JHLvlxoAiEAxdSDSDAvQEmPKiufTeopRhW01J1iGXRnN9JDz0p/Vpk="}]},"maintainers":[{"name":"andrewthehan","email":"andrewthehan@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/etude-0.0.0-alpha.4.tgz_1469937531336_0.10243307473137975"}},"0.0.0-alpha.5":{"name":"etude","version":"0.0.0-alpha.5","description":"JavaScript Music Theory API","main":"js/etude.js","typings":"js/etude","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"npm run build:compile && npm run build:run","build:compile":"tsc","build:run":"node js/etude.js"},"repository":{"type":"git","url":"git+https://github.com/andrewthehan/etude.js.git"},"keywords":["etude","music","theory","typescript"],"files":["js/"],"author":{"name":"Andrew Han"},"license":"MIT","bugs":{"url":"https://github.com/andrewthehan/etude.js/issues"},"homepage":"https://github.com/andrewthehan/etude.js#readme","gitHead":"9b421d43910da0c50ca21e4f32145589f87556bc","_id":"etude@0.0.0-alpha.5","_shasum":"5edf836be601b0edc93e3414bdf01ea94b277b92","_from":".","_npmVersion":"3.10.5","_nodeVersion":"6.3.1","_npmUser":{"name":"andrewthehan","email":"andrewthehan@gmail.com"},"dist":{"shasum":"5edf836be601b0edc93e3414bdf01ea94b277b92","tarball":"https://registry.npmjs.org/etude/-/etude-0.0.0-alpha.5.tgz","integrity":"sha512-IeOS3jbp6jUeDrDyScFZ8bgXPN7eaivn7YbkDt9wkso5rZMzMhuykhmeQv3LO1TW3Lahr31w/rBNp7CtSfcimQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDeBz/mcuKQX1tVeKn/pZSm7Kg/0vleWPuS757m/PYWCAiBR2pgj2KjVY2ICt/aEG0xpHuKLjEUF+Ze5ZKgt0Q008A=="}]},"maintainers":[{"name":"andrewthehan","email":"andrewthehan@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/etude-0.0.0-alpha.5.tgz_1470005682533_0.36837568739429116"}},"0.0.0-alpha.6":{"name":"etude","version":"0.0.0-alpha.6","description":"JavaScript Music Theory API","main":"js/etude.js","typings":"js/etude","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"npm run build:compile && npm run build:run && npm run build:doc","build:compile":"tsc","build:run":"node js/etude.js","build:doc":"typedoc --out doc ts"},"repository":{"type":"git","url":"git+https://github.com/andrewthehan/etude.js.git"},"keywords":["etude","music","theory","typescript"],"files":["js/"],"author":{"name":"Andrew Han"},"license":"MIT","bugs":{"url":"https://github.com/andrewthehan/etude.js/issues"},"homepage":"https://github.com/andrewthehan/etude.js#readme","gitHead":"d789469f79fc9ed225b9c5d4387b656bb4095635","_id":"etude@0.0.0-alpha.6","_shasum":"c1144386db3bf104cd59a8c709fbc7ab32841512","_from":".","_npmVersion":"3.10.5","_nodeVersion":"6.3.1","_npmUser":{"name":"andrewthehan","email":"andrewthehan@gmail.com"},"dist":{"shasum":"c1144386db3bf104cd59a8c709fbc7ab32841512","tarball":"https://registry.npmjs.org/etude/-/etude-0.0.0-alpha.6.tgz","integrity":"sha512-LhZWIvsphTOfHm31YZkUgL1myFWUIRxpFpC5L2T1Cc380ATTrXVL6MrbvxtcQUf6vOXN393DJxVrcWfP4RIW/Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCppU+TiMkiEGoVmMQED+iMKnRl+Zft+O/AnkuNhuzO5gIgEtEXVF34cZ8b+bpHKEu8etM6cH5gjTHzM+wnqNBCIkY="}]},"maintainers":[{"name":"andrewthehan","email":"andrewthehan@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/etude-0.0.0-alpha.6.tgz_1470021468467_0.46135076438076794"}},"0.0.0-alpha.7":{"name":"etude","version":"0.0.0-alpha.7","description":"JavaScript Music Theory API","main":"js/etude.js","typings":"js/etude","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"npm run build:compile && npm run build:run && npm run build:doc","build:compile":"tsc","build:run":"node js/etude.js","build:doc":"typedoc --out doc ts"},"repository":{"type":"git","url":"git+https://github.com/andrewthehan/etude.js.git"},"keywords":["etude","music","theory","typescript"],"files":["js/"],"author":{"name":"Andrew Han"},"license":"MIT","bugs":{"url":"https://github.com/andrewthehan/etude.js/issues"},"homepage":"https://github.com/andrewthehan/etude.js#readme","gitHead":"5f75c16c6ddca454fc7d0e8a5fa4188301b7ce72","_id":"etude@0.0.0-alpha.7","_shasum":"f38402619ca78fdf9514efe19e9c627d8068dc31","_from":".","_npmVersion":"3.10.5","_nodeVersion":"6.3.1","_npmUser":{"name":"andrewthehan","email":"andrewthehan@gmail.com"},"dist":{"shasum":"f38402619ca78fdf9514efe19e9c627d8068dc31","tarball":"https://registry.npmjs.org/etude/-/etude-0.0.0-alpha.7.tgz","integrity":"sha512-cisIxsgDDndplNM2d9p0KpTLMwZ8vwDylUkXcoQ6o/AEikOs4OEqD5Cquo8pNxLJtlzJMesb0OvRcxgrzPi9Hw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCGewox7K0IrTYVETFCLNxqTL7G247qWBi9LLameHHeMQIhAIgw9KgBsAI0Dh+buDOvFXU0RrXakNm/VQfV91Zn943Z"}]},"maintainers":[{"name":"andrewthehan","email":"andrewthehan@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/etude-0.0.0-alpha.7.tgz_1470026742992_0.0036216271109879017"}},"1.0.1":{"name":"etude","version":"1.0.1","description":"JavaScript Music Theory API","main":"js/etude.js","typings":"js/etude","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"npm run build:compile && npm run build:run && npm run build:doc","build:compile":"tsc","build:run":"node js/etude.js","build:doc":"typedoc --out doc ts"},"repository":{"type":"git","url":"git+https://github.com/andrewthehan/etude.js.git"},"keywords":["etude","music","theory","typescript"],"files":["js/"],"author":{"name":"Andrew Han"},"license":"MIT","bugs":{"url":"https://github.com/andrewthehan/etude.js/issues"},"homepage":"https://github.com/andrewthehan/etude.js#readme","gitHead":"12a73fc9bfffc4e7e388b0a77f0c426f06f3df4f","_id":"etude@1.0.1","_shasum":"873c2f0d6b0064bae12988314fc7f75b0a4d3316","_from":".","_npmVersion":"3.10.5","_nodeVersion":"6.3.1","_npmUser":{"name":"andrewthehan","email":"andrewthehan@gmail.com"},"dist":{"shasum":"873c2f0d6b0064bae12988314fc7f75b0a4d3316","tarball":"https://registry.npmjs.org/etude/-/etude-1.0.1.tgz","integrity":"sha512-Rylj9wHxTQoWFYbYa1NwsvStIY6sLYGpvd9/Q0KFeFaC/BAeYwSImyWMWBRN+xnCptQzWVp/f0axjdwjbaJSLg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHPiaa0XP6zDpya79xPGJjFEjYiWgp4AqKn8DP92NFh8AiEA4BvR76GluVMJTJlc9p1pMtWH/qRqzEOPpd/S4NWDM0k="}]},"maintainers":[{"name":"andrewthehan","email":"andrewthehan@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/etude-1.0.1.tgz_1470032559191_0.7611504276283085"}},"1.0.2":{"name":"etude","version":"1.0.2","description":"JavaScript Music Theory API","main":"js/etude.js","typings":"js/etude","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"npm run build:compile && npm run build:run && npm run build:doc","build:compile":"tsc","build:run":"node js/etude.js","build:doc":"typedoc --out doc ts","clean":"rm -r js && rm -r doc"},"repository":{"type":"git","url":"git+https://github.com/andrewthehan/etude.js.git"},"keywords":["etude","music","theory","typescript"],"files":["js/"],"author":{"name":"Andrew Han"},"license":"MIT","bugs":{"url":"https://github.com/andrewthehan/etude.js/issues"},"homepage":"https://github.com/andrewthehan/etude.js#readme","gitHead":"117250f65f2c56f1b366db906f9c3b2ff6debbd7","_id":"etude@1.0.2","_shasum":"0072fd1d15b894b4bc1437f383779151f70f8697","_from":".","_npmVersion":"3.10.5","_nodeVersion":"6.3.1","_npmUser":{"name":"andrewthehan","email":"andrewthehan@gmail.com"},"dist":{"shasum":"0072fd1d15b894b4bc1437f383779151f70f8697","tarball":"https://registry.npmjs.org/etude/-/etude-1.0.2.tgz","integrity":"sha512-efTZZZcKxy4WkBgEFYPN87tA876Yvjwc07S4CA7aeqjkb1vJUMxf/IH7zwIK6aIMV2atzDdYK+G4AM5YOL/VwA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+b9mGAc5bKfCLME0Bo3e7W8krB4HPn3+z/0LVtK1AlAIhAOloab5aPkPj6iELsAF6U0KlmFankSSK8ME0g9mam052"}]},"maintainers":[{"name":"andrewthehan","email":"andrewthehan@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/etude-1.0.2.tgz_1470033560177_0.43654765631072223"}},"1.0.3":{"name":"etude","version":"1.0.3","description":"JavaScript Music Theory API","main":"js/etude.js","typings":"js/etude","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"npm run build:compile && npm run build:run && npm run build:doc","build:compile":"tsc","build:run":"node js/etude.js","build:doc":"typedoc --out doc ts","clean":"rm -r js && rm -r doc"},"repository":{"type":"git","url":"git+https://github.com/andrewthehan/etude.js.git"},"keywords":["etude","music","theory","typescript"],"files":["js/"],"author":{"name":"Andrew Han"},"license":"MIT","bugs":{"url":"https://github.com/andrewthehan/etude.js/issues"},"homepage":"https://github.com/andrewthehan/etude.js#readme","tonicExample":"const {Accidental, Chord, Degree, Interval, Inversion, Key, KeySignature, Letter, Mode, MusicConstants, Pitch, Scale} = require(\"etude\");","gitHead":"f573f48085ac23317102a024cdb796350718b092","_id":"etude@1.0.3","_shasum":"f389561c1f85defea3762e87f8589dece2b4c696","_from":".","_npmVersion":"3.10.5","_nodeVersion":"6.3.1","_npmUser":{"name":"andrewthehan","email":"andrewthehan@gmail.com"},"dist":{"shasum":"f389561c1f85defea3762e87f8589dece2b4c696","tarball":"https://registry.npmjs.org/etude/-/etude-1.0.3.tgz","integrity":"sha512-Lpfb2Cr3hjoL67iU1FBNby3YnNeoNWoS9LiuowA0zqe0JcUi2XBrKZd8d96LUut55uKAOFbSHzkGP+fiUwdr4Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCVvZjZgg1/KxTF8fSa3+FgC8BcJZ74MWnixIXTo/bo1AIhAIFbNQGynO3VAhKaIcmBh6eSgAuJSipbdH5qJh01a6KF"}]},"maintainers":[{"name":"andrewthehan","email":"andrewthehan@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/etude-1.0.3.tgz_1470034859239_0.08261218969710171"}},"1.0.4":{"name":"etude","version":"1.0.4","description":"JavaScript Music Theory API","main":"js/etude.js","typings":"js/etude","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"npm run build:compile && npm run build:run && npm run build:doc","build:compile":"tsc","build:run":"node js/etude.js","build:doc":"typedoc --out doc ts","clean":"rm -r js && rm -r doc"},"repository":{"type":"git","url":"git+https://github.com/andrewthehan/etude.js.git"},"keywords":["etude","music","theory","typescript"],"files":["js/"],"author":{"name":"Andrew Han"},"license":"MIT","bugs":{"url":"https://github.com/andrewthehan/etude.js/issues"},"homepage":"https://github.com/andrewthehan/etude.js#readme","tonicExample":"// Use Node version 6!\nconst {Accidental, Chord, Degree, Interval, Inversion, Key, KeySignature, Letter, Mode, MusicConstants, Pitch, Scale} = require(\"etude\");","gitHead":"0b98d2f5878f505d5899889a7385e3c88e09baa0","_id":"etude@1.0.4","_shasum":"568e7d5f4edd14dddb9645d457ab6b6d122588a1","_from":".","_npmVersion":"3.10.5","_nodeVersion":"6.3.1","_npmUser":{"name":"andrewthehan","email":"andrewthehan@gmail.com"},"dist":{"shasum":"568e7d5f4edd14dddb9645d457ab6b6d122588a1","tarball":"https://registry.npmjs.org/etude/-/etude-1.0.4.tgz","integrity":"sha512-yAWqwcTgYUU92EGOp7MSrbkiPpHW800WUlMadyQ22Ph4vg9/8+jpZQBZUPVsffbbW1p1iZONY4JJ4TRrP1doVw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHHvqGnlb07RPcxQqfaTleFMGvqE9F/J+CFFHDA8QgduAiEA/XIJ+yc4bC1fYEkTQegy5UuKZr8YLkZl61XswVTyFw0="}]},"maintainers":[{"name":"andrewthehan","email":"andrewthehan@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/etude-1.0.4.tgz_1470035248393_0.6787607558071613"}},"1.0.5":{"name":"etude","version":"1.0.5","description":"JavaScript Music Theory API","main":"js/etude.js","typings":"js/etude","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"npm run build:compile && npm run build:run && npm run build:doc","build:compile":"tsc","build:run":"node js/etude.js","build:doc":"typedoc --out doc ts","clean":"rm -r js && rm -r doc"},"repository":{"type":"git","url":"git+https://github.com/andrewthehan/etude.js.git"},"keywords":["etude","music","theory","typescript"],"files":["js/"],"author":{"name":"Andrew Han"},"license":"MIT","bugs":{"url":"https://github.com/andrewthehan/etude.js/issues"},"homepage":"https://github.com/andrewthehan/etude.js#readme","engine":{"node":">=6"},"tonicExample":"const {Accidental, Chord, Degree, Interval, Inversion, Key, KeySignature, Letter, Mode, MusicConstants, Pitch, Scale} = require(\"etude\");","gitHead":"321754220119f64e8fe3412653761ae97634934d","_id":"etude@1.0.5","_shasum":"645ca0f89b69729ff90de94d3319c82f44609bc8","_from":".","_npmVersion":"3.10.5","_nodeVersion":"6.3.1","_npmUser":{"name":"andrewthehan","email":"andrewthehan@gmail.com"},"dist":{"shasum":"645ca0f89b69729ff90de94d3319c82f44609bc8","tarball":"https://registry.npmjs.org/etude/-/etude-1.0.5.tgz","integrity":"sha512-k0kG8LaX7ANlZNej0zHojvx/Xak8lKXE5h9JeTLBVV6w/P4BJ1QqRE+vGVmx8nGDjgT1bIdQlmSW+/TCWneQIw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEQ3vnu1PND88zJestgukNv0QiSo79TsMuGSPgRxAB/PAiEA0fbYVwkk058H+quR4JF3G5xqcvDfBzIat6Jp77+zSOA="}]},"maintainers":[{"name":"andrewthehan","email":"andrewthehan@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/etude-1.0.5.tgz_1470098391170_0.11119848489761353"}},"1.0.6":{"name":"etude","version":"1.0.6","description":"JavaScript Music Theory API","main":"js/etude.js","typings":"js/etude","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"npm run build:compile && npm run build:run && npm run build:doc","build:compile":"tsc","build:run":"node js/etude.js","build:doc":"typedoc --out doc ts","clean":"rm -r js && rm -r doc"},"repository":{"type":"git","url":"git+https://github.com/andrewthehan/etude.js.git"},"keywords":["etude","music","theory","typescript"],"files":["js/"],"author":{"name":"Andrew Han"},"license":"MIT","bugs":{"url":"https://github.com/andrewthehan/etude.js/issues"},"homepage":"https://github.com/andrewthehan/etude.js#readme","engines":{"node":">=6"},"tonicExample":"const {Accidental, Chord, Degree, Interval, Inversion, Key, KeySignature, Letter, Mode, MusicConstants, Pitch, Scale} = require(\"etude\");","gitHead":"8c7c8723ed49f0fbe177c6a04bbe9aec184b55cc","_id":"etude@1.0.6","_shasum":"ddca9d11bbe5d95eacded7b11ef156b5cfbbc248","_from":".","_npmVersion":"3.10.5","_nodeVersion":"6.3.1","_npmUser":{"name":"andrewthehan","email":"andrewthehan@gmail.com"},"dist":{"shasum":"ddca9d11bbe5d95eacded7b11ef156b5cfbbc248","tarball":"https://registry.npmjs.org/etude/-/etude-1.0.6.tgz","integrity":"sha512-sYavPmLrtQhdyeNGrySQfZAzPO6qm5LjEz20AIyVA08hfu1G/uyQfaCSZDPAZypRy/oWF1F1boZLZkW8mm6OmA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDhDEkU22MyNJzi6/CrVoXmjgzKbqty6+pBS7jQ1HrYuAIhALQlEMGIoGLtU9EaN53X2+vSHm5vauEG6GmM+taZzuCZ"}]},"maintainers":[{"name":"andrewthehan","email":"andrewthehan@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/etude-1.0.6.tgz_1470098738722_0.12504938687197864"}},"1.0.7":{"name":"etude","version":"1.0.7","description":"JavaScript Music Theory API","main":"js/etude.js","typings":"js/etude","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"npm run build:compile && npm run build:run && npm run build:doc","build:compile":"tsc","build:run":"node js/etude.js","build:doc":"typedoc --out doc ts","clean":"rm -r js && rm -r doc"},"repository":{"type":"git","url":"git+https://github.com/andrewthehan/etude.js.git"},"keywords":["etude","music","theory","typescript"],"files":["js/"],"author":{"name":"Andrew Han"},"license":"MIT","bugs":{"url":"https://github.com/andrewthehan/etude.js/issues"},"homepage":"https://github.com/andrewthehan/etude.js#readme","engines":{"node":">=6"},"tonicExample":"const {Accidental, Chord, Degree, Interval, Inversion, Key, KeySignature, Letter, Mode, MusicConstants, Pitch, Scale} = require(\"etude\");","gitHead":"883fc3c186ffcb59b6a77e0a3dd0598e59c7ac3f","_id":"etude@1.0.7","_shasum":"80dc78fb70b88a06376ac51c023b37457716f8d0","_from":".","_npmVersion":"3.10.5","_nodeVersion":"6.3.1","_npmUser":{"name":"andrewthehan","email":"andrewthehan@gmail.com"},"dist":{"shasum":"80dc78fb70b88a06376ac51c023b37457716f8d0","tarball":"https://registry.npmjs.org/etude/-/etude-1.0.7.tgz","integrity":"sha512-LZwNNycrBPc0PAGKL8QWxtF47PLHXTF4GNdVRsEiXh6ULEl1kwAPzmkguFjw/iin9TVXnDS2+OohkPTMvlcleQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDq4dBZ47GeyaXVUGw2SIhaD+MtL/1IlmHgMUgFxRmSOwIgdHqYHvYUb4VLMfwkeM1csrbWpTMdcGJ/Ms9bfW7l/U4="}]},"maintainers":[{"name":"andrewthehan","email":"andrewthehan@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/etude-1.0.7.tgz_1470105795773_0.7832460347563028"}},"1.0.8":{"name":"etude","version":"1.0.8","description":"JavaScript Music Theory API","main":"js/etude.js","typings":"js/etude","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"npm run build:compile && npm run build:run","build:compile":"tsc","build:run":"node js/etude.js","clean":"rm -rf js"},"repository":{"type":"git","url":"git+https://github.com/andrewthehan/etude.js.git"},"keywords":["etude","music","theory","typescript"],"files":["js/"],"author":{"name":"Andrew Han"},"license":"MIT","bugs":{"url":"https://github.com/andrewthehan/etude.js/issues"},"homepage":"https://github.com/andrewthehan/etude.js#readme","engines":{"node":">=6"},"tonicExample":"const {Accidental, Chord, Degree, Interval, Inversion, Key, KeySignature, Letter, Mode, MusicConstants, Pitch, Scale} = require(\"etude\");","gitHead":"c8379349a1502af3f6372fdf93b622027ef63b30","_id":"etude@1.0.8","_shasum":"25b76e835f77d5e7e91ceebd3b2f214d1a86b5de","_from":".","_npmVersion":"3.10.5","_nodeVersion":"6.3.1","_npmUser":{"name":"andrewthehan","email":"andrewthehan@gmail.com"},"dist":{"shasum":"25b76e835f77d5e7e91ceebd3b2f214d1a86b5de","tarball":"https://registry.npmjs.org/etude/-/etude-1.0.8.tgz","integrity":"sha512-MDz3Z1Bgs/HEs7ymsDmL8t8GHLEerZtKiwwit5p3pEkzA+aqknkC0hK41Mc8vuYVXXN2WrtQkcHF4oQW+IIKIg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFCnyQDy4GYZ1G3jPXFzNI3t39rimMm8uc3dMjoeAIOvAiEA7ctqB3QjS03wXIEqndFG+QMG41Uw7EC2diiNCQZUXww="}]},"maintainers":[{"name":"andrewthehan","email":"andrewthehan@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/etude-1.0.8.tgz_1470116072429_0.2714548602234572"}},"1.0.9":{"name":"etude","version":"1.0.9","description":"JavaScript Music Theory API","main":"js/etude.js","typings":"js/etude","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"npm run build:compile && npm run build:run","build:compile":"tsc","build:run":"node js/etude.js","clean":"rm -rf js"},"repository":{"type":"git","url":"git+https://github.com/andrewthehan/etude.js.git"},"keywords":["etude","music","theory","typescript"],"files":["js/"],"author":{"name":"Andrew Han"},"license":"MIT","bugs":{"url":"https://github.com/andrewthehan/etude.js/issues"},"homepage":"https://github.com/andrewthehan/etude.js#readme","engines":{"node":">=6"},"tonicExample":"const {Accidental, Chord, Degree, Interval, Inversion, Key, KeySignature, Letter, Mode, MusicConstants, Pitch, Scale} = require(\"etude\");","gitHead":"5857a999cc31dc0197e7ce7ac73e1f9bd537c37a","_id":"etude@1.0.9","_shasum":"89fde6172e6e0fda9e9f76b762b5f84808d4d4be","_from":".","_npmVersion":"3.10.5","_nodeVersion":"6.3.1","_npmUser":{"name":"andrewthehan","email":"andrewthehan@gmail.com"},"dist":{"shasum":"89fde6172e6e0fda9e9f76b762b5f84808d4d4be","tarball":"https://registry.npmjs.org/etude/-/etude-1.0.9.tgz","integrity":"sha512-qtMAw66idtk4YTX9WQIt0Tq9VnrSfd+3a1+JmIHrIzX1e3NtO1w+OHhWszdXcbNreYFPKRRqJr7At8G+Jbdh4A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCs+BfztPDXWC+jg+7ZKJf3EcsIV6jkyDgDYn1YTV6LTwIhAJGlyUm8nRig93kZkBkLNWUHSKY6HLL5eFnNYujVI1kl"}]},"maintainers":[{"name":"andrewthehan","email":"andrewthehan@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/etude-1.0.9.tgz_1470439423709_0.8136195892002434"}},"1.1.0":{"name":"etude","version":"1.1.0","description":"JavaScript Music Theory API","main":"js/etude.js","typings":"js/etude","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"npm run build:compile && npm run build:run","build:compile":"tsc","build:run":"node js/etude.js","clean":"rm -rf js"},"repository":{"type":"git","url":"git+https://github.com/andrewthehan/etude.js.git"},"keywords":["etude","music","theory","typescript"],"files":["js/"],"author":{"name":"Andrew Han"},"license":"MIT","bugs":{"url":"https://github.com/andrewthehan/etude.js/issues"},"homepage":"https://github.com/andrewthehan/etude.js#readme","engines":{"node":">=6"},"tonicExample":"const {Accidental, Chord, Degree, Interval, Inversion, Key, KeySignature, Letter, Mode, MusicConstants, Pitch, Scale} = require(\"etude\");","gitHead":"46b19bef9292998553b90e22026765aaaf94225c","_id":"etude@1.1.0","_shasum":"9ebedd8ad10bcb1eaafb2ac0a18dd701ec88fe99","_from":".","_npmVersion":"3.10.5","_nodeVersion":"6.3.1","_npmUser":{"name":"andrewthehan","email":"andrewthehan@gmail.com"},"dist":{"shasum":"9ebedd8ad10bcb1eaafb2ac0a18dd701ec88fe99","tarball":"https://registry.npmjs.org/etude/-/etude-1.1.0.tgz","integrity":"sha512-LXbxLvmGvmbj9Ha9p7P3NipLHX77OVVs8CWtf8iu9TtDNDbWTAd99n7YBeBsYjpraiNTcmqpGXcbx0/cR+CzMw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCQs7+yiO9VpzKnNn7xf6/UpAOn8277MMQWXZZDMVOp6AIgCPfqy9of+N3PCegQEG+xzlhOLO9CuU++vXRx+H1/Rak="}]},"maintainers":[{"name":"andrewthehan","email":"andrewthehan@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/etude-1.1.0.tgz_1470867928053_0.07901582354679704"}},"1.1.1":{"name":"etude","version":"1.1.1","description":"JavaScript Music Theory API","main":"js/etude.js","typings":"js/etude","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"npm run build:compile && npm run build:run","build:compile":"tsc","build:run":"node js/etude.js","clean":"rm -rf js"},"repository":{"type":"git","url":"git+https://github.com/andrewthehan/etude.js.git"},"keywords":["etude","music","theory","typescript"],"files":["js/"],"author":{"name":"Andrew Han"},"license":"MIT","bugs":{"url":"https://github.com/andrewthehan/etude.js/issues"},"homepage":"https://github.com/andrewthehan/etude.js#readme","engines":{"node":">=6"},"tonicExample":"const {Accidental, Chord, Degree, Interval, Inversion, Key, KeySignature, Letter, Mode, MusicConstants, Pitch, Scale} = require(\"etude\");","gitHead":"fb87f18f10f8d7f418bd1dda145a22333d954859","_id":"etude@1.1.1","_shasum":"bf81af8bded2e0b8fc44fa807aaea5f92c95408b","_from":".","_npmVersion":"3.10.5","_nodeVersion":"6.3.1","_npmUser":{"name":"andrewthehan","email":"andrewthehan@gmail.com"},"dist":{"shasum":"bf81af8bded2e0b8fc44fa807aaea5f92c95408b","tarball":"https://registry.npmjs.org/etude/-/etude-1.1.1.tgz","integrity":"sha512-OfJdJRrt+ENiXfAVbKtvRFrBbJ+eKHWExGlkIRgealDpbmomxcBYL+vb5xR+Sg4O5mrfpopTzDvYm/Km0Bwm8A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDLAVBGLyrk1/fSBWaXAxvDlH0ufbNLW4MW39Ti+0c/PgIgcdj/zwJmucDOMWfU7Mdcwp3rCIjxZBANf+XZFgAFsis="}]},"maintainers":[{"name":"andrewthehan","email":"andrewthehan@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/etude-1.1.1.tgz_1470868728072_0.33920439053326845"}},"1.2.0":{"name":"etude","version":"1.2.0","description":"JavaScript Music Theory API","main":"js/etude.js","typings":"js/etude","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"npm run build:compile && npm run build:run","build:compile":"tsc","build:run":"node js/etude.js","clean":"rm -rf js"},"repository":{"type":"git","url":"git+https://github.com/andrewthehan/etude.js.git"},"keywords":["etude","music","theory","typescript"],"files":["js/"],"author":{"name":"Andrew Han"},"license":"MIT","bugs":{"url":"https://github.com/andrewthehan/etude.js/issues"},"homepage":"https://github.com/andrewthehan/etude.js#readme","engines":{"node":">=6"},"tonicExample":"const {Accidental, Chord, Degree, Interval, Inversion, Key, KeySignature, Letter, Mode, MusicConstants, Pitch, Scale} = require(\"etude\");","gitHead":"6f54f2286ebb5e7e6c4341b46e28e01b0e4992b8","_id":"etude@1.2.0","_shasum":"4fa900cb02863f33aac9dc787181d9ff83ff4050","_from":".","_npmVersion":"3.10.5","_nodeVersion":"6.3.1","_npmUser":{"name":"andrewthehan","email":"andrewthehan@gmail.com"},"dist":{"shasum":"4fa900cb02863f33aac9dc787181d9ff83ff4050","tarball":"https://registry.npmjs.org/etude/-/etude-1.2.0.tgz","integrity":"sha512-efzZeVRChlvRVW0k6YIWDq2w+RoHASjLarU7yVomuOhAfTTd/MiJa1S6kL9UZ/IJSUpriUm8NFiE4hZ5vdObgw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICW+7Fe++oHydgx0vxr3XZd+R+qt5k3eAlFR5Sne18kyAiEA9o966byZ5aHECMwR79NLhP8H383AZwrgtjuvRamFvYM="}]},"maintainers":[{"name":"andrewthehan","email":"andrewthehan@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/etude-1.2.0.tgz_1471215491382_0.763439824571833"}},"1.2.1":{"name":"etude","version":"1.2.1","description":"JavaScript Music Theory API","main":"js/etude.js","typings":"js/etude","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"npm run build:compile && npm run build:run","build:compile":"tsc","build:run":"node js/etude.js","clean":"rm -rf js"},"repository":{"type":"git","url":"git+https://github.com/andrewthehan/etude.js.git"},"keywords":["etude","music","theory","typescript"],"files":["js/"],"author":{"name":"Andrew Han"},"license":"MIT","bugs":{"url":"https://github.com/andrewthehan/etude.js/issues"},"homepage":"https://github.com/andrewthehan/etude.js#readme","engines":{"node":">=6"},"tonicExample":"const {Accidental, Chord, Degree, Interval, Inversion, Key, KeySignature, Letter, Mode, MusicConstants, Pitch, Scale} = require(\"etude\");","gitHead":"96f3f0a37f4829ab69019ccf32c992a84e335859","_id":"etude@1.2.1","_shasum":"116d687ed16f9ca178caf0610b68c21aa66a4469","_from":".","_npmVersion":"3.10.5","_nodeVersion":"6.3.1","_npmUser":{"name":"andrewthehan","email":"andrewthehan@gmail.com"},"dist":{"shasum":"116d687ed16f9ca178caf0610b68c21aa66a4469","tarball":"https://registry.npmjs.org/etude/-/etude-1.2.1.tgz","integrity":"sha512-A+fRZo49pQDfZFSfy6a1NMiQjdsbWiKjZRD/4eB0sXOvKupi/ozuJl9slAxKftRg6F4fVgtc9+yCblFp8x4qmw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDtCWLv62pnXFHEV22T7T2Qa9ChaKnteMdauKswp2Z1RQIhAMuou6Z/jig0SFQl6C1Fs6oDiTqIJW0qSbdAvXhYjwyk"}]},"maintainers":[{"name":"andrewthehan","email":"andrewthehan@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/etude-1.2.1.tgz_1471216562244_0.09579776832833886"}},"1.3.0":{"name":"etude","version":"1.3.0","description":"JavaScript Music Theory API","main":"js/etude.js","typings":"js/etude","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"npm run build:compile && npm run build:run","build:compile":"tsc","build:run":"node js/etude.js","clean":"rm -rf js"},"repository":{"type":"git","url":"git+https://github.com/andrewthehan/etude.js.git"},"keywords":["etude","music","theory","typescript"],"files":["js/"],"author":{"name":"Andrew Han"},"license":"MIT","bugs":{"url":"https://github.com/andrewthehan/etude.js/issues"},"homepage":"https://github.com/andrewthehan/etude.js#readme","engines":{"node":">=6"},"tonicExample":"const {Accidental, Chord, Degree, Interval, Inversion, Key, KeySignature, Letter, Mode, MusicConstants, Pitch, Scale} = require(\"etude\");","gitHead":"82d2597d625170ff280eeffb9c10584a80f0d492","_id":"etude@1.3.0","_shasum":"ad4e679a29f8352a3f2ce403c647ea749f18fe4a","_from":".","_npmVersion":"3.10.5","_nodeVersion":"6.3.1","_npmUser":{"name":"andrewthehan","email":"andrewthehan@gmail.com"},"dist":{"shasum":"ad4e679a29f8352a3f2ce403c647ea749f18fe4a","tarball":"https://registry.npmjs.org/etude/-/etude-1.3.0.tgz","integrity":"sha512-wF3rsNeX5NFZ/bujp38sT1reW/14etBlKC+vIiBucZnrPhGXi7+a/gOVVXRBjUqQkGR7bC3+QprKQx7BgSotkA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDIzobdAFagY9pT/EpTXkK9xwegnkuj+TPOqKuo/ubeIAiEAmkXdcoVIjv211DiY/TxcQKXOUOuI1j5Qjm2agGr3YwQ="}]},"maintainers":[{"name":"andrewthehan","email":"andrewthehan@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/etude-1.3.0.tgz_1471222395214_0.7889706760179251"}},"1.3.1":{"name":"etude","version":"1.3.1","description":"JavaScript Music Theory API","main":"js/etude.js","typings":"js/etude","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"npm run build:compile && npm run build:run","build:compile":"tsc","build:run":"node js/etude.js","clean":"rm -rf js"},"repository":{"type":"git","url":"git+https://github.com/andrewthehan/etude.js.git"},"keywords":["etude","music","theory","typescript"],"files":["js/"],"author":{"name":"Andrew Han"},"license":"MIT","bugs":{"url":"https://github.com/andrewthehan/etude.js/issues"},"homepage":"https://github.com/andrewthehan/etude.js#readme","engines":{"node":">=6"},"tonicExample":"const {Accidental, Chord, Degree, Interval, Inversion, Key, KeySignature, Letter, Mode, MusicConstants, Pitch, Scale} = require(\"etude\");","gitHead":"88bf9481c6e03a24804932fd97f22c7c74b13e61","_id":"etude@1.3.1","_shasum":"2866b829f6060f0373fbd1eedb76bbc5f1a30e09","_from":".","_npmVersion":"3.10.5","_nodeVersion":"6.3.1","_npmUser":{"name":"andrewthehan","email":"andrewthehan@gmail.com"},"dist":{"shasum":"2866b829f6060f0373fbd1eedb76bbc5f1a30e09","tarball":"https://registry.npmjs.org/etude/-/etude-1.3.1.tgz","integrity":"sha512-YXP9kmGioHz5PPNrupZDsddsZ/SqHIL3fnpUHk6HSHKaCeZlwiYd2cNbmXSIYxyK98Npz5wMVfWhTS+Y1G6Acw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEsvDdsA45MOXIWOpaPmETnlh29DbEz4U3Q9fsbaX4MkAiEA05YCOBMiLH0R7M3K0hNqQS2UTnxUGzOcF1i14WOXdjU="}]},"maintainers":[{"name":"andrewthehan","email":"andrewthehan@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/etude-1.3.1.tgz_1471222858484_0.2320560310035944"}},"1.3.2":{"name":"etude","version":"1.3.2","description":"JavaScript Music Theory API","main":"js/etude.js","typings":"js/etude","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"npm run build:compile && npm run build:run","build:compile":"tsc","build:run":"node js/etude.js","clean":"rm -rf js"},"repository":{"type":"git","url":"git+https://github.com/andrewthehan/etude.js.git"},"keywords":["etude","music","theory","typescript"],"files":["js/"],"author":{"name":"Andrew Han"},"license":"MIT","bugs":{"url":"https://github.com/andrewthehan/etude.js/issues"},"homepage":"https://github.com/andrewthehan/etude.js#readme","engines":{"node":">=6"},"tonicExample":"const {Accidental, Chord, Degree, Interval, Inversion, Key, KeySignature, Letter, Mode, MusicConstants, Pitch, Scale} = require(\"etude\");","gitHead":"aa5de8f780a2c86a5a9ca7f7168f22e603819504","_id":"etude@1.3.2","_shasum":"c50a69491f07bd4f846acaad4b0c2ec4217e305f","_from":".","_npmVersion":"3.10.5","_nodeVersion":"6.3.1","_npmUser":{"name":"andrewthehan","email":"andrewthehan@gmail.com"},"dist":{"shasum":"c50a69491f07bd4f846acaad4b0c2ec4217e305f","tarball":"https://registry.npmjs.org/etude/-/etude-1.3.2.tgz","integrity":"sha512-9/+6npMPyqWH7DDWf2OVl5hg1ft5nj/eFDdJ72/7LxXigGLs0a3AQvmAiwokm9+k6B74/3AimLqwCKshaRAahA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEzvMv/oHaeZNID7U3aPD9Bucqr1GZXr3Wk7yeB5EWEeAiAW4hnPZRRsJYpF9MVJ7jXG0XVvGInJpv5PiBrOut4wOA=="}]},"maintainers":[{"name":"andrewthehan","email":"andrewthehan@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/etude-1.3.2.tgz_1472101140947_0.62283332971856"}},"1.3.3":{"name":"etude","version":"1.3.3","description":"JavaScript Music Theory API","main":"js/etude.js","typings":"js/etude","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"npm run build:compile && npm run build:run","build:compile":"tsc","build:run":"node js/etude.js","clean":"rm -rf js"},"repository":{"type":"git","url":"git+https://github.com/andrewthehan/etude.js.git"},"keywords":["etude","music","theory","typescript"],"files":["js/"],"author":{"name":"Andrew Han"},"license":"MIT","bugs":{"url":"https://github.com/andrewthehan/etude.js/issues"},"homepage":"https://github.com/andrewthehan/etude.js#readme","engines":{"node":">=6"},"tonicExample":"const {Accidental, Chord, Degree, Interval, Inversion, Key, KeySignature, Letter, Mode, MusicConstants, Pitch, Scale} = require(\"etude\");","gitHead":"eaa3ff153f85dc10540e5136bc029e26431119d3","_id":"etude@1.3.3","_shasum":"92c1440c27fbfaa3a930af333a3e5257c4522ae9","_from":".","_npmVersion":"3.10.5","_nodeVersion":"6.3.1","_npmUser":{"name":"andrewthehan","email":"andrewthehan@gmail.com"},"dist":{"shasum":"92c1440c27fbfaa3a930af333a3e5257c4522ae9","tarball":"https://registry.npmjs.org/etude/-/etude-1.3.3.tgz","integrity":"sha512-mhxUf0keBH9DWnQ0Ky3XtdiRiqw0+2aRklAIp4roS3KlYfwg33z0mwifgu1RQTjyyhbv4Br6b4FAthsftExm4g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICdZrSXfM58BZduU/OfpddB4DpMi1DQqqNrqn0htuEUtAiEAmQVecuYNTlzYcpN5zJ/upUPpXDXfUn2wEPIEcHY3+j4="}]},"maintainers":[{"name":"andrewthehan","email":"andrewthehan@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/etude-1.3.3.tgz_1472257349246_0.20543153025209904"}},"1.4.0":{"name":"etude","version":"1.4.0","description":"JavaScript Music Theory API","main":"js/etude.js","typings":"js/etude","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"npm run build:compile && npm run build:run","build:compile":"tsc","build:run":"node js/etude.js","clean":"rm -rf js"},"repository":{"type":"git","url":"git+https://github.com/andrewthehan/etude.js.git"},"keywords":["etude","music","theory","typescript"],"files":["js/"],"author":{"name":"Andrew Han"},"license":"MIT","bugs":{"url":"https://github.com/andrewthehan/etude.js/issues"},"homepage":"https://github.com/andrewthehan/etude.js#readme","engines":{"node":">=6"},"tonicExample":"const {Accidental, Chord, Degree, Interval, Inversion, Key, KeySignature, Letter, Mode, MusicConstants, Pitch, Scale} = require(\"etude\");","gitHead":"156839bee37d2a11ee1a8396b64735a488551ea1","_id":"etude@1.4.0","_shasum":"bc8de972ff3b3d2c43ae204bb122110aaa601537","_from":".","_npmVersion":"3.10.5","_nodeVersion":"6.3.1","_npmUser":{"name":"andrewthehan","email":"andrewthehan@gmail.com"},"dist":{"shasum":"bc8de972ff3b3d2c43ae204bb122110aaa601537","tarball":"https://registry.npmjs.org/etude/-/etude-1.4.0.tgz","integrity":"sha512-dEdXs7JmDwf5QtI+dy9pN4foYuT2toEMBp8XiwXQooMe0pSZlxVCcafWOVw7sLtmYm2iHxoAUonrIimzX8mzvQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCtoRIxF4EopjMB6d4C7LtRtqRFxWaH7Us7vqMh6dFdAgIgfKM3D8Jhbx8FfKHAtUpDUniRjKZdU18wTcnO739HfdI="}]},"maintainers":[{"name":"andrewthehan","email":"andrewthehan@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/etude-1.4.0.tgz_1472259876910_0.7163609156850725"}},"1.4.1":{"name":"etude","version":"1.4.1","description":"JavaScript Music Theory API","main":"js/etude.js","typings":"js/etude","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"npm run build:compile && npm run build:run && npm run build:package","build:compile":"tsc","build:run":"node js/etude.js","build:package":"echo window.etude = require('./etude.js'); > js/package.js && browserify js/package.js -s window -o js/etude-browser.js && rm js/package.js","clean":"rm -rf js"},"repository":{"type":"git","url":"git+https://github.com/andrewthehan/etude.js.git"},"keywords":["etude","music","theory","typescript"],"files":["js/"],"author":{"name":"Andrew Han"},"license":"MIT","bugs":{"url":"https://github.com/andrewthehan/etude.js/issues"},"homepage":"https://github.com/andrewthehan/etude.js#readme","engines":{"node":">=6"},"tonicExample":"const {Accidental, Chord, Degree, Interval, Inversion, Key, KeySignature, Letter, Mode, MusicConstants, Pitch, Scale} = require(\"etude\");","gitHead":"143ffd58178e7d20b17a54b1847c4fbb7ce9848e","_id":"etude@1.4.1","_shasum":"313c2ccb6be097fc704aa7a206365c5bcb9c0d06","_from":".","_npmVersion":"3.10.5","_nodeVersion":"6.3.1","_npmUser":{"name":"andrewthehan","email":"andrewthehan@gmail.com"},"dist":{"shasum":"313c2ccb6be097fc704aa7a206365c5bcb9c0d06","tarball":"https://registry.npmjs.org/etude/-/etude-1.4.1.tgz","integrity":"sha512-3I7Gql65OipM7rT4PO/TdPDWVAKNd3mCb9cr/lCgWd8ZqFwGW3fEx3Y+jdJoN0jnABg/T4RnTmX+2JK1MQKWug==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCsVgSB4ZBzsFZk9z5VCeoDK3EfcGVdeqyZAjoYm99NdQIhALQ+rifYqFc66Bc1weYWhWW3Xx/b95maw1Lox45A1PHb"}]},"maintainers":[{"name":"andrewthehan","email":"andrewthehan@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/etude-1.4.1.tgz_1472270443057_0.398392585106194"}},"1.4.2":{"name":"etude","version":"1.4.2","description":"JavaScript Music Theory API","main":"js/etude.js","typings":"js/etude","scripts":{"test":"npm run build:compile","build":"npm run build:compile && npm run build:run && npm run build:package","build:compile":"tsc","build:run":"node js/etude.js","build:package":"echo window.etude = require('./etude.js'); > js/package.js && browserify js/package.js -s window -o js/etude-browser.js && rm js/package.js","clean":"rm -rf js"},"repository":{"type":"git","url":"git+https://github.com/andrewthehan/etude.js.git"},"keywords":["etude","music","theory","typescript"],"files":["js/"],"author":{"name":"Andrew Han"},"license":"MIT","bugs":{"url":"https://github.com/andrewthehan/etude.js/issues"},"homepage":"https://github.com/andrewthehan/etude.js#readme","engines":{"node":">=6"},"tonicExample":"const {Accidental, Chord, Degree, Interval, Inversion, Key, KeySignature, Letter, Mode, MusicConstants, Pitch, Scale} = require(\"etude\");","gitHead":"5abf672d6896f925ab755653e02d0e2d59e41f8a","_id":"etude@1.4.2","_shasum":"a6a56dae5f01860c8baebdbbef69b180c9be1630","_from":".","_npmVersion":"3.10.5","_nodeVersion":"6.3.1","_npmUser":{"name":"andrewthehan","email":"andrewthehan@gmail.com"},"dist":{"shasum":"a6a56dae5f01860c8baebdbbef69b180c9be1630","tarball":"https://registry.npmjs.org/etude/-/etude-1.4.2.tgz","integrity":"sha512-K8PZ/BXmoxKIepxiIdAh2E0ICoY1We3jL/3E+CRTBbLYYuXCQruA3joc3v2uZWKDSh1YmECB1dz5slouZEaFxg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC+igqROXvqxnBe5W3EEyj0FpjIXwcOAPK78t82BeZ5+QIgOzIgiwNQ1dUrQIdBgMHi70H3U5mWJkXPhfM6GDNf6eE="}]},"maintainers":[{"name":"andrewthehan","email":"andrewthehan@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/etude-1.4.2.tgz_1472284599139_0.7119591659866273"}},"1.5.0":{"name":"etude","version":"1.5.0","description":"JavaScript Music Theory API","main":"js/etude.js","typings":"js/etude","scripts":{"test":"npm run build:compile","build":"npm run build:compile && npm run build:run && npm run build:package","build:compile":"tsc","build:run":"node js/etude.js","build:package":"echo window.etude = require('./etude.js'); > js/package.js && browserify js/package.js -s window -o js/etude-browser.js && rm js/package.js","clean":"rm -rf js"},"repository":{"type":"git","url":"git+https://github.com/andrewthehan/etude.js.git"},"keywords":["etude","music","theory","typescript"],"files":["js/"],"author":{"name":"Andrew Han"},"license":"MIT","bugs":{"url":"https://github.com/andrewthehan/etude.js/issues"},"homepage":"https://github.com/andrewthehan/etude.js#readme","engines":{"node":">=6"},"tonicExample":"const {Accidental, Chord, Degree, Dynamic, Interval, Inversion, Key, KeySignature, Letter, Mode, MusicConstants, Note, Pitch, Scale, Value} = require(\"etude\");","gitHead":"da5a0b23d11a2650beffdbb41e497f458d39057e","_id":"etude@1.5.0","_shasum":"6f3925fd97090b3178b32a3bf0f96765f441651c","_from":".","_npmVersion":"3.10.5","_nodeVersion":"6.3.1","_npmUser":{"name":"andrewthehan","email":"andrewthehan@gmail.com"},"dist":{"shasum":"6f3925fd97090b3178b32a3bf0f96765f441651c","tarball":"https://registry.npmjs.org/etude/-/etude-1.5.0.tgz","integrity":"sha512-1fiaEa8oRn2v13x2fYbptO6xzQGRJscZ9AlAZx6dIjF1qLS8FEbueiqqQ7uBkcdWbK3qLNdRqToTnJUhiOkndg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD+W2TWgogyw08ylC3Wd5tpoVxWttYeKdUc0GzIq8cPvQIgUA4EdkfOkfCZJX4Ljg00/IjPDfa3ObOaGKkaekDd5WU="}]},"maintainers":[{"name":"andrewthehan","email":"andrewthehan@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/etude-1.5.0.tgz_1472374899325_0.9912416979204863"}},"1.6.0":{"name":"etude","version":"1.6.0","description":"JavaScript Music Theory API","main":"js/etude.js","typings":"js/etude","scripts":{"test":"npm run build:compile","build":"npm run build:compile && npm run build:run && npm run build:package","build:compile":"tsc","build:run":"node js/etude.js","build:package":"echo window.etude = require('./etude.js'); > js/package.js && browserify js/package.js -s window -o js/etude-browser.js && rm js/package.js","clean":"rm -rf js"},"repository":{"type":"git","url":"git+https://github.com/andrewthehan/etude.js.git"},"keywords":["etude","music","theory","typescript"],"files":["js/"],"author":{"name":"Andrew Han"},"license":"MIT","bugs":{"url":"https://github.com/andrewthehan/etude.js/issues"},"homepage":"https://github.com/andrewthehan/etude.js#readme","engines":{"node":">=6"},"tonicExample":"const {Accidental, Chord, Degree, Dynamic, Interval, Inversion, Key, KeySignature, Letter, Mode, MusicConstants, Note, Pitch, Scale, Value} = require(\"etude\");","gitHead":"22bc2233b34f1f2dfaa2b78812e01b1f67f9b696","_id":"etude@1.6.0","_shasum":"d6feed7972bf12438852ebb7c6fd4be996da2052","_from":".","_npmVersion":"3.10.5","_nodeVersion":"6.3.1","_npmUser":{"name":"andrewthehan","email":"andrewthehan@gmail.com"},"dist":{"shasum":"d6feed7972bf12438852ebb7c6fd4be996da2052","tarball":"https://registry.npmjs.org/etude/-/etude-1.6.0.tgz","integrity":"sha512-PnQ0ZRZzsLkK3AtArOjyoqP0cTFhXhDr2s5y4MAPHWREHWceIhDYzEFx5Y77/DFcT9LkxYNsJIuATYWrBz2DoQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHwoQNj2qzumAQx1wBfFozjFShymy1MvuwqJ9SJGo6VGAiBxBqrTR79yLdNL/8S4TVbiv6QzMpsWAWKSmy2mvBfN4A=="}]},"maintainers":[{"name":"andrewthehan","email":"andrewthehan@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/etude-1.6.0.tgz_1472533302039_0.3971755055245012"}},"1.6.1":{"name":"etude","version":"1.6.1","description":"JavaScript Music Theory API","main":"js/etude.js","typings":"js/etude","scripts":{"test":"npm run build:compile","build":"npm run build:compile && npm run build:run && npm run build:package","build:compile":"tsc","build:run":"node js/etude.js","build:package":"echo window.etude = require('./etude.js'); > js/package.js && browserify js/package.js -s window -o js/etude-browser.js && rm js/package.js","clean":"rm -rf js"},"repository":{"type":"git","url":"git+https://github.com/andrewthehan/etude.js.git"},"keywords":["etude","music","theory","typescript"],"files":["js/"],"author":{"name":"Andrew Han"},"license":"MIT","bugs":{"url":"https://github.com/andrewthehan/etude.js/issues"},"homepage":"https://github.com/andrewthehan/etude.js#readme","engines":{"node":">=6"},"tonicExample":"const {Accidental, Chord, Degree, Dynamic, Interval, Inversion, Key, KeySignature, Letter, Mode, MusicConstants, Note, Pitch, Scale, TimeSignature, Value} = require(\"etude\");","gitHead":"192c356057a0d75c40671308b60425734f66eaee","_id":"etude@1.6.1","_shasum":"cebe203d05196b8fbdbe33a29db8dbd182d89a0e","_from":".","_npmVersion":"3.10.5","_nodeVersion":"6.3.1","_npmUser":{"name":"andrewthehan","email":"andrewthehan@gmail.com"},"dist":{"shasum":"cebe203d05196b8fbdbe33a29db8dbd182d89a0e","tarball":"https://registry.npmjs.org/etude/-/etude-1.6.1.tgz","integrity":"sha512-bCP3BSUMxG3TqAJX9JxVLZ5XKWTvMCoS4Ecy+VVbpltp3xsUWRzaYrZfYxjSs3+KBmAW/utyFQZ1nHZgMgFCBg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICviN+wfe+3qW+OE84brwrszKYhKdLdxI1bJtMyuU7lSAiEAp9AsfzhV1J41lBzDDHKqF3gObwUVKJSrQ7rH5uhteUc="}]},"maintainers":[{"name":"andrewthehan","email":"andrewthehan@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/etude-1.6.1.tgz_1472533422405_0.5222814381122589"}},"2.1.0":{"name":"etude","version":"2.1.0","description":"JavaScript Music Theory API","main":"js/etude.js","typings":"js/etude","scripts":{"test":"npm run build:compile","build":"npm run build:compile && npm run build:run && npm run build:package","build:compile":"tsc","build:run":"node js/etude.js","build:package":"echo window.etude = require('./etude.js'); > js/package.js && browserify js/package.js -s window -o js/etude-browser.js && rm js/package.js","clean":"rm -rf js"},"repository":{"type":"git","url":"git+https://github.com/andrewthehan/etude.js.git"},"keywords":["etude","music","theory","typescript"],"files":["js/","ts/"],"author":{"name":"Andrew Han"},"license":"MIT","bugs":{"url":"https://github.com/andrewthehan/etude.js/issues"},"homepage":"https://github.com/andrewthehan/etude.js#readme","engines":{"node":">=6"},"tonicExample":"const {Accidental, Chord, Degree, Direction, Dynamic, Interval, Inversion, Key, KeySignature, Letter, Mode, MusicConstants, Note, Pitch, Policy, Scale, Tempo, TimeSignature, Value} = require(\"etude\").theory;","gitHead":"beb84be7064e1e879c64ece0ea46c12cc2ead8e0","_id":"etude@2.1.0","_shasum":"e9a401cfcf3eba1511ab8bb82ab7de2b5e3e0d60","_from":".","_npmVersion":"3.10.5","_nodeVersion":"6.3.1","_npmUser":{"name":"andrewthehan","email":"andrewthehan@gmail.com"},"dist":{"shasum":"e9a401cfcf3eba1511ab8bb82ab7de2b5e3e0d60","tarball":"https://registry.npmjs.org/etude/-/etude-2.1.0.tgz","integrity":"sha512-lhQ7Fzk295styuTjXpN4lTRgFApX+eUPW56L7e4wS+9vL+LoI8euDyXybsTJaK9EIJamTk7gKU3L+N9vU/280w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDZg6jgOT3LoU3zp0iJeytO0NsEA0BdpbLcBQ2tPB0VhQIhAOwnhWjPVrfab3jJALIRHxD3ibYewQxUgJp+Rfyzx+J1"}]},"maintainers":[{"name":"andrewthehan","email":"andrewthehan@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/etude-2.1.0.tgz_1474065191892_0.6232922512572259"}},"3.0.0-0":{"name":"etude","version":"3.0.0-0","description":"JavaScript Music Theory API","main":"js/index.js","typings":"js/etude","scripts":{"test":"npm run build:compile","build":"npm run build:compile && npm run build:package","build:compile":"tsc","build:package":"browserify package.js -s window -o js/etude.browser.js","clean":"rm -rf js"},"repository":{"type":"git","url":"git+https://github.com/andrewthehan/etude.js.git"},"keywords":["etude","music","theory","typescript"],"files":["js/","ts/"],"author":{"name":"Andrew Han"},"license":"MIT","bugs":{"url":"https://github.com/andrewthehan/etude.js/issues"},"homepage":"https://github.com/andrewthehan/etude.js#readme","engines":{"node":">=6"},"gitHead":"56db6fe80dca7c54fc616ed454e5302955036d2f","_id":"etude@3.0.0-0","_npmVersion":"5.5.1","_nodeVersion":"6.3.1","_npmUser":{"name":"andrewthehan","email":"andrewthehan@gmail.com"},"dist":{"integrity":"sha512-lz7Hbj6I1qVe2WbLl8qL71GgpC+MOHQDRnO9q1ez8xCRt5FQhwFNnOV3Slxk/cj9Pm4MXKqC6LF2eI8eqPLvxw==","shasum":"25885471e8e7c5680c60a31c4e8e1df30fdb8d35","tarball":"https://registry.npmjs.org/etude/-/etude-3.0.0-0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB3KWXnxLIm9Ql/1bH2RJEB8jPCQlYEGVcBq604fCXxkAiEA64NbEk+d4sUOueAASnQcAMNWqkGmMPlIAyaWCBHq470="}]},"maintainers":[{"name":"andrewthehan","email":"andrewthehan@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/etude-3.0.0-0.tgz_1509312121532_0.7026391795370728"}}},"homepage":"https://github.com/andrewthehan/etude.js#readme","keywords":["etude","music","theory","typescript"],"repository":{"type":"git","url":"git+https://github.com/andrewthehan/etude.js.git"},"author":{"name":"Andrew Han"},"bugs":{"url":"https://github.com/andrewthehan/etude.js/issues"},"license":"MIT","readmeFilename":"README.md"}