The chamber files are generated in much the same format as the console files. They can read inputs from connected input cards (tuning keyboards, expression over-rides, stop over-rides, etc.). Prior to entering the code from the config file, they have loaded the data sent over the high speed data line from the console(s). Every time data is sent from a console, the chamber executes it’s own config file and ports the data to the driver cards.
It stands to reason that in most instruments, it is not helpful to refer to stops by their console stop number. It is much easier to make an alias table to refer to them by name. A consistent name scheme should be employed, as the compiler will not proceed if it encounters an unknown name.
Several examples of naming conventions are listed below:
Var Bit PD_16DBO is Stop_1 Var Bit PD_16BDN is Stop_2 Var Bit PD_16GED is Stop_3 Var Bit PD_8VCL is Stop_4 Var Bit PD_16TBN is Stop_5 Var Bit Sw_P_8 is Stop_6
Var Bit Pd_Diapason_16 is Stop_1 Var Bit Pd_Bourdon_16 is Stop_2 Var Bit Pd_Gedeckt_16 is Stop_3 Var Bit Pd_Violin_Cello_8 is Stop_4 Var Bit Pd_Trombone_16 is Stop_5 Var Bit Sw_P_8 is Stop_6
Both types accomplish the same thing – they give alternative names to generic numbers and make the configuration much easier. The entire stoplist should be set up with alternate names.
Next the couplers are defined using stp_cplr ( control_bit , Source_Key , Dest_Key , pitch ):
Stp_cplr ( Sw_U_O , Sw_k , Sw_k , p_0 ) Stp_cplr ( Sw_S_4 , Sw_k , Sw_k , p_4 ) Stp_cplr ( Sw_S_16 , Sw_k , Sw_k , p_16 ) Stp_cplr ( Gr_U_O , Gr_k , Gr_k , p_0 ) Stp_cplr ( Gr_G_4 , Gr_k , Gr_k , p_4 ) Stp_cplr ( Gr_G_16 , Gr_k , Gr_k , p_16 ) Stp_cplr ( Gr_P_4 , Gr_k , Pd_k , p_4 ) Stp_cplr ( Gr_P_8 , Gr_k , Pd_k , p_8 ) Stp_cplr ( Sw_P_4 , Sw_k , Pd_k , p_4 ) Stp_cplr ( Sw_P_8 , Sw_k , Pd_k , p_8 ) Stp_cplr ( Sw_G_4 , Sw_k , Gr_k , p_4 ) Stp_cplr ( Sw_G_8 , Sw_k , Gr_k , p_8 ) Stp_cplr ( Sw_G_16 , Sw_k , Gr_k , p_16 )
The first coupler of course defines the transition between input and output. Once the couplers are defined, it is a mere matter of defining Stops, Ranks (segments and full ranks), and where the ranks are wired.
Building Unit Ranks
There are several types of outputs, first we will look at a unit rank:
Stp_seg ( Sw_Piccolo_2 , p_2 , Sw_k ) Stp_seg ( Sw_Nasard_2_2f3 , p_2_2f3 , Sw_k ) Stp_seg ( Sw_Bourdon_4 , p_4 , Sw_k ) Stp_seg ( Gr_Bourdon_4 , p_4 , Gr_k ) Stp_seg ( Pd_Bourdon_4 , p_4 , Pd_k ) Stp_seg ( Sw_Bourdon_8 , p_8 , Sw_k ) Stp_seg ( Gr_Bourdon_8 , p_8 , Gr_k ) Stp_seg ( Pd_Bourdon_8 , p_8 , Pd_k ) Stp_seg ( Gr_Bourdon_16 , p_16 , Gr_k ) Stp_seg ( Pd_Bourdon_16 , p_16 , Pd_k ) rank_trim ( 97 , P_16 ) rnk_seg ( 97 , 8 , 33 )