nrpn — Sends a Non-Registered Parameter Number to the MIDI OUT port.


Sends a NPRN (Non-Registered Parameter Number) message to the MIDI OUT port each time one of the input arguments changes.


nrpn kchan, kparmnum, kparmvalue


kchan -- MIDI channel (1-16)

kparmnum -- number of NRPN parameter

kparmvalue -- value of NRPN parameter

This opcode sends new message when the MIDI translated value of one of the input arguments changes. It operates at k-rate. Useful with the MIDI instruments that recognize NRPNs (for example with the newest sound-cards with internal MIDI synthesizer such as SB AWE32, AWE64, GUS etc. in which each patch parameter can be changed during the performance via NRPN)


Here is an example of the nrpn opcode. It uses the file nrpn.csd.

Example 681. Example of the nrpn opcode.

See the sections Real-time Audio and Command Line Flags for more information on using command line flags.

This example generates notes for every note received on the MIDI input. It generates MIDI notes on csound's MIDI output, so be sure to connect something.

; Select audio/midi flags here according to platform
-odac  -Q1   ;;;realtime audio out with MIDI out
;-iadc    ;;;uncomment -iadc if realtime audio input is needed too

sr = 44100
ksmps = 32
nchnls = 2
0dbfs  = 1

instr 1	; change attack time of external synth

initc7 1, 6, 0		; set controller 6 to 0
nrpn 1, 99, 1		; set MSB
nrpn 1, 98, 99		; set LSB
katt ctrl7 1, 6, 1, 127	; DataEntMSB
idur = 2
noteondur2 1, 60, 100, idur ; play note on synth


i 1 0 3

See also

MIDI Message Output


Author: Gabriel Maldonado

New in Csound version 3.492

Thanks goes to Rasmus Ekman for pointing out the correct MIDI channel and controller number ranges.