Thanks to R.L.Horn, i will take time to think about your good idea. On the roof I'm thinking that using the port names implies that you must know the devices name, but what if i want to connect an unknown device?
thanks again Max ************ ginola...@gmail.com Il giorno 27/feb/2015, alle ore 09.53, R.L. Horn ha scritto: > On Thu, 26 Feb 2015, Gino Latino wrote: > >> fluidsynth --audio-driver=alsa -m alsa_raw -o midi.alsa.device=hw:1 -o >> audio.alsa.device=hw:0 -o synth.polyphony=16 -c 4 -g 1.4 /instruments/xxx.sf2 > > Ah, I see your problem. I don't think there's any way to interpose a filter > between fluidsynth and the controller that way (the two are basically talking > directly to each other). > > All is not lost, however. The sequencer connections can be automated, and in > a way that's more reliable than the above. I've been working on turning my > little event displayer into a proper breakout box, with pluggable filters > (somewhat along the lines of LADSPA) and realtime scheduling. I think it may > be just the thing you need. > > Consider the output from aconnect -i/aconnect -o: > > $ aconnect -o > client 14: 'Midi Through' [type=kernel] > 0 'Midi Through Port-0' > client 20: 'YAMAHA DigitalKBD' [type=kernel] > 0 'YAMAHA DigitalKBD MIDI 1' > client 128: 'FLUID Synth (2214)' [type=user] > 0 'Synth input port (2214:0)' > client 129: 'MIDIBreakout' [type=user] > 0 'MIDIBreakout Port-0' > > Every client (and port) has a name. With a little grep and awk (I'm too lazy > to do it all with awk right now), we can take advantage of this. The > following starts fluidsynth and the breakout box, connects my Yamaha keyboard > to the breakout, and connects the breakout to fluidsynth: > > #! /bin/sh > > # Create the configuration file for the breakout box. Mchord.so plays > # major chords, so it's immediately obvious. > echo "Mchord.so" > mybreakoutbox.conf > > # Start fluidsynth in the background... > # (Use whatever options you like, but "-si" is important.) > fluidsynth -si -o synth.gain=2 /usr/share/soundfonts/4gmgsmt.sf2 & > > # ...and the breakout box. > midibreakout mybreakoutbox.conf & > > # Wait awhile for things to settle. > sleep 1 > > # Find the ALSA devices. > > # First, find the keyboard. > kbd=`aconnect -i | grep 'client.*YAMAHA DigitalKBD' | awk '{ print $2 }'` > # Find fluidsynth. > flsynth=`aconnect -o | grep 'client.*FLUID Synth' | awk '{ print $2 }'` > # Find the breakout box (two connections). > bboxi=`aconnect -i | grep 'client.*MIDIBreakout' | awk '{ print $2 }'` > bboxo=`aconnect -o | grep 'client.*MIDIBreakout' | awk '{ print $2 }'` > > # Now connect everything up. Port 0 is assumed in all cases. > # Keyboard (input) -> BreakoutBox (output) > aconnect ${kbd}0 ${bboxo}0 > # BreakoutBox (input) -> fluidsynth (output) > # (that's not confusing at all) > aconnect ${bboxi}0 ${flsynth}0 > > # and we're done > exit 0 > > (This is actually quite brittle, but nobody wants to read a bunch of > if...thens.) > > If you need fluidsynth to run in the foreground, that can be done too. It's > just a little more complicated -- you have to background another script or > function that waits a few seconds, then makes the necessary connections. > > Feel free to contact me off-list with your requirements (something about > turning noteons into program changes or the like, wasn't it?) and I'll run > off a filter for you and see that you can get a copy of the software. It's in > a rough state right now, but it's usable (and perhaps more reliable than it > will be once it's fancied up). > > _______________________________________________ > fluid-dev mailing list > fluid-dev@nongnu.org > https://lists.nongnu.org/mailman/listinfo/fluid-dev
_______________________________________________ fluid-dev mailing list fluid-dev@nongnu.org https://lists.nongnu.org/mailman/listinfo/fluid-dev