96 lines
2.7 KiB
Racket
96 lines
2.7 KiB
Racket
#lang scribble/manual
|
|
@(require (for-label racket))
|
|
|
|
@title{Tuning}
|
|
represents a musical tuning@section{related}
|
|
Classes/Scale
|
|
@section{categories}
|
|
Tuning
|
|
|
|
@section{description}
|
|
|
|
Represents a musical tuning (e.g. equal temperament, just intonation, etc.). Used in conjunction with link::Classes/Scale:: to generate pitch information.
|
|
|
|
|
|
@racketblock[
|
|
t = Tuning.et12;
|
|
t.semitones; // [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 ]
|
|
t.ratios; // [ 1, 1.0594630943591, 1.1224620483089, 1.1892071150019, etc. ]
|
|
|
|
Pbind(\scale, Scale.major(t), \degree, Pseq((0..7) ++ (6..0) ++ [\rest], 1), \dur, 0.25).play;
|
|
|
|
// use non-standard tuning
|
|
t = Tuning.just;
|
|
t.semitones; // [ 0, 1.1173128526978, 2.0391000173077, 3.1564128700055, etc. ]
|
|
t.ratios.collect(_.round(0.001)); // [ 1, 1.067, 1.125, 1.2, 1.25, 1.333, 1.406, 1.5, etc. ]
|
|
|
|
Pbind(\scale, Scale.major(t), \degree, Pseq((0..7) ++ (6..0) ++ [\rest], 1), \dur, 0.25).play;
|
|
::
|
|
|
|
]
|
|
@section{subsection}
|
|
Creation
|
|
|
|
strong::just, pythagorean, werckmeister, johnston, partch, wcAlpha, bp, etc.::
|
|
|
|
Creates a tuning from the library stored in
|
|
@racketblock[Tuning.all::. For a complete list of available tunings, execute
|
|
]
|
|
|
|
@racketblock[
|
|
Tuning.directory
|
|
::
|
|
|
|
]
|
|
@section{CLASSMETHODS}
|
|
|
|
|
|
@section{method}
|
|
et
|
|
Creates an equal-tempered scale based on pitchesPerOctave.
|
|
|
|
@section{method}
|
|
choose
|
|
Creates a random tuning from the library, constrained by size (which defaults to 12).
|
|
|
|
@racketblock[
|
|
Scale.major(Tuning.choose).tuning.name;
|
|
::
|
|
|
|
]
|
|
@section{method}
|
|
new
|
|
Creates a Tuning using some or all of the parameters as follows: strong::tuning:: can be the name of a library tuning (in which case that tuning is returned); an array of floats representing the semitone values of the tuning (in which case pitchesPerOctave will be set to the size of the array regardless of the second parameter); or nil (in which case the default tuning for strong::pitchesPerOctave:: will be returned). strong::octaveRatio:: defaults to 2.0, but can be set differently for stretched or compressed tunings.
|
|
|
|
@racketblock[
|
|
Tuning.new(\et12); // standard equal temperament
|
|
// custom tuning
|
|
Tuning.new(#[ 0, 0.795, 2.251, 3.251, 4.036, 4.680, 5.915, 7.221, 8.013, 9.29, 9.930, 11.032 ]);
|
|
Tuning.new((0..11).collect(_ * (2.08 ** (1/12))), 2.08, "Stretched ET12");
|
|
::
|
|
|
|
]
|
|
@section{INSTANCEMETHODS}
|
|
|
|
|
|
@section{private}
|
|
storeOn, storedKey, storeArgs, printOn
|
|
|
|
@section{method}
|
|
semitones
|
|
Returns an array of semitone values for the pitch set. link::#-as::(Array) is equivalent; link::#-as::(List) returns it as a list, etc.
|
|
|
|
@section{method}
|
|
cents
|
|
Returns a array of cent values for the pitch set.
|
|
|
|
@section{method}
|
|
ratios
|
|
Returns a tuned array of ratios for the pitch set.
|
|
|
|
@section{EXAMPLES}
|
|
|
|
|
|
For examples of use, see the link::Classes/Scale:: help file.
|
|
|
|
|