New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

tonal-pcset

Package Overview
Dependencies
Maintainers
1
Versions
26
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

tonal-pcset - npm Package Compare versions

Comparing version 0.69.6 to 0.69.7

96

build/index.js

@@ -11,8 +11,19 @@ 'use strict';

/**
* Functions to create and manipulate pitch class sets
* [![npm version](https://img.shields.io/npm/v/tonal-pcset.svg?style=flat-square)](https://www.npmjs.com/package/tonal-pcset)
* [![tonal](https://img.shields.io/badge/tonal-pcset-yellow.svg?style=flat-square)](https://www.npmjs.com/browse/keyword/tonal)
*
* @example
* `tonal-pcset` is a collection of functions to work with pitch class sets, oriented
* to make comparations (isEqual, isSubset, isSuperset)
*
* This is part of [tonal](https://www.npmjs.com/package/tonal) music theory library.
*
* You can install via npm: `npm i --save tonal-pcset`
*
* ```js
* var pcset = require('tonal-pcset')
* pcset.equal('c2 d5 e6', 'c6 e3 d1') // => true
* pcset.isEqual('c2 d5 e6', 'c6 e3 d1') // => true
* ```
*
* ## API documentation
*
* @module pcset

@@ -45,2 +56,4 @@ */

/**
* @deprecated
* @see collection.pcset
* Given a list of notes, return the pitch class names of the set

@@ -52,2 +65,4 @@ * starting with the first note of the list

function notes (notes) {
// FIXME: move to collection
console.warn('pcset.notes deprecated. Use collection.pcset');
var pcs = tonalArray.map(tonalNote.pc, notes);

@@ -62,6 +77,6 @@ if (!pcs.length) return pcs

/**
* Given a pitch class set (a list of notes or a pitch class set chroma), produce the 12 rotations
* of the chroma (and discard the ones that starts with '0')
* Given a a list of notes or a pcset chroma, produce the rotations
* of the chroma discarding the ones that starts with '0'
*
* This can be used, for example, to get all the modes of a scale.
* This is used, for example, to get all the modes of a scale.
*

@@ -74,5 +89,5 @@ * @param {Array|String} set - the list of notes or pitchChr of the set

* @example
* pcset.chromaModes('C E G')
* pcset.modes('C E G')
*/
function chromaModes (set, normalize) {
function modes (set, normalize) {
normalize = normalize !== false;

@@ -85,2 +100,10 @@ var binary = chroma(set).split('');

}
/**
* @deprecated
* @see modes
*/
function chromaModes (set, norm) {
console.warn('pcset.chromaModes deprecated. Renamed to pcset.modes');
return modes(set, norm)
}

@@ -103,2 +126,17 @@ var REGEX = /^[01]{12}$/;

/**
* Given a pcset (notes or chroma) return it's intervals
* @param {String|Array} pcset - the pitch class set (notes or chroma)
* @return {Array} intervals or empty array if not valid pcset
* @example
* pcset.intervals('1010100000000') => ['C', 'D', 'E']
*/
function intervals (set) {
return tonalArray.compact(chroma(set).split('').map(function (d, i) {
return d === '1' ? IVLS[i] : null
}))
}
/**
* @deprecated
* @see intervals
* Given a pitch class set in binary notation it returns the intervals or notes

@@ -113,9 +151,6 @@ * (depending on the tonic)

function fromChroma (binary, tonic) {
console.warn('pcset.fromChroma is deprecated. Use pcset.intervals().map(...)');
if (arguments.length === 1) return function (t) { return fromChroma(binary, t) }
if (!isChroma(binary)) return null
tonic = tonic || 'P1';
return tonalArray.compact(binary.split('').map(function (d, i) {
return d === '1' ? tonalTranspose.transpose(IVLS[i], tonic) : null
}))
if (!tonic) tonic = 'P1';
return intervals(binary).map(tonalTranspose.transpose(tonic))
}

@@ -130,8 +165,12 @@

* @example
* pcset.equal('c2 d3', 'c5 d2') // => true
* pcset.isEqual('c2 d3', 'c5 d2') // => true
*/
function equal (s1, s2) {
if (arguments.length === 1) return function (s) { return equal(s1, s) }
function isEqual (s1, s2) {
if (arguments.length === 1) return function (s) { return isEqual(s1, s) }
return chroma(s1) === chroma(s2)
}
function equal (a, b) {
console.warn('pcset.equal is deprecated. Use pcset.isEqual');
return isEqual(a, b)
}

@@ -147,7 +186,11 @@ /**

*/
function subset (set, test) {
if (arguments.length === 1) return function (t) { return subset(set, t) }
function isSubset (set, test) {
if (arguments.length === 1) return function (t) { return isSubset(set, t) }
test = chrToInt(test);
return (test & chrToInt(set)) === test
}
function subset (a, b) {
console.warn('pcset.subset is deprecated. Use pcset.isSubset');
return isSubset(a, b)
}

@@ -161,9 +204,13 @@ /**

* @example
* pcset.subset('c d e', 'C2 D4 F4 D5 E5 C6') // => true
* pcset.isSuperset('c d e', 'C2 D4 F4 D5 E5 C6') // => true
*/
function superset (set, test) {
if (arguments.length === 1) return function (t) { return superset(set, t) }
function isSuperset (set, test) {
if (arguments.length === 1) return function (t) { return isSuperset(set, t) }
test = chrToInt(test);
return (test | chrToInt(set)) === test
}
function superset (a, b) {
console.warn('pcset.superset is deprecated. Use pcset.isSuperset');
return isSuperset(a, b)
}

@@ -203,9 +250,14 @@ /**

exports.notes = notes;
exports.modes = modes;
exports.chromaModes = chromaModes;
exports.isChroma = isChroma;
exports.intervals = intervals;
exports.fromChroma = fromChroma;
exports.isEqual = isEqual;
exports.equal = equal;
exports.isSubset = isSubset;
exports.subset = subset;
exports.isSuperset = isSuperset;
exports.superset = superset;
exports.includes = includes;
exports.filter = filter;

@@ -1,2 +0,2 @@

{"/Users/Dani/Code/Js16/tonal/packages/pcset/build/index.js": {"path":"/Users/Dani/Code/Js16/tonal/packages/pcset/build/index.js","statementMap":{"0":{"start":{"line":3,"column":0},"end":{"line":3,"column":62}},"1":{"start":{"line":5,"column":17},"end":{"line":5,"column":39}},"2":{"start":{"line":6,"column":16},"end":{"line":6,"column":37}},"3":{"start":{"line":7,"column":17},"end":{"line":7,"column":39}},"4":{"start":{"line":8,"column":21},"end":{"line":8,"column":47}},"5":{"start":{"line":19,"column":26},"end":{"line":19,"column":57}},"6":{"start":{"line":20,"column":24},"end":{"line":20,"column":50}},"7":{"start":{"line":20,"column":51},"end":{"line":20,"column":86}},"8":{"start":{"line":35,"column":2},"end":{"line":35,"column":31}},"9":{"start":{"line":35,"column":21},"end":{"line":35,"column":31}},"10":{"start":{"line":36,"column":10},"end":{"line":36,"column":46}},"11":{"start":{"line":37,"column":2},"end":{"line":39,"column":5}},"12":{"start":{"line":38,"column":4},"end":{"line":38,"column":13}},"13":{"start":{"line":40,"column":2},"end":{"line":40,"column":19}},"14":{"start":{"line":50,"column":12},"end":{"line":50,"column":47}},"15":{"start":{"line":51,"column":2},"end":{"line":51,"column":29}},"16":{"start":{"line":51,"column":19},"end":{"line":51,"column":29}},"17":{"start":{"line":52,"column":14},"end":{"line":52,"column":20}},"18":{"start":{"line":54,"column":16},"end":{"line":54,"column":82}},"19":{"start":{"line":55,"column":2},"end":{"line":55,"column":35}},"20":{"start":{"line":73,"column":2},"end":{"line":73,"column":34}},"21":{"start":{"line":74,"column":15},"end":{"line":74,"column":36}},"22":{"start":{"line":75,"column":2},"end":{"line":78,"column":5}},"23":{"start":{"line":76,"column":12},"end":{"line":76,"column":40}},"24":{"start":{"line":77,"column":4},"end":{"line":77,"column":56}},"25":{"start":{"line":81,"column":12},"end":{"line":81,"column":24}},"26":{"start":{"line":92,"column":2},"end":{"line":92,"column":24}},"27":{"start":{"line":95,"column":11},"end":{"line":95,"column":59}},"28":{"start":{"line":106,"column":2},"end":{"line":106,"column":82}},"29":{"start":{"line":106,"column":30},"end":{"line":106,"column":82}},"30":{"start":{"line":106,"column":52},"end":{"line":106,"column":80}},"31":{"start":{"line":107,"column":2},"end":{"line":107,"column":36}},"32":{"start":{"line":107,"column":25},"end":{"line":107,"column":36}},"33":{"start":{"line":109,"column":2},"end":{"line":109,"column":24}},"34":{"start":{"line":110,"column":2},"end":{"line":112,"column":5}},"35":{"start":{"line":111,"column":4},"end":{"line":111,"column":70}},"36":{"start":{"line":125,"column":2},"end":{"line":125,"column":73}},"37":{"start":{"line":125,"column":30},"end":{"line":125,"column":73}},"38":{"start":{"line":125,"column":52},"end":{"line":125,"column":71}},"39":{"start":{"line":126,"column":2},"end":{"line":126,"column":34}},"40":{"start":{"line":139,"column":2},"end":{"line":139,"column":75}},"41":{"start":{"line":139,"column":30},"end":{"line":139,"column":75}},"42":{"start":{"line":139,"column":52},"end":{"line":139,"column":73}},"43":{"start":{"line":140,"column":2},"end":{"line":140,"column":24}},"44":{"start":{"line":141,"column":2},"end":{"line":141,"column":40}},"45":{"start":{"line":154,"column":2},"end":{"line":154,"column":77}},"46":{"start":{"line":154,"column":30},"end":{"line":154,"column":77}},"47":{"start":{"line":154,"column":52},"end":{"line":154,"column":75}},"48":{"start":{"line":155,"column":2},"end":{"line":155,"column":24}},"49":{"start":{"line":156,"column":2},"end":{"line":156,"column":40}},"50":{"start":{"line":169,"column":2},"end":{"line":169,"column":54}},"51":{"start":{"line":169,"column":28},"end":{"line":169,"column":54}},"52":{"start":{"line":170,"column":2},"end":{"line":170,"column":20}},"53":{"start":{"line":171,"column":2},"end":{"line":171,"column":63}},"54":{"start":{"line":171,"column":27},"end":{"line":171,"column":61}},"55":{"start":{"line":186,"column":2},"end":{"line":186,"column":75}},"56":{"start":{"line":186,"column":30},"end":{"line":186,"column":75}},"57":{"start":{"line":186,"column":52},"end":{"line":186,"column":73}},"58":{"start":{"line":187,"column":2},"end":{"line":187,"column":54}},"59":{"start":{"line":190,"column":0},"end":{"line":190,"column":24}},"60":{"start":{"line":191,"column":0},"end":{"line":191,"column":22}},"61":{"start":{"line":192,"column":0},"end":{"line":192,"column":34}},"62":{"start":{"line":193,"column":0},"end":{"line":193,"column":28}},"63":{"start":{"line":194,"column":0},"end":{"line":194,"column":32}},"64":{"start":{"line":195,"column":0},"end":{"line":195,"column":22}},"65":{"start":{"line":196,"column":0},"end":{"line":196,"column":24}},"66":{"start":{"line":197,"column":0},"end":{"line":197,"column":28}},"67":{"start":{"line":198,"column":0},"end":{"line":198,"column":28}},"68":{"start":{"line":199,"column":0},"end":{"line":199,"column":24}}},"fnMap":{"0":{"name":"chrToInt","decl":{"start":{"line":19,"column":9},"end":{"line":19,"column":17}},"loc":{"start":{"line":19,"column":24},"end":{"line":19,"column":59}}},"1":{"name":"pitchChr","decl":{"start":{"line":20,"column":9},"end":{"line":20,"column":17}},"loc":{"start":{"line":20,"column":22},"end":{"line":20,"column":88}}},"2":{"name":"chroma","decl":{"start":{"line":34,"column":9},"end":{"line":34,"column":15}},"loc":{"start":{"line":34,"column":22},"end":{"line":41,"column":1}}},"3":{"name":"(anonymous_3)","decl":{"start":{"line":37,"column":40},"end":{"line":37,"column":41}},"loc":{"start":{"line":37,"column":53},"end":{"line":39,"column":3}}},"4":{"name":"notes","decl":{"start":{"line":49,"column":9},"end":{"line":49,"column":14}},"loc":{"start":{"line":49,"column":23},"end":{"line":56,"column":1}}},"5":{"name":"chromaModes","decl":{"start":{"line":72,"column":9},"end":{"line":72,"column":20}},"loc":{"start":{"line":72,"column":38},"end":{"line":79,"column":1}}},"6":{"name":"(anonymous_6)","decl":{"start":{"line":75,"column":39},"end":{"line":75,"column":40}},"loc":{"start":{"line":75,"column":55},"end":{"line":78,"column":3}}},"7":{"name":"isChroma","decl":{"start":{"line":91,"column":9},"end":{"line":91,"column":17}},"loc":{"start":{"line":91,"column":24},"end":{"line":93,"column":1}}},"8":{"name":"fromChroma","decl":{"start":{"line":105,"column":9},"end":{"line":105,"column":19}},"loc":{"start":{"line":105,"column":36},"end":{"line":113,"column":1}}},"9":{"name":"(anonymous_9)","decl":{"start":{"line":106,"column":37},"end":{"line":106,"column":38}},"loc":{"start":{"line":106,"column":50},"end":{"line":106,"column":82}}},"10":{"name":"(anonymous_10)","decl":{"start":{"line":110,"column":49},"end":{"line":110,"column":50}},"loc":{"start":{"line":110,"column":65},"end":{"line":112,"column":3}}},"11":{"name":"equal","decl":{"start":{"line":124,"column":9},"end":{"line":124,"column":14}},"loc":{"start":{"line":124,"column":24},"end":{"line":127,"column":1}}},"12":{"name":"(anonymous_12)","decl":{"start":{"line":125,"column":37},"end":{"line":125,"column":38}},"loc":{"start":{"line":125,"column":50},"end":{"line":125,"column":73}}},"13":{"name":"subset","decl":{"start":{"line":138,"column":9},"end":{"line":138,"column":15}},"loc":{"start":{"line":138,"column":28},"end":{"line":142,"column":1}}},"14":{"name":"(anonymous_14)","decl":{"start":{"line":139,"column":37},"end":{"line":139,"column":38}},"loc":{"start":{"line":139,"column":50},"end":{"line":139,"column":75}}},"15":{"name":"superset","decl":{"start":{"line":153,"column":9},"end":{"line":153,"column":17}},"loc":{"start":{"line":153,"column":30},"end":{"line":157,"column":1}}},"16":{"name":"(anonymous_16)","decl":{"start":{"line":154,"column":37},"end":{"line":154,"column":38}},"loc":{"start":{"line":154,"column":50},"end":{"line":154,"column":77}}},"17":{"name":"includes","decl":{"start":{"line":168,"column":9},"end":{"line":168,"column":17}},"loc":{"start":{"line":168,"column":30},"end":{"line":172,"column":1}}},"18":{"name":"(anonymous_18)","decl":{"start":{"line":171,"column":9},"end":{"line":171,"column":10}},"loc":{"start":{"line":171,"column":25},"end":{"line":171,"column":63}}},"19":{"name":"filter","decl":{"start":{"line":185,"column":9},"end":{"line":185,"column":15}},"loc":{"start":{"line":185,"column":29},"end":{"line":188,"column":1}}},"20":{"name":"(anonymous_20)","decl":{"start":{"line":186,"column":37},"end":{"line":186,"column":38}},"loc":{"start":{"line":186,"column":50},"end":{"line":186,"column":75}}}},"branchMap":{"0":{"loc":{"start":{"line":20,"column":58},"end":{"line":20,"column":86}},"type":"cond-expr","locations":[{"start":{"line":20,"column":62},"end":{"line":20,"column":79}},{"start":{"line":20,"column":82},"end":{"line":20,"column":86}}]},"1":{"loc":{"start":{"line":35,"column":2},"end":{"line":35,"column":31}},"type":"if","locations":[{"start":{"line":35,"column":2},"end":{"line":35,"column":31}},{"start":{"line":35,"column":2},"end":{"line":35,"column":31}}]},"2":{"loc":{"start":{"line":51,"column":2},"end":{"line":51,"column":29}},"type":"if","locations":[{"start":{"line":51,"column":2},"end":{"line":51,"column":29}},{"start":{"line":51,"column":2},"end":{"line":51,"column":29}}]},"3":{"loc":{"start":{"line":77,"column":11},"end":{"line":77,"column":56}},"type":"cond-expr","locations":[{"start":{"line":77,"column":39},"end":{"line":77,"column":43}},{"start":{"line":77,"column":46},"end":{"line":77,"column":56}}]},"4":{"loc":{"start":{"line":77,"column":11},"end":{"line":77,"column":36}},"type":"binary-expr","locations":[{"start":{"line":77,"column":11},"end":{"line":77,"column":20}},{"start":{"line":77,"column":24},"end":{"line":77,"column":36}}]},"5":{"loc":{"start":{"line":106,"column":2},"end":{"line":106,"column":82}},"type":"if","locations":[{"start":{"line":106,"column":2},"end":{"line":106,"column":82}},{"start":{"line":106,"column":2},"end":{"line":106,"column":82}}]},"6":{"loc":{"start":{"line":107,"column":2},"end":{"line":107,"column":36}},"type":"if","locations":[{"start":{"line":107,"column":2},"end":{"line":107,"column":36}},{"start":{"line":107,"column":2},"end":{"line":107,"column":36}}]},"7":{"loc":{"start":{"line":109,"column":10},"end":{"line":109,"column":23}},"type":"binary-expr","locations":[{"start":{"line":109,"column":10},"end":{"line":109,"column":15}},{"start":{"line":109,"column":19},"end":{"line":109,"column":23}}]},"8":{"loc":{"start":{"line":111,"column":11},"end":{"line":111,"column":70}},"type":"cond-expr","locations":[{"start":{"line":111,"column":23},"end":{"line":111,"column":63}},{"start":{"line":111,"column":66},"end":{"line":111,"column":70}}]},"9":{"loc":{"start":{"line":125,"column":2},"end":{"line":125,"column":73}},"type":"if","locations":[{"start":{"line":125,"column":2},"end":{"line":125,"column":73}},{"start":{"line":125,"column":2},"end":{"line":125,"column":73}}]},"10":{"loc":{"start":{"line":139,"column":2},"end":{"line":139,"column":75}},"type":"if","locations":[{"start":{"line":139,"column":2},"end":{"line":139,"column":75}},{"start":{"line":139,"column":2},"end":{"line":139,"column":75}}]},"11":{"loc":{"start":{"line":154,"column":2},"end":{"line":154,"column":77}},"type":"if","locations":[{"start":{"line":154,"column":2},"end":{"line":154,"column":77}},{"start":{"line":154,"column":2},"end":{"line":154,"column":77}}]},"12":{"loc":{"start":{"line":169,"column":2},"end":{"line":169,"column":54}},"type":"if","locations":[{"start":{"line":169,"column":2},"end":{"line":169,"column":54}},{"start":{"line":169,"column":2},"end":{"line":169,"column":54}}]},"13":{"loc":{"start":{"line":186,"column":2},"end":{"line":186,"column":75}},"type":"if","locations":[{"start":{"line":186,"column":2},"end":{"line":186,"column":75}},{"start":{"line":186,"column":2},"end":{"line":186,"column":75}}]}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":14,"6":138,"7":138,"8":34,"9":1,"10":33,"11":33,"12":121,"13":33,"14":3,"15":3,"16":0,"17":3,"18":3,"19":3,"20":4,"21":4,"22":4,"23":48,"24":48,"25":1,"26":52,"27":1,"28":15,"29":1,"30":1,"31":14,"32":1,"33":13,"34":13,"35":156,"36":3,"37":1,"38":1,"39":2,"40":5,"41":1,"42":1,"43":4,"44":4,"45":4,"46":1,"47":1,"48":3,"49":3,"50":6,"51":2,"52":4,"53":4,"54":14,"55":3,"56":1,"57":1,"58":2,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1},"f":{"0":14,"1":138,"2":34,"3":121,"4":3,"5":4,"6":48,"7":52,"8":15,"9":1,"10":156,"11":3,"12":1,"13":5,"14":1,"15":4,"16":1,"17":6,"18":14,"19":3,"20":1},"b":{"0":[131,7],"1":[1,33],"2":[0,3],"3":[22,26],"4":[48,36],"5":[1,14],"6":[1,13],"7":[13,3],"8":[69,87],"9":[1,2],"10":[1,4],"11":[1,3],"12":[2,4],"13":[1,2]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"5c8d94c14492308dae05b7ff8b42569a728869c2"}
{"/Users/Dani/Code/Js16/tonal/packages/core/pcset/build/index.js": {"path":"/Users/Dani/Code/Js16/tonal/packages/core/pcset/build/index.js","statementMap":{"0":{"start":{"line":3,"column":0},"end":{"line":3,"column":62}},"1":{"start":{"line":5,"column":17},"end":{"line":5,"column":39}},"2":{"start":{"line":6,"column":16},"end":{"line":6,"column":37}},"3":{"start":{"line":7,"column":17},"end":{"line":7,"column":39}},"4":{"start":{"line":8,"column":21},"end":{"line":8,"column":47}},"5":{"start":{"line":30,"column":26},"end":{"line":30,"column":57}},"6":{"start":{"line":31,"column":24},"end":{"line":31,"column":50}},"7":{"start":{"line":31,"column":51},"end":{"line":31,"column":86}},"8":{"start":{"line":46,"column":2},"end":{"line":46,"column":31}},"9":{"start":{"line":46,"column":21},"end":{"line":46,"column":31}},"10":{"start":{"line":47,"column":10},"end":{"line":47,"column":46}},"11":{"start":{"line":48,"column":2},"end":{"line":50,"column":5}},"12":{"start":{"line":49,"column":4},"end":{"line":49,"column":13}},"13":{"start":{"line":51,"column":2},"end":{"line":51,"column":19}},"14":{"start":{"line":63,"column":12},"end":{"line":63,"column":47}},"15":{"start":{"line":64,"column":2},"end":{"line":64,"column":29}},"16":{"start":{"line":64,"column":19},"end":{"line":64,"column":29}},"17":{"start":{"line":65,"column":14},"end":{"line":65,"column":20}},"18":{"start":{"line":67,"column":16},"end":{"line":67,"column":82}},"19":{"start":{"line":68,"column":2},"end":{"line":68,"column":64}},"20":{"start":{"line":86,"column":2},"end":{"line":86,"column":34}},"21":{"start":{"line":87,"column":2},"end":{"line":90,"column":5}},"22":{"start":{"line":88,"column":12},"end":{"line":88,"column":40}},"23":{"start":{"line":89,"column":4},"end":{"line":89,"column":56}},"24":{"start":{"line":97,"column":2},"end":{"line":97,"column":71}},"25":{"start":{"line":98,"column":2},"end":{"line":98,"column":33}},"26":{"start":{"line":101,"column":12},"end":{"line":101,"column":24}},"27":{"start":{"line":112,"column":2},"end":{"line":112,"column":24}},"28":{"start":{"line":115,"column":11},"end":{"line":115,"column":59}},"29":{"start":{"line":124,"column":2},"end":{"line":126,"column":5}},"30":{"start":{"line":125,"column":4},"end":{"line":125,"column":37}},"31":{"start":{"line":141,"column":2},"end":{"line":141,"column":81}},"32":{"start":{"line":142,"column":2},"end":{"line":142,"column":82}},"33":{"start":{"line":142,"column":30},"end":{"line":142,"column":82}},"34":{"start":{"line":142,"column":52},"end":{"line":142,"column":80}},"35":{"start":{"line":143,"column":2},"end":{"line":143,"column":27}},"36":{"start":{"line":143,"column":14},"end":{"line":143,"column":27}},"37":{"start":{"line":144,"column":2},"end":{"line":144,"column":63}},"38":{"start":{"line":157,"column":2},"end":{"line":157,"column":75}},"39":{"start":{"line":157,"column":30},"end":{"line":157,"column":75}},"40":{"start":{"line":157,"column":52},"end":{"line":157,"column":73}},"41":{"start":{"line":158,"column":2},"end":{"line":158,"column":34}},"42":{"start":{"line":161,"column":2},"end":{"line":161,"column":63}},"43":{"start":{"line":162,"column":2},"end":{"line":162,"column":22}},"44":{"start":{"line":175,"column":2},"end":{"line":175,"column":77}},"45":{"start":{"line":175,"column":30},"end":{"line":175,"column":77}},"46":{"start":{"line":175,"column":52},"end":{"line":175,"column":75}},"47":{"start":{"line":176,"column":2},"end":{"line":176,"column":24}},"48":{"start":{"line":177,"column":2},"end":{"line":177,"column":40}},"49":{"start":{"line":180,"column":2},"end":{"line":180,"column":65}},"50":{"start":{"line":181,"column":2},"end":{"line":181,"column":23}},"51":{"start":{"line":194,"column":2},"end":{"line":194,"column":79}},"52":{"start":{"line":194,"column":30},"end":{"line":194,"column":79}},"53":{"start":{"line":194,"column":52},"end":{"line":194,"column":77}},"54":{"start":{"line":195,"column":2},"end":{"line":195,"column":24}},"55":{"start":{"line":196,"column":2},"end":{"line":196,"column":40}},"56":{"start":{"line":199,"column":2},"end":{"line":199,"column":69}},"57":{"start":{"line":200,"column":2},"end":{"line":200,"column":25}},"58":{"start":{"line":213,"column":2},"end":{"line":213,"column":54}},"59":{"start":{"line":213,"column":28},"end":{"line":213,"column":54}},"60":{"start":{"line":214,"column":2},"end":{"line":214,"column":20}},"61":{"start":{"line":215,"column":2},"end":{"line":215,"column":63}},"62":{"start":{"line":215,"column":27},"end":{"line":215,"column":61}},"63":{"start":{"line":230,"column":2},"end":{"line":230,"column":75}},"64":{"start":{"line":230,"column":30},"end":{"line":230,"column":75}},"65":{"start":{"line":230,"column":52},"end":{"line":230,"column":73}},"66":{"start":{"line":231,"column":2},"end":{"line":231,"column":54}},"67":{"start":{"line":234,"column":0},"end":{"line":234,"column":24}},"68":{"start":{"line":235,"column":0},"end":{"line":235,"column":22}},"69":{"start":{"line":236,"column":0},"end":{"line":236,"column":22}},"70":{"start":{"line":237,"column":0},"end":{"line":237,"column":34}},"71":{"start":{"line":238,"column":0},"end":{"line":238,"column":28}},"72":{"start":{"line":239,"column":0},"end":{"line":239,"column":30}},"73":{"start":{"line":240,"column":0},"end":{"line":240,"column":32}},"74":{"start":{"line":241,"column":0},"end":{"line":241,"column":26}},"75":{"start":{"line":242,"column":0},"end":{"line":242,"column":22}},"76":{"start":{"line":243,"column":0},"end":{"line":243,"column":28}},"77":{"start":{"line":244,"column":0},"end":{"line":244,"column":24}},"78":{"start":{"line":245,"column":0},"end":{"line":245,"column":32}},"79":{"start":{"line":246,"column":0},"end":{"line":246,"column":28}},"80":{"start":{"line":247,"column":0},"end":{"line":247,"column":28}},"81":{"start":{"line":248,"column":0},"end":{"line":248,"column":24}}},"fnMap":{"0":{"name":"chrToInt","decl":{"start":{"line":30,"column":9},"end":{"line":30,"column":17}},"loc":{"start":{"line":30,"column":24},"end":{"line":30,"column":59}},"line":30},"1":{"name":"pitchChr","decl":{"start":{"line":31,"column":9},"end":{"line":31,"column":17}},"loc":{"start":{"line":31,"column":22},"end":{"line":31,"column":88}},"line":31},"2":{"name":"chroma","decl":{"start":{"line":45,"column":9},"end":{"line":45,"column":15}},"loc":{"start":{"line":45,"column":22},"end":{"line":52,"column":1}},"line":45},"3":{"name":"(anonymous_3)","decl":{"start":{"line":48,"column":40},"end":{"line":48,"column":41}},"loc":{"start":{"line":48,"column":53},"end":{"line":50,"column":3}},"line":48},"4":{"name":"notes","decl":{"start":{"line":62,"column":9},"end":{"line":62,"column":14}},"loc":{"start":{"line":62,"column":23},"end":{"line":69,"column":1}},"line":62},"5":{"name":"modes","decl":{"start":{"line":85,"column":9},"end":{"line":85,"column":14}},"loc":{"start":{"line":85,"column":35},"end":{"line":91,"column":1}},"line":85},"6":{"name":"(anonymous_6)","decl":{"start":{"line":87,"column":49},"end":{"line":87,"column":50}},"loc":{"start":{"line":87,"column":65},"end":{"line":90,"column":3}},"line":87},"7":{"name":"chromaModes","decl":{"start":{"line":96,"column":9},"end":{"line":96,"column":20}},"loc":{"start":{"line":96,"column":33},"end":{"line":99,"column":1}},"line":96},"8":{"name":"isChroma","decl":{"start":{"line":111,"column":9},"end":{"line":111,"column":17}},"loc":{"start":{"line":111,"column":24},"end":{"line":113,"column":1}},"line":111},"9":{"name":"intervals","decl":{"start":{"line":123,"column":9},"end":{"line":123,"column":18}},"loc":{"start":{"line":123,"column":25},"end":{"line":127,"column":1}},"line":123},"10":{"name":"(anonymous_10)","decl":{"start":{"line":124,"column":54},"end":{"line":124,"column":55}},"loc":{"start":{"line":124,"column":70},"end":{"line":126,"column":3}},"line":124},"11":{"name":"fromChroma","decl":{"start":{"line":140,"column":9},"end":{"line":140,"column":19}},"loc":{"start":{"line":140,"column":36},"end":{"line":145,"column":1}},"line":140},"12":{"name":"(anonymous_12)","decl":{"start":{"line":142,"column":37},"end":{"line":142,"column":38}},"loc":{"start":{"line":142,"column":50},"end":{"line":142,"column":82}},"line":142},"13":{"name":"isEqual","decl":{"start":{"line":156,"column":9},"end":{"line":156,"column":16}},"loc":{"start":{"line":156,"column":26},"end":{"line":159,"column":1}},"line":156},"14":{"name":"(anonymous_14)","decl":{"start":{"line":157,"column":37},"end":{"line":157,"column":38}},"loc":{"start":{"line":157,"column":50},"end":{"line":157,"column":75}},"line":157},"15":{"name":"equal","decl":{"start":{"line":160,"column":9},"end":{"line":160,"column":14}},"loc":{"start":{"line":160,"column":22},"end":{"line":163,"column":1}},"line":160},"16":{"name":"isSubset","decl":{"start":{"line":174,"column":9},"end":{"line":174,"column":17}},"loc":{"start":{"line":174,"column":30},"end":{"line":178,"column":1}},"line":174},"17":{"name":"(anonymous_17)","decl":{"start":{"line":175,"column":37},"end":{"line":175,"column":38}},"loc":{"start":{"line":175,"column":50},"end":{"line":175,"column":77}},"line":175},"18":{"name":"subset","decl":{"start":{"line":179,"column":9},"end":{"line":179,"column":15}},"loc":{"start":{"line":179,"column":23},"end":{"line":182,"column":1}},"line":179},"19":{"name":"isSuperset","decl":{"start":{"line":193,"column":9},"end":{"line":193,"column":19}},"loc":{"start":{"line":193,"column":32},"end":{"line":197,"column":1}},"line":193},"20":{"name":"(anonymous_20)","decl":{"start":{"line":194,"column":37},"end":{"line":194,"column":38}},"loc":{"start":{"line":194,"column":50},"end":{"line":194,"column":79}},"line":194},"21":{"name":"superset","decl":{"start":{"line":198,"column":9},"end":{"line":198,"column":17}},"loc":{"start":{"line":198,"column":25},"end":{"line":201,"column":1}},"line":198},"22":{"name":"includes","decl":{"start":{"line":212,"column":9},"end":{"line":212,"column":17}},"loc":{"start":{"line":212,"column":30},"end":{"line":216,"column":1}},"line":212},"23":{"name":"(anonymous_23)","decl":{"start":{"line":215,"column":9},"end":{"line":215,"column":10}},"loc":{"start":{"line":215,"column":25},"end":{"line":215,"column":63}},"line":215},"24":{"name":"filter","decl":{"start":{"line":229,"column":9},"end":{"line":229,"column":15}},"loc":{"start":{"line":229,"column":29},"end":{"line":232,"column":1}},"line":229},"25":{"name":"(anonymous_25)","decl":{"start":{"line":230,"column":37},"end":{"line":230,"column":38}},"loc":{"start":{"line":230,"column":50},"end":{"line":230,"column":75}},"line":230}},"branchMap":{"0":{"loc":{"start":{"line":31,"column":58},"end":{"line":31,"column":86}},"type":"cond-expr","locations":[{"start":{"line":31,"column":62},"end":{"line":31,"column":79}},{"start":{"line":31,"column":82},"end":{"line":31,"column":86}}],"line":31},"1":{"loc":{"start":{"line":46,"column":2},"end":{"line":46,"column":31}},"type":"if","locations":[{"start":{"line":46,"column":2},"end":{"line":46,"column":31}},{"start":{"line":46,"column":2},"end":{"line":46,"column":31}}],"line":46},"2":{"loc":{"start":{"line":64,"column":2},"end":{"line":64,"column":29}},"type":"if","locations":[{"start":{"line":64,"column":2},"end":{"line":64,"column":29}},{"start":{"line":64,"column":2},"end":{"line":64,"column":29}}],"line":64},"3":{"loc":{"start":{"line":89,"column":11},"end":{"line":89,"column":56}},"type":"cond-expr","locations":[{"start":{"line":89,"column":39},"end":{"line":89,"column":43}},{"start":{"line":89,"column":46},"end":{"line":89,"column":56}}],"line":89},"4":{"loc":{"start":{"line":89,"column":11},"end":{"line":89,"column":36}},"type":"binary-expr","locations":[{"start":{"line":89,"column":11},"end":{"line":89,"column":20}},{"start":{"line":89,"column":24},"end":{"line":89,"column":36}}],"line":89},"5":{"loc":{"start":{"line":125,"column":11},"end":{"line":125,"column":37}},"type":"cond-expr","locations":[{"start":{"line":125,"column":23},"end":{"line":125,"column":30}},{"start":{"line":125,"column":33},"end":{"line":125,"column":37}}],"line":125},"6":{"loc":{"start":{"line":142,"column":2},"end":{"line":142,"column":82}},"type":"if","locations":[{"start":{"line":142,"column":2},"end":{"line":142,"column":82}},{"start":{"line":142,"column":2},"end":{"line":142,"column":82}}],"line":142},"7":{"loc":{"start":{"line":143,"column":2},"end":{"line":143,"column":27}},"type":"if","locations":[{"start":{"line":143,"column":2},"end":{"line":143,"column":27}},{"start":{"line":143,"column":2},"end":{"line":143,"column":27}}],"line":143},"8":{"loc":{"start":{"line":157,"column":2},"end":{"line":157,"column":75}},"type":"if","locations":[{"start":{"line":157,"column":2},"end":{"line":157,"column":75}},{"start":{"line":157,"column":2},"end":{"line":157,"column":75}}],"line":157},"9":{"loc":{"start":{"line":175,"column":2},"end":{"line":175,"column":77}},"type":"if","locations":[{"start":{"line":175,"column":2},"end":{"line":175,"column":77}},{"start":{"line":175,"column":2},"end":{"line":175,"column":77}}],"line":175},"10":{"loc":{"start":{"line":194,"column":2},"end":{"line":194,"column":79}},"type":"if","locations":[{"start":{"line":194,"column":2},"end":{"line":194,"column":79}},{"start":{"line":194,"column":2},"end":{"line":194,"column":79}}],"line":194},"11":{"loc":{"start":{"line":213,"column":2},"end":{"line":213,"column":54}},"type":"if","locations":[{"start":{"line":213,"column":2},"end":{"line":213,"column":54}},{"start":{"line":213,"column":2},"end":{"line":213,"column":54}}],"line":213},"12":{"loc":{"start":{"line":230,"column":2},"end":{"line":230,"column":75}},"type":"if","locations":[{"start":{"line":230,"column":2},"end":{"line":230,"column":75}},{"start":{"line":230,"column":2},"end":{"line":230,"column":75}}],"line":230}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":14,"6":127,"7":127,"8":46,"9":4,"10":42,"11":42,"12":111,"13":42,"14":3,"15":3,"16":1,"17":2,"18":2,"19":2,"20":2,"21":2,"22":26,"23":26,"24":0,"25":0,"26":1,"27":50,"28":1,"29":17,"30":204,"31":13,"32":13,"33":0,"34":0,"35":13,"36":0,"37":13,"38":3,"39":1,"40":1,"41":2,"42":0,"43":0,"44":5,"45":1,"46":1,"47":4,"48":4,"49":0,"50":0,"51":4,"52":1,"53":1,"54":3,"55":3,"56":0,"57":0,"58":6,"59":2,"60":4,"61":4,"62":14,"63":3,"64":1,"65":1,"66":2,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1},"f":{"0":14,"1":127,"2":46,"3":111,"4":3,"5":2,"6":26,"7":0,"8":50,"9":17,"10":204,"11":13,"12":0,"13":3,"14":1,"15":0,"16":5,"17":1,"18":0,"19":4,"20":1,"21":0,"22":6,"23":14,"24":3,"25":1},"b":{"0":[110,17],"1":[4,42],"2":[1,2],"3":[0,26],"4":[26,26],"5":[11,193],"6":[0,13],"7":[0,13],"8":[1,2],"9":[1,4],"10":[1,3],"11":[2,4],"12":[1,2]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"490b411ad5a8e1339ef677134d87184d4f1bcb70"}
}
/**
* Functions to create and manipulate pitch class sets
* [![npm version](https://img.shields.io/npm/v/tonal-pcset.svg?style=flat-square)](https://www.npmjs.com/package/tonal-pcset)
* [![tonal](https://img.shields.io/badge/tonal-pcset-yellow.svg?style=flat-square)](https://www.npmjs.com/browse/keyword/tonal)
*
* @example
* `tonal-pcset` is a collection of functions to work with pitch class sets, oriented
* to make comparations (isEqual, isSubset, isSuperset)
*
* This is part of [tonal](https://www.npmjs.com/package/tonal) music theory library.
*
* You can install via npm: `npm i --save tonal-pcset`
*
* ```js
* var pcset = require('tonal-pcset')
* pcset.equal('c2 d5 e6', 'c6 e3 d1') // => true
* pcset.isEqual('c2 d5 e6', 'c6 e3 d1') // => true
* ```
*
* ## API documentation
*
* @module pcset

@@ -40,2 +51,4 @@ */

/**
* @deprecated
* @see collection.pcset
* Given a list of notes, return the pitch class names of the set

@@ -47,2 +60,4 @@ * starting with the first note of the list

export function notes (notes) {
// FIXME: move to collection
console.warn('pcset.notes deprecated. Use collection.pcset')
var pcs = map(pc, notes)

@@ -57,6 +72,6 @@ if (!pcs.length) return pcs

/**
* Given a pitch class set (a list of notes or a pitch class set chroma), produce the 12 rotations
* of the chroma (and discard the ones that starts with '0')
* Given a a list of notes or a pcset chroma, produce the rotations
* of the chroma discarding the ones that starts with '0'
*
* This can be used, for example, to get all the modes of a scale.
* This is used, for example, to get all the modes of a scale.
*

@@ -69,5 +84,5 @@ * @param {Array|String} set - the list of notes or pitchChr of the set

* @example
* pcset.chromaModes('C E G')
* pcset.modes('C E G')
*/
export function chromaModes (set, normalize) {
export function modes (set, normalize) {
normalize = normalize !== false

@@ -80,2 +95,10 @@ var binary = chroma(set).split('')

}
/**
* @deprecated
* @see modes
*/
export function chromaModes (set, norm) {
console.warn('pcset.chromaModes deprecated. Renamed to pcset.modes')
return modes(set, norm)
}

@@ -98,2 +121,17 @@ var REGEX = /^[01]{12}$/

/**
* Given a pcset (notes or chroma) return it's intervals
* @param {String|Array} pcset - the pitch class set (notes or chroma)
* @return {Array} intervals or empty array if not valid pcset
* @example
* pcset.intervals('1010100000000') => ['C', 'D', 'E']
*/
export function intervals (set) {
return compact(chroma(set).split('').map(function (d, i) {
return d === '1' ? IVLS[i] : null
}))
}
/**
* @deprecated
* @see intervals
* Given a pitch class set in binary notation it returns the intervals or notes

@@ -108,9 +146,6 @@ * (depending on the tonic)

export function fromChroma (binary, tonic) {
console.warn('pcset.fromChroma is deprecated. Use pcset.intervals().map(...)')
if (arguments.length === 1) return function (t) { return fromChroma(binary, t) }
if (!isChroma(binary)) return null
tonic = tonic || 'P1'
return compact(binary.split('').map(function (d, i) {
return d === '1' ? transpose(IVLS[i], tonic) : null
}))
if (!tonic) tonic = 'P1'
return intervals(binary).map(transpose(tonic))
}

@@ -125,8 +160,12 @@

* @example
* pcset.equal('c2 d3', 'c5 d2') // => true
* pcset.isEqual('c2 d3', 'c5 d2') // => true
*/
export function equal (s1, s2) {
if (arguments.length === 1) return function (s) { return equal(s1, s) }
export function isEqual (s1, s2) {
if (arguments.length === 1) return function (s) { return isEqual(s1, s) }
return chroma(s1) === chroma(s2)
}
export function equal (a, b) {
console.warn('pcset.equal is deprecated. Use pcset.isEqual')
return isEqual(a, b)
}

@@ -142,7 +181,11 @@ /**

*/
export function subset (set, test) {
if (arguments.length === 1) return function (t) { return subset(set, t) }
export function isSubset (set, test) {
if (arguments.length === 1) return function (t) { return isSubset(set, t) }
test = chrToInt(test)
return (test & chrToInt(set)) === test
}
export function subset (a, b) {
console.warn('pcset.subset is deprecated. Use pcset.isSubset')
return isSubset(a, b)
}

@@ -156,9 +199,13 @@ /**

* @example
* pcset.subset('c d e', 'C2 D4 F4 D5 E5 C6') // => true
* pcset.isSuperset('c d e', 'C2 D4 F4 D5 E5 C6') // => true
*/
export function superset (set, test) {
if (arguments.length === 1) return function (t) { return superset(set, t) }
export function isSuperset (set, test) {
if (arguments.length === 1) return function (t) { return isSuperset(set, t) }
test = chrToInt(test)
return (test | chrToInt(set)) === test
}
export function superset (a, b) {
console.warn('pcset.superset is deprecated. Use pcset.isSuperset')
return isSuperset(a, b)
}

@@ -165,0 +212,0 @@ /**

{
"name": "tonal-pcset",
"version": "0.69.6",
"version": "0.69.7",
"description": "Pitch class sets",

@@ -13,2 +13,4 @@ "keywords": [

"scripts": {
"pretest": "rollup -c ../../../rollup.config.js -o build/index.js -- index.js",
"docs": "jsdoc2md -d 1 --name-format --member-index-format list index.js > README.md",
"test": "jest --coverage"

@@ -21,7 +23,7 @@ },

"dependencies": {
"tonal-array": "^0.69.6",
"tonal-note": "^0.69.6",
"tonal-pitch": "^0.69.6",
"tonal-transpose": "^0.69.6"
"tonal-array": "^0.69.7",
"tonal-note": "^0.69.7",
"tonal-pitch": "^0.69.7",
"tonal-transpose": "^0.69.7"
}
}

@@ -1,6 +0,9 @@

# tonal-pcset [![npm version](https://img.shields.io/npm/v/tonal-pcset.svg?style=flat-square)](https://www.npmjs.com/package/tonal-pcset)
<a name="module_pcset"></a>
# pcset
[![npm version](https://img.shields.io/npm/v/tonal-pcset.svg?style=flat-square)](https://www.npmjs.com/package/tonal-pcset)
[![tonal](https://img.shields.io/badge/tonal-pcset-yellow.svg?style=flat-square)](https://www.npmjs.com/browse/keyword/tonal)
`tonal-pcset` is a collection of functions to work with pitch class sets.
`tonal-pcset` is a collection of functions to work with pitch class sets, oriented
to make comparations (isEqual, isSubset, isSuperset)

@@ -11,2 +14,206 @@ This is part of [tonal](https://www.npmjs.com/package/tonal) music theory library.

[Read the API documentation](http://danigb.github.io/tonal/api/module-pcset.html).
```js
var pcset = require('tonal-pcset')
pcset.isEqual('c2 d5 e6', 'c6 e3 d1') // => true
```
## API documentation
* [pcset](#module_pcset)
* [`.chroma(set)`](#module_pcset.chroma) ⇒ <code>String</code>
* ~~[`.notes(notes)`](#module_pcset.notes) ⇒ <code>Array</code>~~
* [`.modes(set, normalize)`](#module_pcset.modes) ⇒ <code>Array.&lt;String&gt;</code>
* ~~[`.chromaModes()`](#module_pcset.chromaModes)~~
* [`.isChroma(chroma)`](#module_pcset.isChroma) ⇒ <code>Boolean</code>
* [`.fromChroma(binary, tonic)`](#module_pcset.fromChroma) ⇒ <code>Array</code>
* [`.isEqual(set1, set2)`](#module_pcset.isEqual) ⇒ <code>Boolean</code>
* [`.isSubset(set, test)`](#module_pcset.isSubset) ⇒ <code>Boolean</code>
* [`.isSuperset(set, test)`](#module_pcset.isSuperset) ⇒ <code>Boolean</code>
* [`.includes(set, note)`](#module_pcset.includes) ⇒ <code>Boolean</code>
* [`.filter(set, notes)`](#module_pcset.filter) ⇒ <code>Array</code>
<a name="module_pcset.chroma"></a>
## `pcset.chroma(set)` ⇒ <code>String</code>
Get chroma of a pitch class set. A chroma identifies each set uniquely.
It's a 12-digit binary each presenting one semitone of the octave.
Note that this function accepts a chroma as parameter and return it
without modification.
**Kind**: static method of <code>[pcset](#module_pcset)</code>
**Returns**: <code>String</code> - a binary representation of the pitch class set
| Param | Type | Description |
| --- | --- | --- |
| set | <code>Array</code> &#124; <code>String</code> | the pitch class set |
**Example**
```js
pcset.chroma('C D E') // => '1010100000000'
```
<a name="module_pcset.notes"></a>
## ~~`pcset.notes(notes)` ⇒ <code>Array</code>~~
***Deprecated***
**Kind**: static method of <code>[pcset](#module_pcset)</code>
**Returns**: <code>Array</code> - an array of pitch class sets
**See**: collection.pcset
Given a list of notes, return the pitch class names of the set
starting with the first note of the list
| Param | Type | Description |
| --- | --- | --- |
| notes | <code>String</code> &#124; <code>Array</code> | the pitch class set notes |
<a name="module_pcset.modes"></a>
## `pcset.modes(set, normalize)` ⇒ <code>Array.&lt;String&gt;</code>
Given a a list of notes or a pcset chroma, produce the rotations
of the chroma discarding the ones that starts with '0'
This is used, for example, to get all the modes of a scale.
**Kind**: static method of <code>[pcset](#module_pcset)</code>
**Returns**: <code>Array.&lt;String&gt;</code> - an array with all the modes of the chroma
| Param | Type | Description |
| --- | --- | --- |
| set | <code>Array</code> &#124; <code>String</code> | the list of notes or pitchChr of the set |
| normalize | <code>Boolean</code> | (Optional, true by default) remove all the rotations that starts with '0' |
**Example**
```js
pcset.modes('C E G')
```
<a name="module_pcset.chromaModes"></a>
## ~~`pcset.chromaModes()`~~
***Deprecated***
**Kind**: static method of <code>[pcset](#module_pcset)</code>
**See**: modes
<a name="module_pcset.isChroma"></a>
## `pcset.isChroma(chroma)` ⇒ <code>Boolean</code>
Test if the given string is a pitch class set chroma.
**Kind**: static method of <code>[pcset](#module_pcset)</code>
**Returns**: <code>Boolean</code> - true if its a valid pcset chroma
| Param | Type | Description |
| --- | --- | --- |
| chroma | <code>String</code> | the pitch class set chroma |
**Example**
```js
pcset.isChroma('101010101010') // => true
pcset.isChroma('101001') // => false
```
<a name="module_pcset.fromChroma"></a>
## `pcset.fromChroma(binary, tonic)` ⇒ <code>Array</code>
Given a pitch class set in binary notation it returns the intervals or notes
(depending on the tonic)
**Kind**: static method of <code>[pcset](#module_pcset)</code>
**Returns**: <code>Array</code> - a list of notes or intervals
| Param | Type | Description |
| --- | --- | --- |
| binary | <code>String</code> | the pitch class set in binary representation |
| tonic | <code>String</code> &#124; <code>Pitch</code> | the pitch class set tonic |
**Example**
```js
pcset.fromChroma('101010101010', 'C') // => ['C', 'D', 'E', 'Gb', 'Ab', 'Bb']
```
<a name="module_pcset.isEqual"></a>
## `pcset.isEqual(set1, set2)` ⇒ <code>Boolean</code>
Test if two pitch class sets are identical
**Kind**: static method of <code>[pcset](#module_pcset)</code>
**Returns**: <code>Boolean</code> - true if they are equal
| Param | Type | Description |
| --- | --- | --- |
| set1 | <code>Array</code> &#124; <code>String</code> | one of the pitch class sets |
| set2 | <code>Array</code> &#124; <code>String</code> | the other pitch class set |
**Example**
```js
pcset.isEqual('c2 d3', 'c5 d2') // => true
```
<a name="module_pcset.isSubset"></a>
## `pcset.isSubset(set, test)` ⇒ <code>Boolean</code>
Test if a pitch class set is a subset of another
**Kind**: static method of <code>[pcset](#module_pcset)</code>
**Returns**: <code>Boolean</code> - true if the test set is a subset of the set
| Param | Type | Description |
| --- | --- | --- |
| set | <code>Array</code> &#124; <code>String</code> | the base set to test against |
| test | <code>Array</code> &#124; <code>String</code> | the set to test |
**Example**
```js
pcset.subset('c d e', 'C2 D4 D5 C6') // => true
```
<a name="module_pcset.isSuperset"></a>
## `pcset.isSuperset(set, test)` ⇒ <code>Boolean</code>
Test if a pitch class set is a superset
**Kind**: static method of <code>[pcset](#module_pcset)</code>
**Returns**: <code>Boolean</code> - true if the test set is a superset of the set
| Param | Type | Description |
| --- | --- | --- |
| set | <code>Array</code> &#124; <code>String</code> | the base set to test against |
| test | <code>Array</code> &#124; <code>String</code> | the set to test |
**Example**
```js
pcset.isSuperset('c d e', 'C2 D4 F4 D5 E5 C6') // => true
```
<a name="module_pcset.includes"></a>
## `pcset.includes(set, note)` ⇒ <code>Boolean</code>
Test if a given pitch class set includes a note
**Kind**: static method of <code>[pcset](#module_pcset)</code>
**Returns**: <code>Boolean</code> - true if the note is included in the pcset
| Param | Type | Description |
| --- | --- | --- |
| set | <code>Array</code> &#124; <code>String</code> | the base set to test against |
| note | <code>String</code> &#124; <code>Pitch</code> | the note to test |
**Example**
```js
pcset.includes('c d e', 'C4') // =A true
pcset.includes('c d e', 'C#4') // =A false
```
<a name="module_pcset.filter"></a>
## `pcset.filter(set, notes)` ⇒ <code>Array</code>
Filter a list with a pitch class set
**Kind**: static method of <code>[pcset](#module_pcset)</code>
**Returns**: <code>Array</code> - the filtered notes
| Param | Type | Description |
| --- | --- | --- |
| set | <code>Array</code> &#124; <code>String</code> | the pitch class set notes |
| notes | <code>Array</code> &#124; <code>String</code> | the note list to be filtered |
**Example**
```js
pcset.filter('c d e', 'c2 c#2 d2 c3 c#3 d3') // => [ 'c2', 'd2', 'c3', 'd3' ])
pcset.filter('c2', 'c2 c#2 d2 c3 c#3 d3') // => [ 'c2', 'c3' ])
```

@@ -20,7 +20,5 @@ /* global describe test expect */

test('fromChroma', () => {
expect(pcset.fromChroma('101010101010', 'C')).toEqual([ 'C', 'D', 'E', 'Gb', 'Ab', 'Bb' ])
expect(pcset.fromChroma('101010101010', null)).toEqual([ '1P', '2M', '3M', '5d', '6m', '7m' ])
expect(pcset.fromChroma('100000100001')('Eb')).toEqual(['Eb', 'Bbb', 'D'])
expect(pcset.fromChroma('1010', 'D')).toEqual(null)
test('intervals', () => {
expect(pcset.intervals('101010101010')).toEqual([ '1P', '2M', '3M', '5d', '6m', '7m' ])
expect(pcset.intervals('1010')).toEqual([])
})

@@ -30,3 +28,3 @@

// TODO: fixme, the 4th mode should have F# instead of Gb
expect(pcset.chromaModes('c d e f g a b').map(function (chroma, i) {
expect(pcset.modes('c d e f g a b').map(function (chroma, i) {
return pcset.fromChroma(chroma, 'C')

@@ -50,17 +48,17 @@ })).toEqual([ [ 'C', 'D', 'E', 'F', 'G', 'A', 'B' ],

test('subset', () => {
expect(pcset.subset('c4 d5 e6', 'c2 d3')).toBe(true)
expect(pcset.subset('c4 d5 e6', 'c2 d3 e5')).toBe(true)
expect(pcset.subset('c d e', 'c d e f')).toBe(false)
expect(pcset.subset('c d e')('c2 d3 f6')).toBe(false)
expect(pcset.isSubset('c4 d5 e6', 'c2 d3')).toBe(true)
expect(pcset.isSubset('c4 d5 e6', 'c2 d3 e5')).toBe(true)
expect(pcset.isSubset('c d e', 'c d e f')).toBe(false)
expect(pcset.isSubset('c d e')('c2 d3 f6')).toBe(false)
})
test('superset', () => {
expect(pcset.superset('c d e', 'c2 d3 e4 f5')).toBe(true)
expect(pcset.superset('c d e', 'e f g')).toBe(false)
expect(pcset.superset('c d e')('d e')).toBe(false)
expect(pcset.isSuperset('c d e', 'c2 d3 e4 f5')).toBe(true)
expect(pcset.isSuperset('c d e', 'e f g')).toBe(false)
expect(pcset.isSuperset('c d e')('d e')).toBe(false)
})
test('equal', () => {
expect(pcset.equal('c2 d3 e7 f5', 'c4 c d5 e6 f1')).toBeTruthy()
expect(pcset.equal('c f')('c4 c f1')).toBeTruthy()
expect(pcset.isEqual('c2 d3 e7 f5', 'c4 c d5 e6 f1')).toBeTruthy()
expect(pcset.isEqual('c f')('c4 c f1')).toBeTruthy()
})

@@ -78,12 +76,12 @@

test('chromaModes', () => {
expect(pcset.chromaModes('c d e f g a b')).toEqual([
test('modes', () => {
expect(pcset.modes('c d e f g a b')).toEqual([
'101011010101', '101101010110', '110101011010', '101010110101',
'101011010110', '101101011010', '110101101010' ])
expect(pcset.chromaModes('c d e f g a b', false)).toEqual([
expect(pcset.modes('c d e f g a b', false)).toEqual([
'101011010101', '010110101011', '101101010110', '011010101101',
'110101011010', '101010110101', '010101101011', '101011010110',
'010110101101', '101101011010', '011010110101', '110101101010' ])
expect(pcset.chromaModes('blah bleh')).toEqual([])
expect(pcset.modes('blah bleh')).toEqual([])
})
})

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc