[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[fluid-dev] Re: Keyboard split via router commands?
From: |
Dave Serls |
Subject: |
[fluid-dev] Re: Keyboard split via router commands? |
Date: |
Fri, 21 May 2004 13:16:10 -0600 |
On Fri, 21 May 2004 10:12:39 -0700 (PDT)
Ken Ellinwood <address@hidden> wrote:
> I was contacted recently by a FluidGUI user who is interested in configuring a
> keyboard split via yet-to-be implemented router support in FluidGUI.
>
> Question is, can the fluidsynth router commands be used to configure a split?
> If yes, how? Please feel free to enlighten me on the purpose of the routing
> feature. Examples would be greatly appreciated.
After peeking at the source code, I am able to configure a split.
It's not totally intuitive, but not bad.
I'm inserting my fluidsynth command filter script (sorry it's rexx, but I'm
an old mainframe dude) which should show how I arrived at this method.
The split is at note 55.
>
> As for router support in FluidGUI, I'm thinking this:
>
> >
> > - Note: Routing script is an ordered set of one or more fluidsynth router
> > commands ( router_clear, router_default, router_begin, router_chan,
> > router_par1, router_par2, router_end)
> >
> > - FluidGUI shall allow the routing script to be edited graphically
> > (i.e, in a text box widget).
> >
> > - FluidGUI may support context sensitive editing of the routing
> > script (validation, command-completion, etc).
> >
> > - FluidGUI shall allow the user to re-execute the script.
> >
> > - FluidGUI shall allow the user to clear all route commands.
> >
> > - FluidGUI shall save the set of route commands as part of
> > the current config and re-execute them automatically each time the
> > synth is started with that config.
>
> Ken
>
>
#! /usr/bin/rexx
/* interpret console commands for fluidsynth */
ccnt = 0
do forever
parse pull stmt
cmd = word( stmt, 1 )
ccnt = ccnt + 1
if ccnt = 1 then 'aconnect 64:0 128:0'
select
when cmd = "q" then do
say "quit"
'aconnect -x'
exit 0
end
when cmd = "split" then do
bass = word(stmt, 2)
melody = word(stmt, 3)
/* find the bass/melody instruments in bank 0 of font 0 */
say "select 12 0 0" bass
say "select 13 0 0" melody
say "router_clear"
/* use channels 12 & 13 for assignment */
say "router_begin note"
say "router_chan 0 0 0 12"
say "router_par1 1 55 1 0"
say "router_end"
say "router_begin note"
say "router_chan 0 0 0 13"
say "router_par1 55 88 1 0"
say "router_end"
end
otherwise do /* send command as-is */
say stmt
end
end
end
--
************************************************************************
* Dave Serls Littleton, CO, USA *
* dashs.denver.co.us sorrybiscuit.com *
************************************************************************
rxfluid
Description: Binary data