Merge pull request #702 from FluidSynth/settings-stylesheet

New style for FluidSynth Settings XML and other small cleanup
This commit is contained in:
Tom M 2020-11-03 17:17:22 +01:00 committed by GitHub
commit 780eebcb2c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 338 additions and 263 deletions

View File

@ -15,9 +15,8 @@ Developers: Settings can be deprecated by adding: <deprecated>SOME TEXT</depreca
--> -->
<?xml-stylesheet type="text/xsl" href="fluidsettings.xsl"?> <?xml-stylesheet type="text/xsl" href="fluidsettings.xsl"?>
<fluidsettings> <fluidsettings>
<synth> <synth label="Synthesizer settings">
<setting> <setting>
<isFirst>Synthesizer settings</isFirst>
<name>audio-channels</name> <name>audio-channels</name>
<type>int</type> <type>int</type>
<def>1</def> <def>1</def>
@ -45,18 +44,18 @@ Developers: Settings can be deprecated by adding: <deprecated>SOME TEXT</depreca
<setting> <setting>
<name>chorus.depth</name> <name>chorus.depth</name>
<type>num</type> <type>num</type>
<def>8</def> <def>8.0</def>
<min>0</min> <min>0.0</min>
<max>256</max> <max>256.0</max>
<desc> <desc>
Specifies the modulation depth of the chorus.</desc> Specifies the modulation depth of the chorus.</desc>
</setting> </setting>
<setting> <setting>
<name>chorus.level</name> <name>chorus.level</name>
<type>num</type> <type>num</type>
<def>2</def> <def>2.0</def>
<min>0</min> <min>0.0</min>
<max>10</max> <max>10.0</max>
<desc> <desc>
Specifies the output amplitude of the chorus signal.</desc> Specifies the output amplitude of the chorus signal.</desc>
</setting> </setting>
@ -74,7 +73,7 @@ Developers: Settings can be deprecated by adding: <deprecated>SOME TEXT</depreca
<type>num</type> <type>num</type>
<def>0.3</def> <def>0.3</def>
<min>0.1</min> <min>0.1</min>
<max>5</max> <max>5.0</max>
<desc> <desc>
Sets the modulation speed in Hz.</desc> Sets the modulation speed in Hz.</desc>
</setting> </setting>
@ -121,7 +120,7 @@ Developers: Settings can be deprecated by adding: <deprecated>SOME TEXT</depreca
<def>2</def> <def>2</def>
<min>2</min> <min>2</min>
<max>2</max> <max>2</max>
<desc>Specifies the number of effects per group. Currently there only are two effects (i.e. reverb and chorus).</desc> <desc>Specifies the number of effects per effects group. Currently this value can not be changed so there are always two effects per group available (reverb and chorus).</desc>
</setting> </setting>
<setting> <setting>
<name>effects-groups</name> <name>effects-groups</name>
@ -129,7 +128,7 @@ Developers: Settings can be deprecated by adding: <deprecated>SOME TEXT</depreca
<def>1</def> <def>1</def>
<min>1</min> <min>1</min>
<max>128</max> <max>128</max>
<desc>Specifies the number of effect units. By default, the sound of all voices is rendered by one reverb unit and one chorus unit respectively (even for multi-channel rendering). This setting gives the user control which effects of a voice to render to which independent audio channels. E.g. setting synth.effects-groups == synth.midi-channels allows to render the effects of each MIDI channel to separate audio buffers. If synth.effects-groups is smaller, it will wrap around. Note that any value >1 will significantly increase CPU usage.</desc> <desc>Specifies the number of effects groups. By default, the sound of all voices is rendered by one reverb and one chorus effect respectively (even for multi-channel rendering). This setting gives the user control which effects of a voice to render to which independent audio channels. E.g. setting synth.effects-groups == synth.midi-channels allows to render the effects of each MIDI channel to separate audio buffers. If synth.effects-groups is smaller than the number of MIDI channels, it will wrap around. Note that any value >1 will significantly increase CPU usage.</desc>
</setting> </setting>
<setting> <setting>
<name>gain</name> <name>gain</name>
@ -144,7 +143,7 @@ Developers: Settings can be deprecated by adding: <deprecated>SOME TEXT</depreca
<type>bool</type> <type>bool</type>
<def>0 (FALSE)</def> <def>0 (FALSE)</def>
<desc> <desc>
When set to "yes" the LADSPA subsystem will be enabled. This subsystem allows to load and interconnect LADSPA plug-ins. The output of the synthesizer is processed by the LADSPA subsystem. Note that the synthesizer has to be compiled with LADSPA support. More information about the LADSPA subsystem later.</desc> When set to 1 (TRUE) the LADSPA subsystem will be enabled. This subsystem allows to load and interconnect LADSPA plug-ins. The output of the synthesizer is processed by the LADSPA subsystem. Note that the synthesizer has to be compiled with LADSPA support. More information about the LADSPA subsystem can be found in doc/ladspa.md or on the FluidSynth website.</desc>
</setting> </setting>
<setting> <setting>
<name>lock-memory</name> <name>lock-memory</name>
@ -166,12 +165,12 @@ Developers: Settings can be deprecated by adding: <deprecated>SOME TEXT</depreca
<name>midi-bank-select</name> <name>midi-bank-select</name>
<type>str</type> <type>str</type>
<def>gs</def> <def>gs</def>
<vals>gm, gs, xg, mma</vals> <vals>gs, gm, xg, mma</vals>
<desc> <desc>
This setting defines how the synthesizer interprets Bank Select messages. This setting defines how the synthesizer interprets Bank Select messages.
<ul> <ul>
<li>gm: ignores CC0 and CC32 messages.</li>
<li>gs: (default) CC0 becomes the bank number, CC32 is ignored.</li> <li>gs: (default) CC0 becomes the bank number, CC32 is ignored.</li>
<li>gm: ignores CC0 and CC32 messages.</li>
<li>xg: CC32 becomes the bank number, CC0 toggles between melodic or drum channel.</li> <li>xg: CC32 becomes the bank number, CC0 toggles between melodic or drum channel.</li>
<li>mma: bank is calculated as CC0*128+CC32.</li> <li>mma: bank is calculated as CC0*128+CC32.</li>
</ul> </ul>
@ -189,9 +188,9 @@ Developers: Settings can be deprecated by adding: <deprecated>SOME TEXT</depreca
<setting> <setting>
<name>overflow.age</name> <name>overflow.age</name>
<type>num</type> <type>num</type>
<def>1000</def> <def>1000.0</def>
<min>-10000</min> <min>-10000.0</min>
<max>10000</max> <max>10000.0</max>
<desc> <desc>
This score is divided by the number of seconds this voice has been This score is divided by the number of seconds this voice has been
active and is added to the overflow priority. It is usually a positive active and is added to the overflow priority. It is usually a positive
@ -202,9 +201,9 @@ Developers: Settings can be deprecated by adding: <deprecated>SOME TEXT</depreca
<setting> <setting>
<name>overflow.important</name> <name>overflow.important</name>
<type>num</type> <type>num</type>
<def>5000</def> <def>5000.0</def>
<min>-50000</min> <min>-50000.0</min>
<max>50000</max> <max>50000.0</max>
<desc> <desc>
This score is added to voices on channels marked with the This score is added to voices on channels marked with the
synth.overflow.important-channels setting. synth.overflow.important-channels setting.
@ -213,7 +212,7 @@ Developers: Settings can be deprecated by adding: <deprecated>SOME TEXT</depreca
<setting> <setting>
<name>overflow.important-channels</name> <name>overflow.important-channels</name>
<type>str</type> <type>str</type>
<def>""</def> <def>(empty string)</def>
<desc> <desc>
This setting is a comma-separated list of MIDI channel numbers that should This setting is a comma-separated list of MIDI channel numbers that should
be treated as "important" by the overflow calculation, adding the score be treated as "important" by the overflow calculation, adding the score
@ -227,9 +226,9 @@ Developers: Settings can be deprecated by adding: <deprecated>SOME TEXT</depreca
<setting> <setting>
<name>overflow.percussion</name> <name>overflow.percussion</name>
<type>num</type> <type>num</type>
<def>4000</def> <def>4000.0</def>
<min>-10000</min> <min>-10000.0</min>
<max>10000</max> <max>10000.0</max>
<desc> <desc>
Sets the overflow priority score added to voices on a percussion Sets the overflow priority score added to voices on a percussion
channel. This is usually a positive score, to give percussion voices channel. This is usually a positive score, to give percussion voices
@ -240,9 +239,9 @@ Developers: Settings can be deprecated by adding: <deprecated>SOME TEXT</depreca
<setting> <setting>
<name>overflow.released</name> <name>overflow.released</name>
<type>num</type> <type>num</type>
<def>-2000</def> <def>-2000.0</def>
<min>-10000</min> <min>-10000.0</min>
<max>10000</max> <max>10000.0</max>
<desc> <desc>
Sets the overflow priority score added to voices that have already Sets the overflow priority score added to voices that have already
received a note-off event. This is usually a negative score, to give released received a note-off event. This is usually a negative score, to give released
@ -253,9 +252,9 @@ Developers: Settings can be deprecated by adding: <deprecated>SOME TEXT</depreca
<setting> <setting>
<name>overflow.sustained</name> <name>overflow.sustained</name>
<type>num</type> <type>num</type>
<def>-1000</def> <def>-1000.0</def>
<min>-10000</min> <min>-10000.0</min>
<max>10000</max> <max>10000.0</max>
<desc> <desc>
Sets the overflow priority score added to voices that are currently Sets the overflow priority score added to voices that are currently
sustained. With the default value, sustained voices are considered less sustained. With the default value, sustained voices are considered less
@ -265,9 +264,9 @@ Developers: Settings can be deprecated by adding: <deprecated>SOME TEXT</depreca
<setting> <setting>
<name>overflow.volume</name> <name>overflow.volume</name>
<type>num</type> <type>num</type>
<def>500</def> <def>500.0</def>
<min>-10000</min> <min>-10000.0</min>
<max>10000</max> <max>10000.0</max>
<desc> <desc>
Sets the overflow priority score added to voices based on their current Sets the overflow priority score added to voices based on their current
volume. The voice volume is normalized to a value between 0 and 1 and volume. The voice volume is normalized to a value between 0 and 1 and
@ -296,9 +295,9 @@ Developers: Settings can be deprecated by adding: <deprecated>SOME TEXT</depreca
<setting> <setting>
<name>reverb.damp</name> <name>reverb.damp</name>
<type>num</type> <type>num</type>
<def>0</def> <def>0.0</def>
<min>0</min> <min>0.0</min>
<max>1</max> <max>1.0</max>
<desc> <desc>
Sets the amount of reverb damping.</desc> Sets the amount of reverb damping.</desc>
</setting> </setting>
@ -306,8 +305,8 @@ Developers: Settings can be deprecated by adding: <deprecated>SOME TEXT</depreca
<name>reverb.level</name> <name>reverb.level</name>
<type>num</type> <type>num</type>
<def>0.9</def> <def>0.9</def>
<min>0</min> <min>0.0</min>
<max>1</max> <max>1.0</max>
<desc> <desc>
Sets the reverb output amplitude.</desc> Sets the reverb output amplitude.</desc>
</setting> </setting>
@ -315,8 +314,8 @@ Developers: Settings can be deprecated by adding: <deprecated>SOME TEXT</depreca
<name>reverb.room-size</name> <name>reverb.room-size</name>
<type>num</type> <type>num</type>
<def>0.2</def> <def>0.2</def>
<min>0</min> <min>0.0</min>
<max>1</max> <max>1.0</max>
<desc> <desc>
Sets the room size (i.e. amount of wet) reverb.</desc> Sets the room size (i.e. amount of wet) reverb.</desc>
</setting> </setting>
@ -324,8 +323,8 @@ Developers: Settings can be deprecated by adding: <deprecated>SOME TEXT</depreca
<name>reverb.width</name> <name>reverb.width</name>
<type>num</type> <type>num</type>
<def>0.5</def> <def>0.5</def>
<min>0</min> <min>0.0</min>
<max>100</max> <max>100.0</max>
<desc> <desc>
Sets the stereo spread of the reverb signal.</desc> Sets the stereo spread of the reverb signal.</desc>
</setting> </setting>
@ -357,9 +356,8 @@ Developers: Settings can be deprecated by adding: <deprecated>SOME TEXT</depreca
</setting> </setting>
</synth> </synth>
<audio> <audio label="Audio driver settings">
<setting> <setting>
<isFirst>Audio driver settings</isFirst>
<name>driver</name> <name>driver</name>
<type>str</type> <type>str</type>
<def>jack (Linux),<br /> <def>jack (Linux),<br />
@ -376,8 +374,8 @@ Developers: Settings can be deprecated by adding: <deprecated>SOME TEXT</depreca
<setting> <setting>
<name>periods</name> <name>periods</name>
<type>int</type> <type>int</type>
<def>16 (Linux, Mac OS X),<br /> <def>8 (Windows, MacOS9),<br />
8 (Windows) 16 (all other)
</def> </def>
<min>2</min> <min>2</min>
<max>64</max> <max>64</max>
@ -388,8 +386,8 @@ Developers: Settings can be deprecated by adding: <deprecated>SOME TEXT</depreca
<setting> <setting>
<name>period-size</name> <name>period-size</name>
<type>int</type> <type>int</type>
<def>64 (Linux, Mac OS X),<br /> <def>512 (Windows),<br />
512 (Windows) 64 (all other)
</def> </def>
<min>64</min> <min>64</min>
<max>8192</max> <max>8192</max>
@ -523,7 +521,7 @@ Developers: Settings can be deprecated by adding: <deprecated>SOME TEXT</depreca
<setting> <setting>
<name>jack.server</name> <name>jack.server</name>
<type>str</type> <type>str</type>
<def></def> <def>(empty string)</def>
<desc> <desc>
Jack server to connect to. Defaults to an empty string, which uses default Jack server. Jack server to connect to. Defaults to an empty string, which uses default Jack server.
</desc> </desc>
@ -606,9 +604,8 @@ Developers: Settings can be deprecated by adding: <deprecated>SOME TEXT</depreca
</setting> </setting>
</audio> </audio>
<midi> <midi label="MIDI driver settings">
<setting> <setting>
<isFirst>MIDI driver settings</isFirst>
<name>autoconnect</name> <name>autoconnect</name>
<type>bool</type> <type>bool</type>
<def>0 (FALSE)</def> <def>0 (FALSE)</def>
@ -636,7 +633,7 @@ Developers: Settings can be deprecated by adding: <deprecated>SOME TEXT</depreca
<setting> <setting>
<name>portname</name> <name>portname</name>
<type>str</type> <type>str</type>
<def></def> <def>(empty string)</def>
<desc>Used by coremidi and alsa_seq drivers for the portnames registered with the MIDI subsystem.</desc> <desc>Used by coremidi and alsa_seq drivers for the portnames registered with the MIDI subsystem.</desc>
</setting> </setting>
<setting> <setting>
@ -666,7 +663,7 @@ Developers: Settings can be deprecated by adding: <deprecated>SOME TEXT</depreca
<setting> <setting>
<name>jack.server</name> <name>jack.server</name>
<type>str</type> <type>str</type>
<def></def> <def>(empty string)</def>
<desc>Jack server to connect to for Jack MIDI driver. If an empty string then the default server will be used.</desc> <desc>Jack server to connect to for Jack MIDI driver. If an empty string then the default server will be used.</desc>
</setting> </setting>
<setting> <setting>
@ -689,9 +686,8 @@ Developers: Settings can be deprecated by adding: <deprecated>SOME TEXT</depreca
</setting> </setting>
</midi> </midi>
<player> <player label="MIDI player settings">
<setting> <setting>
<isFirst>MIDI player settings</isFirst>
<name>reset-synth</name> <name>reset-synth</name>
<type>bool</type> <type>bool</type>
<def>1 (TRUE)</def> <def>1 (TRUE)</def>
@ -706,17 +702,16 @@ Developers: Settings can be deprecated by adding: <deprecated>SOME TEXT</depreca
</setting> </setting>
</player> </player>
<shell> <shell label="Shell (command line) settings">
<setting> <setting>
<isFirst>Shell (command line) settings</isFirst>
<name>prompt</name> <name>prompt</name>
<type>str</type> <type>str</type>
<def>""</def> <def>(empty string)</def>
<desc>In dump mode we set the prompt to "". The ui cannot easily handle lines, which don't end with cr. Changing the prompt cannot be done through a command, because the current shell does not handle empty arguments.</desc> <desc>In dump mode we set the prompt to "" (empty string). The ui cannot easily handle lines, which don't end with cr. Changing the prompt cannot be done through a command, because the current shell does not handle empty arguments.</desc>
</setting> </setting>
<setting> <setting>
<name>port</name> <name>port</name>
<type>num</type> <type>int</type>
<def>9800</def> <def>9800</def>
<min>1</min> <min>1</min>
<max>65535</max> <max>65535</max>

View File

@ -1,216 +1,296 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" doctype-system="about:legacy-compat"/> <xsl:output method="html" doctype-system="about:legacy-compat"/>
<xsl:template match="/"> <xsl:template match="/">
<html> <html>
<head> <head>
<style> <style>
table body {
{ margin: 0;
border: 3px solid black; padding: 0;
font-family: sans-serif;
background: #eee;
} }
.first-row #sidebar {
{ position: fixed;
border-top: 3px solid black; width: 25em;
top: 0;
bottom: 0;
padding-bottom: 2em;
box-sizing: border-box;
overflow-y: auto;
color: white;
background: #333;
} }
th #sidebar ul li a {
{ display: block;
font-weight: normal; padding-left: 5%;
white-space: nowrap; padding-top: 0.3em;
padding: 15px 5px 15px 5px; padding-bottom: 0.3em;
border-top: 1px solid black; color: #fafafa;
border-left: 1px solid black;
border-right: 1px solid black;
} }
#sidebar a:hover {
td background: #666;
{
padding: 15px 5px 15px 5px;
} }
.cell-def #sidebar .muted {
{ color: #ccc !important;
white-space: nowrap;
border-top: 1px solid black;
}
.cell-vals
{
border-top: 1px solid black;
}
.cell-desc
{
border-top: 1px solid black;
} }
.audio {background-color: hsl(170, 100%, 90%);} #sidebar h1 {
.midi {background-color: hsl(125, 100%, 90%);} padding-top: 1em;
.player {background-color: hsl(85, 100%, 85%);} margin: 0;
.shell {background-color: hsl(60, 100%, 90%);} padding-left: 5%;
.synth {background-color: hsl(35, 100%, 90%);} }
.deprecated {background-color: hsl(0, 0%, 93%);}
</style> #sidebar h2 {
<title>FluidSettings</title> padding-left: 5%;
</head> margin-top: 1.5em;
<body> margin-bottom: 0.5em;
<h1>FluidSettings</h1> color: lightblue;
}
<ul>
<!-- Select the first setting of each group and use it for building up a TOC --> #sidebar ul,
<xsl:for-each select="fluidsettings/*/*[isFirst]"> #sidebar ul li
<xsl:sort select="name(..)" /> {
<li style="margin-bottom: 15px"> list-style: none;
<xsl:attribute name="class"> margin: 0;
<xsl:value-of select="name(..)" /> padding: 0;
</xsl:attribute> }
<a>
<xsl:attribute name="href"><![CDATA[#]]><xsl:value-of select="name(..)" /><![CDATA[.]]><xsl:value-of select="name" /></xsl:attribute> #sidebar li a {
<xsl:value-of select="isFirst" /> text-decoration: none;
</a> }
</li>
</xsl:for-each> .deprecated-badge {
</ul> margin-left: 0.5em;
font-size: 80%;
font-weight: bold;
<table> color: red;
<!--print each and every setting row by row in the table--> }
<xsl:for-each select="fluidsettings/*/*">
<xsl:sort select="name(..)" /> #main {
<!-- <xsl:sort select="name" /> --> margin-left: 25em;
<tr> padding: 1em 2em;
<!-- the class attribute of tr shall be the name of the settings group of the current setting, unless the setting is marked deprecated --> box-sizing: border-box;
<xsl:attribute name="class"> max-width: 60em;
<xsl:choose> background: white;
<xsl:when test="deprecated"> color: #333;
deprecated }
</xsl:when>
<xsl:otherwise> #main h2 {
<xsl:value-of select="name(..)" /> margin-top: 2em;
</xsl:otherwise> }
</xsl:choose>
</xsl:attribute> #main h2:first-child {
margin-top: 1em;
<td class="cell-name first-row"> }
<xsl:attribute name="id"><xsl:value-of select="name(..)" /><![CDATA[.]]><xsl:value-of select="name" /></xsl:attribute>
<a> .setting {
<xsl:attribute name="href"><![CDATA[#]]><xsl:value-of select="name(..)" /><![CDATA[.]]><xsl:value-of select="name" /></xsl:attribute> padding: 0;
<xsl:value-of select="name(..)" />.<xsl:value-of select="name" /> margin: 1em 0;
</a> border-left: 1px solid #eee;
</td> border-radius: 5px 0px 0px 0px;
}
<th class="first-row">Type</th>
@-webkit-keyframes flash-header {
<td class="cell-type first-row"> from { background: lightblue; }
<xsl:choose> 50% { background: #eee; }
<xsl:when test="type = 'bool'"> to { background: lightblue; }
int (bool) }
</xsl:when>
<xsl:otherwise> @keyframes flash-header {
<xsl:value-of select="type" /> from { background: lightblue; }
</xsl:otherwise> 50% { background: #eee; }
</xsl:choose> to { background: lightblue; }
</td> }
</tr>
.setting:target .setting-header {
<tr> background: lightblue;
<xsl:attribute name="class"> -webkit-animation: flash-header .5s 2 linear;
<xsl:choose> animation: flash-header .5s 2 linear;
<xsl:when test="deprecated"> }
deprecated
</xsl:when> .setting-header {
<xsl:otherwise> background: #eee;
<xsl:value-of select="name(..)" /> border-radius: 5px 0px 0px 0px;
</xsl:otherwise> padding: 0.5em 1em;
position: relative;
</xsl:choose> }
</xsl:attribute>
.setting-body {
<td></td> padding: 1em;
<th>Default</th> }
<td class="cell-def">
<xsl:copy-of select="def" /> .setting-name {
</td> font-weight: bold;
</tr> display: inline;
color: #333;
<tr> }
<xsl:attribute name="class">
<xsl:choose> .setting-type {
<xsl:when test="deprecated"> color: #666;
deprecated font-weight: bold;
</xsl:when> float: right;
<xsl:otherwise> }
<xsl:value-of select="name(..)" />
</xsl:otherwise> .setting-attribute {
margin-bottom: 0.8em;
</xsl:choose> color: #666;
</xsl:attribute> }
<td></td> .setting-attribute .label {
<th> display: inline-block;
<xsl:choose> vertical-align: top;
<xsl:when test="type = 'str'"> min-width: 6em;
Values }
</xsl:when>
<xsl:when test="type = 'bool'"> .setting-attribute .value {
Values display: inline-block;
</xsl:when> color: #333;
<xsl:otherwise> }
Min
- .setting-deprecated {
Max color: red;
</xsl:otherwise> }
</xsl:choose>
</th> .setting-description {
color: black;
<td class="cell-vals"> margin-top: 1.5em;
<xsl:choose> }
<xsl:when test="type = 'str'">
<xsl:value-of select="vals" /> a {
</xsl:when> color: darkblue;
<xsl:when test="type = 'bool'"> }
1, 0 </style>
</xsl:when> <title>FluidSynth Settings</title>
<xsl:otherwise> </head>
<xsl:value-of select="min" /> <body>
- <div id="sidebar">
<xsl:value-of select="max" /> <h1>FluidSynth Settings</h1>
</xsl:otherwise>
</xsl:choose> <xsl:for-each select="fluidsettings/*">
</td> <xsl:sort select="@label" />
</tr>
<h2><xsl:value-of select="@label" /></h2>
<tr> <ul>
<xsl:attribute name="class"> <xsl:for-each select="*">
<xsl:choose> <li>
<xsl:when test="deprecated"> <a>
deprecated <xsl:attribute name="href"><![CDATA[#]]><xsl:value-of select="name(..)" /><![CDATA[.]]><xsl:value-of select="name" /></xsl:attribute>
</xsl:when> <span class="muted"><xsl:value-of select="name(..)" /></span>.<xsl:value-of select="name" />
<xsl:otherwise> <xsl:if test="deprecated">
<xsl:value-of select="name(..)" /> <span class="deprecated-badge">deprecated</span>
</xsl:otherwise> </xsl:if>
</a>
</xsl:choose> </li>
</xsl:attribute> </xsl:for-each>
</ul>
<td></td> </xsl:for-each>
<th>Description</th> </div>
<td class="cell-desc">
<xsl:copy-of select="desc" /> <div id="main">
<xsl:choose> <xsl:for-each select="fluidsettings/*">
<xsl:when test="deprecated"> <xsl:sort select="@label" />
<br /><br />
<strong style="color:red">DEPRECATED</strong><br /><br /> <h2><xsl:value-of select="@label" /></h2>
<xsl:copy-of select="deprecated" />
</xsl:when> <xsl:for-each select="*">
</xsl:choose> <xsl:sort select="name(..)" />
</td> <div class="setting">
</tr> <xsl:attribute name="id">
</xsl:for-each> <xsl:value-of select="name(..)" /><![CDATA[.]]><xsl:value-of select="name" />
</table> </xsl:attribute>
</body>
</html> <div class="setting-header">
</xsl:template> <div class="setting-name">
<xsl:value-of select="name(..)" />.<xsl:value-of select="name" />
</div>
<div class="setting-type">
</div>
</div>
<div class="setting-body">
<div class="setting-attribute">
<div class="label">Type:</div>
<div class="value">
<xsl:choose>
<xsl:when test="type = 'bool'">
Boolean (int)
</xsl:when>
<xsl:when test="type = 'int'">
Integer (int)
</xsl:when>
<xsl:when test="type = 'str'">
<xsl:choose>
<xsl:when test="vals">
Selection (str)
</xsl:when>
<xsl:otherwise>
String (str)
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="type = 'num'">
Float (num)
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="type" />
</xsl:otherwise>
</xsl:choose>
</div>
</div>
<xsl:choose>
<xsl:when test="type = 'str' and vals">
<div class="setting-attribute">
<div class="label">Options:</div>
<div class="value"><xsl:value-of select="vals" /></div>
</div>
</xsl:when>
<xsl:when test="type = 'bool'">
<div class="setting-attribute">
<div class="label">Values:</div>
<div class="value">0, 1</div>
</div>
</xsl:when>
<xsl:when test="min or max">
<div class="setting-attribute">
<div class="label">Min - Max:</div>
<div class="value">
<xsl:value-of select="min" />
-
<xsl:value-of select="max" />
</div>
</div>
</xsl:when>
</xsl:choose>
<div class="setting-attribute">
<div class="label">Default:</div>
<div class="value"><xsl:copy-of select="def" /></div>
</div>
<xsl:if test="deprecated">
<div class="setting-deprecated">
This setting is deprecated and might be removed in a future version of FluidSynth.
</div>
</xsl:if>
<div class="setting-description">
<xsl:copy-of select="desc" />
</div>
</div>
</div>
</xsl:for-each>
</xsl:for-each>
</div>
</body>
</html>
</xsl:template>
</xsl:stylesheet> </xsl:stylesheet>