changeset 511:e2c7ee8998da

reSID sampling options in GUI. Not yet used, because libSIDPlay2 API does not have abstraction layer for handling those.
author Matti Hamalainen <ccr@tnsp.org>
date Mon, 29 Jan 2007 03:03:05 +0000
parents 2b56b953fcad
children e1e3055accf2
files src/xs_config.c xmms-sid.glade
diffstat 2 files changed, 235 insertions(+), 149 deletions(-) [+]
line wrap: on
line diff
--- a/src/xs_config.c	Sun Jan 28 15:10:02 2007 +0000
+++ b/src/xs_config.c	Mon Jan 29 03:03:05 2007 +0000
@@ -883,6 +883,8 @@
 #endif
 
 	/* Update the widget sensitivities */
+	gtk_widget_set_sensitive(LUW("cfg_resid_grp"), FALSE);
+		
 	xs_cfg_emu_filters_toggled((GtkToggleButton *) LUW("cfg_emu_filters"), NULL);
 	xs_cfg_ftitle_override_toggled((GtkToggleButton *) LUW("cfg_ftitle_override"), NULL);
 	xs_cfg_emu_sidplay1_toggled((GtkToggleButton *) LUW("cfg_emu_sidplay1"), NULL);
--- a/xmms-sid.glade	Sun Jan 28 15:10:02 2007 +0000
+++ b/xmms-sid.glade	Mon Jan 29 03:03:05 2007 +0000
@@ -415,6 +415,155 @@
 	<spacing>0</spacing>
 
 	<widget>
+	  <class>GtkHBox</class>
+	  <name>hbox1</name>
+	  <homogeneous>False</homogeneous>
+	  <spacing>0</spacing>
+	  <child>
+	    <padding>0</padding>
+	    <expand>True</expand>
+	    <fill>True</fill>
+	  </child>
+
+	  <widget>
+	    <class>GtkFrame</class>
+	    <name>frame2</name>
+	    <border_width>4</border_width>
+	    <label>Clock speed:</label>
+	    <label_xalign>0</label_xalign>
+	    <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
+	    <child>
+	      <padding>0</padding>
+	      <expand>True</expand>
+	      <fill>True</fill>
+	    </child>
+
+	    <widget>
+	      <class>GtkVBox</class>
+	      <name>vbox4</name>
+	      <border_width>2</border_width>
+	      <homogeneous>False</homogeneous>
+	      <spacing>2</spacing>
+
+	      <widget>
+		<class>GtkCheckButton</class>
+		<name>cfg_emu_clock_force</name>
+		<tooltip>If enabled, this option &quot;forces&quot; the emulation engine to use the selected clock speed/frequency. Otherwise the speed is determined from played file itself.</tooltip>
+		<can_focus>True</can_focus>
+		<label>Force speed</label>
+		<active>False</active>
+		<draw_indicator>True</draw_indicator>
+		<child>
+		  <padding>0</padding>
+		  <expand>False</expand>
+		  <fill>False</fill>
+		</child>
+	      </widget>
+
+	      <widget>
+		<class>GtkRadioButton</class>
+		<name>cfg_emu_clock_pal</name>
+		<tooltip>PAL is the european TV standard, which uses 50Hz vertical refresh frequency. Largest % of SID-tunes have been made for PAL computers.</tooltip>
+		<can_focus>True</can_focus>
+		<label>PAL (50 Hz)</label>
+		<active>False</active>
+		<draw_indicator>True</draw_indicator>
+		<group>speed</group>
+		<child>
+		  <padding>0</padding>
+		  <expand>False</expand>
+		  <fill>False</fill>
+		</child>
+	      </widget>
+
+	      <widget>
+		<class>GtkRadioButton</class>
+		<name>cfg_emu_clock_ntsc</name>
+		<tooltip>NTSC is the TV standard with 60Hz vertical refresh rate (and other features that differ from PAL). It is mainly used in United States, Japan and certain other countries.</tooltip>
+		<can_focus>True</can_focus>
+		<label>NTSC (60 Hz)</label>
+		<active>False</active>
+		<draw_indicator>True</draw_indicator>
+		<group>speed</group>
+		<child>
+		  <padding>0</padding>
+		  <expand>False</expand>
+		  <fill>False</fill>
+		</child>
+	      </widget>
+	    </widget>
+	  </widget>
+
+	  <widget>
+	    <class>GtkFrame</class>
+	    <name>frame3</name>
+	    <border_width>4</border_width>
+	    <label>SID model: </label>
+	    <label_xalign>0</label_xalign>
+	    <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
+	    <child>
+	      <padding>0</padding>
+	      <expand>True</expand>
+	      <fill>True</fill>
+	    </child>
+
+	    <widget>
+	      <class>GtkVBox</class>
+	      <name>vbox3</name>
+	      <border_width>2</border_width>
+	      <homogeneous>False</homogeneous>
+	      <spacing>2</spacing>
+
+	      <widget>
+		<class>GtkCheckButton</class>
+		<name>cfg_emu_sid_force</name>
+		<tooltip>If enabled, this option &quot;forces&quot; the emulation engine to use the selected SID-chip model. Otherwise the preferred SID model is determined from the file (if PSIDv2NG type) or if not available, this setting is used.</tooltip>
+		<can_focus>True</can_focus>
+		<label>Force model</label>
+		<active>False</active>
+		<draw_indicator>True</draw_indicator>
+		<child>
+		  <padding>0</padding>
+		  <expand>False</expand>
+		  <fill>False</fill>
+		</child>
+	      </widget>
+
+	      <widget>
+		<class>GtkRadioButton</class>
+		<name>cfg_emu_mos6581</name>
+		<tooltip>MOS/CSG 6581 is the earlier major version of SID chip. It differs from 8580 in few ways, having much fuller filter (which, due to design error, is never same between two different SID-chips) and has the &quot;volume adjustment bug&quot;, which enables playing of digital samples.</tooltip>
+		<can_focus>True</can_focus>
+		<label>MOS 6581</label>
+		<active>False</active>
+		<draw_indicator>True</draw_indicator>
+		<group>waveforms</group>
+		<child>
+		  <padding>0</padding>
+		  <expand>False</expand>
+		  <fill>False</fill>
+		</child>
+	      </widget>
+
+	      <widget>
+		<class>GtkRadioButton</class>
+		<name>cfg_emu_mos8580</name>
+		<can_focus>True</can_focus>
+		<label>MOS 8580</label>
+		<active>False</active>
+		<draw_indicator>True</draw_indicator>
+		<group>waveforms</group>
+		<child>
+		  <padding>0</padding>
+		  <expand>False</expand>
+		  <fill>False</fill>
+		</child>
+	      </widget>
+	    </widget>
+	  </widget>
+	</widget>
+
+	<widget>
 	  <class>GtkFrame</class>
 	  <name>frame26</name>
 	  <border_width>4</border_width>
@@ -581,155 +730,6 @@
 	<spacing>0</spacing>
 
 	<widget>
-	  <class>GtkHBox</class>
-	  <name>hbox1</name>
-	  <homogeneous>False</homogeneous>
-	  <spacing>0</spacing>
-	  <child>
-	    <padding>0</padding>
-	    <expand>False</expand>
-	    <fill>True</fill>
-	  </child>
-
-	  <widget>
-	    <class>GtkFrame</class>
-	    <name>frame2</name>
-	    <border_width>4</border_width>
-	    <label>Clock speed:</label>
-	    <label_xalign>0</label_xalign>
-	    <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
-	    <child>
-	      <padding>0</padding>
-	      <expand>True</expand>
-	      <fill>True</fill>
-	    </child>
-
-	    <widget>
-	      <class>GtkVBox</class>
-	      <name>vbox4</name>
-	      <border_width>2</border_width>
-	      <homogeneous>False</homogeneous>
-	      <spacing>2</spacing>
-
-	      <widget>
-		<class>GtkCheckButton</class>
-		<name>cfg_emu_clock_force</name>
-		<tooltip>If enabled, this option &quot;forces&quot; the emulation engine to use the selected clock speed/frequency. Otherwise the speed is determined from played file itself.</tooltip>
-		<can_focus>True</can_focus>
-		<label>Force speed</label>
-		<active>False</active>
-		<draw_indicator>True</draw_indicator>
-		<child>
-		  <padding>0</padding>
-		  <expand>False</expand>
-		  <fill>False</fill>
-		</child>
-	      </widget>
-
-	      <widget>
-		<class>GtkRadioButton</class>
-		<name>cfg_emu_clock_pal</name>
-		<tooltip>PAL is the european TV standard, which uses 50Hz vertical refresh frequency. Largest % of SID-tunes have been made for PAL computers.</tooltip>
-		<can_focus>True</can_focus>
-		<label>PAL (50 Hz)</label>
-		<active>False</active>
-		<draw_indicator>True</draw_indicator>
-		<group>speed</group>
-		<child>
-		  <padding>0</padding>
-		  <expand>False</expand>
-		  <fill>False</fill>
-		</child>
-	      </widget>
-
-	      <widget>
-		<class>GtkRadioButton</class>
-		<name>cfg_emu_clock_ntsc</name>
-		<tooltip>NTSC is the TV standard with 60Hz vertical refresh rate (and other features that differ from PAL). It is mainly used in United States, Japan and certain other countries.</tooltip>
-		<can_focus>True</can_focus>
-		<label>NTSC (60 Hz)</label>
-		<active>False</active>
-		<draw_indicator>True</draw_indicator>
-		<group>speed</group>
-		<child>
-		  <padding>0</padding>
-		  <expand>False</expand>
-		  <fill>False</fill>
-		</child>
-	      </widget>
-	    </widget>
-	  </widget>
-
-	  <widget>
-	    <class>GtkFrame</class>
-	    <name>frame3</name>
-	    <border_width>4</border_width>
-	    <label>SID model: </label>
-	    <label_xalign>0</label_xalign>
-	    <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
-	    <child>
-	      <padding>0</padding>
-	      <expand>True</expand>
-	      <fill>True</fill>
-	    </child>
-
-	    <widget>
-	      <class>GtkVBox</class>
-	      <name>vbox3</name>
-	      <border_width>2</border_width>
-	      <homogeneous>False</homogeneous>
-	      <spacing>2</spacing>
-
-	      <widget>
-		<class>GtkCheckButton</class>
-		<name>cfg_emu_sid_force</name>
-		<tooltip>If enabled, this option &quot;forces&quot; the emulation engine to use the selected SID-chip model. Otherwise the preferred SID model is determined from the file (if PSIDv2NG type) or if not available, this setting is used.</tooltip>
-		<can_focus>True</can_focus>
-		<label>Force model</label>
-		<active>False</active>
-		<draw_indicator>True</draw_indicator>
-		<child>
-		  <padding>0</padding>
-		  <expand>False</expand>
-		  <fill>False</fill>
-		</child>
-	      </widget>
-
-	      <widget>
-		<class>GtkRadioButton</class>
-		<name>cfg_emu_mos6581</name>
-		<tooltip>MOS/CSG 6581 is the earlier major version of SID chip. It differs from 8580 in few ways, having much fuller filter (which, due to design error, is never same between two different SID-chips) and has the &quot;volume adjustment bug&quot;, which enables playing of digital samples.</tooltip>
-		<can_focus>True</can_focus>
-		<label>MOS 6581</label>
-		<active>False</active>
-		<draw_indicator>True</draw_indicator>
-		<group>waveforms</group>
-		<child>
-		  <padding>0</padding>
-		  <expand>False</expand>
-		  <fill>False</fill>
-		</child>
-	      </widget>
-
-	      <widget>
-		<class>GtkRadioButton</class>
-		<name>cfg_emu_mos8580</name>
-		<can_focus>True</can_focus>
-		<label>MOS 8580</label>
-		<active>False</active>
-		<draw_indicator>True</draw_indicator>
-		<group>waveforms</group>
-		<child>
-		  <padding>0</padding>
-		  <expand>False</expand>
-		  <fill>False</fill>
-		</child>
-	      </widget>
-	    </widget>
-	  </widget>
-	</widget>
-
-	<widget>
 	  <class>GtkFrame</class>
 	  <name>cfg_sidplay2_grp</name>
 	  <border_width>4</border_width>
@@ -797,6 +797,90 @@
 	    </widget>
 	  </widget>
 	</widget>
+
+	<widget>
+	  <class>GtkFrame</class>
+	  <name>cfg_resid_grp</name>
+	  <border_width>4</border_width>
+	  <label>reSID sampling options: </label>
+	  <label_xalign>0</label_xalign>
+	  <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
+	  <child>
+	    <padding>0</padding>
+	    <expand>False</expand>
+	    <fill>True</fill>
+	  </child>
+
+	  <widget>
+	    <class>GtkVBox</class>
+	    <name>vbox37</name>
+	    <border_width>2</border_width>
+	    <homogeneous>False</homogeneous>
+	    <spacing>2</spacing>
+
+	    <widget>
+	      <class>GtkRadioButton</class>
+	      <name>cfg_emu_resid_fast</name>
+	      <tooltip>Fastest and also worst sounding sampling method, simply picks nearest neighbouring sample.</tooltip>
+	      <can_focus>True</can_focus>
+	      <label>Fast (nearest neighbour)</label>
+	      <active>False</active>
+	      <draw_indicator>True</draw_indicator>
+	      <group>samplingtype</group>
+	      <child>
+		<padding>0</padding>
+		<expand>False</expand>
+		<fill>False</fill>
+	      </child>
+	    </widget>
+
+	    <widget>
+	      <class>GtkRadioButton</class>
+	      <name>cfg_emu_resid_int</name>
+	      <tooltip>Uses linear interpolation between samples, yielding higher audio quality with less sampling noise.</tooltip>
+	      <can_focus>True</can_focus>
+	      <label>Linear interpolation</label>
+	      <active>False</active>
+	      <draw_indicator>True</draw_indicator>
+	      <group>samplingtype</group>
+	      <child>
+		<padding>0</padding>
+		<expand>False</expand>
+		<fill>False</fill>
+	      </child>
+	    </widget>
+
+	    <widget>
+	      <class>GtkRadioButton</class>
+	      <name>cfg_emu_resid_res_fast</name>
+	      <can_focus>True</can_focus>
+	      <label>Resampling</label>
+	      <active>False</active>
+	      <draw_indicator>True</draw_indicator>
+	      <group>samplingtype</group>
+	      <child>
+		<padding>0</padding>
+		<expand>False</expand>
+		<fill>False</fill>
+	      </child>
+	    </widget>
+
+	    <widget>
+	      <class>GtkRadioButton</class>
+	      <name>cfg_emu_resid_res_int</name>
+	      <can_focus>True</can_focus>
+	      <label>Resampling (FIR)</label>
+	      <active>False</active>
+	      <draw_indicator>True</draw_indicator>
+	      <group>samplingtype</group>
+	      <child>
+		<padding>0</padding>
+		<expand>False</expand>
+		<fill>False</fill>
+	      </child>
+	    </widget>
+	  </widget>
+	</widget>
       </widget>
 
       <widget>