fluidEngine — Crée une instance de moteur fluidsynth.
Opcode du greffon fluidOpcodes. Ce greffon se trouve dans le répertoire des greffons et il doit être installé séparément. Le répertoire des greffons est ici : https://github.com/csound/plugins
Crée une instance de moteur fluidsynth, et retourne ienginenum pour identifier le moteur. ienginenum est passé à d'autres opcodes pour charger et jouer des SoundFonts et pour assembler le son généré.
ienginenum -- numéro du moteur affecté par fluidEngine
iChorusEnabled -- fixé de manière facultative à 0 pour désactiver d'éventuels effets de chorus dans les SoundFonts chargés.
iReverbEnabled -- fixé de manière facultative à 0 pour désactiver d'éventuels effets de réverbération dans les SoundFonts chargés.
iNumChannels -- nombre de canaux à utiliser ; de 16 à 256, la valeur par défaut de Csound est 256 (la valeur par défaut de Fluidsynth est 16).
iPolyphony -- nombre de voix à jouer en parallèle ; de 16 à 4096, la valeur par défaut de Csound est 4096 (la valeur par défaut de Fluidsynth est 256). Note : ce n'est pas le nombre de notes jouées simultanément car une seule note peut utiliser plusieurs voix en fonction des zones d'instrument et de la vélocité et/ou du numéro de touche de la note jouée.
Voici un exemple des opcodes fluidsynth utilisant 2 moteurs. Il utilise les fichiers fluidEngine.csd et midichn_advanced.mid.
<CsoundSynthesizer> <CsOptions> ; Select audio/midi flags here according to platform -odac -F midichn_advanced.mid ;;;reatime audio out and midifile in ;-iadc ;;;uncomment -iadc if realtime audio input is needed too ; For Non-realtime ouput leave only the line below: ; -o fluidEngine.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 ; LOAD SOUNDFONTS gienginenum1 fluidEngine gienginenum2 fluidEngine isfnum1 fluidLoad "sf_GMbank.sf2", gienginenum1, 1 ; Piano 2, program 1, channel 1 fluidProgramSelect gienginenum1, 1, isfnum1, 0, 1 ; Piano 3, program 2, channel 2 fluidProgramSelect gienginenum1, 2, isfnum1, 0, 2 isfnum2 fluidLoad "19Trumpet.sf2", gienginenum2, 1 ; Trumpet, program 56, channel 3 fluidProgramSelect gienginenum2, 3, isfnum2, 0, 56 ;Look for midifile in folder manual/examples ;"midichn_advanced.mid" sends notes to the soundfonts instr 1 ; GM soundfont ; INITIALIZATION mididefault 60, p3 ; Default duration of 60 -- overridden by score. midinoteonkey p4, p5 ; Channels MIDI input to pfields. ; Use channel assigned in fluidload. ichannel = 1 ikey = p4 ivelocity = p5 fluidNote gienginenum1, ichannel, ikey, ivelocity endin instr 2 ; GM soundfont ; INITIALIZATION mididefault 60, p3 ; Default duration of 60 -- overridden by score. midinoteonkey p4, p5 ; Channels MIDI input to pfields. ; Use channel assigned in fluidload. ichannel = 2 ikey = p4 ivelocity = p5 fluidNote gienginenum1, ichannel, ikey, ivelocity endin instr 3 ; Trumpet ; INITIALIZATION mididefault 60, p3 ; Default duration of 60 -- overridden by score. midinoteonkey p4, p5 ; Channels MIDI input to pfields. ; Use channel assigned in fluidload. ichannel = 3 ikey = p4 ivelocity = p5 fluidNote gienginenum2, ichannel, ikey, ivelocity endin ; COLLECT AUDIO FROM ALL SOUNDFONTS instr 100 ; Fluidsynth output iamplitude1 = 7 iamplitude2 = 7 ; AUDIO aleft1, aright1 fluidOut gienginenum1 aleft2, aright2 fluidOut gienginenum2 outs (aleft1 * iamplitude1) + (aleft2 * iamplitude2), \ (aright1 * iamplitude1) + (aright2 * iamplitude2) endin </CsInstruments> <CsScore> i 1 0 3 60 100 i 2 1 3 60 100 i 3 3 3 63 100 i 100 0 10 ;run for 10 seconds e </CsScore> </CsoundSynthesizer>
Plus d'information sur soundfonts dans les Floss Manuals : https://flossmanual.csound.com/midi/reading-midi-files
D'autres informations sur soundfonts dans Wikipedia : http://en.wikipedia.org/wiki/Soundfont