Hi Lorenzo,

> Thanks for the pointers. From what you write, therefore, it is not
> currently possible to route each midi channel to an independent audio
> output with jack. Right?

It is possible. Have you tried smth like:

fluidsynth -o audio.jack.multi=no -o synth.audio-channels=16 -o synth.audio-
groups=16  "someSoundfont.sf2"

you should get 16 stereo output channels. and since there 16 midi channels, 
each midi channel will get its own stereo channel. or which behaviour do you 
experience?

NOTE: actually audio.jack.multi should be set to "yes". however this option 
currently has inverse logic. thats a bug. leaving it at "no" should give you 
multiple channels though.

Another bug related to that: whenever specify N output channels while N>1 
there wont be any effects applied, see this ticket

https://sourceforge.net/p/fluidsynth/tickets/137/


I've attached two patches that should fix/workaround those two issues.


Tom


Am Dienstag, 26. April 2016, 09:36:36 schrieb Lorenzo Sutton:
> Hi Jean-Jacques,
> 
> On 25/04/2016 14:02, jean-jacques.ceresa wrote:
> > Hi,
> > May be this will help.
> > This link is a starting point of discussion.
> > 
> > http://lists.nongnu.org/archive/html/fluid-dev/2015-04/msg00009.html
> > 
> > 1)It gives functionnal behaviour of synt.audio-channels settings.
> > 2)audio.jack.multi is discuted also (with a possible minor bug).
> > 
> > 3) audio-groups and audio-channels number are used at mixer
> > initialization time
> > to define the maximum output buffer number like this.
> > 
> >    output_buffer_count = max (audio-channels,audio-groups).
> > 
> > May be synth.audio-groups is only useful when one want for the plugin
> > effect unit ?.
> 
> Thanks for the pointers. From what you write, therefore, it is not
> currently possible to route each midi channel to an independent audio
> output with jack. Right?
> 
> The actual use cases I'm after are essentially 2:
> 1. Record different instruments from a "general midi" soundfont (on
> different midi channels) independently e.g. in Ardour on a track per
> instrument.
> 2. Record drums from a drum soundfont independently to their own track
> in the DAW (Ardour). In that case I woul be sequencing each drum on its
> own channel.
> 
> I understand use case 2 is rather corner, but 1. is probably not that
> exotic.
> 
> Lorenzo.
> 
> > jjc.
> > 
> > Le 24/04/2016 03:11, Lorenzo Sutton a écrit :
> >> Hi all,
> >> 
> >> What is the current status of synth.audio-channels and
> >> synth.audio-groups on Linux with jack?
> >> 
> >> By starting fluidsynth with something like:
> >> 
> >> fluidsynth -a jack -o synth.audio-channels=4 -o synth.audio-groups=4 \
> >> -o audio.jack.multi=no
> >> 
> >> I do get 4 pairs of jack audio outputs.
> >> 
> >> However the behaviour isn't as expected at least according to this
> >> (very old post):
> >> 
> >> https://lists.nongnu.org/archive/html/fluid-dev/2004-02/msg00027.html
> >> 
> >> Ideally is there a way to have each channel routed to a separate audio
> >> output on jack these days? Any help appreciated.
> >> 
> >> Lorenzo
> >> 
> >> _______________________________________________
> >> 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
> 
> _______________________________________________
> fluid-dev mailing list
> fluid-dev@nongnu.org
> https://lists.nongnu.org/mailman/listinfo/fluid-dev
--- src/drivers/fluid_jack.c.orig	2014-12-23 09:38:01.047865897 +0100
+++ src/drivers/fluid_jack.c	2014-12-23 09:17:51.620285608 +0100
@@ -268,7 +268,7 @@
 
   fluid_settings_getint (settings, "audio.jack.multi", &multi);
 
-  if (multi)
+  if (!multi)
   {
     /* create the two audio output ports */
     dev->num_output_ports = 1;
--- fluidsynth/src/synth/fluid_synth.c.orig	2015-04-11 21:55:47.000000000 +0200
+++ fluidsynth/src/synth/fluid_synth.c	2015-04-19 14:06:11.835456740 +0200
@@ -2479,7 +2479,7 @@
 
   /* Then, run one_block() and copy till we have 'len' samples  */
   while (count < len) {
-    fluid_rvoice_mixer_set_mix_fx(synth->eventhandler->mixer, 0);
+    fluid_rvoice_mixer_set_mix_fx(synth->eventhandler->mixer, 1); /* reverb on output 0 */
     fluid_synth_render_blocks(synth, 1); // TODO: 
     fluid_rvoice_mixer_get_bufs(synth->eventhandler->mixer, &left_in, &right_in);
 
_______________________________________________
fluid-dev mailing list
fluid-dev@nongnu.org
https://lists.nongnu.org/mailman/listinfo/fluid-dev

Reply via email to