Security News
38% of CISOs Fear They’re Not Moving Fast Enough on AI
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
tonal-range
Advanced tools
A collection of functions to create note ranges.
Example
const Range = require("tonal-range")
import * as Range from "tonal-range"
Example
// ascending chromatic range
Range.chromatic(["C4", "E4"]) // => ["C4", "Db4", "D4", "Eb4", "E4"]
// descending chromatic range
Range.chromatic(["E4", "C4"]) // => ["E4", "Eb4", "D4", "Db4", "C4"]
// combining ascending and descending in complex ranges
Range.chromatic(["C2", "E2", "D2"]) // => ["C2", "Db2", "D2", "Eb2", "E2", "Eb2", "D2"]
// numeric (midi note numbers) range
Range.numeric(["C4", "E4", "Bb3"]) // => [60, 61, 62, 63, 64]
// complex numeric range
Range.numeric(["C4", "E4", "Bb3"]) // => [60, 61, 62, 63, 64, 63, 62, 61, 60, 59, 58]
.numeric(array)
⇒ Array
.chromatic(list)
⇒ Array
.fifths(tonic, range)
⇒ Array
.scale(scale, range)
⇒ Array
Range.numeric(array)
⇒ Array
Create a numeric range. You supply a list of notes or numbers and it will be conected to create complex ranges.
Kind: static method of Range
Returns: Array
- an array of numbers or empty array if not vald parameters
Param | Type | Description |
---|---|---|
array | Array | the list of notes or numbers used |
Example
Range.numeric(["C5", "C4"]) // => [ 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60 ]
// it works midi notes
Range.numeric([10, 5]) // => [ 10, 9, 8, 7, 6, 5 ]
// complex range
Range.numeric(["C4", "E4", "Bb3"]) // => [60, 61, 62, 63, 64, 63, 62, 61, 60, 59, 58]
// can be expressed with a string or array
Range.chromatic(list)
⇒ Array
Create a range of chromatic notes. The altered notes will use flats.
Kind: static method of Range
Returns: Array
- an array of note names
Param | Type | Description |
---|---|---|
list | String | Array | the list of notes or midi note numbers |
Example
Range.chromatic("C2 E2 D2") // => ["C2", "Db2", "D2", "Eb2", "E2", "Eb2", "D2"]
// with sharps
Range.chromatic("C2 C3", true) // => [ "C2", "C#2", "D2", "D#2", "E2", "F2", "F#2", "G2", "G#2", "A2", "A#2", "B2", "C3" ]
Range.fifths(tonic, range)
⇒ Array
Create a range with a cycle of fifths
Kind: static method of Range
Returns: Array
- a range of cycle of fifths starting with the tonic
Param | Type | Description |
---|---|---|
tonic | String | Pitch | the tonic note or pitch class |
range | Array | String | the range array |
Example
Range.fifths("C", [0, 6]) // => [ "C", "G", "D", "A", "E", "B", "F#" ])
Range.scale(scale, range)
⇒ Array
Create a scale (pitch class set) Range. Given a scale (a pitch class set) and a range array, it returns a range in notes.
Can be partially applied
Kind: static method of Range
Returns: Array
- the scale range, an empty array if not valid source or
null if not valid start or end
Param | Type | Description |
---|---|---|
scale | Array | the scale to use or a function to convert from midi numbers to note names |
range | Array | a list of notes or midi numbers |
Example
Range.scale("C D E F G A B", ["C3", "C2"])
// => [ "C3", "B2", "A2", "G2", "F2", "E2", "D2", "C2" ]
const majorC = Range.scale("C D E F G A B")
majorC(["C3", "C2"]) * // => [ "C3", "B2", "A2", "G2", "F2", "E2", "D2", "C2" ]
FAQs
Create ranges of notes
The npm package tonal-range receives a total of 3 weekly downloads. As such, tonal-range popularity was classified as not popular.
We found that tonal-range demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
Research
Security News
Socket researchers uncovered a backdoored typosquat of BoltDB in the Go ecosystem, exploiting Go Module Proxy caching to persist undetected for years.
Security News
Company News
Socket is joining TC54 to help develop standards for software supply chain security, contributing to the evolution of SBOMs, CycloneDX, and Package URL specifications.