fluid-dev
[Top][All Lists]
Advanced

[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        *
************************************************************************

Attachment: rxfluid
Description: Binary data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]