@tonaljs/rhythm-pattern
v1.0.0
Published
Generate and manipulate rhythmic patterns
Downloads
834
Readme
@tonaljs/rhythm-pattern
Generate and manipulate rhythmic patterns
Usage
ES6:
import { RhythmPattern } from "tonal";
node:
const { RhythmPattern } = require("tonal");
single module:
import { binary, euclid } from "@tonaljs/rhythm-pattern";
Functions
binary(numbers) ⇒ number[]
Create a rhythm pattern from a number or concatenation of numbers in binary form
Returns: an array of 0s and 1s representing the rhythm pattern
| Param | Description | | ------- | ------------------ | | numbers | one or more number |
Example
binary(13); // => [1, 1, 0, 1]
binary(12, 13); // => [1, 1, 0, 0, 1, 1, 0, 1]
hex(hexNumber) ⇒ number[]
Create a rhythmic pattern using an hexadecimal numbers
Returns: an array of 0s and 1s representing the rhythm pattern
| Param | Description | | --------- | ---------------------------------- | | hexNumber | string with the hexadecimal number |
Example
hex("8f"); // => [1, 0, 0, 0, 1, 1, 1, 1]
onsets(numbers) ⇒ number[]
Create a rhythm pattern from the onsets
Returns: an array of 0s and 1s representing the rhythm pattern
| Param | Description | | ------- | ---------------- | | numbers | the onsets sizes |
Example
onsets(1, 2, 2, 1); // => [1, 0, 1, 0, 0, 1, 0, 0, 1, 0]
random(length, probability, rnd) ⇒ number[]
Create a random rhythm pattern with a specified length
Returns: an array of 0s and 1s representing the rhythm pattern
| Param | Description | | ----------- | -------------------------------------------------------------------- | | length | length of the pattern | | probability | Threshold where random number is considered a beat (defaults to 0.5) | | rnd | A random function (Math.random by default) |
Example
random(4); // => [1, 0, 0, 1]
probability(probabilities, rnd) ⇒ number[]
Create a rhythm pattern based on the given probability thresholds
Returns: an array of 0s and 1s representing the rhythm pattern
| Param | Description | | ------------- | ------------------------------------------------------- | | probabilities | An array with the probability of each step to be a beat | | rnd | A random function (Math.random by default) |
Example
probability([0.6, 0, 0.2, 0.5]); // => [0, 0, 0, 1]
rotate(pattern, rotations) ⇒ number[]
Rotate a pattern right
Returns: the rotated pattern (an array of 0s and 1s)
| Param | Description | | --------- | ----------------------------- | | pattern | the pattern to rotate | | rotations | the number of steps to rotate |
Example
rotate([1, 0, 0, 1], 2); // => [0, 1, 1, 0]
euclid(steps, beats) ⇒ number[]
Generates an euclidean rhythm pattern
Returns: an array with 0s and 1s representing the rhythmic pattern
| Param | Description | | ----- | ------------------------- | | steps | The length of the pattern | | beats | The number of beats |
Example
euclid(8, 3); // => [1, 0, 0, 1, 0, 0, 1, 0]