Nomad - Module Definition DTD
Module Definition DTD v1.0
Purpose
This DTD was developed to define the modules of the Nord Modular synthesizer and their hierarchie.
Structuring Modules
Along with defining the attributes of a single module this DTD supports adding information about how they relate to each other and how they are grouped.
Example: (contained elements: structure, group, section insert )
<structure> <group name="In/Out"> <section> <insert module-id="1" /> <insert module-id="63" /> <insert module-id="65" /> </section> <section> <insert module-id="2" /> <insert module-id="127" /> </section> ... </group> ... </structure>
The provided structure can be used to generate the following tabbed pane.
- Each 'group'-element is mapped to a tab-group in the same order found in the xml file.
- The 'section'-element groups modules inside a tab. Two sections should be separated by a space.
- Modules inside a section should appear in the tab in the same order found in the xml file.
Proposal for new versions
The substitutions have to be better integrated. For example on an oscillator-module the frequency value (and with that it's substitution) depends on the states of frequency-display, coarse and fine. In this version of the DTD supports no substitutions that have more than one variable.
All possible names for a substitution should be defined in this DTD.
Language-independend substitutions for the values of a parameter should be defined in this DTD. (for example simple string-substitutions like: 0='Off',1='On')
Substitutions now threaded as language-depended, such that have to be calculated (for example the Oscillator's frequency) might be represented in the xml file as well. This could be realized as shown in the next example. (a similar substitution can be found in the substitutions DTD)
<substitution name="example-transformation"> <transform offset = "0" <!-- default:0 , shortcut:o --> factor = "1.0" <!-- default:1.0, shortcut:f --> prefix-string = "x" <!-- default:"" , shortcut:p --> suffix-string = "[UNIT]" <!-- default:"" , shortcut:s --> /> </substitution>
represents the transformation:
There could be an 'optional'-element containing optional information about a module. For example it could contain layout related definitions such as how elements should be grouped. For example
- coarse - fine - frequency-display belong together
- in- or outputs often belong to an additional level-knob
This would definately increase the development time required to generate custom themes. Simply because
- grouped elements can automatically be positioned together
- more user interface components can be generated automatically for example grouped elements could be put into a groupbox. Also text/icon-labels (where reasonable).
Object Model
modules-definition-v10.dtd - Reference
Top-level element(s)
List of elements
Element declarations
group | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Content model: | ( section + ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Used inside | structure | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Attributes: |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
input | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Content model: | EMPTY | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Used inside | module | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Attributes: |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
insert | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Content model: | EMPTY | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Used inside | section | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Attributes: |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
module | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Content model: | ( custom | input | output | parameter ) * | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Used inside | modules | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Attributes: |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
modules | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Content model: | ( module +) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Used inside | modules-definition | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Attributes: | - none - | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
modules-definition (top-level element) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Content model: | ( structure, modules ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Used inside | - none - | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Attributes: | - none - | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
output | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Content model: | EMPTY | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Used inside | module | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Attributes: |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
parameter | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Content model: | EMPTY | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Used inside | module | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Attributes: |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
section | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Content model: | ( insert + ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Used inside | group | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Attributes: | - none - | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
structure | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Content model: | ( group + ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Used inside | modules-definition | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Attributes: | - none - | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
true | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Substitutions are not supported in this DTD version for element 'custom'. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Content model: | EMPTY | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Used inside | - none - | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Attributes: |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Substitution DTD v1.0
Purpose
The idea behind substitutions is to XMLize the transformation from a parameter's numeric representation to its string-representation. This has several convenient advantages:
- less information must be included in source code
- automated linking of substitutions and parameters
Proposal for new versions
See the "Proposal for new versions"-section.
substitutions-v10.dtd - Reference
Top-level element(s)
List of elements
Element declarations
if | |||||||||||||||||||||||||||||||
If a parameter's value is equal to attribute 'value-is', 'replace-with' supersedes the superior substitution. | |||||||||||||||||||||||||||||||
Content model: | EMPTY | ||||||||||||||||||||||||||||||
Used inside | transform | ||||||||||||||||||||||||||||||
Attributes: |
|
||||||||||||||||||||||||||||||
item | |||||||||||||||||||||||||||||||
Content model: | ( #PCDATA ) | ||||||||||||||||||||||||||||||
Used inside | list | ||||||||||||||||||||||||||||||
Attributes: | - none - | ||||||||||||||||||||||||||||||
list | |||||||||||||||||||||||||||||||
Contains a list of strings. The parameters value is used as index to an 'item' element where the 0 is the index for the first item, 1 is the index for the second item, ... . | |||||||||||||||||||||||||||||||
Content model: | item + | ||||||||||||||||||||||||||||||
Used inside | substitutions | ||||||||||||||||||||||||||||||
Attributes: |
|
||||||||||||||||||||||||||||||
substitutions (top-level element) | |||||||||||||||||||||||||||||||
Content model: | ( transform + , use-implementation + , list + ) | ||||||||||||||||||||||||||||||
Used inside | - none - | ||||||||||||||||||||||||||||||
Attributes: |
|
||||||||||||||||||||||||||||||
transform | |||||||||||||||||||||||||||||||
This element defines the transformation t(value) := concatenate(prefix, (value+offset)·factor, suffix) . If element 'if' matches value, it supercedes the transformation t(value). |
|||||||||||||||||||||||||||||||
Content model: | if ? | ||||||||||||||||||||||||||||||
Used inside | substitutions | ||||||||||||||||||||||||||||||
Attributes: |
|
||||||||||||||||||||||||||||||
use-implementation | |||||||||||||||||||||||||||||||
This element links a custom implementation with a parameter. | |||||||||||||||||||||||||||||||
Content model: | EMPTY | ||||||||||||||||||||||||||||||
Used inside | substitutions | ||||||||||||||||||||||||||||||
Attributes: |
|
||||||||||||||||||||||||||||||
by Christian Schneider