cpsxpch
Converts a pitch-class value into cycles-per-second (Hz) for equal divisions of any interval.
There is a restriction of no more than 100 equal divisions.
Syntax
Initialization
ipch -- Input number of the form 8ve.pc, indicating an 'octave' and which note in the octave.
iequal -- if positive, the number of equal intervals into which the 'octave' is divided. Must be less than or equal to 100. If negative, is the number of a table of frequency multipliers.
irepeat -- Number indicating the interval which is the 'octave.' The integer 2 corresponds to octave divisions, 3 to a twelfth, 4 is two octaves, and so on. This need not be an integer, but must be positive.
ibase -- The frequency which corresponds to pitch 0.0
Note
- The following are essentially the same
ia = cpspch(8.02)
ib cps2pch 8.02, 12
ic cpsxpch 8.02, 12, 2, 1.02197503906
- These are opcodes not functions
- Negative values of ipch are allowed, but not negative irepeat, iequal or ibase.
Examples
Here is an example of the cpsxpch opcode. It uses the file cpsxpch.csd.
| Example of the cpsxpch opcode. |
|---|
| <CsoundSynthesizer>
<CsOptions>
; Select audio/midi flags here according to platform
; Audio out Audio in
-odac -iadc ;;;RT audio I/O
; For Non-realtime ouput leave only the line below:
; -o cpsxpch.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>
; Initialize the global variables.
sr = 44100
kr = 4410
ksmps = 10
nchnls = 1
; Instrument #1.
instr 1
; Use a normal twelve-tone scale.
ipch = 8.02
iequal = 12
irepeat = 2
ibase = 1.02197503906
icps cpsxpch ipch, iequal, irepeat, ibase
print icps
endin
</CsInstruments>
<CsScore>
; Play Instrument #1 for one second.
i 1 0 1
e
</CsScore>
</CsoundSynthesizer>
|
Its output should include lines like this:
Here is an example of the cpsxpch opcode using a 10.5 ET scale. It uses the file cpsxpch_105et.csd.
| Example of the cpsxpch opcode using a 10.5 ET scale. |
|---|
| <CsoundSynthesizer>
<CsOptions>
; Select audio/midi flags here according to platform
; Audio out Audio in
-odac -iadc ;;;RT audio I/O
; For Non-realtime ouput leave only the line below:
; -o cpsxpch_105et.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>
; Initialize the global variables.
sr = 44100
kr = 4410
ksmps = 10
nchnls = 1
; Instrument #1.
instr 1
; Use a 10.5ET scale.
ipch = 4.02
iequal = 21
irepeat = 4
ibase = 16.35160062496
icps cpsxpch ipch, iequal, irepeat, ibase
print icps
endin
</CsInstruments>
<CsScore>
; Play Instrument #1 for one second.
i 1 0 1
e
</CsScore>
</CsoundSynthesizer>
|
Its output should include lines like this:
Here is an example of the cpsxpch opcode using a Pierce scale centered on middle A. It uses the file cpsxpch_pierce.csd.
| Example of the cpsxpch opcode using a Pierce scale centered on middle A. |
|---|
| <CsoundSynthesizer>
<CsOptions>
; Select audio/midi flags here according to platform
; Audio out Audio in
-odac -iadc ;;;RT audio I/O
; For Non-realtime ouput leave only the line below:
; -o cpsxpch_pierce.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>
; Initialize the global variables.
sr = 44100
kr = 4410
ksmps = 10
nchnls = 1
; Instrument #1.
instr 1
; Use a Pierce scale centered on middle A.
ipch = 2.02
iequal = 12
irepeat = 3
ibase = 261.62561
icps cpsxpch ipch, iequal, irepeat, ibase
print icps
endin
</CsInstruments>
<CsScore>
; Play Instrument #1 for one second.
i 1 0 1
e
</CsScore>
</CsoundSynthesizer>
|
Its output should include lines like this:
See also
Pitch Converters: Tuning Opcodes
Credits
Author: John ffitch
University of Bath/Codemist Ltd.
Bath, UK
1997
New in Csound version 3.492