gbc.gridx=0;gbc.gridy=0;gbc.gridwidth=1;gbc.gridheight=1; voiceBpanel.add(new JLabel(" "),gbc); addWidget(voiceBpanel,new ComboBoxWidget("Key Mode Assign",patch,new ParamModel(patch,6+32),null,PolyMonoName),3,0,6,1,40); addWidget(voiceBpanel,new ScrollBarWidget("Output Attenuator",patch,0,7,0,new ParamModel(patch,6+56),null),9,0,6,1,49);  gbc.gridx=0;gbc.gridy=1;gbc.gridwidth=1;gbc.gridheight=1; voiceBpanel.add(new JLabel(" "),gbc); gbc.gridx=0;gbc.gridy=2;gbc.gridwidth=3;gbc.gridheight=1; voiceBpanel.add(new JLabel("Pitch Bend: "),gbc); addWidget(voiceBpanel,new ComboBoxWidget("Range",patch,new ParamModel(patch,6+33),null,PitchBendRangeName),3,2,6,1,41); addWidget(voiceBpanel,new ComboBoxWidget("Step",patch,new ParamModel(patch,6+34),null,PitchBendStepName),9,2,6,1,42);  gbc.gridx=0;gbc.gridy=3;gbc.gridwidth=1;gbc.gridheight=1; voiceBpanel.add(new JLabel(" "),gbc); gbc.gridx=0;gbc.gridy=4;gbc.gridwidth=3;gbc.gridheight=1; voiceBpanel.add(new JLabel("Portamento: "),gbc); addWidget(voiceBpanel,new ComboBoxWidget("Portamento/Glissando",patch,new ParamModel(patch,6+36),null,PortGlissName),3,4,6,1,43); addWidget(voiceBpanel,new ComboBoxWidget("Mode (Poly/Mono)",patch,new ParamModel(patch,6+37),null,PortModeName),3,5,6,1,44); addWidget(voiceBpanel,new ScrollBarWidget("Time",patch,0,99,0,new ParamModel(patch,6+35),null),9,5,6,1,50);  gbc.gridx=0;gbc.gridy=6;gbc.gridwidth=1;gbc.gridheight=1; voiceBpanel.add(new JLabel(" "),gbc); gbc.gridx=0;gbc.gridy=7;gbc.gridwidth=3;gbc.gridheight=1; voiceBpanel.add(new JLabel("Modulation Wheel: "),gbc); addWidget(voiceBpanel,new ComboBoxWidget("Assign",patch,new ParamModel(patch,6+40),null,AssignName),3,7,6,1,45); addWidget(voiceBpanel,new ScrollBarWidget("Sensitivity",patch,0,15,0,new ParamModel(patch,6+39),null),9,7,6,1,51);  gbc.gridx=0;gbc.gridy=8;gbc.gridwidth=1;gbc.gridheight=1; voiceBpanel.add(new JLabel(" "),gbc); gbc.gridx=0;gbc.gridy=9;gbc.gridwidth=3;gbc.gridheight=1; voiceBpanel.add(new JLabel("Foot Controller: "),gbc); addWidget(voiceBpanel,new ComboBoxWidget("Assign",patch,new ParamModel(patch,6+42),null,AssignName),3,9,6,1,46); addWidget(voiceBpanel,new ScrollBarWidget("Sensitivity",patch,0,15,0,new ParamModel(patch,6+41),null),9,9,6,1,52);  gbc.gridx=0;gbc.gridy=10;gbc.gridwidth=1;gbc.gridheight=1; voiceBpanel.add(new JLabel(" "),gbc); gbc.gridx=0;gbc.gridy=11;gbc.gridwidth=3;gbc.gridheight=1; voiceBpanel.add(new JLabel("After Touch: "),gbc); addWidget(voiceBpanel,new ComboBoxWidget("Assign",patch,new ParamModel(patch,6+44),null,AssignName),3,11,6,1,47); addWidget(voiceBpanel,new ScrollBarWidget("Sensitivity",patch,0,15,0,new ParamModel(patch,6+43),null),9,11,6,1,53);  gbc.gridx=0;gbc.gridy=12;gbc.gridwidth=1;gbc.gridheight=1; voiceBpanel.add(new JLabel(" "),gbc); gbc.gridx=0;gbc.gridy=13;gbc.gridwidth=3;gbc.gridheight=1; voiceBpanel.add(new JLabel("Breath Controller: "),gbc); addWidget(voiceBpanel,new ComboBoxWidget("Assign",patch,new ParamModel(patch,6+46),null,AssignName),3,13,6,1,48); addWidget(voiceBpanel,new ScrollBarWidget("Sensitivity",patch,0,15,0,new ParamModel(patch,6+45),null),9,13,6,1,54);
gbc.gridx=0;gbc.gridy=14;gbc.gridwidth=1;gbc.gridheight=1; panel.add(new JLabel(" "),gbc); gbc.gridx=0;gbc.gridy=15;gbc.gridwidth=3;gbc.gridheight=1; panel.add(new JLabel("Breath Controller: "),gbc); addWidget(panel,new ComboBoxWidget("Assign",patch,new ParamModel(patch,6+(i*30)+16),new PerformanceSender(patch,16),AssignName),3,15,6,1,26); addWidget(panel,new ScrollBarWidget("Sensitivity",patch,0,15,0,new ParamModel(patch,6+(i*30)+15),new PerformanceSender(patch,15)),9,15,6,1,27); }
	protected void buildEditor (Patch patch)	{		/*		 *   Performance Parameter - Common settings		 */		JPanel cmnPane= new JPanel();		cmnPane.setLayout(new GridBagLayout());gbc.weightx=0;		addWidget(cmnPane,new PatchNameWidget("Performance Name (30 Char.)", patch),0,0,7,1,1);		addWidget(cmnPane,new ComboBoxWidget("Key Assign Mode",patch,new ParamModel(patch,6+60),new PerformanceSender(patch,30),KeyAssignName),0,1,3,1,4);		addWidget(cmnPane,new ComboBoxWidget("Voice Memory Select Flag",patch,new ParamModel(patch,6+61),new PerformanceSender(patch,31),VoiceSelectName),3,1,3,1,2);		addWidget(cmnPane,new ComboBoxWidget("Corresponding Voice?",patch,new ParamModel(patch,6+0),null,VoiceNumberName),0,2,3,1,3);		gbc.gridx=3;gbc.gridy=2;gbc.gridwidth=6;gbc.gridheight=1;gbc.anchor=GridBagConstraints.EAST;		//cmnPane.add(new JLabel("(Attention! This is an undocumented parameter and only valid for a single patch!)"),gbc);		cmnPane.add(new JLabel("(Attention! This is an undocumented parameter!)					   "),gbc);		gbc.gridx=0;gbc.gridy=0;gbc.gridwidth=3;gbc.gridheight=1;		cmnPane.setBorder(new TitledBorder(new EtchedBorder(EtchedBorder.RAISED),"Common",TitledBorder.CENTER,TitledBorder.CENTER));		scrollPane.add(cmnPane,gbc);		/*		 *   Voice A+B Parameter		 */		JTabbedPane voicePane=new JTabbedPane();		// Voice A		JPanel voiceApanel = new JPanel();		voiceApanel.setLayout(new GridBagLayout());		voicePane.addTab("Voice A",voiceApanel);gbc.weightx=1;		gbc.gridx=0;gbc.gridy=0;gbc.gridwidth=1;gbc.gridheight=1; voiceApanel.add(new JLabel(" "),gbc);		addWidget(voiceApanel,new ComboBoxWidget("Key Mode Assign",patch,new ParamModel(patch,6+2),new PerformanceSender(patch,2),PolyMonoName),3,0,6,1,10);		addWidget(voiceApanel,new ScrollBarWidget("Output Attenuator",patch,0,7,0,new ParamModel(patch,6+26),new PerformanceSender(patch,26)),9,0,6,1,19);		gbc.gridx=0;gbc.gridy=1;gbc.gridwidth=1;gbc.gridheight=1; voiceApanel.add(new JLabel(" "),gbc);		gbc.gridx=0;gbc.gridy=2;gbc.gridwidth=3;gbc.gridheight=1; voiceApanel.add(new JLabel("Pitch Bend: "),gbc);		addWidget(voiceApanel,new ComboBoxWidget("Range",patch,new ParamModel(patch,6+3),new PerformanceSender(patch,3),PitchBendRangeName),3,2,6,1,11);		addWidget(voiceApanel,new ComboBoxWidget("Step",patch,new ParamModel(patch,6+4),new PerformanceSender(patch,4),PitchBendStepName),9,2,6,1,12);		gbc.gridx=0;gbc.gridy=3;gbc.gridwidth=1;gbc.gridheight=1; voiceApanel.add(new JLabel(" "),gbc);		gbc.gridx=0;gbc.gridy=4;gbc.gridwidth=3;gbc.gridheight=1; voiceApanel.add(new JLabel("Portamento: "),gbc);		addWidget(voiceApanel,new ComboBoxWidget("Portamento/Glissando",patch,new ParamModel(patch,6+6),new PerformanceSender(patch,6),PortGlissName),3,4,6,1,13);		addWidget(voiceApanel,new ComboBoxWidget("Mode (Poly/Mono)",patch,new ParamModel(patch,6+7),new PerformanceSender(patch,7),PortModeName),3,5,6,1,14);		addWidget(voiceApanel,new ScrollBarWidget("Time",patch,0,99,0,new ParamModel(patch,6+5),new PerformanceSender(patch,5)),9,5,6,1,20);		gbc.gridx=0;gbc.gridy=6;gbc.gridwidth=1;gbc.gridheight=1; voiceApanel.add(new JLabel(" "),gbc);		gbc.gridx=0;gbc.gridy=7;gbc.gridwidth=3;gbc.gridheight=1; voiceApanel.add(new JLabel("Modulation Wheel: "),gbc);		addWidget(voiceApanel,new ComboBoxWidget("Assign",patch,new ParamModel(patch,6+10),new PerformanceSender(patch,10),AssignName),3,7,6,1,15);		addWidget(voiceApanel,new ScrollBarWidget("Sensitivity",patch,0,15,0,new ParamModel(patch,6+9),new PerformanceSender(patch,9)),9,7,6,1,21);		gbc.gridx=0;gbc.gridy=8;gbc.gridwidth=1;gbc.gridheight=1; voiceApanel.add(new JLabel(" "),gbc);		gbc.gridx=0;gbc.gridy=9;gbc.gridwidth=3;gbc.gridheight=1; voiceApanel.add(new JLabel("Foot Controller: "),gbc);		addWidget(voiceApanel,new ComboBoxWidget("Assign",patch,new ParamModel(patch,6+12),new PerformanceSender(patch,12),AssignName),3,9,6,1,16);		addWidget(voiceApanel,new ScrollBarWidget("Sensitivity",patch,0,15,0,new ParamModel(patch,6+11),new PerformanceSender(patch,11)),9,9,6,1,22);		gbc.gridx=0;gbc.gridy=10;gbc.gridwidth=1;gbc.gridheight=1; voiceApanel.add(new JLabel(" "),gbc);		gbc.gridx=0;gbc.gridy=11;gbc.gridwidth=3;gbc.gridheight=1; voiceApanel.add(new JLabel("After Touch: "),gbc);		addWidget(voiceApanel,new ComboBoxWidget("Assign",patch,new ParamModel(patch,6+14),new PerformanceSender(patch,14),AssignName),3,11,6,1,17);		addWidget(voiceApanel,new ScrollBarWidget("Sensitivity",patch,0,15,0,new ParamModel(patch,6+13),new PerformanceSender(patch,13)),9,11,6,1,23);		gbc.gridx=0;gbc.gridy=12;gbc.gridwidth=1;gbc.gridheight=1; voiceApanel.add(new JLabel(" "),gbc);		gbc.gridx=0;gbc.gridy=13;gbc.gridwidth=3;gbc.gridheight=1; voiceApanel.add(new JLabel("Breath Controller: "),gbc);		addWidget(voiceApanel,new ComboBoxWidget("Assign",patch,new ParamModel(patch,6+16),new PerformanceSender(patch,16),AssignName),3,13,6,1,18);		addWidget(voiceApanel,new ScrollBarWidget("Sensitivity",patch,0,15,0,new ParamModel(patch,6+15),new PerformanceSender(patch,15)),9,13,6,1,24);		// Voice B		JPanel voiceBpanel = new JPanel();		voiceBpanel.setLayout(new GridBagLayout());		voicePane.addTab("Voice B",voiceBpanel);gbc.weightx=1;		gbc.gridx=0;gbc.gridy=0;gbc.gridwidth=1;gbc.gridheight=1; voiceBpanel.add(new JLabel(" "),gbc);		addWidget(voiceBpanel,new ComboBoxWidget("Key Mode Assign",patch,new ParamModel(patch,6+32),null,PolyMonoName),3,0,6,1,40);		addWidget(voiceBpanel,new ScrollBarWidget("Output Attenuator",patch,0,7,0,new ParamModel(patch,6+56),null),9,0,6,1,49);		gbc.gridx=0;gbc.gridy=1;gbc.gridwidth=1;gbc.gridheight=1; voiceBpanel.add(new JLabel(" "),gbc);		gbc.gridx=0;gbc.gridy=2;gbc.gridwidth=3;gbc.gridheight=1; voiceBpanel.add(new JLabel("Pitch Bend: "),gbc);		addWidget(voiceBpanel,new ComboBoxWidget("Range",patch,new ParamModel(patch,6+33),null,PitchBendRangeName),3,2,6,1,41);		addWidget(voiceBpanel,new ComboBoxWidget("Step",patch,new ParamModel(patch,6+34),null,PitchBendStepName),9,2,6,1,42);		gbc.gridx=0;gbc.gridy=3;gbc.gridwidth=1;gbc.gridheight=1; voiceBpanel.add(new JLabel(" "),gbc);		gbc.gridx=0;gbc.gridy=4;gbc.gridwidth=3;gbc.gridheight=1; voiceBpanel.add(new JLabel("Portamento: "),gbc);		addWidget(voiceBpanel,new ComboBoxWidget("Portamento/Glissando",patch,new ParamModel(patch,6+36),null,PortGlissName),3,4,6,1,43);		addWidget(voiceBpanel,new ComboBoxWidget("Mode (Poly/Mono)",patch,new ParamModel(patch,6+37),null,PortModeName),3,5,6,1,44);		addWidget(voiceBpanel,new ScrollBarWidget("Time",patch,0,99,0,new ParamModel(patch,6+35),null),9,5,6,1,50);		gbc.gridx=0;gbc.gridy=6;gbc.gridwidth=1;gbc.gridheight=1; voiceBpanel.add(new JLabel(" "),gbc);		gbc.gridx=0;gbc.gridy=7;gbc.gridwidth=3;gbc.gridheight=1; voiceBpanel.add(new JLabel("Modulation Wheel: "),gbc);		addWidget(voiceBpanel,new ComboBoxWidget("Assign",patch,new ParamModel(patch,6+40),null,AssignName),3,7,6,1,45);		addWidget(voiceBpanel,new ScrollBarWidget("Sensitivity",patch,0,15,0,new ParamModel(patch,6+39),null),9,7,6,1,51);		gbc.gridx=0;gbc.gridy=8;gbc.gridwidth=1;gbc.gridheight=1; voiceBpanel.add(new JLabel(" "),gbc);		gbc.gridx=0;gbc.gridy=9;gbc.gridwidth=3;gbc.gridheight=1; voiceBpanel.add(new JLabel("Foot Controller: "),gbc);		addWidget(voiceBpanel,new ComboBoxWidget("Assign",patch,new ParamModel(patch,6+42),null,AssignName),3,9,6,1,46);		addWidget(voiceBpanel,new ScrollBarWidget("Sensitivity",patch,0,15,0,new ParamModel(patch,6+41),null),9,9,6,1,52);		gbc.gridx=0;gbc.gridy=10;gbc.gridwidth=1;gbc.gridheight=1; voiceBpanel.add(new JLabel(" "),gbc);		gbc.gridx=0;gbc.gridy=11;gbc.gridwidth=3;gbc.gridheight=1; voiceBpanel.add(new JLabel("After Touch: "),gbc);		addWidget(voiceBpanel,new ComboBoxWidget("Assign",patch,new ParamModel(patch,6+44),null,AssignName),3,11,6,1,47);		addWidget(voiceBpanel,new ScrollBarWidget("Sensitivity",patch,0,15,0,new ParamModel(patch,6+43),null),9,11,6,1,53);		gbc.gridx=0;gbc.gridy=12;gbc.gridwidth=1;gbc.gridheight=1; voiceBpanel.add(new JLabel(" "),gbc);		gbc.gridx=0;gbc.gridy=13;gbc.gridwidth=3;gbc.gridheight=1; voiceBpanel.add(new JLabel("Breath Controller: "),gbc);		addWidget(voiceBpanel,new ComboBoxWidget("Assign",patch,new ParamModel(patch,6+46),null,AssignName),3,13,6,1,48);		addWidget(voiceBpanel,new ScrollBarWidget("Sensitivity",patch,0,15,0,new ParamModel(patch,6+45),null),9,13,6,1,54);		gbc.gridx=0;gbc.gridy=10;gbc.gridwidth=3;gbc.gridheight=13;		scrollPane.add(voicePane,gbc);		pack();		show();	}