fluidEngine — Crée une instance de moteur fluidsynth.
Opcode du greffon fluidOpcodes.
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 : http://write.flossmanuals.net/csound/d-reading-midi-files
D'autres informations sur soundfonts dans Wikipedia : http://en.wikipedia.org/wiki/Soundfont