ampmidid — Musically map MIDI velocity to peak amplitude within a specified dynamic range in decibels.
Plugin opcode in ampmidid.
Musically map MIDI velocity to peak amplitude within a specified dynamic range in decibels.
iamplitude -- Amplitude.
ivelocity -- MIDI velocity number, ranging from 0 through 127.
idecibels -- Desired dynamic range in decibels.
kamplitude -- Amplitude.
kvelocity -- MIDI velocity number, ranging from 0 through 127.
Musically map MIDI velocity to peak amplitude within a specified dynamic range in decibels: a = (m * v + b) ^ 2, where a = amplitude, v = MIDI velocity, r = 10 ^ (R / 20), b = 127 / (126 * sqrt( r )) - 1 / 126, m = (1 - b) / 127, and R = specified dynamic range in decibels. See Roger Dannenberg, "The Interpretation of MIDI Velocity," in Georg Essl and Ichiro Fujinaga (Eds.), Proceedings of the 2006 International Computer Music Conference, November 6-11, 2006 (San Francisco: The International Computer Music Association), pp. 193-196.
Here is an example of the ampmidid opcode. It uses the file ampmidid.csd.
Example 61. Example of the ampmidid 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 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 idb ampmidid ivelocity, 20 ;map to dynamic range of 20 dB. idb = idb + 60 ;limit range to 60 to 80 decibels iamplitude = ampdb(idb) ;loudness in dB to signal amplitude a1 oscili iamplitude, ihz, isine aenv madsr 0.05, 0.1, 0.5, 0.2 asig = a1 * aenv outs asig, asig endin </CsInstruments> <CsScore> ; note velocity i 1 0 2 61 100 i 1 + 2 65 10 e </CsScore> </CsoundSynthesizer>