brand-music
Version:
Strongly typed music theory library
170 lines (161 loc) • 5.19 kB
JavaScript
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all2) => {
for (var name in all2)
__defProp(target, name, { get: all2[name], enumerable: true });
};
var __copyProps = (to, from4, except, desc) => {
if (from4 && typeof from4 === "object" || typeof from4 === "function") {
for (let key of __getOwnPropNames(from4))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from4[key], enumerable: !(desc = __getOwnPropDesc(from4, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod2) => __copyProps(__defProp({}, "__esModule", { value: true }), mod2);
// src/PitchInterval.ts
var PitchInterval_exports2 = {};
__export(PitchInterval_exports2, {
add: () => add2,
addChecked: () => addChecked2,
between: () => piBetweenMnn,
direction: () => direction,
divChecked: () => divChecked2,
divRound: () => divRound2,
divTrunc: () => divTrunc2,
from: () => from,
fromNum: () => fromNum,
fromNumRound: () => fromNumRound,
fromNumTrunc: () => fromNumTrunc,
fromUnknown: () => fromUnknown2,
hasShape: () => hasShape,
mark: () => mark,
markNum: () => markNum,
markUnknown: () => markUnknown,
mul: () => mul2,
mulChecked: () => mulChecked2,
mulRound: () => mulRound2,
mulTrunc: () => mulTrunc2,
octaves: () => octaves,
pic: () => picFromPi,
semitones: () => stFromPi,
sub: () => sub2,
subChecked: () => subChecked2
});
module.exports = __toCommonJS(PitchInterval_exports2);
// src/internal/utils.ts
var mod = (a, n) => (a % n + n) % n;
// src/internal/refined/Literal.ts
var is = (start, end) => (v) => Number.isSafeInteger(v) && start <= v && v <= end;
var modded = (start, end) => (v) => {
const size = end - start + 1;
const zero = v - start;
const m = mod(zero, size);
return m + start;
};
var all = (start, end) => (
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
[...Array(end - start + 1)].map((_, i) => start + i)
);
var asInt = (v) => v;
// src/internal/refined/Int.ts
var isInt = (v) => Number.isInteger(v);
var fromUnknown = (v) => isInt(v) ? v : void 0;
var makeChecked = (v) => fromUnknown(v);
var makeRound = (v) => Math.round(v);
var makeTrunc = (v) => Math.trunc(v);
var add = (a, b) => a + b;
var addChecked = (a, b) => makeChecked(a + b);
var sub = (a, b) => a - b;
var subChecked = (a, b) => makeChecked(a - b);
var mul = (a, b) => a * b;
var mulChecked = (a, b) => makeChecked(a * b);
var mulRound = (a, b) => makeRound(a * b);
var mulTrunc = (a, b) => makeTrunc(a * b);
var divChecked = (a, b) => makeChecked(a * b);
var divRound = (a, b) => makeRound(a * b);
var divTrunc = (a, b) => makeTrunc(a * b);
// src/internal/refined/NonNegative.ts
function makeAbs(v, edgeCases) {
const caseNaN = edgeCases?.NaN ?? 0;
if (Number.isNaN(v)) {
return caseNaN;
} else {
return Math.abs(v);
}
}
// src/internal/PitchInterval.ts
var hasShape = isInt;
var mark = (_v) => true;
var markNum = (v) => hasShape(v);
var markUnknown = (v) => hasShape(v);
var from = (v) => v;
var fromNum = (v) => markNum(v) ? v : void 0;
var fromNumRound = (v) => from(makeRound(v));
var fromNumTrunc = (v) => from(makeTrunc(v));
var fromUnknown2 = (v) => markUnknown(v) ? v : void 0;
var fromUndefinedable = (v) => v != null ? from(v) : v;
var add2 = (a, b) => from(add(a, b));
var addChecked2 = (a, b) => fromUndefinedable(addChecked(a, b));
var sub2 = (a, b) => from(sub(a, b));
var subChecked2 = (a, b) => fromUndefinedable(subChecked(a, b));
var mul2 = (a, b) => from(mul(a, b));
var mulChecked2 = (a, b) => fromUndefinedable(mulChecked(a, b));
var mulRound2 = (a, b) => from(mulRound(a, b));
var mulTrunc2 = (a, b) => from(mulTrunc(a, b));
var divChecked2 = (a, b) => fromUndefinedable(divChecked(a, b));
var divRound2 = (a, b) => from(divRound(a, b));
var divTrunc2 = (a, b) => from(divTrunc(a, b));
var octaves = (pi) => pi === 0 ? 0 : makeAbs(makeTrunc(pi / 12));
var direction = (pi) => pi < 0 ? -1 : pi > 0 ? 1 : 0;
// src/internal/PitchIntervalClass.ts
var min = 0;
var max = 11;
var hasShape2 = is(min, max);
var from2 = (v) => v;
var fromIntMod = (v) => from2(modded(min, max)(v));
var const_ = (value) => value;
var MIN = const_(min);
var MAX = const_(max);
var ALL = all(min, max).map(const_);
// src/internal/Semitones.ts
var from3 = (v) => v;
var fromIntAbs = (v) => from3(makeAbs(v));
var const_2 = (v) => v;
var MIN2 = const_2(0);
// src/internal/conversion.ts
var piBetweenMnn = (from4, to) => from(sub(asInt(to), asInt(from4)));
var picFromPi = (pi) => fromIntMod(pi);
var stFromPi = (pi) => fromIntAbs(pi);
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
add,
addChecked,
between,
direction,
divChecked,
divRound,
divTrunc,
from,
fromNum,
fromNumRound,
fromNumTrunc,
fromUnknown,
hasShape,
mark,
markNum,
markUnknown,
mul,
mulChecked,
mulRound,
mulTrunc,
octaves,
pic,
semitones,
sub,
subChecked
});
//# sourceMappingURL=PitchInterval.cjs.map