![Oracle Drags Its Feet in the JavaScript Trademark Dispute](https://cdn.sanity.io/images/cgdhsj6q/production/919c3b22c24f93884c548d60cbb338e819ff2435-1024x1024.webp?w=400&fit=max&auto=format)
Security News
Oracle Drags Its Feet in the JavaScript Trademark Dispute
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
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
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
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.