JSPM

  • Created
  • Published
  • Downloads 793
  • Score
    100M100P100Q111515F
  • License MIT

A set of methods for the generation and transformation of number sequences useful in algorithmic composition

Package Exports

  • total-serialism

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (total-serialism) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

total-serialism

total-serialism is a set of methods for the generation and transformation of number sequences mainly designed for algorithmic composition of music.

!!! Work-In-Progress !!!

Install

$ npm install total-serialism

Usage

The entire library

const Serial = require('total-serialism');

Or an individual section

const Gen = require('total-serialism').Generative;
const Trs = require('total-serialism').Transform;

Examples

const Gen = require('total-serialism').Generative;
const Trs = require('total-serialism').Transform;

// generate an array of 7 ints between range 0-7
Gen.spread(7); //=> [0, 1, 2, 3, 4, 5, 6]

// generate an array of 5 ints between range 7-19
Gen.spread(5, 7, 19); //=> [7, 9, 11, 14, 16]

// generate an array of 9 floats between -1 - 1 (inclusive)
Gen.spreadInclusiveFloat(9, -1, 1); //=> [-1, -0.75, -0.5, -0.25, 0, 0.25, 0.5, 0.75, 1]

// fill an array with duplicates of a value
Gen.fill(10, 2, 15, 3, 20, 4); //=> [10, 10, 15, 15, 15, 20, 20, 20, 20]

// duplicate an array with an offset added to every value
Trs.clone([0, 5, 7], 0, 12, -12); //=>  [0, 5, 7, 12, 17, 19, -12, -7, -5] 

// combine multiple numbers/arrays into one
Trs.combine([0, 5], 12, [7, 3]); //=>  [0, 5, 12, 7, 3] 

// duplicate an array certain amount of times
Trs.duplicate([0, 5, 7], 3); //=> [0, 5, 7, 0, 5, 7, 0, 5, 7]

// invert an array around a center point
Trs.invert([0, 2, 5, 10, 13], 5); //=>  [10, 8, 5, 0, -3]

// interleave multiple arrays into one
Trs.lace([0, 5, 9], [3, 3], [7, 12, 11, -1]); //=>  [0, 3, 7, 5, 3, 12, 9, 11, -1]

// merge arrays into a 2D-array
Trs.merge([0, 3, 7], [3, 12], [12, -1, 19, 5]); //=>  [[0, 3, 12], [3, 12, -1], [7, 19], [5]]

// generate a palindrome of an array
Trs.palindrome([0, 3, 5, 7]); //=> [0, 3, 5, 7, 7, 5, 3, 0]

// rotate an array in positive or negative direction
Trs.rotate([0, 5, 7, 12], -1); //=>  [5, 7, 12, 0] 

// reverse an array
Trs.reverse([0, 5, 7, 12]); //=>  [12, 7, 5, 0]

// shuffle the items in an array (Fisher-Yates shuffle algorithm)
Trs.shuffle([0, 5, 7, 12]); //=>  [7, 5, 0, 12] 

// remove duplicates from an array, leave order of appearance intact
Trs.unique([5, 7, 5, 0, 12, 7, 5]); //=>  [5, 7, 0, 12] 

License

The MIT License