midic14 — Allows a floating-point 14-bit MIDI signal scaled with a minimum and a maximum range.
idest midic14 ictlno1, ictlno2, imin, imax [, ifn]
kdest midic14 ictlno1, ictlno2, kmin, kmax [, ifn]
idest -- output signal
ictln1o -- most-significant byte controller number (0-127)
ictlno2 -- least-significant byte controller number (0-127)
imin -- user-defined minimum floating-point value of output
imax -- user-defined maximum floating-point value of output
ifn (optional) -- table to be read when indexing is required. Table must be normalized. Output is scaled according to imin and imax values.
kdest -- output signal
kmin -- user-defined minimum floating-point value of output
kmax -- user-defined maximum floating-point value of output
midic14 (i- and k-rate 14 bit MIDI control) allows a floating-point 14-bit MIDI signal scaled with a minimum and a maximum range. The minimum and maximum values can be varied at k-rate. It can use optional interpolated table indexing. It requires two MIDI controllers as input.
Note | |
---|---|
Please note that the midic family of opcodes are designed for MIDI triggered events, and do not require a channel number since they will respond to the same channel as the one that triggered the instrument (see massign). However they will crash if called from a score driven event. |
Here is an example of the midic14 opcode. It uses the file midic14.csd.
Example 589. Example of the midic14 opcode.
See the sections Real-time Audio and Command Line Flags for more information on using command line flags.
<CsoundSynthesizer> <CsOptions> ; Select audio/midi flags here according to platform -odac -M0 --midi-key-cps=4 --midi-velocity-amp=5 ;;;realtime audio out and realtime midi in, midi key cps is routed to p4 and velocity to p5 ; For Non-realtime ouput leave only the line below: ; -o midic14.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> ; by tgrey - 2020 sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 ; This example expects MIDI controller input on channel 1 ; run, play a note and move your midi controllers 1 and 7 to see results ictlno1= 1 ; = cc #1 midi mod wheel (course tuning) ictlno2= 7 ; = cc #7 midi volume (fine tuning) ; max range is 3 octaves: (2^3) = 8 imax = 8 ; read both controllers, scaling them between 1 and imax kTune midic14 ictlno1, ictlno2, 1, imax printk2 kTune ; generate tones asig oscili p5, p4*kTune aref oscili p5, p4 ; combine detuned tone and reference tone ; creates a beat effect from the detune asig=(asig+aref)*.5 outs asig, asig endin </CsInstruments> <CsScore> ; run for 60 seconds f0 60 e </CsScore> </CsoundSynthesizer>