CSound breath control and soundfont

94 views Asked by At

Using CSound I'm trying to change the volume of a note played by a soundfont "dynamically", i.e like if you were playing the trumpet and blowing stronger and stronger while playing the same note. I believe this would be done via the breath controller. The following code from the CSound documentation shows how to apply a controller to a soundfont however I'm struggling to see how can I achieve the dynamic volume change. Looking a the soundfont I'm using, breath control is CC#02.

<CsoundSynthesizer>
<CsOptions>
; Select audio/midi flags here according to platform
-odac  -+rtmidi=virtual  -M0    ;;;realtime audio out and realtime midi in
;-iadc    ;;;uncomment -iadc if realtime audio input is needed too
; For Non-realtime ouput leave only the line below:
;-o fluidCCi.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

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

giengine fluidEngine
; soundfont path to manual/examples
isfnum   fluidLoad "19Trumpet.sf2", giengine, 1
     fluidProgramSelect giengine, 1, isfnum, 0, 56

instr 1

    mididefault   60, p3
    midinoteonkey p4, p5
ikey    init p4
ivel    init p5
    fluidCCi giengine, 1, 93, 127   ;**=> change to CC #2 for breath control.**
**=>How to instruct instrument to play same note from a certain volume to another volume?**
    fluidNote giengine, 1, ikey, ivel

endin

instr 99

imvol  init 7
asigl, asigr fluidOut giengine
       outs asigl*imvol, asigr*imvol

endin
</CsInstruments>
<CsScore>

i 1 0 5 60 100 ; **=> how to pass instructions to play the same note from volume 70 to volume 100 for instance?**
i 99 0 60      ;
e

</CsScore>
</CsoundSynthesizer>
0

There are 0 answers