ampmidicurve — Maps an input MIDI velocity number to an output gain factor with a maximum value of 1, modifying the output gain by a dynamic range and a shaping exponent.
Plugin opcode in ampmidid.
Maps an input MIDI velocity number to an output gain factor with a maximum value of 1, modifying the output gain by a dynamic range and a shaping exponent. The minimum output gain is 1 minus the dynamic range. A shaping exponent of 1 gives a linear response; increasing the exponent produces an increasingly depressed knee in the gain response curve.
igain ampmidicurve ivelocity, idynamicrange, iexponent
kgain ampmidicurve kvelocity, kdynamicrange, kexponent
imidivelocity -- MIDI velocity number, ranging from 0 through 127.
idynamicrange -- Intended dynamic range of gain, from 0 through 1.
iexponent -- Exponent applied to shape the gain response curve, 1 or greater.
kmidivelocity -- MIDI velocity number, ranging from 0 through 127.
kdynamicrange -- Intended dynamic range of gain, from 0 through 1.
kexponent -- Exponent applied to shape the gain response curve, 1 or greater.
Maps an input MIDI velocity number to an output gain factor with a maximum value of 1, modifying the output gain by a dynamic range and a shaping exponent. The minimum output gain is 1 minus the dynamic range. A shaping exponent of 1 gives a linear response; increasing the exponent produces an increasingly depressed knee in the gain response curve, according to the equation: y = d * (x/127)^h + 1 - d, where y = the gain, x = the input MIDI velocity (from 0 through 127), d = the dynamic range (from p through 1), and h = the shaping exponent (1 or greater). This opcode was suggested by Mauro Giubileo.
Here is an example of the ampmidicurve opcode. It uses the file ampmidicurve.csd.
Example 60. Example of the ampmidicurve 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 ;;;RT audio out, note=p4 and velocity=p5 -odac --midi-key=4 --midi-velocity-amp=5 ;-iadc ;;;uncomment -iadc if RT audio input is needed too ; For Non-realtime ouput leave only the line below: ; -o ampmidid.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 massign 0, 1 ;assign all midi to instr. 1 instr 1 isine ftgenonce 0, 0, 4096, 10, 1 ;sine wave ihz = cpsmidinn(p4) ivelocity = p5 ; MIDI velocity to signal amplitude. iamplitude = ampdb(ivelocity) ; Gain with compressed dynamic range, soft knee. igain ampmidicurve ivelocity, .92, 3 print ivelocity, iamplitude, igain a1 oscili 1, ihz, isine aenv madsr 0.05, 0.1, 0.5, 0.2 asig = a1 * aenv * igain outs asig, asig endin </CsInstruments> <CsScore> ; note velocity i 1 0 2 61 100 i 1 + 2 65 10 e </CsScore> </CsoundSynthesizer>